Posts

Showing posts from March, 2011

Good vs. Bad & Ugly: Comprehensive vs. General Design

Image
The difference between "Comprehensive Software Design" and "General Software Design" and why Comprehensive is the only way. Let's assume a simple categorisation of business into trade and manufacturing. Most of the companies that are active in a category, arrange and manage their processes - despite different fields of business- inspired by a similar and close to optimal pattern.  For example all trade companies share the same processes and concepts such as sales region, sales commission, petty cash and etc.  The pattern is called best practice . Good Now, imagine that you have designed and implemented information software for 25 trade companies so far; naturally resulting in your extensive knowledge of trade firms' processes and requirements -put simply, best practice.  In other words, you do know what the customer wants and needs. What happens if you decide to design a comprehensive information system for trade firms? As you know their requirements...

Amailyser: The E-mail Analyser

Introducing a small software to analyse a mailbox. Recently Ed Daniel (a friend of mine) needed to produce a time analysis report out of his e-mails and asked if I can help him.  Well, obviously I said yes. I thought to myself, he needs charts and graphs and data querying from many aspects that I may not know.  So to me the best option is to load his e-mail important fields into an RDBMS (such as SQLite or PostgreSQL).  Later he can do whatever he wants with the data using reporting tools such as JasperReports and produce nice charts and graphs as he requires. That was the motivation to write Amailyser (github repo) . The language is Python 2.x; I could have done it in Perl but I'm learning Python and it seems like a wonderful practice to me. For DB interaction I used SQLAlchemy a nice ORM mapper for Python. To read the e-mail messages I used Python standard library mailbox. After downloading and extracting, you can run the Amailyzer (after you have modified con...