Tuesday, March 09, 2010

The exciting life of married with children

This article on New York Times talks about a new Twitter/iPhone app called Miso, which lets people with not much of a social life try and have the same fun as people using Foursquare.

I just had to smile. I don't even have time to watch a movie. I don't know if I'd call it a boring life, but it sure is different from those jet setters and swinging singles becoming mayors of all the best restaurants and night clubs. I smiled as I thought of some of the possible Miso checkins:

"Michael clogged up the toilet again, thank goodness for our plunger"
"Fell asleep reading to the kids, no movie tonight."
"Back at the grocery store again, I forgot the butter."

I'd definitely be mayor of our local grocery store and the nearby playground, at least on weekends.

It's a good life - strike that, it's a great life. Just not one that has that zap, zing and zam of the young and restless.

Actually, I'll take the uneventful joy and contentment of my family life over loud restaurants and night clubs and cramming myself into airplanes to head off to Paris, London and Bangalore, thank you very much.

Time to heat up the tamales for dinner...

Monday, March 08, 2010

MySQL Drizzle team joins Rackspace

Well, more defections from Oracle, it's clear where the wind is blowing. It's as if all the cool and interesting stuff is quickly shedding itself from Oracle.

Jay Pipes has a good blog post about the announcement and the history behind them ending up at Rackspace.

Interesting quote:
"Rackspace is also heavily invested in Cassandra, and sees integration of Drizzle and Cassandra as being a key way to add value to its platforms and therefore for its customers".
I look forward to seeing what that's about.

I also liked this from Jay:
"I don't know whether Larry understands that cloud computing and infrastructure-as-a-service, platform-as-a-service, and database-as-a-service will eventually put his beloved Oracle cash cow in its place or not. I don't know whether Oracle is planning on embracing the cloud environments which will continue to eat up the market share of more traditional in-house environments upon which their revenue streams depend. I really don't."

Simon Phipps leaves Oracle

Simon Phipps, Sun's Chief Open Source Officer, announced his departure today, after 10 years at Sun.  I had a great time working with Simon on Java DB, a smart, fine guy to work with.

I am really not at all surprised, Oracle has never thought much of open source.  As with Tim Bray and Ted Leung, their loss.  It's also a sign that a certain cultural style reflected in these folks is not a good match at Oracle.

Saturday, March 06, 2010

Excellent online interactive CouchDB view tester

I had seen this before, but it took me a while to track it down again.  This page lets you interactively write map/reduce views against a CouchDB dataset and execute them to see the results.  It's not actually CouchDB, but it mimics it sufficiently to help you get an understanding of views and test various views to help you figure out how to get the results you want.  Very useful!

Friday, March 05, 2010

Twitter as a tool for getting (and providing) customer service

I have to say, one aspect of Twitter that has surprised me with its power is its ability to get attention from service providers.  I am always surprised and appreciative when someone replies to my tweet where I'm complaining about something.

When I am unhappy about something I do tend to gripe about it on Twitter.  This blog itself may arrive as a tweet because the folks at dlvr.it responded when I complained about Twitterfeed not working.

The folks over at Perforce have also been paying attention, although when I come back with a followup reply I tend to get re-routed to support, who re-routes me to my local contact, so oh well.

I also notice when people aren't listening.  For example, when I complained about Sharepoint user interface being, well, painful to say the least, I have to say I'm not expecting to hear from anyone with a followup.

I've even met some good folks this way.  I was whining about Sonic.net (I can't even remember what about), and ended up being followed by (and following) @dane, a dedicated employee at Sonic.net, and now I'm learning all sorts of cool stuff about what sonic.net is up to.  By the way, highly recommend those guys - excellent quality, great customer service, and they have some innovative services on the way (if I can trust Dane :)).

Zack Urlocker, predictive analytics, and R

I just noticed that MySQL's Zack Urlocker Joined the board for Revolution Board

REvolution? Who the heck are they?

Zack says "Predictive analytics is a multi-billion dollar market and it's ripe for disruption".

What the heck is predictive analytics?
Well, that's what Google is for. Turns out it has a lot of uses, and has been in use for a while.

http://en.wikipedia.org/wiki/Predictive_analytics

