July 31, 2009

Life Lesson From CouchDB

Another Friday! Time to dump the selection of links that yours truly collected on the interweb in the past weeks. I had to wait a bit to accumulate enough material worth publishing. As usual the description is a mix of quotes and personal opinions about people, things and facts. I also try to elect a “most interesting of the week” and this time I had an hard work. I was struck by the life lesson coming from the development of CouchDB. I didn’t know anything about Damien Katz and this presentation by InfoQ is one of those you see once or twice a year. Damien was laid off, he had to move to a cheaper place and start all over with two growing kids. How do you find the motivation to grow your own idea and live on savings while nobody cares about you and your work is the main topic of the talk. This is how CouchDB got started. Damien also talks about choosing Erlang and JSON over HTTP and some more technical aspects. Simple and regenerating talk.

Newspeak and Pluggable Types with Gilad Bracha - Software Engineering Radio… Here’s the best analogy so far comparing static type system VS dynamically typed system. In a static type system applies something similar to the “presumption of guilt” from the Napoleonic Law: the compiler stops the program (guilty) if the program doesn’t comply to the type system even if it makes perfectly sense at runtime. The compiler can’t prove the program is “innocent”, so it has to be wrong! In dynamically type systems the program is allowed to run and judged only after the facts. Statically typed languages are therefore more restrictive but this doesn’t imply they are more “secure”. Second: the type system is similar to a BDUF (big design upfront) and restricts the possible uses of the language to what it was designed for: have you tried AOP in Java and then in Ruby? Dynamic languages accommodate “side” uses more easily. The rest of the podcast is centered around the features of NewsSpeak, an interesting language that deserves attention.

InfoQ: Jazzers and Programmers… This is mostly about jazz than programming. But I appreciated the concise history of my favorite music with examples, quotes from great musicians and a little theory. I’d certainly point someone to this presentation to have a quick introduction to Jazz. There is a clear parallel between Jazz and programming. Something common is the need for continuous practice in both. We call this “software craftsmanship” and apparently developers of our times don’t practice often enough. I also think that there is less room for improvisation in programming than Jazz. Most of the time in programming you have to follow rigid rules (like classical music) and the real improvisation is when a tool or technology is used in a different and unexpected context, like for example Erlang for mutli-core CPUs.

How Productive Was the LetMeGo Immersion? «  Alexander’s Blog – The Making of LetMeGo… From one side I can only admire what a small team was able to accomplish. From the other I can’t stop thinking that this project is seriously screwed. Just the fact that you’re forced to a 90 days 24/7 with something like 12 hours working day to produce a partial beta smells bad. I understand how this can be a wonderful experience. But I suspect they accumulated an huge pile of technical debt. If I were an investor I wouldn’t invest in LetMeGo because it seems like a bomb ready to explode right after a few months of exercise. I could be wrong of course, or just envy because when you have a family you’re done with this kind of things. All the best to the project, we’ll see.

Hanselminutes Podcast 171 - The Return of Uncle Bob… This time Uncle Bob talks about professionalism. IT industry is amateurish to some extents and lacks the same level of professionalism of other professions. Rituals can be a measure of professionalism, since they are the result of a consolidated discipline. Of course you try not to abuse rituals and loose the intent behind the discipline (like completely skip design to jump right into testing, see Jim Coplien). After talking about the need for architects to also be developers to feel the pain they are asking for, Uncle Bob also speaks about the density of a language, intended as the concentration of meaning for a single word or even a single character. See the nice Game of Life in APL screencast that illustrates the concept here: http://www.youtube.com/watch?v=a9xAKttWgP4. I especially like this quote from Uncle Bob: “I want them to find me with my nose stuck between the keys of the keyboard”. Yeah, code code code.

Hanselminutes Podcast 169 - The Art of Unit Testing with Roy Osherove… An interesting podcast again from Hanselminutes. And again about unit testing. Here’s some take away: if you have tear-downs in your tests those are probably integration tests. If you have class based setup tear-down again those are probably integration tests. If you do a lot of corner cases testing around a method, you’re probably doing after-the-fact testing. A good definition of mock object: if you’re setting expectations on an object which is not part of the project, that object is a mock. You don’t make assertion against a stub for example. When do you stop testing? When you’re comfortable with it, that is, when all the ideas about how the software should behave have been implemented. And of course you should stop at the most interesting cases without over-specifying.

Push Notification & Store Kit - An Interview With Urban Airship… Here’s an interesting discussion that explains the technical details of two new capabilities of the iphone sdk 3. Push notification is a stay resident application running on the iphone capable of receiving messages and dispatch them to other applications. There is a server side notification service involved with persistent queues maintained by Apple. The Push Notification removes the need for an app to poll a server remotely dragging the batteries out using a persistent IP connection. The store kit is an API that allows iphone apps to present mini-stores to their users to buy additional capabilities. Interestingly enough, there are companies like Urban Airship producing intermediate layers (or a server with an application on top of it) because the whole process requires good programming and administration skills. Kudos to Dan Grisby for the very good questions.

Comments (View)
blog comments powered by Disqus