Sunday, April 24, 2011

Happy Earth Day!

Earth Day was last Friday, April 22, so I thought I'd throw up some pictures of our backyard herb garden for the occasion. One of the benefits of living in Alabama is that you can get a nice house on a quarter acre in town for a lot less than the cost of a one bedroom condo in L.A. The only drawback is that also comes with a few crabby neighbors that complain if you don't mow the grass, and call the cops if your dog gets out of the fence and runs through their yards. Most people are cool though, plus Alabama doesn't believe in property taxes, so it's easy to be a squatter. We'd rather have stupid kids than property taxes here. We do tax groceries, because the poor should pay for government. The grocery tax hasn't made a dent in the obesity problem anyway.

If you live out of town, then you can afford a bunch of land, so the neighbors aren't a problem, and you can have farm animals! Farm animals aren't allowed in town, but I love the idea of having chickens. A lot of people have horses out here - crazy, right ? All the cool little girls in Alabama have a horse and take riding lessons.

Anyway, back to our back yard - the dogs love it (2 of the dogs love it, the other dog loves to sleep on the bed), and there's room for a little herb garden and a compost pile (which fertilizes the garden). My garden is kind of a mess. I don't really know what I'm doing, so I was especially pleased when some seeds I threw in the ground early March actually grew. Alabama is warm enough to have two or three growing seasons if you're ambitious enough to take advantage of it - cool crops in early spring, hot crops through the summer, then cool crops again in the fall. My garden doesn't have the best location - there are a lot of trees around our back yard, and the house shades the back yard in the afternoon, so the garden really only gets three or four hours of good sunlight each day.

Last fall I scattered some cilantro and swiss chard seeds in the garden. The swiss chard was great last year and sprang to life this spring too, but the cilantro didn't do much until this spring when it popped up and went crazy. They're both great in pesto and in beans with rice.

Cilantro From Garden
Swiss chard From Garden

I also scattered some broccoli, carrot, and leek seeds in March. The broccoli is growing like crazy, and I think the carrots are doing ok (it's either carrots or weeds - I'll find out when I dig them up next month). I think it's actually summer squash (probably from seeds left from last year's garden) growing where I planted the leeks, so I don't know what's up with that.

Broccoli From Garden
Summer squash From Garden

I stopped by Home Depot the other day too, and bought some tomato and pepper plants - 16 plants for about $7! Jalapeno peppers did great in the garden last year, but Joanne hates jalapenos, so the neighbor and I were constantly eating them. This year I got some banana peppers - which should be more mild for Joanne, and cayenne too - we'll see how those do. I had a few bell pepper plants last year, but they didn't do well. I also tried egg plant last year, but some beetle munched most of it - I was too lazy to try to figure out how to defeat the beetle.

Pepper plant From Garden

Of course owning a house is not very Earth Day green. When we first moved to Auburn we lived in a big apartment complex. The complex consisted of several buildings along a loop road on wooded land by a big pond - pretty nice. Our building had eight two-bedroom apartments that the complex management kept in good shape. The house we live in now probably has about the same carbon footprint as the whole building we used to live in. At least we recycle and compost and try not to run the air conditioner or heat or set the thermostat as high or low as we can stand it (Joanne hates me for that). Plus I bought (actually it was a gift from mom) this funky little mechanical lawn mower with the blades that spin when you push it. I love that little mower even though I only use it once a month or so, because I actually like the look of the yard with the wild flowers and weeds and uneven growth, but sometimes neighbors complain about that. The soil is mixed with clay around here, and there's a lot of shade, so the grass doesn't get high in our yard anyway. The neighbors with the manicured, irrigated, chemical treated lawns bless us with the noise and pollution from their two-stroke mowers and leaf blowers every week, and we don't complain (except on the bLog!).

HBO is going crazy advertising for Lady Gaga's Monster Ball Tour that they somehow get to broadcast from Madison Square Garden. I'm almost tired of seeing her breasts and ass ... almost. I wonder if Gaga cloths would be comfortable for programming?

Wednesday, April 13, 2011

nice AWS!

I spent time over the last several days setting up a free amazon web services account, and manged to deploy a simple openId helper service that I've been working on the last couple weeks. I couldn't be happier with AWS. I have a glassfish app server running custom java webapp online for free rather than paying between $50 and $100 a month to some hosting provider. If people actually start using my apps, then I'll just scale up my AWS instance, and start paying Amazon for the resources I use. That's just what I need.