http://en.wikipedia.org/wiki/R_(programming_language)

http://www.revolution-computing.com/

http://blog.revolution-computing.com/

Well, very interesting. I am in no way a statistics or mathematics guy. But this does sound very compelling and powerful. Combine this with a big data set and you can do some interesting stuff -- for good or evil. Looking to see how Zack and REvolution disrupt this market - I would think by making it more approachable to a larger audience and finding new vertical applications for it.


Thursday, March 04, 2010

Silliest 10 billionth (+1) tweet ever

Boy, talk about underscoring the complete vacuousness of a lot of Tweets, here is the 10 billionth (+1) tweet (the 10 billionth was on a private account).


Thank goodness I can control who I listen to on Twitter, my goodness.

Nice article about DLP and Data Insight

A nice blog by Jerome Wendt about how tying in access history of a file with an ability to classify a file as sensitive is a big step to tracking down how data is leaking out of an organization.

I've seen demos of this technology (our team worked on it), and it's quite cool. A big problem our customers have is "OK, I've scanned all my data, I see there is sensitive data out there, now what?". Having a good sense of who is accessing the data most frequently, and therefore who is the likely "owner" of the data, is a huge step to helping answer this question.

Apache Cassandra

Meanwhile, I might share that I'm starting to see a serious pickup in Apache Cassandra, with Twitter being one of the latest to commit to using it big time.  It does look very promising - if it has backers like this, and the community is strong, we can expect great things of this project.

Trying to integrate my blog with Twitter and Facebook

I'm trying to use TwitterFeed, which automatically redirects blog postings to Facebook and Twitter.  We'll see how it goes.  What I'm hoping is this will increase my activity on my blog - it doesn't feel right to be so radio silent over here these days.

Thursday, February 11, 2010

Now *that's* a meal

Via my cuz, supposedly taken by a road crew in Arizona. As my son would say - eeewwww (grin) !




















Wherefore the blog posts?

I am surprised myself to find out how less often I'm blogging now that I'm a more active user of Twitter. I mean, why should that be - two very different mediums, and two very different purposes.

I think it must be a matter of focus and energy. When I have something I want to share, I go to the medium I am most active on/familiar with. Before Twitter (and long after Twitter was around) that was my blog.

But now I find I can share a lot of my thoughts quickly on Twitter. But I also miss the longer musings that I would do on my blogs.

I keep *wanting* to post more stuff on my blog, but it keeps not happening.

It could also be that I'm much busier. Life on NetBeans was a little low key - working from home, the team in Prague, and my feature low on the priority list. Not so at my new job - I've got tight deadlines, I'm the office each day, busy busy busy. So sitting down to write a blog post is often just not an option. I can barely squeeze in a tweet.

I know some of my Dear Readers are not Tweet-aholics and maybe even are avid Twee-totalers. So I did want to share one option - you can view my Twitter stream as an RSS feed. I only post a few things a day at most, so it's not like it will be overwhelming. In particular, this is where I post many of my links of things I have found interesting/compelling on the 'net.

Here's my Twitter RSS feed: http://twitter.com/statuses/user_timeline/15160781.rss

Cheers,

David

Monday, January 18, 2010

The future of UI will be boring

I'm not officially a UI guy, but I liked this blog post:

http://www.scottberkun.com/blog/2010/the-future-of-ui-will-be-boring/
The wiring that powers your home, the plumbing that brings you water, the roads you go to and from work on, work in mostly the same way they always have. This is ok. Lack of upgrade is not a sign of failure. Your genetic code is hundreds of thousands of years old, and seems to be working quite well if you’re reading this. It might just be more important to consider how the tech in question will make your dreams, or someone else’s, come true. If you worry more about the ends, rather than the means, revolution in UI is less important than you suspect it is. I mean, I’m a writer. If a quill pen was good enough for Shakespeare, what do I really have to complain about?

Continuous Deployment - releasing two-three times a day...

Very interesting case study on applying Lean principles to deployment. Serious elimination of waste.

http://www.startuplessonslearned.com/2010/01/case-study-continuous-deployment-makes.html

