h1

Event-based programming is the new GOTO

November 9, 2009

Quote of the day from Ulf Wiger @Øredev.

h1

GTalk Chat is disabled under Firefox3

June 19, 2009

Since I upgraded from firefox 2 to firefox 3 (sometime ago) I had to deal with the certificate stuff which is some security at the cost of some unfriendly pain… Anyway security rarely comes without pain: having to remember crazy passwords, having to bear this f*ing virus scanner at work…

So well I encountered this on GTalk from https GMail interface:

Chat is disabled.
Your internet connection is experiencing problems or your network administrator has blocked Gmail chat. Learn more

There is absolutely no internet connection problem (it works with Internet Explorer), and it seems as if not everybody encounter this issue.

I have been fetching the web for a solution without success, so here is mine:

You should add https://chatenabled.mail.google.com/ to your certificates as it will be unknown:

(Code d’erreur : sec_error_untrusted_issuer)

You can log back to GMail and you should see GTalk.

h1

How (not) to Buy Legal MP3

April 25, 2009

Wanted to buy some MP3 I can find only on amazon.com and here is what I get:

We are sorry…
We could not process your order. The sale of MP3 Downloads is currently available only to US customers located in the 48 contiguous states, Alaska, Hawaii, and the District of Columbia.

We apologize for any inconvenience this may have caused you.

But of course amazon.fr do not have them as MP3 and not even as CD but only from third party sellers… Same goes with fnac.fr and alapage.fr …

h1

Ruby Attacks

March 23, 2009
ruby_attacks1

Looking for a Ruby Job ?

h1

QCon London 2009 – A huge breath of air before a long apnea in the IT real world

March 22, 2009

QCon Badge

That’s a long time since I didn’t post here. After 4 days at QCon London and one week of ski in Argentière, I decided I would bend the rules of this blog by exposing my feelings, here about QCon.

To make it short, it was a great moment of thoughts and convivial discussions. It is by far the best conference and IT event I attended so far for different reasons:

  • It covers an extremely broad spectrum of the IT World. With 5 main tracks at the same time during the whole days, the content is well diversified: Languages (functional, mainstream, …), Architecture, SOA, Agile, Performances, Finance and a newly very original track about Historically bad ideas.
  • The panel of speaker is incredible: Sir Tony Hoare (Quicksort inventor and much more), Martin Fowler, Joe Armstrong (father of Erlang), Rich Hickey (Clojure inventor), Ola Bini (JRuby developer and more), Rod Johnson (Spring Inventor), Dan North, Eric Evans (Mister DDD), and many more… Now you have an idea of the amount of experience and research accumulated by such a group of people.
  • It is not polluted all around with commercial presentation with stuff to sell.
  • The organization was very good, conference center is quite central (my hotel was 20min walk from there) and comfortable, wifi, food (very good for such event!), a free beer night for speakers and audience.
  • I had the chance to meet Floyd and other editors from InfoQ (Dionysios, Stefan, Ryan, Diana, Sadek, Werner, Mirko, David, Jon, Roxanne, Alex) and we had a pleasant time in restaurants and pub.

Now getting back to the presentation it started with a Keynote from Sir Tony Hoare about scientist and engineers and how to qualify software development. This is very well summarized by Gojko. This was definitely a great introduction to QCons.

Unfortunately I did a mistake by choosing Architectures in Financial Applications track. As a developer for various financial institution and vendor, I was expecting striking real world finance applications, but I was mostly disappointed. I didn’t learn much from it. And it was a wise decision to part this track and attend Martin Fowler presentation instead. In Three years of real-world Ruby, Martin talked about his feedbacks on the 64 (or 63.. I cannot remember) projects done at ThoughtWorks. Martin is a brilliant speaker and by relying on a nice metric his whole presentation was convincing. That’s too bad I was too shy to ask Martin this question: 10 years ago, cool kids were doing Java, 5 years ago they were doing Ruby, today cool kids are working with Haskell, or Erlang, do you plan to follow the cool kids again and give a presentation about Three years of real-world Functional programming in QCon 2012? But well I had an idea of the answer in the multi-paradigm IT world we live in today.

This first QCon day ended with QCon Conference Party in a pub not far from the conference center, with free beers and serious talks with Stefan Tilkov, Werner, … and less serious ones about wine and miscellaneous stuff with Cameron Purdy, and other attendees. Was nice to see such people like Ola, Kirk Pepperdine or Rod Johnson hanging around with a pint.

