Oct 15

The next big language; Theory, practice, and the killer app

Tech 20 Comments »

Ruby, and Rails was so 2005, at least for some :)

People are on the look out for the next big thing, and the alphadevs are all sniffing around the Functional. Scala, Haskell, OCaml, Erlang, ML, F#, Fortree, Lisp, Clojure, it keeps on going.

Is one of this crowd going to make a break for it?

Stuart Halloway has the knack of being ahead of the curve. He has been getting into Clojure, so much so that he is writing / porting a lot of work to it.

Bruce Tate likes it too, saying:

Functional programming that’s optimized for concurrency like Erlang, fast and type safe like ML, allows persistent data structures like OO, but with immutability.

For more, Stu shared some talks given by the Clojure creator Rich Hickey.

Stu has also been thinking about the next thing in the abstract too, as has Mr Polyglot Ola Bini.

Ola does a good job at splitting up some ideas:

  • Better implementation techniques. V8 is an example of this, and so is Hotspot. V8 employs new techniques to drive innovation further, while Hotspot’s engineers continuously adds both old and new techniques to their tool box.
  • DSLs. The focus by some people on domain specific languages seem to be part of the larger focus on languages as an important tool.
  • Functional semantics. Erik Meijers keynote was the largest push in this direction, although many languages keep adding features that make it easier to work in a functional style. Clojure is one of the new languages that come from this point, and so is Scala. The focus on concurrency generally lead people to the conclusion that a more functional style is necessary. From the concurrency aspect we get the recent focus on Erlang. Fortress also seems to be mostly in this category.
  • Static typing. Scala and Haskell are probably the most representative of this approach, in trying to stretch static typing as far as possible to improve both the programmer experience, semantics and performance.

It feels like we are very much living in the land of theory these days. It is easy for us to play though. Many of the languages are on the JVM, so if you are a Java chap who doesn’t fancy the language quite so much these days, you can still play relatively nice.

The theorists wax about how we need to get back to proofs as the only way to scale in two ways: maintainability of a large code base, and for scalable performance (make life easy for MapReduce).

In my gut, I get it. Part of me wants to spend a bunch of time playing with all of these languages.

However, the other side of the brain is cautious. I used to use a little Perl Web framework that I wrote back in the day. I would tweak it for my needs, and knew every line of code. As other developers joined the company, they would extend it for our general desires too. If I had never jumped over to Java (and the many frameworks) and then even Rails, would I REALLY not be more productive?

There has to be a real reason to jump onto something else. I then take Ajax into consideration, and the fact that I spend more and more time thinking about my JavaScript architecture for an application. The balance between server side code and client side ebbs and flows, and feels like an art to get right. Too heavy on the client, and then the server is just a dumb store that doesn’t even do secure validation. If you go the other way, and the server is doing way more than it needs too.

JavaScript is here to stay (at least for a good while). It has closures. With 3.1 and then really Harmony, it is going to get even nicer. But, even today, I actually quite like it, mainly thanks to the libraries that have made working with the DOM and browsers bearable.

Maybe server-side JavaScript is the answer, so you can stay in one world back to front (well, and of course HTML, and SQL, and …). Jaxer is doing a good job there. I am very closely watching to see if the community goes for it.

Web scale could cause a few changes, and Comet / messaging (one reason why Erlang is doing quite well), but even there you can get a LONG way with current technology, especially as they get their act together (e.g. Servlet spec update to codify the great work in Jetty).

Is there going to be a killer app out there in the near term for one of these languages? Will a Rails show up for Clojure? Regardless, I am going to enjoy watching Stu write and talk about it, as I always learn something from him :)

Oct 13

Joining Mozilla to create new developer tools for the Web; Hoping to create a new chapter in the book of Mozilla

Google, Mozila, Tech 35 Comments »

I just announced that Ben and I are joining Mozilla. Alongside Ben, I will be leading a brand spanking new developer tools group.

To say that I am excited is a huge understatement. Ben and I have been talking about developer tools from the first day that we met on the No Fluff tour. For a very brief period I consulted together with him, and got to start on a vision for a productive Java stack. When consulting, I always saw huge productivity problems, and wanted to think of ways to solve them. Tools are one way to go, and the developer tools group at Mozilla is going to be different. We aren’t narrowly going to look at a way to build Eclipse plugins for example. Rather, we want to take a step back and see how we can help Web developers build compelling software with great user experiences in a productive way. We don’t want to think “we need VB on the Web.” We want something more.

I said a lot of this in the announcement post:

Mozilla is placing a big bet, not only on us, but in the developer tools space.

