Tech Tock

Time is of the essence.

@ Lab

A Walk Down Compiler Lane

May is compiler month for our technical lecture series.  Kalani Thielen kicked off the topic with a presentation on his lambda calculus compiler written in Haskell. From the language definition all the way down to machine code generation and register allocation in only an hour.

Some of us got a little lost in the language definitions, but I was drawn back in when we got to assembler – so there was something for everyone.

Dow Drops 1000 points – No Fair — Do over.

Intraday Chart

The Dow dropped 1000 points out of nowhere then snapped back.  Later the trades were canceled.  It was a very strange afternoon.  One Lab49er saw his portfolio fall 30%, then snap back.  He was going to make some orders, but the whole episode was over in a flash and financial websites were overwhelmed and sluggish at best.  Yahoo and Google finance slowed to a crawl, but MoneyCentral seemed to keep going.

The End (of the Netbook Era) is Nigh

This article says netbooks are on the way out.  Or not…

Linq For JavaScript

Hopefully I don’t get deep enough into JavaScript to need jslinq,but its nice knowing its there.  If only I could get intellisense for that…   Ahhh, Intellisense.

Capital Markets Course In Session

It slipped my mind until one of the Lab49 new hires mentioned it, but the Capital Markets course is run about twice a year and people are taking it right now.  Good luck guys, its worth it.  Hopefully you got the same inspiring speech my class did.

Google Code University – Hacking 101

Google will teach you how to hack with this cheesy app.

Four Stages of Good Grief

imageThose of us who sit near the recruiting team have a front row seat to the multiple choice tech testing which leads me to constantly wonder about the questions:

Do I know that?

Was I supposed to know that?

Don’t I know that?

What the heck is that?

Wait a minute – what language are they testing?

Lately the answer is Flex.  The questions sound like stuff I know but I can never pick an answer.

Twins? Separated At Birth?

image image

image image

May 8, 2010 Posted by | Uncategorized | , , | Leave a comment

@Lab This Week 11/27

Just Test – Nuff Said? Nah.

Big discussion about unit testing.  Views ranged from 100% coverage is necessary, to some code is not worth the trouble.  The 100% camp was hit with this rebuttal:

How is the coverage measured?
Is it just checking which code blocks ran during the test?
What about covering different code paths?

Everyone was in favor and there were some interesting insights including an example of “correctness by construction” in Haskell:

…”correctness by construction” (aka “making illegal states unrepresentable”).  This approach relies on a rich type-system (and, at a deeper level, an interesting fact technically known as the “Curry-Howard isomorphism”).  Ideally, when this can be achieved you can completely discharge the need for a lot of unit tests (replacing sort of probabilistic certainty with actual certainty).

Plenty of good links were sent and summarized:

This study found bug reductions of 40-90% with 15-25% coding time added.

Some recommend testability above clarity.

Guidelines on proper coding for testability (in Java).


I heard some talk about an A team being formed to take on a project. I’d like to see the problem these guys can’t solve.

Check out this interesting tool for translating a data model into a class model with proper naming and casing using either Entity Framework or Linq2SQL.

All in all, a quiet week as expected.

November 27, 2009 Posted by | Uncategorized | , , , , , , , | Leave a comment

@Lab this Week 11/20

Doug Finke was supposed to be podcasting from Microsoft PDC, this was what we heard.

Lots of discussion about ORM and Entity Framework vs. nHibernate with this conclusion.

Folks are happy that MS has open sourced  the “.NET Micro Framework”.  I met the announcement with “What the *!?*&^%# is the .Net Micro Framework”.  Read the link and you’ll find out.

.Net Meetup – I went and really enjoyed it.

NYFLEX Meetup.

There was a bit of interest in this story of Madoff’s programmers being arrested.  The consensus is that programming for financial companies is rarely illegal, so don’t worry friends.

As always, the biggest buzz in my section of the office is hiring.  As usual, we’re looking for UX, C#/.Net, WPF, Silverlight & Flex, and Java.  I heard talk of OLAP too. Some standard position info is here.  You can email if you’re interested and you qualify.  The bar is pretty high, but they let me in so you might get lucky too.

