Monday, September 19, 2011

CapitolJS 2011 [#JSConf East and #capjs]

One attends a JavaScript conference to learn how to use the language better. The conference is not intended to teach the beginner. There are assumptions of a working knowledge of the language, probably extensive experience in coding and an interest in node.js. However, I think there were themes or lessons in the presentations at this conference that would help any JavaScript developer.

The future of the language is amazingly bright. Mike Taylor showed that even though the browser Navigator has very unreliable properties that the future new properties (e.g., online, geolocation, etc.) hold great promise. Pamela Fox had example after example of APIs that JavaScript can access for functionality, public data and user data. And Brendan Eich demonstrated the work that Intel has done to access parallel-processing power with an engine called RiverTrail (on github) [Infoworld article][http://www.infoworld.com/d/application-development/intel-river-trail-adds-parallel-dimension-javascript-173347].

Performance in JavaScript is now in the hands of developers now. Nickolas Zakas promoted the use of both defer and async for script loading. So testing must include performance testing with no action taking longer than 100ms. This is the max for a responsive system. Alex Seston also emphasised the need for non-blocking code while on the topic of third party JS. Alex Russel went deep into working web engines in browsers so coders know what is behind some simple DOM changes.

JS, the programming language of the web, is amazingly rich. Douglas Crockford looked at how we code from the viewpoint of Head and Gut (see book Science of Fear) and how the Gut often gets in the way. Using tools and the good parts of the language (language subsetting) we can use our Head more and produce less errors. "Programming requires more precision than writing in English." Language conventions take time. For example the line breaks and spacing introduced by Medieval manuscript copyists. This language history perspective was echoed in Mike Taylor's talk and emphasized by Brendan Eich in noting how young the language is. It is mindblowing what the JS community can code in 140 bytes on Jed Schmidt's site (http://140byt.es.com).

Growth is in mobile and it effects all. Rebecca Murphey showed the new toura mulberry framework for creating content rich mobile apps built atop phonegap. http://toura.github.com/mulberry/ Joe McCann works in the mobile area and provided a comprehensive view of both coding and using node.js with Express, Stylus, Smoosh, and Commander as tools for creating any app. it is clear for the Head to win over Gut that automating tools are needed.

Node.js is still growing. Mikeal Rodgers ran down the most popular packages for node including npm, optimist, request and of course socket.io. But there is still room for improvement, especially in debugging. And again, node was mentioned by most presenters. Ben Combee showed how to access the node running in webOS and stated that webOS will soon be updated to version 0.4.11. Paolo Fraqomeni talked about how the design of node is especially suited for the enterprise and the event emitter.

As I see them available, I'll link to the decks for each presentation.

Douglas Crockford
Ben Combee
Nicholaz Zakas
Mikael Rogers
Jed Schmidt
Mike Taylor UPDATED
Rebecca Murphey
Alex Sexton
Alex Russell
Joe McCann
Paolo Fragomeni
Pamela Fox
Brendan Eich UPDATED

The conference was terrific not only because of the speakers but thanks to the work of my friends Laura and Chris Williams. Also because of sponsors there was time to network at parties both before and after the event.

Thanks. A wonderful community.

UPDATE: Group Photo

Sunday, September 11, 2011

Distinction between sites and apps is RSS


James Pearce wrote a substantial post about the distinction between sites and apps. He says the distinction matters only to developers and not for users. I think there is another measure of the distinction than his fat versus thin client. This is my response. 

The distinction is only relevant, as you say, for developers. The reason is simply because "interface is content." Or perhaps put another way "interface is the message."

Take some content and provide a simple HTML interface. Put the same content in a JS/CSS3/HTML5 interface and the message is different. People will "read" it differently and have a different user experience.

So the distinction becomes blurred in my view as soon as you cross the pure HTML line. Ask yourself at what point does adding JS/CSS3/HTML5 take the content from site to app? I suggest there is not a brightline using that (ie. fat client) as a measure.

However, there may be another measure. Again, it may not be a brightline, but it does help.

Sites can support an RSS feed while apps don't. 



Let me add to the comment that I left.

The post argues that the distinction fat versus thin, that the code resides on the browser versus the server. It also argues that users don't care.

First, take the New York Times or any newspaper or news source. Does it really matter if I read the story in an app or off their site? They support RSS so I can read the story on other sites, in RSS readers and apps that support RSS.

Then take an app like Pulse or other news apps. I can read an MSNBC story with the app or on the MSNBC site. But I don't find Pulse stories on MSNBC. Pulse cannot support an RSS feed because it does not create stories.

So I would argue that the user experience between the Pulse app and the New York Times app is substantially different because the users know the source of the content. Therefore, as a developer, you'd design the app to the user expectation.

Now that is a simple, legacy example.  Let's add some web features. Many sites, not just news sites, all users to comments. Comment systems support RSS feeds or other notification methods (e.g., email).  Certainly comments are not an app.

More modern day are sites like Quora. The content is not news stories but there is new, relevant content. They use the headline of "Feed" on the main page. Clearly Quora is a site.

And finally, let's look at the classical app: the todo app. Put a todo app on any smartphone for personal use and all of the generated content can stay on the phone. It would be a useful app without any interaction with the internet. Even if you sync the todos with other devices which would require servers somewhere, the bulk of the app in on the phone. But more importantly the data source is on the phone. You could sync with RSS (or a JSON equivalent) but is that feed really useful for the public? It is core to the purpose?

In summary, you've got a site when the content supports a RSS feed. The purpose of an app is confined to the device. The distinction my not matter to developers, but user know when a site can support an RSS feed, even if they don't know what RSS is.

Tuesday, April 05, 2011

My JSConf ToDo List

With great anticipation, I will attend JSConf and NodeConf. To get the most out of that time, there are a few items I want to brush up on prior to hitching up the wagon and heading West. I've got a list, some big and some small and in no particular order.

  1. Full Sail Ale. jsbeer prep is first on the list.
  2. Eloquent JavaScript. Finish reading especially the object oriented chapter.
  3. jquery mobile alpha4. Convert some code including j360.
  4. Sencha. Run through the tutorials and screencasts.
  5. learn about SASS
  6. jquery plugin. Write a very simple plugin.
  7. outrigger app site. Create landing page about outrigger app.
  8. outrigger app. Finish demo data. Ready phonegap feature.
  9. get new Android phone and install couchdb. Make iphone into an ipad touch for Civ
  10. learn git well enough to be comfortable with github
  11. put j360 into git and write readme
  12. use build.phonegap for j360 and outrigger
  13. colossal caves into github
  14. hours reading nodejs blogs and reinstalling on my laptop
  15. put code into a js module, maybe my search parser
  16. publish regex attribute for input tutorial for Coding JS Apps http://jsapps.posterous.com/
  17. fix raydaly.com and raydaly.org
  18. publish "New Enterprise Network" talking paper
  19. use ace
  20. publish on Coding JS Apps an article on using couchdb as development environmen
  21. new photo for my blogs, twitter, google, quora and facebook
  22. hitch up the wagon
I'll probably add to the list and update this post. As I reread the speakers applications, I'll probably get inspired to do more. This blog or my Coding JS Apps blog will have the results.

Also I need to review what I wrote after last year's JSConf:  a pesky list of ToDos.

Sunday, January 23, 2011

15 Years of WebApps in JavaScript

15 years ago on January 23, 1996, HTMLjive - an HTML editor written in JavaScript was release. It is considered the first serious JavaScript program. In short order, it went viral, was on websites around the world and translated into several languages.

HTMLjive was a simple HTML editor but it incorporated a preview window, three modes of HTML coding and on-screen help. The inline HTML editors, like the one I'm using right now to write this blog, have added features, but HTMLjive had the basic features you take for granted today.

I am often asked, "Did you expected JavaScript application (web apps) to become popular?" Yes. Shortly after HTMLjive was released, I starting writing the book "Using JavaScript" with several co-authors. One of my great memories is giving an author talk called "JavaScript Makes Your Site An Application" at a local book store a few months later. So, absolutely.

The community that supports JavaScript has come a long way since. Brendan Eich, father of JavaScript, has received the recognition he deserves. Douglas Crockford gave us JSON and is the JavaScript evangelist. Ajax pushed the language back into popularity and Google showed what could be done with Google Maps and Gmail. Now the annual JSconf features the greatest advances, technologies and speakers. Most of the people that deserve a mention for their contributions to the community were or are speakers at JSconfs.

JavaScript is no longer just for the browser. My web apps, both mobile and desktop, have JavaScript on both the browser with libraries like jquery and on the server with couchdb and node.js. Thank you to the community. It continues to be a joy to code in JS because of you.


Tuesday, January 11, 2011

Dave's plan to rethink RSS has potential. I've always liked the simple concept of title, link, description (text) and categories. Making a RESTful, JSON API would be great. I've been dabbling towards that with a project I've been working on that started with Zlides.com and OPML combined with JQuery Mobile. So I've been giving this some thought.
Dave likes Twitter. The Twitter API is proven itself and lessons have been learned. Lots of people know it. So my comments below reflect my usage of the Twitter API, particularly the search API.
  1. JSONP. The ReallySimple API should support JSONP. The primary benefit is cross-domain support so I can write browers apps hosted on any site and use the reallysimple.org api. This would make it much easier to write mobile apps using JavaScript, HTML5 and CSS. For an example, look at the Twitter Search wiki and how they support JSONP. Also look a jquery's support for JSONP.
  2. Categories. RSS has always supported categories and I was rather suprised not to see them in the API. Much of web 2.0 worked leveraged categoris and I think it is an important addition.
  3. RESTful. Several people have commented on using the RESTful verbs. I certainly support that for GET and POST but since DELETE and PUT are harder to implement there should be more discussion of that.
  4. Extending Really Simple. RSS supports namespaces and there should be someway to extend the Really Simple api. Steve Moyer commented about having extra fields like _rev in the API. In my view, extra fields would be fine but probably ignored by most clients. It would probably be better to suppress them, but in some implementations there are cases were the extra fields would add a feature. More discussion needed.
  5. getPost. Given an idPost, I would want to get the JSON for just that post. The id could be the permalink. And perhaps, maybe I supply a link and get back an array of posts which could be all of the comments made to a post.
  6. Enclosure. Very encouraged to see it supported. Important in this world of videos, photo blogs and other media files.
  7. OAuth. Twitter and others have moved away from basic authentication for a reason. I would suggest supporting OAuth like twitter.
  8. No date. The format of title, description and link is so powerful that it applies to more than just reverse chronological blogs. The web content management system (CMS) that I wrote had RSS feeds as its foundation. [I'll have to add the ReallySimple API to it.]  And see example of Wikipedia below. However, I would think that this might be an expected field. Or perhaps it is better to ignore it for right now given the discussion that will start about date format.
ReallySimple maps to ReallySimple HTML pages as well. It supports title, link, description and hopefully category. This also maps directly to standard Web 1.0 content web pages where one HTML page contains content on a subject. For example, this Wikipedia page on Daly Languages has a title and obviously a link. The content is inside the body tag, less the navigation, footers and banners. Categories in the metadata and displayed on the page. So I should be able to take the primary content of this page and easily put it into a JSON message using the ReallySimple fields. Lots of features could be built off having an entire page in JSON.

I look forward to using the ReallySimple API with mobile apps and Couchdb apps.

Cross posted from: http://raydaly.posterous.com/really-simple-api-first-comments

Saturday, January 01, 2011

Recommended Beers of 2010

This was a great year for beer in Northern Virginia. Full Sail is now distributed and Great Divide's beers are more widely available. Also, Bob Tupper got back into business after a few years of dryness. Finally, Church Key opened a few block from my office in DC. Hope you have a chance to try some of these beers this year.

Great Divide - Collette   This is a special. Grab as much as you can when you see it. I spent a night driving from store to store buying everything that was left. The focus on this beer is not the hops, but the yeast. It is a different taste. This is a farm house ale with yeast in the bottle. My friends laugh at me because my pours end up with overflowing heads. Great in the spring or summer. We had it the other night with Raclette and it was excellent.

Great Divide - Titan IPA We first discovered this perfect IPA from Great Divide before the Collete. It is great when a brewery makes a beer so good that you want to try everything that they produce. The balance in the IPA between the hops is totally refreshing and not overwhelming like others fighting the hop wars. I'm never disappointed when pulling one of these out of the fridge.

Appalacian - Hoppy Trails IPA  This IPA made me really appreciate the IPA style. It made be go back and try some others again like Full Sail. The semi-high alcohol punch of an IPA has to be balanced with a strong hoppy flavor supported by a robust malt. A regular in my fridge.

Tupper's Hop Pocket Ale  Bob Tupper introduced me to so many different beers at the Brick. I was thrilled when Old Dominion started brewing his Ale because I knew he liked Celebration Ale. This was my friend's favorite until Tupper pulled it from Old Dominion. After a long hiatus, Bob found a brewery and his Ale is back. Dominion did a better job, but still wonderful to have it back.

Schlafly - Christmas Ale Normally this spot would be reserved for Sierra Nevada's Celebration Ale. But this spot opened up this year because of the disastrous change in the recipe. But Schlfly's might have made it anyway. The hint of orange made it a wonderful taste in a full ale for the season. I recommended it to everyone in my annual Christmas Beer tasting this year.

Heavy Seas - Winter Storm I've enjoyed this for the past several Christmas seasons. It is now my favorite Christmas ale with a great Extra Special Bitter flavor. I'll stock up this ale. Nearly a perfect cold night brew to warm your bones. Arrg!

Breckenridge - Extra ESB I love ESBs. My favorite was Fredrick's Red Ale, but that is now defunct. Had another great one in New Orleans about 10 years ago. It is so hard to find a good one, nevertheless a perfect one. Breckenridge's is not perfect but better than good. It is amazingly consistent. ESBs can be so smooth. I keep this one around.

Full Sail - Pale Ale. About 20 years ago at the Brickskeller the bartender introduced me to Full Sail Ale and Red Seal Ale. They were mana from heaven. They would be my first request when walking down those stairs and seeing all the cans. But distribution stopped and I finally gave up the search. I had to visit the brewery when in Oregon but never expected to see it back on the East Coast. This was the great surprise of the year. And try their IPA as well. Both wonderful.

Full Sail - Session Found this at a bar and have stocked up with both the regular and the dark Session. It comes in a Red Stripe like bottle and is a tasty lager with only 4% alcohol.  Often I don't need the full IPA punch so this is a tasty alternative. Expect it to be a regular this summer.

Bell's - Oberon  Our summer beer for the past few summers. I cannot help but think about a warm summer day and the pleasant taste of this wheat beer. You know summer has arrived when Oberon is on the shelves.  Coming again soon.

Friday, December 31, 2010

Recommended Books of 2010

Books of 2010

Probably because of ebook without DRM from O'Reilly, there are substantial more books on this year's list that previous year. However, I don't think I finished as many this year. The range is about the same with fewer home improvement and more technical books. The highly recommended are listed below with a few other notes.

What Technology Wants gets my highest recommendation even though I'm still reading it. It is so good, I'm in no hurry. At first I was very skeptical that I could be convinced the technology ever wants anything, Kelly is persuading me. I compare it to  the books by Jared Diamond like Collapse. Those books are like Ancient History while Kelly's book is like Modern History.

Switch: How to Change When Change Is Hard really changed my perspective of my organization. I believe change is hard at any organization that is larger than 300 or so. This book provides example of how change that transformed large companies. Also, lots of economic and behavioral research. The only pdf about presentation was critical to reshaping the introduction to my major presentation last spring and the concept is now taking hold. The Heath brothers older book, Made To Stick, is also recommended.

Cognitive Surplus deserves the recognition that it has received. For the past several years, since Tipping Point, it has been easier to find so called "economic" books that read more like urban anthropology books. This is the best one along that vein this year. It will be interesting to review after I finish What Technology Wants.

High Performance JavaScript is killer. It really shows how far JavaScript has come as a serious language. In working on a team project that was 98% JavaScript, I constantly refereed to this book. Search the ebook really improved my work. If you are serious about JavaScript this book is in your library.

Start Small, Stay Small was purchased directly from the author online as an ebook just as I had purchased Getting Real from 37 Signals a few years ago. Walling talks about start-ups from the developer viewpoint. He makes an excellent case about marketing from day one and out-sourcing the developer work even though you might be a developer. Much more practical that Rework, which I found tired, but that maybe because I regularly read the 37 Signals blog.

App Savvy and Tapworthy are two excellent books about building and marketing mobile apps. While the focus is on the iphone, the advice works for nearly any mobile device. Maybe this is a factor of being ebooks, but it is hard for me to distinguish between the two. I've referred to both while working on an idea of an app. After the proof of concept, I expect to re-read both as I write up a marketing plan. Finally, O'Reilly's webinar lead me to these books and I recommend watching a few during the coming year.

The Book of Gossage is this year's McLuhan book for me. Gossage was the SanFrancisco ad man that worked with McLuhan to convince the world that McLuhan was important. Included in the book is "Understanding McLuhan" which is an excellent article.

More Not So Big Solutions for Your Home was better than the other kitchen books I either bought or borrowed from the library. Mostly old articles from the defunct Inspired House magazine, it got me unstuck on the redesign of our kitchen - which is next year's project.

Possible additions.There are a few on the list below that I cannot yet recommend. I'm behind on my reading but these look very promising from my reading so far. Where Good Ideas Come From is certain to be read soon and I expect to recommend it. Taming Text's focus on text and not media is refreshing. It may stand the test of time. Business Model Generation looks awesome, but I gave it as a gift, so it maybe a while until I read it.  Buy the print version of this one. Sometime in the future, I'll have to review all of the economic, research books like Sway and Drive.

Good reading to you.

List of 2010 Books
  •   The Investment Answer
  •   Business Model Generation
  •   Sway: The Irresistible Pull of Irrational Behavior
  •   The Food Matters Cookbook
  •   The Book of Gossage
  •   Where Good Ideas Come From
  •   What Technology Wants
  •   McLuhan: A Guide for the Perplexed
  •   The Creation of the Media
  •   More Not So Big Solutions for Your Home
  •   Cognitive Surplus
  •   Rapid Problem Solving with Post-It Notes
  •   Drive: The Surprising Truth About What Motivates Us
  •   Kitchens That Work
  •   Rocket Surgery Made Easy
  •   Rework
  •   Unfolding the Napkin
  •   Switch: How to Change When Change Is Hard
  •   JavaScript Patterns
  •   App Savvy
  •   CSS Cookbook
  •   JavaScript Cookbook
  •   Tapworthy
  •   Regular Expressions Cookbook
  •   Apache Cookbook
  •   Search Patterns
  •   Designing Web Interfaces
  •   Designing Social Interfaces
  •   High Performance JavaScript
  •   RESTful Web Service Cookbook
  •   Start Small, Stay Small
  •  Event Processing In Action
  •  Pragmatic Version Control: Using Git
  •  Algorithms of the Intelligent Web
  •  Web Design for Developers
  •  Taming Text

Saturday, May 01, 2010

HP Buys Palm for the slate market runing JS Apps

Company acquisitions are viewed as potential for the new company. "By acquiring this product the new company can expand into this market of the old company." More often, the acquiring company places value in old company as a defensive move. They don't want to be outflanked in the changing market place.

The world of mobile devices has changed dramatically in the past 12 months, but people for the most part are just getting use to what it was like 12 months ago. Example, everyone thinks App Stores are it.

First big change: App Stores are old school. Native apps are old school. The great new apps will be not be native apps written in Java or Objective-Whatever. They will be HTML5, CSS and JavaScript apps, hereafter called JS Apps. Proof is the NPR app written for iPad using SproutCore as shown at JSConf. The world has changed.

Second, big change: all major phone platforms can run these JS Apps. Blackberry is just getting caught up with the rest of the market on this. So I can now write an JS App and have it run on all phones: iPhone, Android, Palm and Blackberry. Phones are a commodity for the replacement cycle, though consumers don't know that yet.

Third big change: iPad introduced a new form factor. In part, a larger screen and touch area. This is a big deal, maybe. Market may or may not be huge. May or may not kill the laptop. It is a big deal just because it introduces uncertainty into the laptop market.

Now what is HP to do? The laptop market is being nibbled away by mobile phones or maybe being killed. Things that you only use to be able to do on the road with a laptop can now be done on your phone. You still have customers (and a brand) that depend on your products and you have a product gap that maybe huge. You acquire to fill that gap.

But wait, do your customers realize that products are changing (see above)? Not yet. But you'll be ready for them. Immediately, HP can tell customers we sell phones too. Buying number four in the market never works (see GE and Jack Welch). What was HP thinking?

Go back to third big change: new form factor. The large screens are a field HP knows well - take the keyboard off that laptop and you have a slate. How do you enter this new market? How do you become a leader? Do you take the Microsoft operating system, whatever the name is, and compete with Apple that way? Are you crazy? Too late, too old school. Microsoft has not gotten this right in 20 years. Microsoft is no help this time.

What HP does is work with the trend that mobile devices are becoming a commodity. HP knows that business. They build a slate that runs the JS Apps that also run on the iPhone, the iPad. It also runs the JS Apps written for Android and the Blackberry. Palm has an excellent development platform and team for JS Apps.

So HP buys Palm. They slap the Palm (Pilot) name on the new slate that runs these JS Apps. They are instantly number two in the new market where the App Store advantage is losing marketing power.

And besides, Palm is a better name than tongue twister iPad (or was that iPod). And look at what an old brand name (AT&T) did for Cingular. Brand names are important.

HP bought Palm not because of the phone market, but to hedge their bets in the maybe emerging market of the Palm slate. I can not wait to buy one.