
Ask HN: What are the best technologies you've worked with this year? - Athtar
So HN, what are some cool, shiny new technologies that you worked with this past year? Care to tell us what those technologies are and why they are so cool?
======
samdk
2010 was, for me, the year of JS-related technologies. (I'm actually rather
disappointed I haven't had more time to check out Clojure and to use Haskell
and Scala more--I was doing quite a lot of front-end web stuff.)

1\. Socket.IO (<http://socket.io/>)

It lets you use websockets and automatically fall back to flash sockets, long
polling, or several other real-time communication methods if websockets aren't
supported by the client. There's a JS client and node-compatible server, as
well as in-progress server implementations in a few other languages. Node is
nice by itself, but it's with things like Socket.IO that it really shines.

2\. Coffeescript (<http://jashkenas.github.com/coffee-script/>)

Coffeescript is a nice-looking and nice-to-type syntax on top of JavaScript.
It's made JS development a lot friendlier, and I now miss things about it
every time I'm programming in Python and Ruby. I now use it whenever I'm doing
any significant amount of coding in JS.

3\. Node.js (<http://nodejs.org/>)

Node should, by this point, need no introduction. Server-side JS. Plays very
nicely with websockets thanks to Socket.IO, making it very easy to write the
server-side part of real-time webapps. I've also found it very useful when
trying to quickly prototype simple non-webapp things that have to communicate
over a network.

I haven't had a chance to check out Backbone.js
(<http://documentcloud.github.com/backbone/>) yet beyond a very quick look,
but I expect to use it (or something like it) next time I'm developing
something that uses a significant amount of client-side JS.

I'm also very excited by the continued development on (and Yehuda Katz's
participation in) SproutCore (<http://www.sproutcore.com/>).

~~~
jashkenas
I'm looking forward to seeing someone combine Backbone.js with Websocket-based
persistence. It's a bit out of scope for DocumentCloud to tackle, but the
building blocks are there.

One client makes a change to a model -> changes are synced to the server ->
other clients that currently reference that model have its attributes updated
-> all the UI that displays the model is automatically re-rendered.

It's not critical for most applications, but is a really nice, nice-to-have
for any JS app that displays the same editable data to more than one user at a
time. Built-in conflict resolution mechanism for bonus points.

~~~
nsm
I'm doing something pretty similar to rumpetroll (it is fully functional
rumpetroll now, but we will add more features) using Backbone Model View
Collections as my 'Sprites'. The code isn't public yet, but me and a friend
have some plans for it. The only thing different is that we've completely
dropped use of Backbone.sync, for the sole reason that the method based
approach does not fit very cleanly into what we are doing and websockets. So
we have one model as a 'dispatcher' instead, to which all models send messages
which are transmitted over websockets. All sprites communicate via attribute
change events which is a really good use of Backbone. On the server a tiny
node.js wrapper uses Redis pub-sub to relay messages out to other clients.

The code is 'out there' but private, so if you want to take a peek at it,
please contact me directly.

Thanks for a great framework.

~~~
jashkenas
I'd love to take a peek, if you want to mail an invite to jashkenas at gmail.

Replacing Backbone.sync is totally legit -- and is indeed what having
Backbone.sync in a single place is intended for. There are many good paths to
data persistence: REST/CRUD, RPC, aggregated JSON, CouchDB or Mongo,
LocalStorage, and so on. Backbone.sync is just the default implementation for
the common case.

I think that one of the more exciting things about JS development these days,
is how open and flexible the patterns still are.

------
spudlyo
Varnish, the reverse proxy, has been my favorite new-to-me technology of 2010.
It sits in front of Apache and caches static content (or anything really)
based on rules you define in the Varnish Configuration Language (VCL).

Varnish is cool because it is very fast. It was written by Poul-Henning Kamp,
who has a lot of experience in FreeBSD kernel development. He makes effective
use of virtual memory, is careful to avoid memory operations that result in
expensive bus transactions on mutli CPU systems, and knows how many system
calls it takes to serve up a cache hit. All of this work has paid off. Varnish
can turn a plodding CMS into a site that screams, and your profiling tools
(siege, apache ab) will fall over before the site does.

Of course it helps if your CMS supports cache control headers, and isn't
utterly laden with cookies, but that's where the VCL language comes in. You
can write code to strip bogus cookies (like google analytics) coming from both
the client and the server which vastly improves your cache hit ratios.

I like the way Varnish uses a shared memory pool for statistics and logging --
a wealth of information about the system is available to you but it doesn't
generate a ton of I/O logging it to a file unless you ask it to. I love how
you can use the telnet admin interface to compile new VCL code into a running
system and then switch to it, while keeping old named configurations around in
case you need to revert back.

Varnish has really helped me make slow sites fast this year, although it
hasn't happened without some VCL coding effort and some understanding of how
the sites operate.

~~~
drewp
But despite all that description, all my deployments have been one-liners with
3-4 cmdline params only. It really adds near-zero deployment cost.

Squid can do what varnish does, but it's 2x slower by my measurements, and it
has a gigantic config file. (Squid can do things that varnish can't, so you
may have to use it anyway.)

------
dstein
The iPad has changed everything. It's an entirely new type of computer that
turned out to be substantially better than anyone imagined. Watch a 5-year-old
use an iPad for the first time and you will immediately see and understand why
this is a major paradigm shift. It's the first "socially acceptable" computer
-- at Christmas I can pull out my iPad, plop it down at the dinner table and
share pictures with the family, and it's not at all considered rude.

~~~
jaxtapose
The iPad is an entirely new type of computer? You mean, like a pad computer as
suggested by Wieser in the 90s?

> turned out to be substantially better than anyone imagined

By anyone you mean analysts, right?

~~~
dstein
_You mean, like a pad computer as suggested by Wieser in the 90s?_

I mean like a kids computer, and a socially acceptable computer, as I said so.
The physical form factor isn't what's new, the implementation, software, use
cases, and the whole experience is what's new.

 _By anyone you mean analysts, right?_

By anyone, I mean everyone who I've shown an iPad to. Most people don't get
it, initially, but after a few minutes of playing with it, seeing their kids
play with it, watching funny youtube videos together etc, everyone basically
admits they didn't think it would be as good as it is.

~~~
jaxtapose
> The physical form factor isn't what's new, the implementation, software, use
> cases, and the whole experience is what's new

Actually. I want to explain why I was so vicious before. What made Wieser's
ideas about computing so fantastic wasn't physical form factors. It was about
a new age of computing where the way that people use computers would be
significantly different to what we had then. It's taken more than 20 years for
that to /start/ happening. The iPhone/iPad is the start of a Wieserian world
because it bought the idea to people, not because they invented it.

The iPad really is an extension of the pad idea from Ubiquitous Computing. End
of story. There's no counter argument. It's irrelevant who you've shown your
ipad to, or how novel you think it is. You're wrong. End of story.

In fact, the iPhone and iPad are two great examples of what Wieser talked
about so often in his work. The only core difference is that Wieser, the
optimist he was, believed that devices should be like note pads in the office
and not owned by a distinct person _. Computers should transend the need for
us to serve them, but instead they should serve us. Pads would be used like
note pads are today, but with the power of computing facilitating our
contextual needs.

But just because it's new to you, and your group of friends is irrelevant. The
idea is old. Even from an implementation point of view.

The one thing that Apple can be congratulated for is bringing that idea into a
marketable position. That's no small feat there, they deserve recognition.
However, they didn't invent the idea. Just a marketable implementation.

_ He also thought that there should be more computers, everywhere, that
pads/tabs/boards interlink with.

------
apu
Redis. Fucking awesome database. Does exactly what it's advertised to do, with
no unexpected surprises. Great documentation. Finally we can go beyond the
simplistic key-value map/reduce datastores, for when you don't need all the
guarantees that traditional SQL forces you to have.

<http://redis.io/>

(I still use postgres and sqlite for other database needs, but I'm strongly
considering moving a few of those over to redis if I have time.)

~~~
PStamatiou
Yes! I first laid hands on Redis this year while working on Notifo and it's
raw speed lets me do some great things. Currently hacking on some service
analytics stuff that redis is making pretty easy. Though keeping everything in
memory can get expensive when we want to minimize server costs so we keep the
first month of data in redis and the rest as an archive in mysql (how often is
someone going to look up a notification they received more than a month ago?)

------
sophacles
These aren't new to the world, but they are new to me this year, and a lot of
them sort of hit some sort of "usable by those without active interest in the
continuation of said tech".

1\. Mongodb -- This year it really hit its stride and have been able to use it
without worry for storing test results and experimental data. This is much
nicer than the textfile logs -> sql -> processing datapath I was using
previously.

2\. flask: this little framwork is in my sweetspot. It does all the annoying
crap of webby stuff, without all the "use our orm/routing model/way of
thinking of http" so common in the space

3\. mongrel2: I like it because it uses 0mq as the backend and sanely
integrates some components in a way I feel could be better for many use cases
than traditional stacks.

4\. 0mq: This gets special mention, because it has been around for a while and
I was actively using it, but 0mq 2 came out sometime this year, and is
different enough from the first round, that it could be considered a separate
technology. It isn't revolutionary in the MOM space, but it is a cool
lightweight approach, and the core team has the type of dedication I like to
see in OSS projects.

5\. ABSOLUTELY NOT NEW: Haskell -- this year is the first year I've had time
to sit down with Haskell for real, and start understanding the weird FP thing.
This has made everything I do feel shiny and new, because even though I never
actually use Haskell, I find myself writing very short hsskell programs in
python and c and the other languages I use in my day job. When I started
coding I remember thinking "This must be what a wizard feels like!", Haskell
has brought back that feeling for me.

~~~
endgame
0mq is fantastic. I just wish it had some way to put a socket in a half-open
state: [http://stackoverflow.com/questions/3692854/how-should-a-
zero...](http://stackoverflow.com/questions/3692854/how-should-a-zeromq-
worker-safely-hang-up)

ETA: `zmq_poll()` is nice, but some way to make it play nicely with other
event loops (like libev's) would be even better.

~~~
jmtulloss
This exists in ømq 2.1 (<https://github.com/zeromq/zeromq2/tree/v2.1.0>). You
can get access to the raw socket, which allows you to plug it into anything
that understands sockets. This is what was done for zeromq.node to tie ømq
into node.js.

~~~
endgame
Thanks for the pointer. How does this square up against jrockway's comment (
<http://news.ycombinator.com/item?id=2055115> )?

------
DanielBMarkham
I continued to work with F#, deploying a couple of small apps.

The really cool part came when I realized that with F# I was programming at
the language level -- that I could effectively and easily write my own
languages. So I decided I would like rails-like entities, where the entity
reads the structure of the table and then conforms itself to whatever is in
the table.

Couple hundreds of lines of code later, and presto chango, I could simply say
"give me a list of customers" and point it to the table and I had a list of
customers. This totally disconnected the database data structure from the
code. Add a new field in the database and there was nothing to change in code.
Or add a new field in the type and have it percolate out to the database.
Change database providers and it was only a few function changes. Very cool.
The kind of simple fix Microsoft should have done with data access instead of
writing ODBC/ADO/OleDb//EF/etc

Then I had a blast with mailboxes, er monads, agents, and threads. Ended up
writing a small app that was purely functional and all ran in the background.
It was so automatic, at first I couldn't figure out how to start the dang
thing!

This led to a venture into MPI and other technologies which has just begun.
I'm also trying to wrap up my language work with a full DSL sometime soon (if
I have a project that needs it). Looking forward to parsing and setting up
trees and walking them. I also broke out of windows and started working in a
linux environment using Mono, Apache, and MySQL.

Incredibly fun stuff. Looking back, I really had a blast this past year. Next
year should be even better.

------
datapimp
I am a huge fan of Vagrant ( <http://vagrantup.com> ) which is virtualized
development environments, package-able. Works with chef and virtualbox. I
don't know if I can state just how game changing this is for me.

DocumentCloud really dropped some bombs this year. backbone.js, underscore.js
are really great.

Socket.io saved my ass. I promised some big clients that I could make
websockets driven apps for the iPad and then apple pulled websockets support
without saying anything. So I was able to get socket.io for the win.

~~~
railsjedi
Ah, great one! Vagrant is amazing. Probably has a lot to do with VirtualBox
getting really good as well.

------
railsjedi
1\. MongoDB / Mongoid have blown me away this year. Is now my default database
for new rails projects.

2\. CoffeeScript language is an amazing replacement for Javascript. I can't
see myself going back to pure JS at any point in the future.

3\. Rails 3 finally feels like a stable and maintainable web framework. All
the web frameworks now all seem to work together using Rack. The ruby web
development world is really a nice place to be at the moment.

4\. Bundler really nailed the gem dependency management issue (though the
journey to 1.0 was very painful)

5\. Sass / SCSS / Compass got really good. It feels unimaginable to go back to
regular CSS.

Wow, now that I think about it, way too many great technologies to list. 2010
was an insanely good year for ruby web developers.

~~~
cheald
Great list. With the exception of Coffeescript (I just don't "get it"), that's
basically my list, too. I'd like to branch out for this next year, though.
Clojure and Erlang are both on my list.

------
swannodette
Clojure - it's the gift that keeps on giving. It keeps getting faster and the
feature set for writing robust object-oriented software (minus the broken
stuff) just keeps getting better. In fact, it's changed how I assess the
feature set of other OO languages old and new.

miniKanren - logic programming w/o the Warren Abstract Machine. Has opened my
eyes to a ton of incredible literature on this under appreciated programming
paradigm.

------
PStamatiou
Jekyll (<https://github.com/mojombo/jekyll>)

First touched it two months ago just to tinker with but didn't really do
anything with it. Then after numerous frustrations with my current blogging
setup, I spent the last 5 days hacking on it over the holidays and I think
it's almost ready to launch. Had to do some custom stuff that I'll write about
in a post. It's extremely hackable and I love it. The only thing that doesn't
work for me is LSI for related posts. Even with a fast computer and gsl/rb-gsl
it still takes 10+ hours with my 1,000+ posts. Anyways, having a super fast
site is going to be a breath of fresh air. Google was saying 88% of sites
loaded faster than mine ( <http://paulstamatiou.com> ), though likely due to
the images in many of my reviews.

Also installed Google mod_pagespeed and all is well so far.

* Though to be fair most of that is just my redesign that is more minimal, less ads, etc, but there's something extremely attractive about simple, flat files. No worrying about if your database will get corrupted. Everything is in git..

~~~
jackowayed
Is there any reason you couldn't have just had Wordpress generate HTML that
you then statically cached?

~~~
PStamatiou
I wanted to learn something new. That's probably the only reason I went with
Jekyll. :)

~~~
jackowayed
That's reasonable :) I love Jekyll, so I have no objection to you switching.
Just pointing out that there were probably much faster ways to get the same
speedup.

Feel free to email me if you need any help getting the last bits figured out.
I use jekyll for blog.danieljackoway.com and danieljackoway.com, and I've done
some weird stuff with it (like pages that are generated purely through the
layout + YAML frontmatter--no "content"). Plus I'd just like to see the
redesign early :)

------
patio11
Twilio. Ringing phones is pure magic, and provides _so many_ disruptive
opportunities it is staggering.

~~~
cglee
+1 for Twilio. Tropo is looking pretty sweet too.

~~~
benatkin
Indeed; especially their PhonoSDK. <http://phono.com/> I didn't really
understand what it did until I listened to this podcast:
[http://changelogshow.com/105/18576-episode-0-4-1-telephony-w...](http://changelogshow.com/105/18576-episode-0-4-1-telephony-
with-chris-matthieu)

------
rdl
I'm kind of ashamed to admit it (at the end of 2010!), but I did some
Objective-C/iOS apps for the first time this year, and I was pretty amazed by
how good the Apple dev tools and the iOS simulator actually are.

The other thing which impressed me is kvm, in contrast to Xen.

~~~
dgallagher
Ditto on the Objective-C stuff, though personally I've been focusing on Mac OS
X rather than iOS. Apple really documents things well, and the Cocoa community
is extremely nice and helpful. The shiny glare of quality extends deep into
the inner depths of Apple's products.

------
ja27
This is the first year I've really used the real released Windows 7 - on my
new SSD-loaded work laptop and on my personal netbook. It's amazing to see
Windows more or less work and do what I want it to do most of the time.

GPU-accelerated VLC on my netbook has been amazing.

I got a Canon T2i / 550D this year. It shoots some amazing HD video and will
only get better as I spend more on lenses and develop better techniques.

The Kindle 3 (brighter display and cheap price) have me reading books I've
been putting off for years. It's great to have a device that's great at one
thing and not very good at random browsing, Facebook, Twitter, HN, etc.

------
zefhous
All thanks to jashkenas: CoffeeScript, Underscore.js, and Backbone.js.

Using those tools has helped me to really enjoy writing JavaScript and to
start doing it in a much more organized manner. They have been a huge catalyst
for my growth as a JavaScript developer.

Also, using MongoDB has been awesome!

------
SandB0x
New to _me_ : Numpy/Scipy. If you're using Matlab you should know there's a
Free and worthy Python based alternative

~~~
ctkrohn
Don't forget Matplotlib. Great-looking visualizations built on top of the
Numpy stack.

~~~
mark_h
And don't forget basemap if you're doing anything geospatial. This is an
absolute godsend for me, I wish I knew of alternatives in other languages too,
but as far as I know there's nothing else like it for that sweet spot of free
and awesome ease of use.

(Not that I mind writing in Python of course! It would just be nice to have
similar options when python might not be an option)

------
peteforde
I was shocked by how powerful SproutCore was, once I actually started hacking
on it. I suspect that it will be a very big deal in 2011.

I am also really excited by socket protocol tech advancements in the browser.
I was able to pull off seriously cool stuff using <http://pusherapp.com/> and
also <http://faye.jcoglan.com/> which is a nifty JS implementation of the
Bayeux protocol.

------
RoyceFullerton
In 2010 I fell in love with:

1\. Groovy - a programming language, it rocks because it less verbose and more
powerful than Java and I can fall back onto standard Java syntax when I don't
care to figure out how to do something in the 'Groovy' way.
(<http://groovy.codehaus.org>)

2\. Gaelyk - a groovy framework that runs on Google App Engine. Google App
Engine is great for launching apps. It's free until it gets traction.
(<http://gaelyk.appspot.com>)

3\. Objectify - The simplest convenient interface to the Google App Engine
datastore. Takes a lot of the pain out of using Bigtable.
(<http://code.google.com/p/objectify-appengine>)

These all pack a mean punch and let me work on my night/weekend projects quite
productively after overcoming a small learning curve.

I built <http://icusawme.com> and <http://chatroulettespy.com> with all three.

I'm looking forward to diving deeper into Appcelerator Titanium Mobile in
early 2011.

~~~
oemera
+1 for mentioning the awesomeness of Groovy and that you can fall back to Java
if you have to or if you like to.

------
DanHulton
1) MongoDB - I started off using it in place of a few tables that had some
varied column requirements, and I'm now in the middle of converting my entire
DB to it. So awesome.

2) Kohana - I love working with this framework. I never really worry about the
ugly warts in PHP, because honestly? I'm not programming in PHP any more. I'm
programming in Kohana, and I only occasionally fall back to PHP for "low-
level" stuff.

~~~
gsmaverick
I was trying to get into Kohana but I just couldn't find any good guides to
get started and to show me all the various features.

~~~
DanHulton
Sorry I'm a little late to get back to you on this, HOWEVER, Kohana just
released version 3.0.9, which includes a revamped user guide with full
examples and details and tutorials:

<http://kohanaframework.org/guide/kohana>

------
crawshaw
Protocol Buffers (<http://code.google.com/p/protobuf/>)

Not what you would call cool technology, but definitely the best technology I
have used this year. Protobufs get out of the way so you can get work done.

------
endgame
Not new, but I've really enjoyed working with Lua (<http://lua.org>). The C
API is really nice and I like how you can start from a known-safe, minimal
interpreter and add new procedures carefully.

libev (<http://software.schmorp.de/pkg/libev.html>) was also a lot of fun to
use for multiplexing sockets, plus it has a whole pile of other useful
watchers that can use its event loop.

------
morganpyne
Most of these are not new to 2010 and some are quite old, but here goes:

\- All the Amazon offerings. They are innovating like crazy and improving and
expanding all their offerings all the time.

\- Compass/SASS/SCSS - All the pain gone from CSS

\- Capistrano - All the pain gone from software deployment

\- Apple laptops & OS X. A bit on the clichéd side now but it really makes my
life easier.

\- SSDs. Damnit I really need to buy one of these things. After having tried
them out it's hard to go back to spinning platters.

Also things I wish I'd worked with but haven't had the chance yet:

\- anything in the CNC milling, laser cutting, desktop fabrication and 3d
printing fields. This is a huge area to watch.

------
jlangenauer
JRuby. It's just rock-solid, wonderfully fast and easy-to-use, it's now at the
center of my product. Many props to Charles Nutter et al for this!

~~~
jamesbritt
Absolutely.

Despite being responsible for Monkeybars, I actually hadn't used JRuby that
much this past year, being mostly caught up in a Rails gig (which I thought
might run under JRuby, but is not).

However, having gotten a Kintect I'm hooking into the C libs via JRuby and
some nice JNI wrappers some smart Kinect hackers have written. So I can use
JRuby + Monkeybars for the GUI.

------
davidedicillo
Not directly but I'd say Erlang and Redis, definitely the most "exotique"
technologies I've been in contact this year that made <http://mysyncpad.com>
possible

------
mindcrime
The closest to "cool, shiny and new" I got was Scala. And I never found time
to dig as deeply into it as I wanted, so I still haven't done any meaningful
coding in it yet. But I did sit down last week and spent a couple of days
working through the _Programming Scala_ book, and one of my major goals in
2011 is to learn Scala well.

Other than that, the stuff I did this year that was merely "new to me" was
mostly about Groovy and Grails. I spent a ton of time working with Grails, and
I'm really liking it.

------
elviejo
Seaside - a WebFramework based on smalltalk and continuations that make
developing complex WebApps extremely easy. Seaside led me to learn:

Smalltalk - What a powerful language. This is what OOP should look like.

Object Oriented Databases - Gemstone and db4o. Not having to deal with the OO
and Relational mismatch is a breath of fresh air.

------
kefeizhou
1\. MongoDB - I see several people also listed mongodb but I particularly want
to mention the simplicity of setting up the database and using the API.

2\. AndroidOS - It came out few years back but it really took off in 2010. I
can’t wait to see the new features for 2011 and how it’ll fare against iOS.

3\. Python - even though I’ve been using python for several years I’m still
constantly surprised by it’s core features (recently coroutines) and it's
plethora of awesome third-party libraries.

------
clemesha
Redis. Makes working with a database fun, just like jQuery made JavaScript
fun.

------
donniefitz2
Normally, I'm a software producer and I've worked with a few technologies that
are great, but this year (as of late) I'm becoming a software consumer.

I've finally gotten to experience the Kindle 3 (Christmas gift) and the Google
CR-48 is pretty sweet too. I believe the Kindle will change the amount I read.
I have so many books on deck. My biggest challenge is balancing development
time with watching movie time and more reading time.

------
wil2k
#1 - MongoDB: see comments above. :) #2 - Redis: also see comments above. ;)

#3 - new to me: Twisted as a server framework; more specific Cyclone which is
a Twisted-based clone of the Tornado server framework.

<http://github.com/fiorix/cyclone/>

Comes with built-in MongoDB (TxMongo) and Redis (TxRedisAPI) support too! :)

------
neduma
Nobody mentioned GIT. I went too deep in Git this year.

Others would be Sproutcore, Rails3, Coffeescript, Erlang.

------
yankoff
This post made my day. I've found some new interesting stuff from the
comments. Thank you.

2010 was a year of discoveries for me. I started learning and using
technologies like Ruby, Rails, Sinatra, HAML, Google Maps API v3. I started
reading HN. Just in the end of the year I've discovered that with technologies
like Rhodes framework, Appcelerator or Phonegap I can create iPhone/Android
applications with HTML/Javascript or Ruby without knowing objective C. And
this is just the most recent excitement I got.

------
locopati
Erlang - playing with serious functional code for the first time in a long
while has done wonders for my day-to-day Java job.

------
mrkurt
Firesheep, actually. It took a scary-to-people-who-know problem and made it
scary to people who don't know. I didn't ever expect to explain session
hijacking to my dad.

------
AndrewGreen
Apologies for blowing my own trumpet, but pound for pound, the neatest thing
I've worked with this year is a C++ template I wrote. I like to have the
tightest possible scoping of names, but a common pattern makes that difficult.
If you've got a function that produces a good value or indicates that it
couldn't do so one way to write it is:

    
    
      Type theVar;
      if (theFunction(theVar)
        { /*do something with theVar*/ }
    

theFunction returns true if it set theVar, false otherwise. The problem is
that theVar's visibility extends beyond our interest in it. The ZQ template
lets me write this:

    
    
      if (ZQ<Type> theQ = theFunction())
        { /*do something with theQ.Get()*/}
    

and all of a sudden I don't have to come up with anywhere near as many
meaningful names as before.

To me it's neat because I've found many unanticipated uses for it e.g.
wrapping the values in option-specifying structures where a default is cleanly
indicated with a default-inited (or subsequently Clear()ed) ZQ, rather than
having a separate 'use default' boolean, or 'set default' function.

[http://zoolib.svn.sourceforge.net/viewvc/zoolib/trunk/zoolib...](http://zoolib.svn.sourceforge.net/viewvc/zoolib/trunk/zoolib/source/cxx/zoolib/ZQ.h)

~~~
megrimlock
You might be interested in boost::optional, even if only as a point of
comparison:
[http://boost.org/doc/libs/1_38_0/libs/optional/doc/html/inde...](http://boost.org/doc/libs/1_38_0/libs/optional/doc/html/index.html)

------
gfodor
Clojure & CoffeeScript are the one-two punch this year.

------
endtime
CoffeeScript, Raphael.JS, and Django (not new this year, but new to me) were
definitely my favorite tools of 2010. I've just started playing with Tropo as
well, which is better for my purposes than Twilio.

------
jrockway
PSGI/Plack: <http://plackperl.org/>

node.js for HTTP-related activities. (I needed a rate-limiting proxy that
returned a special HTTP code when the rate limit was exceeded. 20 lines of
node.js later...)

0MQ: the way network messaging should be. (Did you know that the same socket
can be bound and connected multiple times? Amazingly flexible.)

------
justinchen
Redis. It has ton of different data structures that make it an interesting
alternative to the relational DB and memcache.

------
niels
Backbone.js! Hits the sweetspot for a lightweight clientside MVC framework.

------
Rendy
The Google Map API v3 is pretty nice.

~~~
calicoder
+1

------
pederb72
GLM (<http://glm.g-truc.net/>) - A C++ mathematics library based on GLSL. It's
not a new library, but I didn't know about until 2010. It's really convenient
to use (almost) the same syntax in C++ as you do in GLSL.

------
seivan
Redis Rails 3 Cocoa Sparrow-Framework Chipmunk Physics jQuery

Anyone who says MongoDB without having a proper use will get a very angry
stare from me. Seriously...

------
kingnothing
Ruby on Rails 3: It's much more succinct than Rails 2.

Ruby 1.9.2: It was time to move up from 1.8.7.

MongoDB: I introduced this new technology to the company I work at which has
now adopted it for two significant projects. One was the project I researched
it for initially, which handles millions of writes per week, and the other is
a rewrite of something we used to use MySQL for. It currently has a hundred
million or so documents and is going strong. It's new and fun. My collection
uses dynamic sharding; I think the other one does as well. One is hosted in
our data center, the other is in the cloud. Both are in production and running
with 100% uptime so far.

------
schmichael
beanstalkd

I've worked with MongoDB, Cassandra, and a host of other tools, libraries,
databases, and frameworks, but beanstalk is the only one to _never_ fail me.
It's not a full swiss army knife like Redis or the sexy app of the year like
MongoDB: beanstalk does 1 job and does it, as far as I can tell, perfectly.

~~~
drewp
Looks like resque (or pyres, or other clones), but maybe a little bit easier
to integrate?

------
elithrar
For me?

· Rails 3 became everything I wanted Rails to be — I've come from Django and
am really loving the ecosystem and the way the documentation has matured.

· Varnish — just an awesome piece of software. Fantastic job of caching, from
small sites to large, without having to write mountains of config files. It's
something you can drop it from an early stage with little cost in time, and
know it'll be ready to help an application as it grows/scales.

· SSD's: didn't realise how good they were until I got a machine with one. I
don't think I can buy a new machine without one now.

------
naba
At work, I've used the Java Play framework and absolutely loved it. Been
recommending it to only java guys ever since. Learnt python and django this
year and was blown away.

------
thomasknowles
Redis, that super quick key value pair data store which integrated support for
hashes has made my life easier for message queuing and session management.

------
ihumanable
Flourish Unframework for PHP (<http://flourishlib.com>) I've looked at it in
the past, but this was the first time I was able to work in it professional
thanks to a change in career.

It's a really great core library for building web applications, takes the
1389408103 functions in PHP and produces a nice modular library that gives you
everything you need and nothing you don't.

------
ljegou
\- WebServices, to provide access for R, Python, and spatial calculations (WPS
norm). Complex calculations without installing any client software, anywhere
with an Internet connection.

\- PostGIS raster capabilities (at last some raster storage and computing
inside the database).

\- Devon:Think / Bookends / Nisus Writer : Scientific papers and books
intelligent storage, bibliography management and scientific writing.

------
enneff
Go. I've had more fun writing Go programs and working on the Go project than
any engineering work I'd done before.

------
squar3h3ad
Not new technologies - but I got started with Django and jQuery. Delved deeper
into numpy - loved all of them!

------
lionheart
A bit late to the party but I finally learned and started using Ruby on Rails
this year and I love it.

------
mjuhl24
This is not a new technology, but new for me this year was working with MVC
frameworks for web development. My workflow has vastly improved because of it.
Specifically, the Play Framework (java/scala) and Rails 3.0 (ruby) have been
great new additions to the many available.

------
jfoutz
makerbot cupcake cnc.

It was an on again off again sort of project mostly off, but i finished it up
a week or two ago. Now I can print plastic in any shape i can draw in art of
illusion. It's satisfying fiddling at the computer for a while then printing
and having a real 3d thing.

~~~
tocomment
What's some stuff you've printed?

~~~
jfoutz
mostly just silly calibration cubes. a few space invaders and companion cubes
to give to friends. today i (continued) work on a spindle to hold the big
spool of plastic.

cnc is so much fun. I think i'm going to have to get a cnc mill. this is just
to tempting. <http://lcamtuf.coredump.cx/guerrilla_cnc1.shtml>

In the near term i'll probably just print some brackets and containers for
stuff.

~~~
tocomment
I'm trying to think of enough things I would print so I can justify getting
one. No luck yet :-(

------
kokoloko
Scala - It's what Java should be.

------
cageface
Juce: <http://www.rawmaterialsoftware.com/juce.php>

It makes cross-platform native app development easy, and is a _huge_ leg up
for audio work.

------
dgudkov
Vertica (<http://vertica.com>) - massively parallel columnar DBMS for querying
multi-terabyte databases. BTW, heavily used by Zynga in 200+ nodes cluster.

------
jamesbritt
Just realized that I need to add Mirah (<http://www.mirah.org/>) to my list of
cool 2010 tech.

I only started using about a week or so ago, but, hey, that;s still 2010.

I was trying to manipulate Kinect data in JRuby, but it was too slow. However,
I may be able to use Mirah instead, and if all goes well get Rawr to auto-
compile Mirah files as part of the build process. Mirah's still a bit rough,
but knowing Charlie I expect it to rock.

I'm pretty excited about 2011. Which should be starting in about 30 minutes
for me ...

Happy new year, all!

------
catshirt
node.js was already mentioned as someone's third, but I'd like to cast a sole
vote. seriously, it's awesome.

------
jamesbritt
Physical/wearable computing: Arduino Lilypad, and the Kinect.

------
sea6ear
Neither of these are truly "new" but maybe new to mainstream?

1.Haskell or "how I learned to stop worrying (about monads) and just do io."
Still fighting with the type system occasionally but I think it's getting
better.

2.Erlang - I so love this language. The concurrency support makes me think
about programming the way I want to think about programming. I also like
that's it's most of the fun of functional programming (Haskell style) but
without having to deal with types.

------
j_baker
I'm actually beginning to enjoy writing things in Haskell. It's the first
statically typed language that I enjoy using (although I do still miss dynamic
typing).

------
ww520
The Play Framework is amazing. Its rapid development capability allowed me to
finish one project with highly compressed schedule ahead of time.

~~~
rkalla
+1 to the Play! Framework; as someone who did Struts/Java EE 5/EJB3 for a long
time, not needing descriptors all over has been awesome.

From reading this thread I see Java doesn't get much love, but for us poor
saps that spent 10 years using and learning it and can't give it up yet, Play
is great.

------
dho
Bundler (<http://gembundler.com/>) for managing the dependencies of Ruby/Rails
applications.

------
enjalot
OpenCL - this year I've been learning about GPU acceleration, and while it may
not be good for everything it is looking very interesting for various
applications.

While my area is currently graphics/simulation I'm wondering how effective
adding GPUs as accelerators to large scale web problems would be. It's really
taking of in the Super Computing area, so I'm sure there is room for it!

------
nRike
Well, i still was in the university but i've had chance to play with a few
ones:

LCDS, WebORB specifically and Flex 3 RoR Lift Web Framework

And in the Q4 of the year i used all my time to learn Android and a lot of
cool API's:

Overlay-Manager to recognize gestures in Android AndEngine Geocoding and
reverse geocoding Notifications by vibrating SMSManager

I really enjoyed developing Android stuff, and i'm keeping up with these for a
while.

------
rviswanadha
1\. Node.JS 2\. ExpressJS 3\. Mongoose 4\. MongoDB

------
wensing
haXe + FlashDevelop.
[http://www.flashdevelop.org/wikidocs/index.php?title=Feature...](http://www.flashdevelop.org/wikidocs/index.php?title=Features:Interface)
Lightning fast compilation and IDE plus a language that can target multiple
platforms = major time savings for a bootstrapped startup.

------
mkeblx
three.js (<https://github.com/mrdoob/three.js/>) An easy to use wrapper for
doing 3D graphics via JS using canvas, WebGL, and SVG renderers. Check out the
cool demos. I'm betting 2011 will see a lot done with this and similar
libraries.

------
Luyt
The combination of CherryPy, memcache, oursql and DBUtils. This is a kind of
lean and mean Python webapp stack.

------
lscharen
I have to develop a from-scratch application for work and have been pleasantly
surprised with the current crop of .NET technologies and how well they can be
integrated with open-source systems.

MVC.NET 3 + Entity Framework 4 + OpenRasta + Membership Framework + MEF + LINQ
+ dojo has been a good experience so far.

------
michaelty
Clojure. I miss map and reduce already.

------
andrewljohnson
Here are some great open source iPhone libraries I use:

* Mopub - mix and match ad networks, server side - open source SDK (brand new start-up that just got funded, out of AngelPad)

* ASIHTTP - makes networking easy

* TouchJSON - the fastest JSON library, AFAIK

* Appirater - easy drop-in widget for prompting for reviews

------
jmonegro
Rails 3 and HTML5

------
tarikjn
PHP and Visual Basic

...kidding :)

------
nsm
redis, node.js, socket.IO, ccache (not new, but new for me), QML

------
herrherr
Google App Engine.

------
keegangrayson
iPod touch, flip video recorder, droid 2 global, linux mint on usb, 1.5 TB
drive, and a remote control helicopter... good year

------
SeanDav
Probably redundant to mention it here but hands down and by a country mile:
news.ycombinator.com aka Hacker News.

------
EricR9
Definitely Rails 3 for me. I've started taking it more seriously and
developing with it professionally.

------
nivertech
COBOL ;)

------
tfs
Web2py :-)

------
zppx
LDAP, particularly 389 DS.

------
maxer
faceboook graph/api, always learning :)

------
ecounysis
LINQ

------
bauchidgw
video + canvas + v8 js engine

2011 we will see in-browser video editing

------
binaryfinery
Solid State Discs in everything.

Ok, perhaps not what you were asking, but they made a big difference for me. I
have two, raid0 in my desktop, and a sandforce in my MBP. What a difference.
Compiling, linking, copying, everything not just faster, but almost
instantaneous. Yum.

~~~
aw3c2
Buying an SSD was a huge disappointment for me. Programs were not "almost
instantaneous" but just 2-3 times faster to load if there was a difference at
all. So OpenOffice took 3 seconds instead of 7, not worth the huge price
difference for me. Compiling is CPU bound, I noticed no mentionable difference
there. It might be worth it if you use a "bloaty" OS with virus scanners and
indexers running or have specific use cases where very fast access is needed,
but for a lightweight system the difference is neglible. The only real
difference I actually _noticed_ without looking at numbers was that after
startx the XFCE desktop was ready before the monitor did its resolution
switch. Lots of random reads in that process I guess. From a HDD it takes a
couple of seconds (once per day...).

I returned it. And before some is implying I am dumb: Yes, I had a fast and
quick SSD and my system was setup to use it well.

~~~
binaryfinery
You need more CPUs then :-)

Also, there really is a difference between SSDs available right now. My
Kingston SSDs have blocksizes of 120k (!). My OCZ Vertex2 has blocksize of 4k.
Its 4k write speed is off the chart. Like 40x faster than some SSDs.

I'm on OSX (2 cores), Windows (8 cores) and CentOS (4 cores).

~~~
aw3c2
Oh yes, I regret having bought a 2 core CPU. Maybe I will upgrade to a 4 core
some day.

------
mkramlich
#1: SSD

#2: MongoDB

#3: iPad

though I have not used them significantly, I have sort of drooled from afar
over: Twilio, Redis, Node.js, Clojure and Kindle

(ok some of the above are not super new-new, but new enough to me)

------
rick_2047
I worked on LPC2148, an ARM7 based controller. A refreshing experience I
guess. Made me realize how easy AVR series actually is. Started working with
Atmega8s again this Wednesday and realized that I find it easier to work on.

------
d3fun
hypertable