Friday came pretty quickly and just when I was thinking it seemed a little subdued this week and was wondering when the next Friday Seminar will be, surprise pizza showed up and made my day (thanks James).  The whole office (not too many in attendance this Friday) ate happily, though perceptions of quality did vary.

Probably will be pretty slow again next week with the holiday.

Heard @Lab

One guy is hard core because he uses the command line in SVN (don’t laugh, he fixed my project in 2 minutes).  Another guy blows him away, he uses Chrome and doesn’t even use bookmarks.


World Bank data now indexed by Google

The World Bank also released an API earlier this year.

Forgot to mention LispNYC last week.  I’m going to try to attend these in future.

November 21, 2009 Posted by | Uncategorized | , , | Leave a comment

@Lab this Week

Humor from ZeroHedge is still popular.  Unfortunately, the Goldman they’re praising is not me.

Cool Barcodes


If you’re looking for Heisenbugs try MS Chess.  It can detect subtle hard to repeat bugs in concurrent programs.  It works in both managed and native windows programs.

CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the interleaving for improved debugging. CHESS is available for both managed and native programs.

read more about it here and here.

Tech Seminar

Kalani presented Lambda Calculus.  It dates from the 1930’s, but my only experience is .Net lambda expressions.  I had the strange sense that I knew what he was talking about, but I still didn’t understand half.  I think it’s going to start making sense when I get serious about studying .Net lambda’s which I’m still half hacking.

In the Web World…


Marak spoke at NYC.js (New York City JavaScript) Meetup for one of my ongoing open source projects, route.js

route.js is simple JS framework for creating statefull navigation in the browser based on location.hash changes.

Marak gave me a demo and it seems like an awesome and incredibly lightweight script.  Its less than 100 lines right now.  You can make a single page that has lightning fast links, making it look like a whole bunch of pages.  Basically, its easy DHTML.  There’s a bunch more uses too, like infinite tree navigation.


Some folks went to a full day Kaazing class.  Here’s the techno speak on Kaazing:  “it’s a WebSocket server implementation that offers full downgraded emulation (on both client and server) for browsers that don’t support WebSockets.”  I think its a really awesomely cool real-time web product.

GO – Google’s new programming language

Quite a bit of interest in GO…  Google believes will combine performance with speed. GO is based on the C programming language but also incorporates elements of all dynamically linked languages like python, and even pascal/modula/oberon family of languages.

There is an hour long tech talk available.

A performance comparison

Heard @Lab

“If you really want a solid brain f*ck, I recommend Haskell.”

“I’d go outside, but they don’t have slashdot outside”
I was never a big slashdot fan, but I got sucked in and its now on my home page news feeds.

But Wait, There’s More…

Visual Studio, Now in Linux?!

Online IDE – wow

An IDE in your browser designed for the cloud.


We have a PowerShell evangelist, who also happens to be a MS MVP in PowerShell.  I personally have seen him evangelizing PowerShell all over the office.  (Maybe I’ll use it for my video project)  He makes a good point on his blog about thanking the people of Lab49.  I personally am inspired to do more just being @Lab.

Dryad and DryadLINQ

A distributed computing engine from Microsoft.

November 13, 2009 Posted by | Uncategorized | , , , , , , , , , , , , , , , , , | Leave a comment

Considering Adding a Functional Language to My Bag of Tricks

There are a lot of people @Lab who know things like Erlang, Haskell, Python, R, etc., etc., etc.  I’m actually considering learning Lisp, but I need a project.  I “learned” php for a project over the summer, but I didn’t really like it since its so much like classic ASP (really messy).  Maybe I’ll learn F# instead…  That shouldn’t be such a strech since I built an ML compiler in grad school (F# is based on ML).  I wonder what kind of project I’d be interested in would benefit from a functional language…  I suppose I’ll have to read up on the language and maybe that will give me some ideas.

Its funny, doing WPF, my umpteenth technology, is just not enough.

November 13, 2009 Posted by | Uncategorized | , , , , , | 2 Comments

@Lab this Week

A weekly roundup of interesting things I hear about at the Lab, since this is the first one, it covers a bit more than a week.

A couple of Flex developers commented that WPF and Silverlight are so much more mature, easier and feature rich.  They were half right as this popular diagram shows:

Some UX designers working with Expression Blend said it’s not horrible, so now I don’t feel too bad asking them to use it.

This fun character interaction chart was much discussed (small version here).  I think it gives an interesting summary of some great movies.  It may bear a resemblance to the Napoleon March Map.

And the movie Primer, with the scribbly chart, is about time travel.  One commenter suggests the creator of the chart didn’t understand the movie, but it looks like a movie I’ve got to see.

Who builds domain specific languages? I just met a couple of guys @Lab and it makes more sense than I thought.  One application is to build a really small and focused keyword set so users can write programs they can validate and maintain.

MongoDB (from “humongous”) “is a high-performance, open source, schema-free document-oriented database.”  That’s heavy verbiage to say you can store and retrieve and you don’t have to design your database, whatever you send it, it will just save for you, no tables, no troubles.   Looks great for a lot of web storage needs. We had a seminar @Lab and document oriented dbs seem to have a definite niche. CouchDB is another product in the space.

Its hard to see a parade when you’re 20 stories over it, but throwing stuff was loads of fun:

06-11-09_1127 (2).croppedjpg
A Million Stringless Kites
Also mentioned Treasury, F#Scrum, Java Meetup 11/11, VS 2010 Beta 2 Now Available, Apple Mouse, More Mice, Free Money From High Frequency Trading, Agile Boston 11/25

November 7, 2009 Posted by | Uncategorized | , , , , , , , , , , | Leave a comment

Unit Testing — Back to Basics

I’m drinking a lot of cool aid at Lab49 (tastes great, less kludgy).  Its a place where phrases like tail recursion, statistical programming languages, and Dependency Injection/IoC, are regular topics of conversation.  In other words, geek heaven.  So, of course I’m going to use all the tools and tricks I’ve got (otherwise known as best practices) and Unit Testing is fundamental.

What is unit testing? I like to think of it as a bunch of coded functions that test every small part of your program functionality.  But its actually a whole philosophy.

Why should you unit test?  Even Microsoft knows the answer, but here’s a more complete answer — I doubt I need their product though.  Short answer is it greatly helps you deliver and maintain, upgrade and reliably (regression) test software.

The benefits are huge, but the costs are actually minimal.  When a unit test is created in tandem (or before, you TDD purists) with creating code it can be used to test each small piece of the program more quickly and more often without running and clicking through the UI. I feel that writing unit tests is actually less work than doing the testing interactively as I write code.  And writing code that that can be easily unit tested means the code will be more modular and less coupled.  A lower spaghetti factor ;).

It’s been a while since I was using unit testing regularly.  I strayed too far into the realm of custom per project testing frameworks and now I’m happy to start over with with the basic testing frameworks.  Back in 2005, the last time I recall heavily unit testing, there was really only NUnit and (yes, I’m still just a .Net guy.  Move along Java folks, nothing to see here).  Now there’s MBUnit, XUnit, PUnit, and probably XYZ Unit.   Not to mention Microsoft Unit Testing built into higher versions of Visual Studio.  And check out PEX for automated  creation of tests.  It looks cool but unfortunately is only in version .18, that’s a bit shy of the magic number for me to give it a test drive.

Of course, I started with MS Unit Testing, since its built into Visual Studio.  Its there, why not use it.  Well, its (very) slow to start up, its only there on the higher more incredibly expensive versions of Visual Studio, and its design of running code out of test results subdirectories makes accessing local file resources difficult. The file resource issue was the last straw.  After reviewing the available testing frameworks I chose good old reliable NUnit.  Fifteen minutes later, the tests that I couldn’t make work with MS Test were passing in NUnit — a happy ending.

As a post script, a friend mentioned how ridiculous it is that MS would invest in creating their own testing framework when so many really good open source ones are available.  Many companies contribute to the open source projects rather than building a new less functional wheel.  I couldn’t agree more.  I’m not of the opinion that Microsoft is Evil, well, no more evil than Exxon, but they’ve got it wrong this time.  I don’t see how their crappy unit testing makes the high end Visual Studio any better or encourages anyone to part with an extra buck for it.  Though it might help their FUD campaign, which is evil.

October 31, 2009 Posted by | Uncategorized | , , , , , , | 2 Comments