I spent the second day on the Functional and Concurrent Programming Languages Applied track which was led by Francesco Cesarini. The high moment of the day was the presentation by Rich Hickey about Persistent Data Structures and Managed References about states, process, identity and applications to Clojure. Multicore Programming in Erlang was also quite interesting. This whole track convinced me to have a closer look at Clojure, but also confirmed my choice to learn a functional language in 2009 which is the reason why I came back in Paris with Real World Haskell book in my bag (Yeah I know, Erlang is cool and was well covered during QCon but a friend advised me to have a look at Haskell). At the end, I learnt many concepts and ideas that could be applied in my day-to-day job or side projects. Second day ended with a pleasant time with InfoQ editors at a restaurant.

Third day was again very rich intellectually. I followed most of the Historically bad ideas track. This track was a very original good idea. But as Aino Corry stated, convincing speakers to participate to such a track was far from being a piece of cake (we all have our egos ;)), unless… Sir Tony Hoare would be part of the track. His Null References: The Billion Dollar Mistake session was a good historical overview of what lead him to introduce Null References. Later I parted the Historically bad ideas track to join Systems that never stop, with Joe Armstrong introducing Erlang (A language for programming reliable systems). He introduced Erlang and why he invented it (for Ericsson Telecom Infrastructures). Relying on quotes from prestigious sources, Joe outlined the six laws Erlang is based on:

  • Isolation
  • Concurrency
  • Must Detect Failure
  • Fault Identification
  • Live Code Upgrade
  • Stable Storage

If you need all this, Erlang should be a good candidate for you. The presentation was one of the best I attended and Joe made it a very pleasant moment.

To finish this last day, I decided to attend the interview with Tony Hoare and another one about REST for SOA: Using the Web for Integration with Ian Robinson & Jim Webber. Apart from being very charismatic persons, Ian and Jim are very pragmatic architects, and Stefan asked them the perfect questions.

We had a last dinner with Floyd and InfoQ team, and some more beers at the pub.

So well, as soon as the videos are out on InfoQ, you must absolutely have a look at the following presentations:

  • Opening Keynote: The Science of Computing and the Engineering of Software by Sir Tony Hoare,
  • Null References: The Billion Dollar Mistake by Sir Tony Hoare,
  • Erlang: A language for programming reliable systems by Joe Armstrong,
  • Persistent Data Structures and Managed References by Rich Hickey.

And interviews:

  • REST for SOA: Using the Web for Integration with Ian Robinson & Jim Webber.

Now some random thoughts:

  • It’s funny to see the success of retro-engineering and empiric architectures or languages: REST, Erlang. Compared to Sun’s first-specify-then-implement approach.
  • QCon is a tasty moment for a computer science enthusiast like me but well it’s so frustrating to see the IT enterprise reality: java, java and java and the rest only for the Happy Few… And in big structures even when you would be pushing to adopt more suited solutions discovered at QCon (or wherever: blogs, …), there will always be a higher ranked guy who is reluctant to changes and everything it implies.

I just wish I had chosen a different track instead of the Financial one on the first day. It should be interesting to have a small fun and provocative introductory session next time on How to schedule your QCon, what to avoid. I already imagine Jim Webber presenting this and nagging Martin Fowler. But seriously this is a very hard task. Basically you’re never disappointed by big names, so you should favor them but still you can be surprised by other small sessions.

All in all, the feedbacks I had from people in the audience, and speakers or people on the net tend to confirm my opinion that QCon London 2009 was a great success. I’d like to thank Floyd, and the whole InfoQ Team for this great moment.

h1

JRuby still kicking some ass

April 28, 2008

Ruby’s future is looking bright, in no small part due to the many implementations. How’s your favorite language looking?

That’s always such a pleasure to read Charles views and stories.

h1

What’s wrong with *J*Groovy?

February 23, 2008

Patch

Every new year comes up with its JRuby vs (J)Groovy battle. Obviously (J)Groovy users/community are good at promotion, you’ll hardly ever see posts about JRuby without (J)Groovy marketing propaganda posted in comments.

I am definitely in favor of JRuby but I can understand some of the (J)Groovy arguments. I have nothing against JGroovy, it surely integrates pretty well with Java World and I think the mix of Java with Groovy will be easily adopted by the fearful Managers (fearing Ruby).

So what’s wrong with *J*Groovy ?…

Groovy!

JRuby and Jython were developped on top of 2 popular languages (Ruby and Python) which have been existing for more than 15 years, with their own community. Today Ruby and Python are heavily used running their own vms on nearly all os possible. Ruby has no less than 4 vm implementations. JGroovy is based on Groovy language which is 5 years old and only cloned what it found cool from its neighboors to patch Java dinosaur. Would you invest in such language? At least Sun, Microsoft, IBM, Thoughtworks, Oracle made their choice…

Fact is Groovy language has no mean of existence on its own without Java.

h1

Total Google searches: 5346

January 1, 2008

