25
Feb 12

9 Years of Blogging

I missed it. Crap. Feb 10th marked by 9 year blogging anniversary.

Sure. There’s been ups and downs in the volume of posts that appeared here. At some point I managed to post once every single day for a year. For the past few months it’s been quiet, at least on zef.me. But I still blog — more on other websites. Little over 1,600 posts in 9 years.

Next year requires a more extensive celebration.


25
Feb 12

We don’t need no IDE!

Two quotes from a random Quora question asking for a HTML/CSS/PHP IDE:

You don’t need a full-blown IDE for web development

and

… you can’t go wrong with TextMate. It’s easy to use, convenient, and extensible. Plus the syntax highlighting blows everything else out of the water.

I wonder. What happened the past few years?

The 90′s and 00′s were the golden age of IDEs. No longer did you have to use plain text editors that did nothing but paint your code in colors. No longer did you have to use a command-line based debugger. No longer did you have to open up a reference manual to see what arguments that one method takes or how it works. No longer did you even have to remember what methods a string object has. No longer did you have to do Find & Replace refactoring.

But today, IDEs got a bad rap.

Since the growing popularity of dynamic languages, people seem to get the idea that IDEs are only required for those bloaty old languages like C# and C++ and oh-my Java. IDEs are, general perception seems to be, bloaty pieces of software. Resource hogs. Slow. Badly designed. Not cool.

So, the current generation of programmers — you, most likely — seems to have moved away from the languages typically associated with IDEs. You use cool languages, like Ruby, Python, PHP and JavaScript. And cool languages don’t need no IDE. You’re pretty happy with your simple, basic text editor.

Your language don’t need no code completion — you can keep the entire API of your application in your head. You don’t need no refactoring — you no longer make design mistakes. You don’t need no debugger — because, there’s no more bugs in your software, and console.log ought to be enough for everybody. You don’t need constant analysis of your code and clearly marked warnings and errors — you’ll find the mistakes you made when it is time. You don’t need integrated API documentation — you know everything there is to know already.

But perhaps there is still a lot of opportunity for doing amazing stuff in the IDE space. Maybe an IDE can be very useful. Cool. Great. Even for dynamic languages.

Yeah — maybe.


05
Feb 12

Avoiding JavaScript Pitfalls Through Tree Hugging

Mid-january I have a talk about treehugger.js at MeetJS Summit. Treehugger is the library I developed for use in Cloud9 for various code analysis features.

The video of my live coding is not always super clear, but I think it gives a good, albeit brief, introduction to my work there anyway. To play with treehugger.js (as I did during the talk), you can use the treehugger.js playground.


20
Jan 12

Dr. Zef

Last week Wednesday I successfully defended my PhD thesis. Therefore, I am now officially a doctor. I was a little nervous, because you don’t know in advance what questions will be be asked during the defense. However, it was a very nice, friendly defense.

You can download my thesis as PDF, though I must warn you: it’s a page turner!

Domain-Specific Languages (DSLs) are programming language aimed at a particular problem domain, e.g. banking, database querying or website page lay-outs. Through the use of high-level concepts, a DSL raises the level of abstraction and expressive power of the programmer, and reduces the size of programs.

This dissertation covers various aspects of the design and implementations of such DSLs. Throughout the project, two DSLs were developed: WebDSL, a language for rapid web application development, and mobl, a DSL for mobile application development. Using these two case studies, the dissertation explores the design space, as well as techniques developed to implement the compiler and IDE for such DSLs.

The general design principle applied is syntactic integration and separation of concerns. Rather than using a number of DSLs to build a single application, our approach is to develop a single, integrated DSL that can be used to develop the entire application, while still enabling clear separation of concerns. The result of this integration is static verification — the ability to instantly be notified when your program is inconsistent, without having to run it.

The dissertation covers five aspects of DSL design and implementation: (1) Verification, the ability to verify applications written using the DSL; (2) Coverage, how to ensure that a DSL enables its user to express what he needs to express; (3) Abstractions, the use as well as the definition of abstractions in a DSL; (4) Code generation, techniques for efficiently generating executable code from a DSL; (5) Portability, the ability to generate code from a DSL that is runnable on multiple platforms.


