Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 159

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 162

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 165

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 168

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 171

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 173

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 175

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 197

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 201

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 224

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 225

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 226

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316
Djief's Blog

When I started university a couple of years ago, getting an MBA after finishing my degree was something I was considering quite seriously. My mind has since changed and this blog post by Bob Sutton (who wrote “The No Asshole Rule“), Why Management is Not a Profession, gives food for thought about the real value of an MBA:

The discussion about the “value” of the MBA always seems to end — no matter where it starts and no matter what nuances are discussed by Pfeffer and others — with a focus on how much money it puts (or doesn’t put) in the recipient’s pocket.

The End of Business Schools? Less Success Than Meets the Eye has two interresting findings:

  1. Don’t bother if you’re not going to one of the top 10 business schools. You won’t make more money and you will actually lose two years of salary.
  2. There is no relationship between grades and salary at the top 10 schools. Only the networking that happens there is important.

    Business school professors really hate this one, as it means that those students who do as little work in classes as possible, and devote all their time to networking, are acting in economically rational ways.

So that’s the money perspective about an MBA. What about what you learn from getting an MBA:

There is remarkably little conversation about whether it teaches people to do a better job of helping and serving clients, employees, or anyone else. (…) the societal message — and it is often quite explicit — is that the most effective managers take as much money as possible for themselves from their clients.

Getting an MBA is far from my mind right now. I really believe you can make a more than decent living without it happening to the detriment of people around you.

Popularity: 6% [?]

 

The last part is easy. Now what is architecture as related to software development, that’s a much harder problem (42 is still a good answer of course). I think I just read the best explanation of what it is.

Roy Fielding(inventor of REST) gave a talk at RailsConf Europe entitled “The Rest of REST“. The last slide really sums it best:

use principled design:

  • identify desired architectural properties
  • constrain behavior to induce properties
  • compensate for the inevitable design trade-offs

I think this is the best way to really understand why constraints are liberating. When designing, you choose the properties important to your application (whether it be efficiency, scalability, maintainability or any other -ilities). The architecture will codify a set of constraints that should lead to your application having these properties. These constraints free you from having to constantly think about any of the properties, as long as you respect the architectural guidelines.

An example from the slides: Constrain interactions to be stateless. This simplifies the server, improves scalability and reliability. However, it degrades efficency. Checkout the slides as Roy gives very detailed info on the advantages and tradeoffs of using a REST architecture. Seriously, these slides are gold. I will read them again and again over the next few weeks.

Popularity: 9% [?]

 

I want you to try finding the US population by going through the US Census Bureau website.

Did you find it? According to a recent study by Jakob Nielsen, only 14% of users could find it, even though it is big and red at the top of the page. (check the study to see a screenshot of the original image in case the website changed). Quite surprising no?

The problem is that it looks like an ad and most people are banner blind. The problem here is that it is in a sidebar with big red text, images and made-up term like “population clock”, traits people associate with an ad.

Even more interesting is to look at the heat map, showing where the user’s eyes stopped. In this case, the user clearly looked at the zone where the answer is, but quickly moved on.

Usability is an interesting beast. Results like this clearly show that you can’t take anything for granted and you need to test with real users.

Popularity: 5% [?]

 

The Rails Edge: Quotes and Notes is a very interesting collection of quotes from the rails edge conference. Two in particular caught my attention:

“Metaprogramming + DSLs is the Ruby equivalent of Design Patterns in the Java world”
— Chad Fowler. Fowler’s point here was more about the buzz and hype, just like there was a time in the early 2000s when every Java programmer wanted Design Patterns whether or not they were needed, Fowler sees a similar rush to add DSLs to Ruby programs.

“If programmers, on average, were able to write parsers and compilers, Ruby on Rails would not have taken off”
— Stuart Halloway

This is something I’ve noticed a lot recently: every plugin that gets released is a DSL! or it uses a cool metaprogramming trick! That’s nice, but was it really needed? And can we really talk about a ‘language’ when your plugin adds two simple commands to a controller?

I guess it’s a rite passage when learning ruby to write something using metaprogramming. The problem is when you start using it for everything, just like when you add patterns after patterns to your code, just because.