That’s the number of search I did using Google in last 6 months (since they set up their web history around June). Do you imagine that ? More than 10000 searches/year, 27/day, 1/hour…

Now you have an idea of Google success. Google’s search engine is the thing I use the more together with… Gmail, GoogleReader…

Of course I am not a typical web user as 1) I work in IT 2) I am damn curious and need to find what I am looking for.

Now this raises several questions :

  • Is this number (5346) accurate ? Didn’t I search more… or less ?

The counter must not have missed many queries (ie when I am not logged in) as I nearly always have a living opened Google session with Gmail in some other tab while I am on inet. Though this number could actually be cut by a half because many semantical searches out of all this needed several refinements, each incrementing the counter (ie “m17n windows”, “notepad m17n compliant”, “m17n editor”, …)

  • Is this web history useful ? For me ? For Google ?

For me, not really… All searches lead to Rome anyway so why would I need a very specific search I did 5 months ago ? The only time it was useful for me was now to realize how much I was using Google.

For Google,… it’s a damn mine of information (one more).

Oh, by the way, I only clicked on 4 sponsors in 6 months, which gives a 0.0007% click ratio. But maybe this is because I block Ads, Fuck Ads! Too bad such useful services as Google live on ads only…

h1

I will not violate Demeter’s Law!

October 28, 2007

I find “laws” when applied to software design a wrong term. I prefer the term “best practice”.
Anyway…

I will not violate Demeter’s Law!

h1

Rails Wanted Dead or Alive $2.500.000!

July 10, 2007

Wanted Rails

Rails success is not debatable. But this was not an easy battle (and still isn’t) and some projects are trying to keep the ewes into the JEE garden.

Rails SLOC 2004-2007

This represents the SLOC (Source Lines Of Code) of Rails since it was born 3 years ago.
What to say about this? Basically you can’t say much about SLOC (see the SLOC part of a previous post)… Except that the progress is regular (which can be explained by the fact that it is maintained by a company in contrast to open source projects which might have an important growing community of commiters)
Now sloccount gives us a summary:

Total Physical Source Lines of Code (SLOC) = 74,385 (100% Ruby)
Development Effort Estimate, Person-Years (Person-Months) = 18.45 (221.45)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 1.62 (19.46)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 11.38
Total Estimated Cost to Develop = $ 2,492,879
(average salary = $56,286/year, overhead = 2.40)

So the reward for Rails is $2,492,879!
This is based on 2004 salary…

Now if you want to have some fun and get some stats from your favourite svn repository, go get Ruby, go get Gruff, go get sloccount, go get a Beer, and relax!
Sorry for the format but WordPress really doesn’t help me…
# railssloccount.rb
# July 10, 2007

require 'date'
require 'rubygems'
require 'gruff'

DIR_DOWNLOAD = '/home/username/railssloccount/'
STEP = 15
FIRST_DATE = '2004-11-29'
GRAPH_SIZE = 400
GRAPH_HORIZONTAL_AXIS_SPACE = 16
axis = {}
datas = []
index = 0

puts "svn checkout --revision {#{FIRST_DATE}} \
\"hxxp://dev.rubyonrails.org/svn/rails/trunk\" \
#{DIR_DOWNLOAD}trunk"


`svn checkout --revision {#{FIRST_DATE}} \
\"hxxp://dev.rubyonrails.org/svn/rails/trunk\" \
#{DIR_DOWNLOAD}trunk`


(Date.parse(FIRST_DATE)..Date.today).step(STEP) do |date|
axis[index] = date.to_s \
if
index % GRAPH_HORIZONTAL_AXIS_SPACE == 0
index += 1
puts "svn update --revision {#{date}} \
\"hxxp://dev.rubyonrails.org/svn/rails/trunk\" \
#{DIR_DOWNLOAD}trunk"

`svn update --revision {#{date}} \
\"hxxp://dev.rubyonrails.org/svn/rails/trunk\" \
#{DIR_DOWNLOAD}trunk`

puts "sloccount #{DIR_DOWNLOAD}trunk"
result_cmd = `sloccount #{DIR_DOWNLOAD}trunk`
File.open("#{DIR_DOWNLOAD}sloccount_#{date}.txt", "w") { |f|
f << result_cmd
}
result = result_cmd[/ruby:\s*(\d+)/].gsub(/ruby:\s*/, '').to_i
puts "Date: #{date} - SLOC: #{result}"
datas << result
end

axis[index-1] = last_date.to_s

g = Gruff::Line.new(GRAPH_SIZE)
g.data('Rails SLOC', datas)
g.labels = axis
g.minimum_value = 0
g.title = 'Rails SLOC'
g.write("rails_sloc_#{STEP.to_s}day_#{GRAPH_SIZE.to_s}.png")