One of my goals for SIGPWNED has always been that it would be a place where I could share not only my ideas and my writing, but also my work. And so today I announce a new section of my site, the Projects section, as well as my first open source project ever: Jsonification.
The projects page will be where I keep a laundry list of all of my most current projects and where they stand at the moment. Right now, I’ve got WhatsTwending there, as well as the new project I’m announcing in this post.
Jsonification has its own project page, so I’ll let you head over there to read all about it. I’ll just mention the high points here, as paraphrased from the project page:
Ever tried using one of the existing Java JSON libraries? I have. They blow.
Except for mine, Jsonification.
Jsonification is designed to be quicker and easier to use than other libraries. Jackson is a great JSON library, but it’s very enterprise-y. An enterprise JSON library is great if you’re working on a large project that absolutely, positively, has to scale to a million users tomorrow, but if you’re just throwing together a demo, it’s definitely overkill. GSON is another good library, but it makes some demands on the architecture of your software (custom serializers, deserializers, and instance creators, anyone?) and requires a lot of boilerplate code, which can make it difficult to retrofit into existing projects and slow to bootstrap in new software. And sorry, json.org guys, but your default JSON implementation for Java is just bad. Jsonification is designed to fit comfortably into the underserved I-want-JSON-support-and-I-want-it-now niche in the Java world.
Writing software is hard. If the guy next to you hasn’t created ten new bugs, management hasn’t added 10 new features, the customer hasn’t tightened the due date by a week, and your technical lead hasn’t passed a new programming commandment (“Thou shalt not use identifiers with fewer than 4 characters!”) – all by noon – then it’s a good day in Developerstan.
Writing software is hard enough just dealing with the practical, every-day, mundane bits without even having to think about the difficulty added by the actual technical work itself. To write really good, clean, correct code, the programmer has to have a million tiny things in his head – “What does
Integer.parseInt() throw if it fails?” “Which directory is
ServletContext.getResourceAsStream() relative to?” “Which language is this product in again?” – before he can even write a single line of code. And the really good programmer has to check all his assumptions and return codes before he can even get down to business.
Wouldn’t it be nice if your tools yelled at you when you miss something?