The AWS web console is very to use; I was able to get up running with an Amazon Linux AMI backed by an EBS disk by just following the instructions in the "getting started" guide. I'm new to AWS, but I've already picked up a few tricks.

  • "Terminating" an EC2 instance not only shuts down the server - it also deletes the instance and its data - even an EBS backed instance. Just stop (don't terminate) an EBS AMI if you want to be able to start it back up again.
  • This bLog has a nice overview of how to register the AWS security keys with the Putty ssh client for Windows.
  • The public DNS name on a load balancer persists, but the public DNS name on an EC2 instance is reset after reboot. A good way to publish a service is to deploy it behind a load balancer, then map a DNS C-record to the load-balancer's public DNS name. You can do the same thing with an "elastic IP", but I don't think the AWS free service tier includes elastic IPs.

I'm also really happy with my experience with openId. The littleId code includes a simple openId consumer I wrote with the very nice openid4java library, and supporting javascript, PHP, and scala/java client libraries. The littleId openId consumer can run in the same java webapp that requires authentication, or the webapp can access littleId as a simple web service. In fact, a webapp can just use as its littleId service provider.

The littleId client API includes support for javascript, java, scala, and a little PHP, and should be easy to port to other languages. The javascript code manages openId popup-authentication windows in the browser. The java client code includes JAAS integration, and a simple LoginServlet and request-filter that easily integrate into a java .war webapp, and the PHP code is currently just a single-method class with which a PHP client can verify the credentials delivered by littleId's openId consumer. There's a littleId demo online that might help show what I'm talking about.

I'm not sure how much that all makes sense, but I'm all set to write webapps that authenticate with Google and Yahoo openId credentials, plus there's a small chance other developers might find the littleId service useful. It would be great to get a little traffic to, and setup the site with adwords or whatever to make a few bucks!

I hope to make the littleId service more useful to a developer compared to just coding an openId consumer directly by integrating support for and Facebook connect authentication. I also plan to setup a workflow for authentication by non-web GUI clients. We'll see how long it takes me to get around to that!

Finally, is it just me, or is iTunes unstable on Windows 7 ?

More communication ...

One of the many things I constantly struggle with is how to better communicate the current state of the littleware dev machine. What is littleware? How can I use it? What are the current development goals? Fortunately Google code is there to host the littleware project site, source code repositories, download bundles, wiki, and issue tracker; but over the last few weeks I've added a few small improvements to my communication effort.

First, I added a "news" section to the home page just to report the latest goings on. I'll get in the habit of throwing the news up on twitter too @catdogboy; although twitterfeed has turned my twitter account into a garbage stream of code commit messages and issue tracker updates.

I also moved littleware's SCRUM documentation over to (it's a Google site). I made that move mainly to integrate littleware's Google calendar , but it cost me some head banging to get the issue tracker gadget working there. The whole SCRUM and calendar thing is pretty aspirational anyway considering I'm the only one that works on the project, but it helps me keep track of which direction I'm moving in.

Finally, I've made littleware's jenkins server available online. Actually, the server is only available when I'm running my laptop at home - maps to my home! Jenkins (formerly known as Hudson) is a great continuous integration server. It was easy to configure jenkins to automatically build and test littleware commits thanks to littleware's IVY build system. It's important to secure jenkins before publishing a server for public access, but that's not hard to do.

I've spent a lot of time the last week on system administration deploying an AWS AMI and tweaking jenkins, and project management updating docs and moving things around on the web sites. I hate wasting time on non-coding stuff like that! This kind of work always reminds me that a software project needs a good combination sysadmin, project-admin, configuration, release, and documentation manager. It's not just all about the coders!

Thursday, April 07, 2011

Google code Mercurial SCM / issue-tracker integration

I just patched a littleware bug, and I wondered whether Google code had some SCM integration with its issue tracker, so that I could update the bug's issue with the patch's commit message. The answer is yes ! One limitation is that the SCM message only propagates to the issue-tracker after being pushed to the main Mercurial repository - pushing to a clone won't do it. That's probably the best way to implement the feature anyway.

I posted a new littleware download bundle online today too. The new code includes openId support, and separates out the base littleware ivy module from a new littleAsset module that also includes the old littleApps module. That probably sounds meaningless, but basically I pushed the code around, so that an application can more easily link against the littleware.base packages without also dragging in the littleware.asset stuff that a lot of apps don't need.

Anyway, I'll try to put together a "release notes" bLog post soon with more details on the openId stuff. I intend to get back into the discipline of updating the bLog at least once a week - there's always something to talk about. For example, I actually have a little openid-helper web service that I want to get up online with Amazon web services. I'm not sure whether the openId helper is really all that useful, but AWS is giving away 12 months of free use, so I might as well give it a try - see what the fuss is about.