I use to work at a research lab and while it was cutting edge in some ways, it seemed unaware of things going on in software and web. I've since left the research lab, and Nerd Time started as a mailing list to tell my friends still at the lab about things that they might be able to use in their own projects.
————Hey all, It's that time again. I never get feedback about whether you guys read this or not. But apparently, some of you do, since my last trip back to MD. This is just a collection of things I found interesting since the last nerd time. Obviously, there are other trends I'm missing.
If you want off, just lemme know.This is rather long since it's been a good 6 months since the last nerd time. Work has kept me busy, and I don't read as much as I use to. Since there's no theme, but lots of trends, they're in no particular order this time. Skim through it and see if there's anything that catches your eye.
If you have questions about stuff, feel free to ask me (don't reply all!)
First, some stuff I did on the side:
Senate Majroity vs National Debt
I was talking with Ian about graphing public data, and this was what he wanted to know. This sort of thing should be so much easier. If you find the process of getting this data to graph, lemme know. I imagine it goes in line with a lot of the net-centric buzzwording that does on in DoD projects.
I wanted to get to know the Lua programming language, so I chose this as a project. I'm getting it to support more chickens still.
So I'm sure most of you by now have heard of twitter. Considering that Oprah did a show on it, it's crossed over to mainstream. A lot of you might not think of it as anything to pay attention to. However, it's one of those things where its value depends on whom you follow. Beyond the hype, it's mainly a messaging multicast system that has a dead-simple API, so that other people can build things on top of it. People have made things that twitter, such as plants that tell you when you need to water it, when bridges go up and down, when a meteor almost hits the earth, etc.
Wolfram Alpha and Google Squared had both been announced in the last
month or so. Both are looking towards being able to query large
amounts of structured data. However, wolfram curates this data with
experts, and google squared attempts to make structured data from
indexing tables of data on the web. In addition, Yahoo released YQL,
which is a query you can use to scrap the web and treat it as just
Real-time search seems to be the wrestling ground for the next
generation of search right now. There are a number of competitors in
this field, including giants and startups. It's evident with the death
of Michael Jackson that news doesn't just travel through the old
If you haven't heard, google released a new communication tool called google wave. It's what email would be like if it was reinvented today. It's basically combining different aspects of our communication tools and merging them all together. It's best if you watch the video and play with the demo. If you want to play with wave yourself, you don't have to wait for an invite, but can sign up with a wave server that someone set up themselves. I recommend watching the video, as it breaks your presumptions of what's possible with HTML5 and the web.
To me, this is really old news, but just in case you're still using SVN, you should checkout Git instead for your source control. It's ass-kicking good, though it has a slight learning curve. I won't say too much more about it, but you should really look into it. It'll expand your mind.
Lately, there's been a flurry of attention on key-value stores. I've mentioned one of them before, CouchDb. There are a bunch of others. Tokyo Cabinet (link #2) is used at Mixx.jp.co, a social network in Japan. Cassandra (link #3) is used at facebook. Amazon has SimpleDB and Dynamo. I've only played with tokyo cabinet and couchdb, so I can't really do a compare and contrast between them all. But to me, TC, couchdb, and redis seem to be the most interesting. This marks a shift away from relational dbs as the default data store. Not that they'll replace relational db, but we're finding there are a different class of constraints for the web not necessarily taken care of by relational dbs. In addition, they have properties not avail to relational dbs, such as being schema-less, an http server built in, replication, distributed, etc.
It's something further out, but these first two talks from TED got me thinking about where the web was heading. I don't think that the semantic web, as we imagine it will come to fruition. However, having the things we own talk to each other over the internet is not unfathomable. They'll be able to negotiate with each other to perform a task, or they'll be able to keep a history of what they're doing or how you're interacting with them.
Hardware is already cheap, but building hardware yourself has still been somewhat of a pain. I remember having to use Rabbit boards before. There are better ones now. I've mentioned arduino before. Beagle board is a full board that you can run Ubuntu on. Teensy is a small USB microcontroller.
Gaming often is looked on as child's play, when in fact, it's some of the hardest programming around, and often drives innovation and progress in graphical techniques, AI, and hardware. Carmack, the guy that wrote Quake, wants to put Quake on the browser. For the longest time, people derided the web, saying it'll never match the performance of desktop apps, and never give the same user experience. If Carmack can run quake on a native browser, then I believe desktop will lose. If he's delivering quake as a video stream, then that's another matter altogether.
Whiteboarding in real time
Many collaboration tools have come out. We've discovered that the web is essentially a communications medium. Anyway, this set of collaboration tools lets you whiteboard, compose text, and revise docs in real time as other people are editing them. The last link shows you a re-play of paul graham writing one of his essays. This allows people to see how they edit their text over time, and shows others how other people think as they write. It'd be useful as an educational tool.
Facebook's walled garden
Facebook is the AOL of today. It's basically a walled garden of data, where users live. There's a bunch of effort to break them open. Facebook also wants to open itself out as a fast follower to twitter. I won't say much more here, but there's an ongoing battle about where data gets to go on this front.
Data.gov and the sunlight foundation
Since Obama took office, there's been a big push and initiative to open up the government to its citizens in the name of transparency. One of the things they're doing is data.gov and opening raw public data up to developers or anyone that wants to use it. The sunlight foundation is doing the same for legistator and voting data. I expect that we'll have more apps that will be able to take advantage of this data in the near future, not just to help the people govern their govenment, but also to lead more informed lives.
A front that I don't know too much about, but is probably a bigger revolution than the information age and the internet are things that have to do with genetic and bio engineering. 23andme lets you submit cell samples of yourself, and they'll do genetic testing to tell you if you have genetic diseases, among other things. You can now submit gene sequences and get them built for a modest amount of money–not super expensive, but still out of reach for hobbists) As the cost goes down, you'll soon see designer pets and bacteria. The last post is about a guy that theoretically hacks a more potent variant of swine flu.
GWT, sproutcore, and Cappucino
This was curious. Couchdb is a key-value document orientated database with an http server as its frontend. They were able to demonstrate that you can fit an entire web app just in the database. Data is code, and code is data. Not only that, you can use the database's replication to port your data and sync it where-ever you go. It's an interesting head turn, even if it's just a demo.
Mozilla Ubiquity again, but this time hooks into webapps
I've mentioned ubiquity before, which is like a commandline interface for your browser. I use it myself, but only in limited amounts. What's interesting about the direction is that they leverage web services to complete tasks it can't complete for itself. I think that high level languages will eventually adopt the idea of being able to easily hook into web services as a natural part of the language, without extra libraries.
Traditionally, web developers have stayed out of the realm of desktop developers. This is one of the many indications I have that a lot of programming–especially those with user interfaces or a social aspect–will move towards web programming constructs. https://jetpack.mozillalabs.com/
Clojure, Scala, Haskell, Erlang
I'm not going to say too much about these programming languages, since I've mentioned them before, but just as a reminder, there's more than Java out there. These four to me, represent the edge of programming languages that have potential in the future. With the advent of multicores, it's likely that functional programming will lead the way in giving us adequate programming constructs to deal with multicores. If you're a programmer, it'd probably serve you well to learn at least one of these in the coming 4 years.
Admittedly, I don't know much about Parrot. But the claims it makes is big. With the rise and popularity of dynamic programming languages like Python and Ruby, we're struggling for a fast virtual machine. And to have to build a new virtual machine every time we have a new language is a pain. ParrotVM is suppose to take care of easing that pain. If that's the case, it might be easier to make languages catered to our problem domain.
Augmented reality and zombies
We've moved closer to having augmented reality. This is a far cry from the geeky headcam helmets and laptop backpacks that dorky MIT profs wore a decade ago. It still relies on a 2D barcode, and has limited uses, but now with the iPhone3GS out (it has a compass), we might see more augmented reality apps (as well as on android phones)
Here are some good sysadmin tips. I'd like to think I know my way around linux, when in fact, I've just started.
I don't know anymore than what's written in the article. So read about it.
Voting on websites is old hat since about 2005 with the advent of
Digg.com and reddit.com. I found it curious that google has a
moderator app, to help facilitate the asking of questions. If you want
your own, you can create a white label voting site at slinkset.
http://www.slinkset.com The rest of these are related to software, but not about code. If you can only watch/read one, I'd recommend the poisonous people one. That applies to more than open source projects. In it, SVN core devs talk about how someone came in and told them they were all wrong. I have a feeling that was Linus Torvalds, as he rails on the SVN guys in his talk.
The Business and Politics of Software
Pivoting, or knowing when to stop.
How open source projects survive poisonous people.Linus Torvalds on Git
Build or buy?