web developer & system programmer

coder . cl

ramblings and thoughts on programming...


my software design principles

published: 05-05-2012 / updated: 06-05-2012
posted in: development, haskell, java, programming, projects, tips
by Daniel Molina Wegener

Most modern applications are providing APIs. That allows you to integrate those applications providing APIs with third party applications and create a real cloud computing environment. From an architectural perspective, we should have at least to have in mind the architectural pattern to be used, design patterns to be implemented, the protocol to use and the data format to expose the API. The architectural pattern should be simple, the design pattern efficient, the protocol lightweight and the data format flexible for your requirements. With a good API design, it should be stable enough to support changes along the time dynamically.

freelance project handling rules

published: 21-04-2012 / updated: 21-04-2012
posted in: development, programming, projects, rants, tips
by Daniel Molina Wegener

As you know I work as freelance programmer, I have handled many kinds of projects, you can see the list of technologies which I am offering on my services page and some sample products which can tell of what I am capable to do on my products page. As you can see, I have left some technologies, like PHP, due to the poor budget on many of those projects and messy code that I have seen on them. Since PHP lacks some tools like static analyzers and style checkers, most PHP projects cannot ensure good quality.

all skills comes with interests

published: 15-04-2012 / updated: 15-04-2012
posted in: development, programming, projects, rants, tips
by Daniel Molina Wegener

As you know I was working for various medium companies along my career, until I have become a freelancer. In one of those companies, where most programming contracts were made to Informatics Engineers as Software Engineers as role. You expect at least from a Software Engineers the capacity of doing research on almost any topic related to the given programming task and a very good quality solution to the given problem. That was not the case always, as it happens on many areas, not only in software development. Today I will present a story illustrating how something what is done without interest will make you waste your time and money.

problem solving by segmentation

published: 06-04-2012 / updated: 06-04-2012
posted in: development, programming, projects, tips
by Daniel Molina Wegener

My approach on problem solving is very similar to the divide and conquer approach. Almost all problems on programming have three main layers to be solved properly: retrieval or accessing data, processing data, and result output. Most problems can use that perspective to be solved faster than viewing them as a single procedure or function. So, you can have the same approach as single view of most problems, where if you think a little, you can see most problems as functions, and you can group complex problems in composite functions.

programmers are not resources

published: 27-03-2012 / updated: 27-03-2012
posted in: development, programming, projects, rants, tips
by Daniel Molina Wegener

How many times do hear the word resource to refer to some co-worker, or even yourself in your daily routine? A resource strictly is a «source or supply from which benefit is produced». If you are called resource in your daily work, probably you do not have more value for your employer than the server where the web application that you are developing is running. If your employer calls you resource, rather than co-worker or even employee, of course he will use the Spanish Theory to get the maximum benefit from your work.

memory usage in haskell

published: 21-03-2012 / updated: 21-03-2012
posted in: development, haskell, logrev, programming, projects, tips
by Daniel Molina Wegener

As you I am a Haskell programmer. I have started a FOSS project called Apache Log Reviser, or logrev as short name. I have been playing with code optimizations in Haskell on that project. So, I want to share some experience and considerations regarding its memory usage, mainly on what is related to lazy evaluations and non-strict bindings. Where lazy evaluations should be used every time you need to read or write data with delayed behaviour, for example reading large lists or even lazy lists, and non-strict bindings should be used every time you need to request data to be placed on memory for immediate reading or writing.

a good start on logrev

published: 17-03-2012 / updated: 17-03-2012
posted in: development, haskell, logrev, programming, projects
by Daniel Molina Wegener

As you know ApacheLogRev or logrev as short name, is my first Haskell FOSS project — I have other FOSS projects written in C and Python — and I want to share some experiences about logrev while I was developing some features that it should have in the future, because it is still under development and it is not finished yet. Basically, it is using the Parsec combinator based parser. One of the best advantages of this parser builder is the fact that it is generating parsers on run time, rather than creating fixed parsers using BNF grammars which are subject of static context free processing, rather than creating dynamic parsers.