Methods and processes of Software Engineering: how to create beautiful software

Code Generation

A Guide to Code Generation

There are many uses for Code Generation: We can generate repetitive code from schemas or source of information we have. For example, we can generate Data Access Objects from database schema files We can generate code from wizards We can generate skeletons of applications from simple models. We wrote about an example here: Code Generation […]

The OOP(S) Concepts You Need To Know

The OOP(S) Concepts You Need To Know

Object Oriented Programming (OOPS or OOPS for Object Oriented Programming System) is the most widely used programming paradigm today. While most of the popular programming languages are multi-paradigm, the support to object-oriented programming is fundamental for large projects. Of course OOP has its share of critics. Nowadays functional programming seems the new trendy approach. Still, […]

Using the Redmine API to create a page where to quickly add and edit tasks

Using the Redmine API to create a page where to quickly add and edit tasks

Recently I have been looking for the right issue tracker for my needs and I compared a few tools including Jira, Trello, Asana and Redmine. You can read about it here. Redmine was almost good enough but I wanted to be able to quickly add and edit tasks. Installing plugins for Redmine seem painful so […]

On the quest for the right project management tool: Jira, Trello, Asana, Redmine

On the quest for the right project management tool: Jira, Trello, Asana, Redmine

I have used many different project management tools but I have to say that I have not yet found one which really makes me 100% happy to use it. I have played with many tools and used some of them extensively and I was growing a bit frustrated about this. In the good old times […]

The 5 things a developer expects from a Project Manager: how a Project Manager can help developers becoming much more productive

To be effective as a software developer technical excellence is not enough. On top of that there are several other aspects on which a great professional should focus. Near the top of my list there is the ability to interact with other people involved in the project. Whatever is the nature of your project you will […]

An Erd web server: generation Entity Diagrams from a textual description with Haskell

An Erd web server: generation Entity Diagrams from a textual description with Haskell

Last week I started discussing how I am working on improving my approach to diagrams generation, so that it could become acceptable for a Software Engineer. Currently I write a textual description of my entity-diagrams and I generate the corresponding images using Erd. Erd is a fantastic tool written in Haskell which parses its own DSL […]

An approach to UML diagrams and ER models bearable for a Software Engineer

An approach to UML diagrams and ER models bearable for a Software Engineer

As part of my current job at Groupon I have to create diagrams, those nice pictures which make project managers happy. I write basic UML diagrams (State diagrams and Activity diagrams) together with Entity-Relationship diagrams (yes, the ones for the DB). Yes, people want these pictures and I have to create them What is wrong […]

Getting started with Docker from a developer point of view: how to build an environment you can trust

Getting started with Docker from a developer point of view: how to build an environment you can trust

Lately I have spent a lot of thoughts on building repeatable processes that can be trusted. I think that there lies the difference between being an happy hacker cracking out code for the fun of it and an happy hacker delivering something you can count on. What makes you a professional it is a process that […]

Continous Integration on Linux and Windows: Travis and AppVeyor

Continous Integration on Linux and Windows: Travis and AppVeyor

Recently I worked on improving the testing and the Continuos Integration (CI) configuration for a few open-source projects. In particular I have spent some time on WorldEngine, a world generator written in Python, which uses a C++ extension named plate-tectonics. There have been several issues, the main two are: the deployment of the application on […]

Mocking in Java: why mocking, why not mocking, mocking also those awful private static methods

Mocking in Java: why mocking, why not mocking, mocking also those awful private static methods

Unit tests: there are people out there surviving without, by in many cases you wan to have this life insurance. Something to protect you from slipping an error, something to accompany your software also when you will have long forgotten it and someone else will have to figure out how to maintain that legacy thing. […]