Why are we doing this? Ben and I are passionate about a couple of things: compelling software and developers. In various roles in the past, we have built tools that attempt to make developers productive. We are huge advocates for the Open Web, yet we feel that tools are lacking on our collective platform. We want to help make a difference.

As we ramp up this new group, we will be looking at the problem and seeing where it makes sense to step in. We are going to be experimenting, and thinking about how to make developers lives better in different ways, so we aren’t expecting to see traditional tools come out of this group. Also, we don’t want to do this alone. We want to involve the entire community which is one reason that we are so excited to kick off this work at Mozilla. We believe that we have a unique opportunity to put developers first. We can build these tools in the open, with total transparency; the Mozilla way.

We respect the work being done by other vendors, and very much want to work together. We can’t wait to reach out early-on in the process, involving companies that believe in the Open Web like we do. Together we can drastically improve productivity, allowing developers to build compelling user experiences.

We are just getting started. As soon as we come up with some ideas, we will be sharing then with you and asking for community participation in various forms. You, the Ajaxian community, have been phenomenal over the years, and we can’t wait to do more together.

We also included a personal message:

There are a lot of personal issues here too. I strongly feel that my best work has been done when working with Ben. He has been an inspiration, as well as a great friend, and we have long wanted to work together. It is nuts that our paths haven’t brought us together in a full time capacity in the past. I can’t wait to get started with him now. I learnt from my Dad that you should have fun at work. Part of that is being around people you truly like, working on something you feel is important, and being able to excel. I think that I will get an abundance of that.

I am also very proud to be join Mozilla, the non-profit Foundation stands for what I believe in. Being someone who thrives on Open and transparent, how great and freeing will it be to develop all of this in the Open, being directly part of the community. At any company there are things that you strategically can and can’t talk about. At Mozilla on the other hand, everything is out there for all to see. That fits me to a tee! I have also long admired the talent that lives at the company and I look forward to working together.

What about Google though? Some people will think I am crazy for leaving the fastest growing company in history! :)

I have been running an Open Web advocacy group, and Google is definitely on the right track. You could argue that it is easy for it to be, since it is dependent on an Open Web. Also, it doesn’t need to come up with a business model. That is all true, but it is still pretty amazing to see exactly how much engineering is given away, or I should say shared with the community, through Open Source and APIs.

Being on the inside you get to really see what the company is all about. People have their views on Google, and any large company. Some talk of Big Brother and the like. Of course, the reality is that a company isn’t one being. It is a large group of people with varied ideas. These employees really hold the company to a high standard, as I have talked about before. I will continue to hold Google to those standards from the outside. How many companies would make a stand on Proposition 8? Google is special.

In the time that I have worked there, it sure has changed as it has grown too. How can you grow that fast and not have big changes? I have moved offices 9 times for example :) There are some things that have irritated me, and that I have wanted to change. The hiring process is one of them! However, recently, I found peace with a lot of the issues. I realized that without them, Google wouldn’t be Google. The last thing it needs to become is “just another company.” I hope it continues being as different as it can as it scales and brings in more and more outside forces.

I have to laugh when people talk about its future. We just saw the 10 year old birthday of the place, and it has only just begun. You can talk about advertising being a one trick pony, but the scope of advertising is also very young indeed. Just watch Minority Report again, but then think about how it could be done in a useful way.

Then think about the server side processing power that the company has. A handful of companies have that much processing ability which will enable solutions to problems that only they can do a good job coming up with. It is tough for a startup to come along and tackle some of these issues.

As I experienced my last week at Google, and had the tough job of saying good bye to the amazing group of people, I had a thought. It felt like I was leaving one premier league football team for another, and I knew that I would get to play with a bunch of the old team mates when the national games happened.

This is a new world. Google is of the Open Web, just as Mozilla is (and many others of course). This means that I really WILL get to work with old friends there. When in history has that been the case? If you went from factory X to factory Y, that was it. “See ya at the pub lads” was as far as you got.

The notion of company has drastically changed. The people who pay the bills may not be the people you work with all the time. I bet that Ian Hickson works with folks from Apple, Mozilla, and Opera just as much as Google counterparts! The goals that Mozilla and Google have are so aligned, that I think we will naturally continue to work together.

Finally, I am looking forward to a little sabbatical. Whenever I take a new job I am so excited that I jump right in. Then you look back and think “why didn’t I take a bit of time off then?”

This time I hope to help Obama a little on the final stretch, get some personal issues cleaned up, and in general take some time to change my lifestyle.

If you have pain points in development that you wish someone helped you with, please let us know!

Oct 01

Small things; How Facebook and Twitter share new features