Continuous Deployment is Continuous Flow applied to software. The goal of both is to eliminate waste. The biggest waste in manufacturing is created from having to transport products from one place to another. The biggest waste in software is created from waiting for software as it moves from one state to another: Waiting to code, waiting to test, waiting to deploy. Reducing or eliminating these waits leads to faster iterations which is the key to success.

Thursday, January 07, 2010

Neither Enterpriser or Hacker Be

I know of what Tim speaks around large, unwieldy Enterprise-level projects.  They are money pits and resource pits.  I suspect most of the engineers working on them aren't really having a good time.

But Tim seems to glom Web developers and agile methodologies into the same boat, and I think it's important to make a distinction.  There are strong agile-style developers and there are Hackers.  Hackers do follow iterative development and are focused on user experience, but often testing and reusable design go out the window, and monolithic spaghetti garbage heaps are often the result.

When I was interviewing during the Web 1.0 boom, a common job description was something like "Emergency Senior Engineer."  I would go into a shop that had hacked their way through the first few years and now they were seriously stuck, and were looking for someone with some grey hairs to help clean things up.

It's definitely very hard to get engineers with an Enterprise mentality to adopt an agile approach.  Enterprisers are very uncomfortable when they aren't writing out all the specs and plans up front - they are wanting to cover all the bases and get signoff before they start working - as Tim said "Enterprise IT has spent decades growing a defensive culture based on the premise that you only get noticed when you screw up, so that must be avoided at all costs."

But Hackers are very uncomfortable with having to write tests first, thinking about reusable design, spend time cleaning up code they touch, and so on.  Many times I've seen a roll of the eyes when I bring up these kinds of things.  I think this is because these guys love just whacking out code, are purely focused on technology, and don't have the patience or interest to think about maintainability.  Normally a few hellish releases where you can't get anything done because all you're doing is fixing bugs straightens out this attitude.  But by then it's often too late for the project at hand, without major rewrite.

That said, if I were to be forced to choose between an Enterprise culture or a Hacker culture, I'd probably choose the latter.  Enterprisers take years (and years) to get something to market, and it's usually not what anybody actually wants.  Hackers get hideously coded stuff out quickly, get feedback, and probably have money coming in when it comes time to rewrite.

Also, let's talk about culture.  Enterprise projects have this horrible stuffy dead feeling, like you're working on the 7 and 1/2th floor.  Everything's about specs and standards and ISO and most of the time you're in meetings and doing reviews.  Hackers are often a bit wacko and over-stimulated, but at least there's energy there.

Luckily, right now I'm on a team committed to agile practices, and it's definitely a lot of fun.  Our customers are pretty happy too.  And this, in an enterprise!  Maybe there's hope...

Wednesday, December 16, 2009

Steampunk LCD - classy and cool

At lunch yesterday a colleague from Sun introduced me to the term "steampunk."  Steam what?  Wikipedia showed me I was way behind the times.

I was thinking back to movies and books I've read, realizing they were "steampunk" and I didn't even know it, like The Golden Compass.




This same friend today pointed me to this awesome page where someone shows you step by step how they souped up their LCD monitor to be a steampunk monitor.  My goodness, look at this thing, that is just cool and classy.  That keyboard is pretty cool too, although I'm not sure it's practical (but probably good for preventing RSI).


Tuesday, December 08, 2009

What wakes men up, what wakes women up

From MindLab, by way of the New York Times. Note the complete lack of "baby crying" from the men's top ten list :)

Top 10 sounds most likely to wake women:

* Baby crying
* Dripping tap
* Rowdiness outside
* Snoring
* Buzzing fly
* Drilling/workmen
* Sirens
* Car alarm
* Howling wind
* Noise from drains

Top 10 sounds most likely to wake men:

* Car alarm
* Howling wind
* Buzzing fly
* Snoring
* Noise from drains
* Crickets chirping
* Sirens
* Clock ticking
* Drilling/workmen
* Dripping tap

Some things I would like to add to my list:

* The sound of a mouse scratching in the drywall right behind my bed
* My wife throwing a pillow on my head (long story)
* Too much heat and still air (sadly, what wakes my wife up is too much cold and a draft)
* My iPhone buzzing under my pillow (well, that's on purpose, that's my alarm)

Friday, December 04, 2009

