Trail blazing innovators

2010-07-07 07:17:42

The week before last I had an opportunity to sit down with an impressive pack of developers. We were gathered to study Clojure in depth, but as the days passed many other interesting topics were covered. In this short post I'll recount some of the lessons and also share a productivity booster.



Preface

The first ever ConjLabs was held the week before last in Brussels and in attendance were some of the more innovative developers of Europe. After each of them got back home, my feeling is that people really were able to step up to the next level of their Clojure game after those 3 days. One of the guys asked me "Well how do you market an event like this?" and the answer is simple: We didn't. The first Conj Labs was similar to raising a magnet which draws in natural born innovators and see who would show up.

 

Innovators in action

The crowd consisted of experienced developers who were well established in a variety of languages, one of them even knew Perl. In common, they all shared a desire to improve on their current skillset in the hopes of producing better software. One guy said "My ambition is to build small beautiful programs, that are simple and easy to maintain and my hope is, that Clojure is the language which will let me do that." (thanks Walter). I think he expressed an ambition which we all shared, but during the week it occured to me that I was amongst a special brand of gentlemen. For a large part of my carreer I have worked primarily with people who have found something which lets them complete tasks, be it C, C++, Java or whatever. And once they've attained a certain level of mastery over one of these languages, they disregard the glaring problems and productivity inhibitors and push on to complete the assignment on their desk. The magnet-marketing trick had effectively brought in a different crowd.

Another attendant related how he works on a massive code-base for a world wide corporation, where he was tag-teaming with hundreds of developers in C++ in order to add incremental changes to their product. I asked "Its not very mentally challenging is it?" and where many developers might have said yes (and felt it), he said no. He was looking to build projects in a language which would let him be work on the problem and not the limitations/traditions/ceremonies of the language.

 

Innovative weaponry

At the lab there were many different setups. We had Danish keyboards, French keyboards, Dutch keyboards and many more. Almost all of the attendants were wielding Macbooks and OSX while the instructors were on Lenovos. One guy remarked "Its weird to see someone as smart as Christophe using Windows" and I couldn't agree more. So in the name of higher education I agreed with Christophe to have him firmly planted in Emacs for the duration of the Labs. Why? Because Emacs is a black hole which eventually sucks in all productivity killers allowing you to reach previously impossible measures of productivity. The stumbling block, is that you need to crave innovation and productivity, otherwise you might not be able to look past the old-fashioned interface and enormous help file. C-h t however, lets you hit the ground running (emacs tutorial).

I've prepared a small screencast to demonstrate a few of the reasons why Emacs is the IDE of choice for Clojure development, as well the for many other languages. The main pull of Emacs is nothing Clojure specific, rather its the ability to unify all of your tools within the same program:

Emacs - IDEverything from Lau Jensen on Vimeo.

There are a few keys to obtaining über productivity which I try to live by:

I know that there are many would disagree and claim that Mouse-driven IDEs and XML based configs are the way to move forward, but I firmly believe that such convictions stem from a lack of exposure. If you're already an Emacser, I recommend reviewing your toolbox and seeing how much you can stuff into Emacs. If you're not, I highly recommend throwing yourself off the deep end, you'll be surprised a how quickly you start swimming fast while your colleagues are still in float-mode.

I've made the following deliberate choices:

You don't have to do it like I do it as long as you get the big wins from the first list, but I'll admit Ive never seen an effective setup on neither OSX or Windows - However, if one such exists feel free to add it in the comments.

 

Conclusion

The first Conj Labs was fantastic and everybody walked away with a lot of tools/skills to get them to the next level of their Clojure game. We are already mounting the next session which will be in Germany, if you want to be notified when the details are in place either follow me on twitter, watch conj-labs.eu or send me an email.

If I the interest is high enough, I might do a separate blogpost demonstrating my config files :)

