After the many responses I got about a crazy idea I had a little while ago with some friends I felt I had to give you a small follow-up on that. Unfortunately this crazy idea won’t fly (phun intended of-course).
I think it is time we get a Noide movement, ahh darn it got my casing all mixed-up; I meant NoIDE of-course. I have been developing on the .Net platform since the first beta’s where released and have been using Visual Studio.Net since it got first released as well (my first .Net coding was actually done in EditPlus). And the one thing that has been a constant during these last 10 years…
People that follow me on Twitter may have seen my tweets with the #smidig hashtag, so I thought to write a little bit about it so all my non-skandinavian followers also understand what this is all about.
I quite often see comments like; “We are only allowed to use Microsoft Technologies” and every-time I think “Why?”. What is the reason behind such a standpoint. What is won by limiting their choices in such a radical way?
With new technologies we also get new ways of solving problems, and of-course this very much applies to the web. In the good old days we had static web pages that contained all the information we wanted to display. Web browsers would do one request per page and several parallel or sequential requests for images and style sheets. But time has changed this.
One of the things I like about Ruby versus .Net is how easy it is to work with different versions of a specific Gem, for example you wanted to upgrade a specific gem in a project from version 1.2.0 to 1.2.3, then all you needed to do is gem install the_gem -v=1.2.3. This command will just install the new version side by side with the previous version. Then in the project you only need to specify that you want to use the new version of the gem. If you don’t specify a version then the latest installed version will be used automatically (so you want to make sure you specify a version). For example in Rails you can specify the version by adding the line: config.gem ‘the_gem’, :version => ‘1.2.3’ in the environment.rb file, but there are also other ways.
So after you have read my last post I am sure you have been looking into RVM and if you haven’t perhaps you should. And you have seen how much power and simplicity RVM can bring to your development workflow. Take for example my current situation, I have some projects in Ruby 1.8.7 and also in JRuby 1.4.0. Now switching between these is still a little bit of a pain, because I have to remember to tell RVM that I need a different Ruby version depending on the project I am working in.
I want to share something that I learned from Rolf Bjaanes not to long ago and that is that the Terminal command prompt can give me a lot of useful information. Below here is how my Terminal command prompt looks by default:
Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all.
Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?
When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did.
I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.
Scalability is one of the several different benefits you gain from applying CQRS and Event Sourcing to your application architecture. And that is what I wanted to take a closer look at in this post.
When using Event Sourcing you store your events in an Event Store. This Event Store can only insert new events and read historical events, nothing more nothing less. So when you change your domain logic and also the events belonging to this behavior, then you cannot go back into the Event Store and do a one time convert of all the historical events belonging to the same behavior. The Event Store needs to stay intact, that is one of its powers.
So after reading this blog post by Rob Conery about Reporting In NoSQL where he explains very well what the problem is when using a RDBMS for persisting the state of your domain, or really anything that is written with Object Orientation in mind.
I have noticed with myself (actually I know this for a very long time now already) that I am much more productive in the evenings then I am at the end of a working day. I also just finished reading Programming is all Design by Joakim Holman, Why Design Cannot be Billed by the Hour by Steve Zelle, Software on the Cheap by Uncle Bob Martin and The Design Dilemma by Kent Beck which made me want to put my thoughts into writing.
So there was a lot of commotion about two blog posts by Uncle Bob Martin; Dependency Injection Inversion and Mocking Mocking and Testing Outcomes. With replies from people like Jimmy Bogard “Poor use of DI versus need for DI” and Ayende “Rejecting Dependency Injection Inversion”. And also on Twitter there were many discussions going back and forth about it.
In my previous post I talked about how I experience a really good pairing session, and in this post I like to discuss what I believe is needed for this to succeed.
Today I had a really enjoyable pair programming session with my college Øyvind. It was quite some time ago since our last session, which was when we were both working at a customer together.
Many have said it before, and I’ll repeat it once more; as a developer you, yourself are the main responsible person for your own education. So not your employer, your mentors or anybody else. You are. This is one of the principles that is central to the software craftsmanship ideas.
You wake-up in the morning open the curtains and look outside, and there it is; everything you see is covered in a nice layer of fresh snow. Beautiful if I may say.
I have had a discussion with a college of mine about spike code and how to bring the chosen solution into production code and quality. Jeremy wrote about it a while back stating to never check-in spiked code, and I was wondering if I could challenge that a little bit.