Here we go, first blog post. This place, in my mind, is where we’ll discuss ideas about software design, architecture, and tooling. I will pick examples from different technologies to show how close the current state of the art is to where we, software designers, need to be. I have simple, quite generic topics in my mind, and also some more niche technology challenges. My goal is to collect the best ideas from different people using different frameworks. The tools and APIs we use are always the result of a compromise between technological requirements and commercial needs. The software giants who have the resources to build platforms, operating systems and tools try to tie the consumers, developers and end users alike, to their ecosystems. Even Google, who was once a big supporter of open source, is now in a more awkward position due to the popular Android platform. The best world for software engineers would be one where a software service I develop can be consumed by as many people as possible in the simplest possible manner. If it were possible to write once, run anywhere, how great! In practice though nobody can drive big initiatives and invest in this direction at this point in history. Java as a desktop framework has failed. It might be considered a success in the mobile space thanks to Google, but it’s an “Android version” of Java, and thus surely not intended to be run anywhere. Silverlight was a really nice attempt, but it was born at the wrong time, while the bubble was going to burst and html5 and dynamic languages were fully taking off. Now the evolution of the software environment is much more fragmented, large platforms are still there but often developers are confronted with collection of smaller frameworks that need to be put together, and glued with a bit of art and craft. Tools are rich, but less consistent, especially in the web space. Even in the more limited desktop application world, it’s hard to find a technology onto which we could bet for more than a few years from now. So we need to be pragmatic and use the best for our software businesses today. As software engineers though, we are also naturally attracted to the beauty of abstractions which make attacking large problems possible. It’s a universe of micro-apps, but also a world of big data services that keep people together. This blog will ultimately be about the ideal development environment, intended as a combination of tools, apis and patterns. Ideal, but not less concrete, as we will try to find solutions to get us as close as possible to this IDE.