29
Dec 11

Reality Distortion through Text

One of Steve Jobs’ most amazing traits was the ability to “invoke” a reality distortion field. He did it many a time. He went on stage, pitched his new product and even though you didn’t need it at all — you’d feel deep inside that in fact you really did. You had to have it.

According to his biography, Steve did this in many aspects of his life. Not just on stage, but also during meetings and even with his disease. In the later case that did not work out so well.

I always wondered — what is the essence of this distortion field? Could I do that, or is it Steve-specific? Does it require you hearing him, seeing him, or could he do the same thing through text? Yeah. Would it be possible to convince somebody of about anything as long as you would pitch it the right way in text, online? Is it about the pitch, or is it more than that? Can you somehow perfect a writing style that does that?

Since then I made an attempt or two, of really working on pitching an idea just right. Perfecting it in every possible way. Attempting to describe it in such a way that you simply could not disagree. And I think, at times, I did pretty well. But then I found out the reality of an online audience.

They don’t read this far. TL;DR.


28
Nov 11

Blog Activity

Although it’s quiet here, I’ve been putting down a fair amount of words on the Cloud9 IDE company blog recently. For your reading pleasure:


04
Sep 11

Everything “In The Cloud”

Here’s what I use my computer for:

  • Browsing the web
  • Email
  • Twitter, Facebook, …
  • Listening to music
  • Watching video
  • Chat/call/skype
  • Developing software

I realized that all of these take place “in the cloud” (distributed on multiple servers across on the internet) today. There’s very little vital data that I still store locally on my harddrive.

Browsing the web, email, twitter, Facebook is all online, all this data is in the cloud. I do most of my music listening on Spotify, which also stores my playlists, and have my iTunes Music directory backed-up on Dropbox. Recently I have been uploading almost all my documents to Google Docs as well as some video content (which I can now stream from my Docs account). Chatting and calling is also all online, using Skype, IRC and Google Talk.

Last Thursday I started my job at Cloud9 IDE, Inc. who build the Cloud9 IDE — which, you guessed it, enables you to develop software in the cloud.

I think I can truthfully say that if my laptop breaks down right now, it really wouldn’t matter. I wouldn’t lose any important data.

None.


04
Jul 11

Plus

Don’t want to show off or anything, but I’m on Google+ so follow/encircle me if you like!


29
Jun 11

State of Code

In case you hadn’t noticed: I have launched a new site: StateOfCode.com. Another site? Indeed.

Whenever I write on zef.me I feel it has to be personal somehow. It’s all about me, right? Hence the name :-) I’m not going to report on “news”. I’m not going to do interviews. Who would participate in an interview for somebody’s personal blog?

And yet, I’d like to do those things. I feel there is a lot of interesting stuff going on in my field of interest: programming languages, frameworks and other developer tools — stuff we can never learn enough about. I have found that simply e-mailing a person involved in such a project, asking them questions is a great way to extract this information: “You seem to be passionate about x can you let us share in your enthusiasm?”

It turns out most people are actually friendly and want to answer your questions — they would like to share their interest.

This, combined with the latest “programmer’s news” is what I aim StateOfCode.com to become. It makes it possible to get other people to help me out on the site some day (anybody interested?). And since the site has been online barely two weeks, and already had about 6,000 visitors — it looks like a promising endeavor.

So far I’ve published two interviews. One with Bruno Jouhier on streamline.js , and another with Manuel Simoni (of the great Axis of Eval blog) on Lisp. There’s another interesting one queued to be published next week, and a few more people have agreed to participate. But there is room for opinion pieces as well, Are Web Apps And Insult to Users got a fair amount of response.

Anyway. It’s a new project and I’m enjoying it. Want to help out? Write posts, have tips? Know people I should talk to? Email me or contact me on twitter.

Be sure to follow @stateofcode on twitter as well (or me, new posts are pushed to both twitter accounts).


29
Jun 11

+