Going Postel

In our code base here, we have a utility class called Observable that makes it easy to apply the observer pattern to a class.

I was using it, and in the process (having been bitten by this in NetBeans), I wrote a unit test to see what would happen if a user of this class added Observers and then dereferenced them without removing them. I used a form of memory leak testing described here.

Sure enough, there was a memory leak, because the underlying list of observers in the Observable class was still hanging on to the observers.

So I modified the class to use WeakReference and ReferenceQueue to detect when an observer was no longer strongly referenced, and then removed "stale" references from the observer list.

When I submitted the code for review, our technical director here, who had written the original Observable code, pushed back, saying it was adding unnecessary complexity to the class.

I argued that my experience with listeners/observers was that people often did not do the right thing and forgot to remove their observers, and Evil Things ensued.

He pointed me to this wonderful, hilarious, incredibly well-written article by Joel Spolsky about (among other things) Martian headsets, the problem of standards, and the disaster caused by Jon Postel's robustness principle ("“Be conservative in what you do, be liberal in what you accept from others.”) I highly recommend you read it, but in case you don't, the point was, this principle encouraged sloppy and incorrect web pages to proliferate, which has put us into a terrible compatibility mess today.

I argued that although this made a lot of sense, we weren't building a standard or pseudo-standard with lots of implementations, and look what Java did to ease programmer's lives by introducing garbage collection to the masses.

He made an interesting point that services should probably follow the robustness principle, but lower-level building blocks, where implementation is more transparent, should expect users to use them correctly and not adapt to incorrect use.

I finally relented because (a) he's the boss, and at some point just to make progress you let the boss make the call :) and (b) I had to admit that we had never actually encountered this problem after being in the field for many years, so perhaps I was inventing a dragon where none existed.

It still makes me nervous. I saw nasty problems with zombie observers in NetBeans. But I'm willing to give it a shot. In general I am happier with code that is simpler and cleaner and only complicate it if you have to. I think we'll just have to see how it goes.

I'm curious, what do you think?

Thursday, November 19, 2009

Applying OO principles to interpersonal relationships

I formally admit my geekiness by seeing the interesting similarities between good OO design and healthy interpersonal relationships.

Healthy boundaries
Objects need to collaborate and interact and depend on each other, but it's important to maintain healthy boundaries.  Other objects are not allowed to touch your private parts, and you get to say what is visible and what is not.

Multitasking
Objects must know how to handle multiple requests at once while maintaining their state.  


Grace Under Pressure
Well-designed objects need to be able to handle stress and overload.


Honoring your commitments
Objects provide public interfaces, which provide an agreement as to what they are willing to do.  You can not change your agreements without talking about it first.

Interdependence
No object is an island unto itself; all objects have dependencies on other objects.  But an object should not be overly dependent on others, as this means it becomes fragile to changes made in the other object.



However, it's important to recognize there are some OO principles that should not be applied to relationships.

Single Responsibility Principle - each object has one and only one responsibility in a system.  Shyeah, right.

Pluggability - you should be able to replace one object with another that plays the same role.  No thanks.



Friday, November 13, 2009

TDD taken to logical conclusion - write acceptance tests first

I'm reading an interesting book called Growing Object-Oriented Software Systems by Steve Freeman and Nat Price (based on @mfeathers recommendation).

For the most part the first two chapters are nothing new for me (I'm expecting that will change in subsequent chapters), but there was one thing that made me stop and step back.  To me TDD has been about unit tests, but they strongly recommend something that I had never though of before but which made a lot of sense.  Not only do you write tests first at the unit level, you also write your end-to-end acceptance test first.

This gave me pause.  I am so used to QA reactively writing acceptance tests either after or in parallel with feature development.  But the more I thought of it, the more it made sense.  It defines a contract in black-and-white, and it also helps you focus on building just as much as you need and no more.

Of course the acceptance tests will break, and then you work towards making it pass by writing unit tests that break and making those unit tests work.  This really makes sense, and I'm going to try this with my next project.  I talked with our QA engineer, and he loves the idea and wants to give it a go.

If it works, I'll talk to the rest of the team about it.  This is the kind of thing that turns standard development process on its head and has to be introduced very gently... :)