Scott
2010-07-07 09:16:58
Nice. I'm glad you mentioned swank.core/break. Other than Hugo Duncan's post on it I haven't seen it mentioned. In fact, just last night I recorded a screencast (not posted yet) covering it and I mentioned it hadn't been talked about. Glad to see that's no longer true!
Karl Krukow
2010-07-08 05:50:10
Hello Lau,
Once again thanks for three great days. I was inspired by your productivity-fetish, and wanted to ask more about "doing everything in Emacs". 

If you have time, I would be interested in a walk-through of your config files. Also a couple of tutorials on the top X best productivity benefits and how to do it would be great :)

Thanks
/Karl 
Praki
2010-07-08 01:50:21
Hi Lau,

I couldn't agree more about emacs being the most productive environment for me too. Emacs being so customizable, I can pretty much find a mode that does what I want or hack something together quickly. I have been able to customize it so I can blog, run ant/mvn, generate/view graphviz graphs and of course do clojure development right from emacs buffers. The multimode mumamo which I use for literate programming is awesome as well. I know of no other IDE which is so easy to customize, available everywhere and not a resource hog!

Please do a post/screencast on your .emacs. I'm sure I will learn a few more cool tricks.
Byron
2010-07-08 08:06:27
/vote for a post on your config files.  :)
Phil
2010-07-08 08:28:22
Nice summary.

Just to be clear: swank-clojure-project isn't technically deprecated, it's just changed hands to a new maintainer. He hasn't made a release yet, but it sounds like he's fully intending to continue development on it.

Is there a way to view all the comments on this site in Conkeror without using the mouse? Surely there must be considering your well-placed disdain for it, but I don't know how to do it. Perhaps you could explain it? 
Brecht
2010-07-08 08:32:56
I would love to see a post on your config files.
Lau
2010-07-08 08:37:56
@Scott: Great - Looking forward to seeing your screencast.

@Karl: Good to hear from you again, loved your latest post. I'll make sure I do a config-walkthrough and point out some benefits.

@Praki: You've caught my interest in digging deeper with Emacs :)

@Phil: Scroll all the way to the bottom, hit **; 11 to focus the div, then scroll as normal. the "11" might vary.
Shae Erisson
2010-07-08 08:46:14
I'd recommend using eshell as well, especially with esh-toggle. I have eshell-toggle-cd bound to a handy key, it drops me into the directory of the file I'm editing.
Maciek
2010-07-09 10:19:26
Hi Lau, How did you convert the email to HTML in WL? Did you run org-export from the draft buffer? Please post the code to configure that. 
Thanks, Maciek
Sami Samhuri
2010-07-11 06:41:08
OS X users should check out Divvy and SizeUp for tiling WM goodies on your Mac. They provide good, customizable keyboard interfaces.

These parts of my emacs config might be interesting too: http://github.com/samsonjs/config/blob/master/emacs#L356-377 and http://github.com/samsonjs/config/blob/master/emacs#L396-411
Konrad
2010-08-30 07:36:41
As a long-time Emacs user, I agree with most of what you write. But I have moved away from Emacs for most non-development tasks over the years, because unfortunately Emacs add-on development didn't keep pace with the evolution of the rest of computing.

One important problem is e-mail. Proper IMAP support is next to impossible to have. You seem to use Wanderlust, which however I was never patient enough to install. It has dependencies that must be downloaded from obscure Web pages written in Japanese, for example. That's not professional software.

Another problem is personal information management. Calendar and BBDB are fine, but they don't sync with my Google account so that I can access the data while travelling.

Finally, a suggestion for those who use MacOS X. I set up a development environment based on Emacs, Conkeror, and rhe Awesome window manager, which I run in a full-screen X server. Just install emacs, awesome, and xulrunner via Macports, configure your X11 for full-screen use, and put the following into your .xinitrc:
    source $HOME/.bash_profile
    quartz-wm --only-proxy 
Anders Olme
2010-10-01 06:23:22
Is org-mode the way to construct a work diary ( like "consult diary" ) or is the calendar/diary mode the way to go? Ideal for me would be a searchable list of item which are tagged with date so that one can go back in the end of the month to check out what happened a certain day. unfortunately i cant make todo list since we cant plan ahead more than an work-item a time >.< .