I was just thinking about this issue when I saw the post and cartoon above. I was recently on a plane and going through my feeds (I need something like a plane trip to take the time to go through ALL of them, don’t you?).
I have realized that the feeds that are partial have slowly moved out of my attention zone. Even the great sites that have this tactic end up with me ignoring their great content unless someone really points to them via another mechanism (e.g. FriendFeed / Twitter / Blog).
There is too much good content out there that lets me read it as I want too, so I don’t have time for the content that has any kind of firewall in front of it.
I overhead someone in Coupa Cafe, Palo Alto, mentioning how “we should make our feed partial, add ads, and then we can get through the rough economy”. I sat there with my no-sugar Tiger Spice soy Chai ( heh ) and pondered a world where the majority of my feeds were partial in my reader. I would probably give up my reader at that point and just use social mechanisms to filter for me and call it a day.
This Coupa chap will lose a large percentage of his followers and suddenly those ads will hit a smaller and smaller audience, as that audience moves to other areas to get that content.
Die. Partial. Die. As someone at the Web 2.0 Summit would say “Give users what they want and you will do well.” ;0
I picked up my wifes iPhone today and wasn’t at all surprised to look at the AppStore icon and see a bazillion updates showing in the badge icon. To explain, I will pick up Emily’s laptop and find Software Update bouncing for its life. “Look at me! Please, it’s been months!” Em doesn’t seem to notice this: “I don’t look down there.” Huh :) If the leaping icon doesn’t do the trick, a badge on an icon that is never touched won’t do the trick.
This is why I am bullish on that Web thing on the phone. Emily is using an old Facebook.app, but imagine if she was going to a Facebook website that had access to APIs for the camera and address book. With these APIs, Joe could build everything that he has done on the native app, yet auto update my wife since this is all just behind a URL!
PhoneGap is there to allow you to take your Web app and throw it in the App Store so people can find it there. You can also access native APIs too through PhoneGap, but hopefully Apple opens up more and more to Mobile Safari itself.
I hope that the AppStore will offer a “keep up to date” option so it can auto download new versions for me. I wish that other products did that too, especially browser nightlies. I want WebKit and Firefox (Minefield) nightlies to keep updating themselves.
The big question: Location API. HTML 5 has it. WebKit is notoriously good for implementing these APIs, but Location is a key feature for apps and the AppStore. Hmm.
FriendFeed is marching on. I prefer it to Twitter these days, but of course the users are still mainly on Twitter. The best of both worlds for me is to run FriendFeed as my “client” yet have Twitter users happily following and not knowing or caring that, that is the case.
We may have the pieces to actually do this right now:
Posting to Twitter
FriendFeed added support for posting activities to Twitter for you. People immediately worry about spamming Twitter with this stuff, so you should think about that and turn off a bunch of services. I currently use TwitterFeed, which I will turn off if I use this feature (as FriendFeed will handle that as I turn on my blog service).
Seeing your @replies
FriendFeed is one of the few companies who have access to the XMPP firehose. They should be able to grok the replies (e.g. @dalmaer) and merge those into the comment stream.
In the meantime, DeWitt has a great hack:
I created an imaginary friend on FriendFeed and subscribed it to http://search.twitter.com/search.atom?q=%40dewitt
I did this, registering “To Dion” as the friend. It is ugly as it doesn’t merge into your flow, you can’t easily tell who has replied, and it is one big link… but it is good enough.
Friend / Follower Syncing
The people I follow on FriendFeed and Twitter isn’t in sync, and it should be. I haven’t caught up on FriendFeed. The beauty of the imaginary friends feature is that you can add Twitter folks even if they don’t have FriendFeed accounts yet. Ideally, I could tell FriendFeed to do the syncing and followee management for me.
Good times for FriendFeed. I also think that it shows how great their real-time Web experience it is, auto updating in front of my eyes. If they implement these features natively, I will be a total convert.
I have had the pleasure to be at PDC this week and Microsoft put on a great show. As they showed their vision of unification around Windows (cloud, Web, PC, mobile) through great developer tools, there was excitement.
Windows Azure looks great. The “on premise” feature looks particularly intriguing. If they can bridge the data center and the cloud, they have something quite compelling. Enterprises are struggling with the cloud in part. What do you put up there? How do you secure it? How do you tie back? Microsoft is going after that problem.
I am curious about the details. Ray talked about how you get to “leverage your skill set”, and showed mappings between the Windows platform and the Azure one (SQL Server - SQL Services). How similar are they? Surely there are limitations when you are in the cloud (App Engine has restrictions on request timeouts, file sizes, threading, and other APIs). Running unmanaged code? Virtualization is good enough that you can just do that these days huh. Impressive. Again, what are the limitations? You can imagine people deploying platforms if this is Open enough. E.g. platforms that are currently in C, or C#, Ruby (IronRuby), Python, (IronPython), …
Have they got SQL Server so it “just scales”? I noticed that the demos that ChrisAnn and Don Box did with SQL services dealt with XML tuples of data when inserting data, and LINQ to get data out. I am excited to hear more of the details.
In fact, I feel that way about a lot of the things that were released. I want to dive in more. Many of the talks stayed very high level indeed. Ray Ozzie was a good speaker, but spent a long time talking about the history of computing to put things in context. I get it, they have to do that for the press etc. They are setting a tone of “this is where we are coming from, this is where we are going.” For developers though, I wish for once someone here, or at JavaOne, or at MAX, (whatever) would stand up and say “Ok, let’s build some amazing things in front of you and show you what we have done with our tools and platforms.”
Don and Chris do that in their talks and people love it. They were on form as always this time around, although I wish that instead of showing AtomPub, they showed us Oslo, M, etc. I know that Douglas talked on that later, but I would have loved to have had that content in the Don/Chris show. I enjoyed it, but when it was done I thought “wait, did I just sit here for an hour watching manual HTTP?” Don’t get me wrong, showing the path from local development, to running on your on premise server, to the cloud is compelling, but I wanted more :)
Game On
Everything that was announced we pretty much knew was happening. From the cloud, to the Web (Silverlight 2 / IE 8), and beyond. But, even though we knew about this, I don’t know if we thought they were this far along. Microsoft is executing. This show set the stage “this is where we are going, and look how far we have come.”
The Office on the Web demo showed that. Works in all browsers, with enhanced Silverlight support. Very nice indeed. What a wake up call to the rest of the Web?
And, what about tools. The WPF version of Visual Studio 10 looked fantastic. Having a plugin model that makes it so easy to interact with the editor looked snazzy and useful indeed. I have long wanted to separate the source code from the visualization of that same code. The source code in the repository can have curly braces on separate lines, but I will see function() {. In my world, comments in the style of “<author>Dion Almaer</author>” will get converted to “Author: Dion Almaer” and made small.
Blue Pill
If you are a Microsoft developer you are probably very happy at Ray Ozzie’s coming out party. Others on the fence may be interested. For those of us who worry about handing Microsoft control of the browser, plugins to other browsers, the cloud, the server model, and more…. I won’t lie to you. I am cautiously observing. Silverlight adoption worries me.
We can’t fight Microsoft with “don’t choose them, remember what they did to you before?” Fear is lame. Instead, this is a wake up call to Adobe, Google, Yahoo!, Amazon, IBM, Sun, [insert other developer / platform players] to get kicking.
In recent presentations, Ben and I have been taking a look back on the rise of Ajax (where Ajax == popularity of dhtml :). At its core, I think it all comes down to UI responsiveness.
When you look at the killer apps such as Google Suggest and Maps, they broke through a set of myths on the Web.
Latency is the killer issue on the Web
We are used to autocomplete in fields and forms these days. However, if you think back to when Google Suggest came out, if someone had asked you whether it was a good idea to do a background request on each key press you may think they were insane. The beauty of suggest is that it broke through and gave great performance. You could do this on the Web.
Rich interactions are not possible on the Web
Again, we are used to applications that allow us to interact with data in a better way. With Google Maps, you feel like you are moving around the map. You are interacting closely with the data. Before hand, we were used to a static view that had us clicking up/down/left/right or zooming around. Every click responds with a wait and a repaint of the entire screen.
This seems crazy. No application framework would ever do a refresh like this, and dhtml broke us out of that box.
This is all pretty obvious, especially when you take a look back at the HCI research on how anything that takes more than a second drives your users batty (and gets them out of the zone). Getting down to 0.1 seconds and your users will feel like they are at one with the app :)
The responsiveness that Ajax gave us opened up the Web for truly useful applications that users could live in without getting frustrated. This bridged us from pages to apps.
We continue to see movement here too. The reason that WorkerPool was added to Gears (Web Workers in the standard) was to give developers the ability to send “work” (run code) to a place that isn’t on the UI thread, which is a big no-no for building any kind of responsive application. As we write bigger and bigger Ajax applications, we end up running more code, which competes more with the browser. Having Web Workers in the browsers natively, and available to those that don’t via Gears, allows us to build compelling applications.
Add to this fast JavaScript (SquirrelFish Extreme, TraceMonkey, V8), and we can get to a happy place with respect to performance.
So, if the original Ajax revolution was about UI responsiveness, where do we go from here?
I think that we have a few directions that we need to go in:
Productivity
We need to be more productive. We all feel a lot of pain with Web development, even as we get a lot of benefit from the reach and openness. This is pain is the reason that Ben and I are working under a developer tools umbrella at Mozilla. We want to work with the community to become more productive. It is extremely important to do so.
It shouldn’t be hard to put together the hundreds of applications that the Enterprise and beyond spend too much time and money on every day.
We shouldn’t have to fight the browsers to get things working as much as we do today.
Any ideas on what would help you? We are all ears.
Compelling applications
We have spent a lot of time in the weeds talking about the engine of the car. We jump on a point release of some framework, and argue about the minutia of framework differences.
Maybe it is time to pop our heads up a little and think about how we can build compelling, feature rich applications.
The browser is extending to the desktop more, to give you nice full experiences. The real-time Web is kicking off, and Comet will become a big part of how we develop many applications in the future. It needs to be as natural to us as the simple request/response world that we are used too.
UI latency is only one piece of user experience. There are many others. HTML 5 gives us richer components and semantics to work with. We have been working on different UI paradigms such as the Form History pattern that we have discussed before. Aza Raskin and others have been doing really good work on new paradigms too.
Personally, I think that new input devices are going to create a huge change for us, and the abilities of Web applications. We played with the WiiMote as an input device. We then have multi-touch, which is available on touch pad devices as well as touch screens. Finally! We are moving past the prehistoric inputs where we can point and say “Ug”.
I am incredibly excited about where we are, and where we are going. There is a ton of work to do, but people feel engaged. Let’s “get ‘er done”.
Where do you think we are going?
This presentation goes over some of these points, in more detail:
I had the same machine for a couple of machines, and with the most recent move to a newer Macbook Pro, I decided to take a leaf out of the smart movers guide. I am sure you have heard of the simple spring cleaning opportunity when you move house. The system is simple. When you get to the new house, keep non essentials in boxes. If six months or a year later you aren’t using items, then you don’t need them and you can go ahead and sell / donate away.
It started as a “what I run” kind of list, and then it morphed a little. There are more than a few applications that are duplicative in functionality, so I often only have one of them installed.
With Leopard, a lot of the applications aren’t needed. Virtue Desktops? Not so much (even though I am still frustrated by Spaces from time to time!)
Anyway, with the new machine, I am not doing what I normally do; go through the list and install the apps that I have on my old machine. Instead, I am installing on a “need to use” basis. After a few weeks I have been surprised at how little I need some of the applications. We will see if that changes when I get back into more serious work :)
Related
I ran into Joe Hewitt at a local coffee shop in Palo Alto (the beauty of living here…. I get to run into people of the caliber of Joe :) and at some point we talked about Textmate, and how it is surprising that we haven’t seen 2.0. I seem to remember thinking that it would launch pretty close to Leopard itself, so I wonder what is happening. It must have some pretty amazing Core Animations in it by now ;)
Michael Cote also just put up some Mac Tips which has some nice applications for you to install and try…. but only if you need to use them ;)
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 sometalks given by the Clojure creator Rich Hickey.
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 :)
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.
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!
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:
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:
Once I internalized that I could click on the ” X ” close icon and it would minimize to this:
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 :)