Hey, look at that. I found my JSConf 2011 track B talk on the internets!
JSConf2011 - Trevor Lalish-Menagh (by jsconf)


Hey, look at that. I found my JSConf 2011 track B talk on the internets!
JSConf2011 - Trevor Lalish-Menagh (by jsconf)
It is interesting to see job trends per programming languages. Here is a relative chart tracking ruby, rails, python, php, java, scala, and node.js Job Trends:
ruby, rails, python, php, java, scala, node.js Job Trends Ruby jobs - Rails jobs - Python jobs - PHP jobs - Java jobs - Scala jobs - Node.js jobs
It is clear here that relative to each other node.js is trending much higher (as of this date), with Scala ramping up after it. And Ruby and Rails are still consistently higher that the rest of the pack (Python, PHP, & Java).
But it is also very interesting to look at the absolute comparison of job trend data. This is how many jobs in raw numbers there are out there per language/framework:
ruby, rails, python, php, java, scala, node.js Job Trends Ruby jobs - Rails jobs - Python jobs - PHP jobs - Java jobs - Scala jobs - Node.js jobs
From this graph it is still quite obvious that Java leads the pack in software jobs on the market right now. PHP is a far second, with everything else falling by the wayside. (As of this date) Scala is barely visible and node.js is non-existent.
Armed with this data, it is more clear why Scala and node.js are trending so well: small gains early on make big relative difference. I think that both of these technologies have a good future and some solid user bases, and there is a great future for each, but there is a long road to the top. :)
And now for something completely different. It is time to start getting in a more energized mood about life. This article has some interesting tips about the topic.
James Halliday and Daniel Shaw
“Mad science is about enabling chaos in your world”
Seaport is a service registry. Service registries are a way to register your services to a central hub. Using this, you do not need to know your ports to deploy services.
Fleet is a git server over HTTP. It allows you to set up a git-based CI tool.
Don’t write big apps. Write a lot of little tiny apps that talk to each other. That is so much easier to maintain.
Check out airport_cluster on github to see seaport and fleet working together to get git servers up and running fast!
zygote is a way to use a json file to configure a node server to spin up an entire cluster of node servers.
That was a fun demo!
is a way to use a json file to configure a node server to spin up an entire cluster of node servers.
That was a fun demo!
If your device can desplay it, you should be able to use node.js to send it. Emoji support is now in Node 0.7.x. It is not in 0.6.x.
Node.js 0.7.7 gives us a lot more powerful when doing emoji and unicode expressions.
Thanks for the poo and mad science!
@NodePhilly is all about getting Emoji working in Node.js.
Charlie Robbins and Chris Wendt
The powers of 10 of node facts:
(10^3)*n: # of requests in node! (an order of magnitude faster than Ruby on Rails!), also # of users and packages in npm.
npm is written in couchDB. Which is awesome.
Node is fast, cheap, and magical. Why wouldn’t you use it?
Thanks for the talk, Charlie!
How many web-enabled devices do you use? It is a lot!
Pervasive computing is the concept that anything in your world can be connected to the web. Wild. It is like we live in the future.
Information dashboards are going to be much more important in our daily life as we move on.
Those dashboards will pull from many different data sources. That creates a sort of personal device cloud for you, the user.
How do all of these things connect? Communications routing and ushing from the cloud into a browser or mobile device.
Caller-ID is one of the earliest examples of push notification.
Web sockets is a culmination of a web stndard to create a persistant connection to a device over HTTP. It is extremely powerful, especialy with Socket.io in Node.
What about peer communications? Peer to peer tunnels are quite powerful, and the W3C is working on webrtc (Web Realtime Communications) that allow you to use UDP to stream time critical network adaptive data, like A/V streaming and time critical gaming.
webrtc is not equal to rtcweb. webrtc is W3C, rtcweb is IETF. Don’t mix them up. :P
Check out the new JavaScript interfaces with webrtc: MediaStream, PeerConnection, and DataChannel. These will be available soon in browsers like Chrome and Firefox.
The webrtc group is working on standardizing thr javascript model, the security model, A/V transport, etc.
Using UDP solves the NAT/firewall problem with TCP peer-to-peer connections.
The good news is that web developers will not have to worry about these details. They will be able t just use webrtc to make realtime communications on the web stack.
Great talk, Chris!
@NodePhily Interesting post on the node.js style of callbacks and the power of Continuation Passing Style, which is hot in the functional world. I wonder what that looks like in JavaScript…
@NodePhilly
Paolo Fragomeni
What is realtime? (Sounds like a buzzword…)
Realtime is a precision of duration.
Hard-realtime is when a loss of precision represents a total system failure,
Soft-realtime is when a loss of precision degrades the quality of the system, but it is not a complete failure.
How real is realtime without evidence?
Instrumentation is a really big deal. It is permanent code at intersections where interesing data points are produced. We need to have visibility into running systems for good debugging.
Winston is a good way to add process level instrumentation, but that gives you a lot of overhead, which is a bit of non-starter.
Dynamic tracing is a way to add realtime instrumentation without adding cruft for your code.
Go to Terminal.app and you can check out all the cool DTrace apps on your Mac OS X:
ls -la /usr/bin/*.d
Awesome!
Check out `sudo iosnoop` for an example. And make sure to view the source.
Node has bindings for DTrace called node-dtrace-provider which is really cool!
Thanks for the talk!