Again, this is a case of using the right tool for the right job. Metaprogramming is a power tool that is useful some time.

Here are other quotes that I like, as they echo the discussion I had with Fred Brunel at the last book club about process:

“The right process is always ‘not quite enough process’”
— Stuart Halloway

“Do the dumbest, simplest thing that almost works”
— Stuart Halloway, on process

“The traditional view, with sixteen pounds of documentation, introduces a single point of failure in the process, understanding the problem domain”
— Dave Thomas

“Getting a specification involves bullying the customer”
— Dave Thomas

Popularity: 26% [?]

 

Last night was the second edition of Montreal On Rails, with 50% more stuff! (3 presentations instead of 2) My thoughts on the presentation:

First up was Chris Scott, who presented the extjs Javascript framework. Notes to future presenters: please make sure you take 15 seconds to explain what the framework is and why I should care at the start. Don’t wait 5 minutes where you’re setting up your example to finally drop a ‘btw, extjs is a widget framework’. The presentation started slowly with basic stuff and moved on to bigger and better things at the end. I was really impressed by the layout management possibilities that extjs offers.

There was a lively discussion after the presentation comparing extjs to Protoype. Someone pointed out the obvious that prototype isn’t a widget library, but extjs seems to also cover a lot of what the prototype/scriptaculous combo can do.

I’m not a fan of javascript widgets library. I just don’t think it’s a good idea to want to emulate all desktop application functionalities in a web application. Working with the constraints of the web browser forces you to look for simpler alternatives.

Second presentation was by Chris Lamothe who did a demo on how to add user authentication to your rails application using acts_as_authenticated. It was geared toward newbies. He also briefly mentioned a plugin I didn’t know about, role_requirement, that adds basic role based security to acts_as_authenticated.

“Client-side debugging in Firefox” was the title of the last presentation, by Terje Tjervaag. Actually, he quickly presented a couple of Firefox plugin like Web Developer Toolbar, Firebug and YSlow. If you don’t know about these plugins, download them now! There’s no way I’m going back to using Firefox without Firebug (except for the increased slowness and memory usage). It allows you to poke at and modify anything in your web page, live. Terje seems really knowledgeable about testing the view/javascript/browser issues of an application and I hope he can do a more advanced presentation someday explaining how he does it. Right now, my automated testing stops at the models and controllers.

Suggestions for next presenters: although it’s nice to show live how to do things, you don’t have to type everything in front of the audience, especially when we can see the complete examples commented just below what you’re typing. It’s OK to copy paste. You can also have a basic rails application already setup with what you need. This would help speed up presentations next time.

I hope I don’t sound too critical of the speakers. They did a really good job and I realize that speaking in front of people is not easy. I wouldn’t have done better myself.

The best part of the night was after the meeting, as we went to McClean’s for burger and beer. I had an awesome discussion with Marc-André Cournoyer (read his report), Carl Mercier and Francois Beausoleil (who will be doing a presentation on piston next time). We exchanged war stories and talked about every subject concerning rails from deployment to testing to plugins we use. I hope we can do the same next time!

Note: The next meeting will apparently be at the StandoutJobs office. I bet this is just a ploy by Fred to make sure every rails programmers in Montreal wants to work for them. ;)

Popularity: 23% [?]

 

One very useful feature of Texmate that few people seem to know about is Textmate Footnotes. It’s a Rails plugin that adds this menu at bottom of your pages:

Textmate Footnotes Menu

When you are testing your app, you have links that takes you directly to the contoller, view, layout, stylesheets. You can also see the session, params and log for the current page. If you get an exception in your action, each line of the stack trace is turned into a link, taking you right to the file at the correct line where the exception occurred. If you haven’t tried it yet, what are you waiting for?!

Popularity: 6% [?]

 

I’m always interested and impressed by good examples of design and exciting ways to display information. Here are two links you need to check out and keep around when you need inspiration:

  • 45 Excellent Blog Designs: The title says it all. There is good mix of simple and clean design along with more elaborate designs.
  • Data Visualization: Modern Approaches: There are few here that are obtuse in my opinion, but I would kill to get a graph of how my music tastes evolved and varied over the last 10 years such as this.