Tech with tags: , , 5 Comments »

This is incredibly anal, but I appreciated it. When Facebook launched their new look and feel, it started out on a beta site, and then migrated to become the default. For what feels like a looooong time, I have seen this header:

Facebook New

The problem is that I get it. I know now. Let me get rid of the header please!

Twitter on the other hand did a really good job with this. When they launched the election subsite I started to see this:

Twitter Election Header

Once I internalized that I could click on the ” X ” close icon and it would minimize to this:

Twitter Election Minimized

Minimized allows me to get back to it if I want, but without taking much real estate. There have been some issues where it doesn’t seem to remember that setting, but in general I like this kind of implementation. On the right hand side they have a little box for their new look and feel that says “Notice something different? Read about the changes.” I wish that had an ” X ” too, without minimize, as again… I know it is new, and I don’t need to read about it anymore :)

Sep 30

Searching for Ajax in 2001 on Google

Google, Tech 5 Comments »

Ajax search for Google at 10

When Dylan told me about the idea to resurrect an old index as part of the 10 year old birthday festivities, I thought it was very cool indeed.

They found one, and you can search on it here. Vanity searches are fun, and Ajax returns very different results :)

Sep 30

From Google Developer Day to The Ajax Experience

Ajax, Tech with tags: , , , 1 Comment »

I am on the final leg of a few weeks on the road. I had a great time in Europe speaking at the Google Developer Day events. Above, are the slides from the Madrid event for the “State of Ajax” talk that I gave.

The video is up too:

Now, in Boston, I am having a great time at The Ajax Experience as always. The reason that Ben and I started this event was to have an excuse to get the community together. The speakers are top notch, and it is great to have them.

Since Ben and I have given a ton of talks together, we wanted to shake it up a little bit for our opening keynote. So, 30 minutes before the talk, we whipped up a trivial “Random Presenter” application that would run a buzzer at a random time between the min and max that you set. We used 10 seconds to 120 seconds, and whenever the buzzer went, the other presenter had to take over at the point. This would often be mid-sentence, and Ben did a particularly good job at ending mine :)

It was a lot of fun for us, and I hope it was a little entertaining for the crowd. There is nothing like improv to keep you on your toes!

Sep 29

Small feature, huge difference; Correlating entries in FriendFeed

Tech with tags: , No Comments »

A week or so ago, FriendFeed included a feature that changes the experience for me on the site.

I used to see this kind of stuff all the time:

FriendFeed Duplicate

Many people would Twitter something with a link, and post it to del.icio.us, and blog about it, and also were members of FriendFeed Rooms. This is a poisonous interface, as it gets very frustrating for the user (at least, for me).

With the new feature, my flow looks like this:

FriendFeed Related

It appears to be quite smart too. It puts together items, kind of like TechMeme, where you see Bob posting to his blog, and then Harry posting about it too appears under that item. It is doing smart grouping, which in turns give you more content.

I would like to see it go further in some ways, and not take up as much space on the “related” line, especially for items that are true duplicates. The algorithm is still getting its grove on, and I often still see the duplicates, but this is a great feature, and knocks down another mini-barrier of my FF usage.

Sep 25

Frustrating User Experiences: iPhone NetNewsWire and Newsgator

Tech with tags: , , 7 Comments »

iPhone NetNewsWire

I love NetNewsWire. I still prefer it on the Mac, and was jazzed to get it on the iPhone. Unfortunately, the picture above is normally about as far as I get with the iPhone NetNewsWire application.

I am sure that the problem is that I have many feeds. Too many for the application to handle. I wanted to give it a hand, and setup a profile of only the feeds that I really care about. I have folders already setup on my desktop application for this. I have the ‘must read’ folder, and then other ancillary ones.

Newsgator has thought about this, and gives you the ability to setup different profiles for various devices and systems, but the UI is awful, and misses the key feature that I need. As you can see below, when you have a profile, you can’t just select an entire folder, but instead you get a list of feeds! This means that I would have to go through all of my feeds and manually select the ones from my ‘must read’ list! And, what about when you add a new feed? You have to go in and select it for that profile then too? Ugh, do I really have to migrate everything to Google Reader?

iPhone Newsgator

Sep 24

Time for SPEC JSVM? Benchmarks are bloody hard, but we need better

JavaScript, Tech with tags: , 1 Comment »

I have had the pleasure of spending time with members of the V8 team such as Kevin Milikin and Kasper Lund, and Brendan Eich of Mozilla and TraceMonkey. I haven’t had a chance to talk with the great folks behind SquirrelFish Extreme yet, which looks very good too.

