As a software developer, who has a side project — open source or not — is a software developer that can make products. If the developer can identify a community need, and produce a product, there is no problem for that developer to understand a specification and meet the desired specification. Also, the developer will be able to satisfy the correct solution and will be able to meet any observations about the requirements and the source code.
web developer & system programmer
coder . cl
ramblings and thoughts on programming...
side projects
published: 12-10-2012 / updated: 12-10-2012posted in: development, programming, projects, rants, tips
by Daniel Molina Wegener
the problem with web development
published: 06-10-2012 / updated: 06-10-2012posted in: development, programming, rants, tips
by Daniel Molina Wegener
If you are a programmer, you are probably working on web development. Almost every application that is being launched to the market is a web based application or a mobile application with a background web platform supporting it. From that point, almost every job option related to software development is strongly linked to web development, and I think that the web development market is a little bit messy, mainly due to the lack of technical knowledge of people that are hiring developers. Just naming the required technology enough times to make your resume to pass the filter in the job position is a good start point to getting hired. Is that enough to meet the job requirements?. On software development experience is not so required, and seems to be strongly required by some companies hiring developers.
compiler flags for correctness
published: 05-10-2012 / updated: 05-10-2012posted in: c, development, haskell, programming, tips
by Daniel Molina Wegener
As I have discussed on a previous blog post, static typing helps on correctness by providing well-typed programs through type checking algorithms. Compiler warning messages and compiler error messages are not thrown as they were made by a capricious developer. Almost all of them are following a language definition, and they help if you want to build better programs. The more strict are your compiler flags, better are your programs. Using language extensions, which are not present on their standard definitions is not so cool as it seems. That depends on the language, sometimes there is very long time after certain language extensions are passed to the language definition. So, you should try to look on how can you write better code for that language without abusing of its extensions and extra features provided by the compiler.
base conversion tricks
published: 04-10-2012 / updated: 04-10-2012posted in: c, development, haskell, programming, tips
by Daniel Molina Wegener
Base conversion can be used to compress number representations, and can be used to hide the real number representation. The algorithm is well known, anyone can program that algorithm, and it is not so hard to handle. I was playing with Haskell writing that algorithm to check how effective is that algorithm to create URL shorteners. My idea is quite simple, you have an URL database ID, which is an integer number, indexed as many entries on the database, but once the database starts growing, the number can reach a length that is not so easy to remember. For example the ID 999 999 999 999 is not so easy to remember.
type safety is not security
published: 02-10-2012 / updated: 02-10-2012posted in: c, development, haskell, programming, rants, tips
by Daniel Molina Wegener
Standar ML is defined as safe using the following definition «ML is safe, in that a program that passes the type-checker cannot dump core, access private fields of abstract data types, mistake integers for pointers, or otherwise “go wrong.”». A type-checker verifies that each term used in the programming language should have the correct type once it is used. For example if a function is defined to receive an integer type, once it is called, an integer term should be used, otherwise the compiler may throw an error and the execution “goes wrong”. If the type-checking algorithm accepts the program, then it is well-typed. When a programming language has a type-checking algorithm on its compiler, we call it statically-typed. Dynamic typing does not have a type checker on its compiler, you can write the same function, it will not have any sentence defining an input type, and it will be able to receive a string when an integer is required.
the trick is renewal
published: 01-10-2012 / updated: 01-10-2012posted in: development, programming, projects, tips
by Daniel Molina Wegener
All the time I am reading tips on how to become a good developer, and there are many programming courses. But I am pretty sure that there is no strict method to become a good developer. The main reason that there are very good developers — almost on every place in the world — is not about their education, also is not about their methodologies and even is not about their passion for programming. There is a renewal trick, because they are always seeking new stuff to learn, and that keeps their mind fresh and clear about how they can solve each problems that they are facing. Almost the best developers that I know, are always learning, reading books and they keep searching information about related topics.
mutability on states machines
published: 30-09-2012 / updated: 30-09-2012posted in: c, c++, development, programming, proview, tips
by Daniel Molina Wegener
The basic definition of a state machine is a set of states S, with a subset of initial states I, another subset of final states F, and a set of transitions between states T, and every state s’ ∈ S ∧ s” ∈ S where I ⊆ S ∧ F ⊆ S, and each element on T { s’, s”, h }, with s’ as the current state, s” as the next state and h as the state action. On my current automation project where I am using ProView, I have each device controlled by state machines, and each user or automatic control request is queued on a priority queue, where the highest priority is executed replacing any previous execution state, because we have only one communication channel. So the basic state machine definition is not enough to hold every environmental variable that we are using to control each device.