Popularity: 8% [?]

 

Every time I write a post, it seems I spend a large amount of time putting the links in. My last post contained seven links and it feels like it took an eternity to put them in. I have to open another browser window, google the page, copy the link and then paste it in my post. For some reason, it feels like a very tedious process. I’m wondering if anybody has any tricks they use to make it faster? How do you manage all the links in your posts?

Popularity: 10% [?]

 

Last monday was the third edition of the book club. We grew to a party of five this time. Heri talked about Building Scalable Websites, a book by Cal Henderson, lead developer of flickr. Even though Heri recommends the book, he didn’t seem very passionate talking about it. He says it covers a lot ground, but there is only one chapter that talks specifically about flickr. It led to a discussion about denormalization. People thought that few knew about it, or that they weren’t pragmatic enough about it.

Chris Lamothe then presented Textmate: Power Editing for the Mac. He liked it a lot as it allowed him to really understand the power of Textmate. I’m halfway through the book and like it, but I’m surprised that about two thirds of the book are consecrated to building your own automations. I was expecting more on the editing side.

Next book was Scrum and Xp From the Trenches, which is available as a free pdf. Fred Brunel and I had a very lengthy discussion about process in general. It’s been a while since I talked about process, which used to be one of my favorite subject. I feel I’ve read enough about Agile in general (I think I’m post-agile now), but the book seems short and contains actual experiences instead of just principles and practices, so I might take a look at it.

Other reports

  • Heri’s report
  • Fred Brunel’s review of Scrum & XP from the Trenches

Popularity: 28% [?]

 

Last night I attended my first DemoCamp. It’s an event where people get 15 minutes to demo one of their project.

BrainCuts

Francois Magnan from Categorical Design Studios started the night and seemed really nervous and didn’t talk very loud. He spent five minutes talking about the semantic web just to get to say that his product uses OWL for an ontology. I guess this is good thing? Did it allowed you to do any thing cool, or something that would be very tough without OWL? (I’m sorry. I never saw anything really useful with semantic web technologies (or they have huge implementation problem) and am always fascinated why some people need to mention they used one, yet can’t explain any clear advantages.)

The presentation was hard to follow so here is what I think I understood: Braincuts is a scenario editor that allows you to mix video, images and sound. It can be used for e-learning.

I saw glimpses of a really cool UI, very impressive stuff done entirely using web standard technologies, but I’m not sure what all this tech is used for.

PodBean

David Xu presented PodBean, a side project while he finishes his studies at McGill. For a side project, it is very impressive. I think the best way to describe PodBean is wordpress.com for podcasts (it actuallly seems to be built on wordpress). If podcasting interests you, check it out.

ClixConnect

Mitch Cohen presented ClixConnect, which offers live chat (support / sales) 24/7 for any website. They target SME which can’t afford to have the staff for this. I think it’s an interesting business model. It’s not for everyone, but things seems to be going well for them (they just launched in april).

Josh Nursing

One of the presentation spot was left open this afternoon, so Josh Nursing put something together real quick, and it showed. Half of the presentation was about a bug he found in IronRuby, and the other half about some king of autocompletion for e (a text editor). I’m sorry, but I was bored to tears. Each could have been shown in under a minute, yet he found ways to keep rambling. I guess this depends on the technical level of the audience.

url_pipe

Daniel Haran finished the night with url_pipe. The idea is to bring the power of the unix command line to the web. A simple example he showed involved running a news feed to a geocode service and then displaying the results in Google Maps. He also showed a filter where you draw a shape on google maps so you could see only what’s happening in that region.

The final objective is to be able to have a command line where you could chain all these commands together. Yahoo! Pipes does something similar, albeit in a less powerful and graphical way. Daniel mentioned another use case for this utility: finding an apartment. You could search an rss feed for only 4 and a half apartments, geocode them, and then make sure they are situated in the areas you wanted on google maps. Now that’s cool!

Popularity: 9% [?]