It has been great to talk to these guys about the way their implementations work, and to look at differences too. What has been particularly exciting has been how they have loved each others work. There is a huge amount of respect between all of the teams, and they are jazzed to be making the JavaScript world scream.

One common issue that I have found has been benchmarks. They all use slightly different benchmarks and can all agree that:

The JavaScript benchmarks suck!

SunSpider has known bugs in it which are not changed because they have a baseline with IE. Are you kidding me? It is also very Regex heavy, and also focuses on other areas. The methodology of just adding up all of the timings also doesn’t help, and totally skews results (you could do the important things fast, and the obscure things slow, and still look bad). IE can’t even run the tests correctly, and thus their numbers are messed up too.

Dromeo is interesting, but has flaws too. The timing seems to be broken as only V8 gives you precision that doesn’t get rounded down, and thus they get penalized. Also, it uses libraries which do “if browserX do X elsif … else ….” which means different engines actually go down totally different paths.

This is the tip of the iceberg. Benchmarks are notoriously hard to build in a way that measures practical performance versus micro meaninglessness.

It seems like everyone acknowledges that JS benchmark life is pretty bad, so we can either keep that in mind, or we can get everyone together to have an attempt to do a better job. Doing the practical thing can be tough too, as there are too forms of practical:

  • How we do things now to get past browser bugs
  • How we could do things if there were those silly browser bugs

Time for SPEC JSVM?

Sep 24

The two Oktoberfests; The State Fair of Germany

Personal, Tech No Comments »

Google Developer Day Munich

Yesterday, I had the pleasure to speak at Google Developer Day in Munich, where I met a lot of bright developers doing very interesting things indeed on the Web and beyond. It was interesting timing, as during the event, T-Mobile made their announcement of the G1 phone. A few people are talking about that. We cut to the webcast of the announcement during the show, and Chris DiBona did a great job showing off a real device (gasp). Don’t get me wrong, I love my iPhone, but there are some great features in the phone, and the platform. I have been a little surprised at some of the media writeups, for example people talking about syncing without realizing how cool the over the air stuff is. It drives me nuts that I ever have to hard wire the darn iPhone! And, then there are the issues of the market place. Wil Shipley pretty much covers my thoughts. It is crazy what Apple is currently doing. What if Apple decides to get into the Flashlight business…. will they kick out all of the duplicative flash light applications?

Wil gets to the chase:

I have to be clear: it simply will not stand for Apple to prevent applications on the iPhone from competing with Apple’s own applications. Besides chasing away all decent developers, besides hurting their customers by stifling competition and innovation, besides it simply being evil, it will, shortly, be illegal. This kind of behavior is illegal when you hit a certain point in market saturation for your product; Microsoft was slapped for it constantly in the late ’80s. If the iPhone is the success Apple thinks it will be, they will find themselves the target of a huge class-action lawsuit.

Anyway, back to Munich. The first Oktoberfest was GDD, which someone called “Oktoberfest for geeks” but later in the day, people got to go to the real Oktoberfest. I have to admit that it wasn’t at all as I was expecting.

It felt like the Minnesota State Fair! All of the rides, and the food…. not as much of it on a stick as the Minnesotans would like, but they would enjoy the fried stuff, and the ‘wurst. There were some differences though. The State Fair has lots of John Deere (machinery hill), and truck pull events, and 4H clubs. Oktoberfest has beer tents. Oh, and some beer tents, and some…. you get it. As I poked around, I heard a huge amount of English (or should I saw American), and I remember hearing Germany and Norweigan in Minnesota :)

Humans are strange creatures aren’t they? To fly thousands of miles to go to a fair where you get incredibly drunk and try hard to find a bar maid that tickles your fancy.

Sep 16

Frustrating User Experiences: iPhone Dashboard Manipulation

Tech with tags: 2 Comments »

iPhone iTunes

I primarily use the iPhone as a read-mostly device. I rarely reply to email unless it is very important, or I can send a one line reply. One of the user experience issues that has been bugging me recently on the iPhone, is the way you are made to interact with your home screen experience.

When you had one screen of apps, the “hold down on icon and drag around” experience was fine. Now though, you have 5+ screens, and if you want to migrate something from the last screen to the front, you have to drag and slip on the edges to try to move along. You then drop it somewhere and everything else gets pushed around. Ugh. It is exasperated by the fact that when I get new upgrades on apps that I have, they end up appearing at the end instead of the icon where they were.

Why doesn’t iTunes give me a nicer interface? A simple way that can show a set of the screens, and use keyboard and mouse to easily work with the icons.

It’s a small thing I know, but it would mean less frustration when I get that new application :)