husband, dad, steelers fan and software engineer

Google announced its latest round of spring cleaning.  The most troubling part of the news announcement is the loss of Google Reader.  I've been using Reader since 2005 when it first started. I had tried a variety of one-off RSS readers prior to it and Google Reader was perfect for me because it was "in the cloud" before that was even in-vogue. Fast forward eight years and I'm still maintaining the same list of feeds, though now I consume it through native app clients on the Mac, iPhone and iPad. I haven't used the actual web site for it in a long time.

A lot of people are worried about what will happen when Reader shuts it's doors. There is even a big online petition going to ask Google to keep the service. Some have predicted that this will be the end of RSS as we know. Quite frankly I'm not too worried about losing Google Reader.  My list of feeds has thinned out over time as I've begun using services like Twitter more.  Where I once subscribed to feeds for news and sports I am now following various outlets on twitter. Most of my friends who still blog tweet when they post to, and quite often I am clicking over to an article because I saw it on a tweet first. That being said RSS still has it's place in my mind. Not everyone does the twitter thing and they shouldn't have to. The best part of RSS is still that it's an open and parsable standard.  It's friend OPML is great and also pretty portable.  These are two things Twitter won't give you.

So what am I going to do?  Mostly wait.  I've been using Reeder for consuming Google Reader data for a long time now and the developer of that fantastic app says it's not going away just because Google Reader is.  This gives me hope that Marco Arment might be right and that this is an opportunity for guys to build new replacement service.

Mar 16, 2013

I released a small updated to jGrowl today that fixes an issue when triggering the shutdown method (thank you Joana for reporting it!), basically the multi-notification closer would be left behind (though not visible) and remain in limbo. The fix cleans out all nodes in the container emptying it completely out upon shutdown.  I've also cleaned up text artifacts, space/tab discrepancies and extra space at the end of lines as well.

If you hadn't noticed yet, jGrowl moved from BitBucket over to GitHub when jQuery rolled out their new plugin registry.  They've got a pretty neat system for updating a plugin's page off of a manifest file in the git repository.  The move to GitHub has also been nice because it's resulted in several outside contributors issuing pull requests (thank you Dimitry and Artem!). If you find a bug, please file it over at GitHub and always feel free to issue a pull request if you have an improvement, bug fix or feature request!

Check out jGrowl on jQuery Plugin site.

Check out jGrowl on GitHub.

Mar 15, 2013

Today I released a new version of Sanctus.org, my Lutheran lectionary calendar project. I started this project when I was in college at Concordia University, River Forest. I was studying theology and fascinated with liturgics and the church year. The project started with the purpose of assisting our dorm in planning our daily prayer services and quickly evolved into something bigger as other people gained interest in it as well. Today's release is the third time I have rewritten the site. Today's code is deployed on Red Hat's OpenShift platform and I am using Zend Server's page cache and data cache to keep things fast. The new layout utilizes Twitter's Bootstrap library for a nice responsive design. Under the hood the actual calculation algorithm has been open sourced and can be found on GitHub, the rest of the plumbing is Slim, Doctrine and Twig respectively. I've also restructured a good portion of the persistence layer to be more normalized and it runs on MySQL instead of SQLite too.  All in all I think it's a better piece of software then it was. I hope you enjoy the new look, faster response times and all around better experience of using Sanctus.org.  Feel free to leave me some feedback on the redesign.

And as always... special thanks to Pastor Borghardt for donating the domain name sanctus.org!

Mar 14, 2013

In the summer of 2004 I was a single college student with far too much free time on my hands. I had started writing web software in 2002 with my friend Erich Musick, now a super-star developer ninja at Microsoft.  At the time we were focussed on making plain old websites and solving the difficult challenges of managing content with consistent templates and automatic linking.  Life was easy back then.  Erich had this nifty news manager system written in Perl and he used it like a blog.  Meanwhile I was conquering server side includes while rigging together Apache on my Windows XP laptop.  Again, life was easy. Always striving to be unique I took a different path and started exploring PHP.  I had a singular goal of replicating Erich's new manager in my own special way.  What resulted was a rickety and clunky news management system that ran a pseudo-blog on my website into the summer of 2003.

In the summer of 2003 my coding skills were getting better and I rewrote my news manager and it materialized as the first version of what I affectionately called BlogSCL.  Those letters, S-C-L, belong to me - they're my initials.  Blogging was new back then, there was no wordpress.com and blogger wasn't owned by Google, in fact it was some hackie CGI scripts you would upload to your own server and hope worked. I was determined to turn BlogSCL into something cool and so I rigged together a basic way for people to sign up.  After all, I had a shared hosting account on some ghetto-fabulous server costing me almost nothing and it has unlimited space on it.

In early 2004 I became involved with an organization called Higher Things. It was a Lutheran Youth Organization and they had a website but it stunk.  They wanted something better and I was cheap, as in free. One of the things they wanted was a better way to manage news, so I introduced them to my super awesome BlogSCL platform. It worked and they were happy, but then some of the staff wanted their own blogs.  I began building out BlogSCL like crazy, adding comments, pingbacks, trackbacks, captcha, categories, pages and just about anything I could think of.  If I saw it on one of the up and coming blogging platforms I pulled it into mine.

But the first version of BlogSCL was difficult to maintain and I had learned a lot, including how to write object oriented software.  I decided to rewrite it from the ground up and open up public signups. A half a bottle of tequila and a long night yielded the first working version of BlogSCL2, which served as the basis for the platform as I built it out over the next two years. Seven years later I am finally pulling the plug on the last of the BlogSCL blogs. I have just wrapped up migrating the Higher Things blogs to wordpress.com.    You might be wondering, why?  Well, it wasn't for the outstanding quality of wordpress code - that's for sure. There were a couple of reasons though, firstly I don't have the time to be spending developing a blogging platform when there are others out there being actively developed by large communities (yes, I'm looking at you wordpress!).  Secondly, wordpress has a pretty simple format for exporting and importing and it was easy to write an exporter from BlogSCL to it.  Thirdly, while under the hood wordpress is nothing to gawk over it does have a robust UI, expansive plugin system, far reaching hosting service and an iOS app to boot.

As a developer I constantly want to write my own stuff.  Not necessarily because I think I can do better (though I can), but because I enjoy the challenge.  Getting BlogSCL to the point it as was a challenge and it forced me to learn how to become a better developer.  I'm very grateful for the learning exercise and also happy that it was able to get used by Higher Things as long as it did.

Mar 11, 2013

Amazon Web Services is like the godfather of cloud computing.  In PCI or HIPPA/HI-TECH compliant environments though it doesn't quite cut it.  There are a bunch of fancy letters indicating various certifications that seal the compliance deal for those looking to provide services in the cloud under those regulations.  Fortunately Amazon developed the GovCloud as a compliant region to meet those needs.  GovCloud requires special approval from Amazon to get started with it.  I've been "tinkering" around with GovCloud for a little while now and have come across some gotchas that I wanted to document and share, if for no other reason then to save the next poor soul from all that googling around...

1. Web Interface

If it's not clear from the website, don't be surprised: GovCloud does not have a web interface to it.  All of the fancy tools that us EC2-lovers have grown accustomed to in the East and West regions are out of luck.  In GovCloud you have to use either the command line tools (all umpteen trillion of them) or you have to use a tool called ElasticWolf. ElasticWolfe is a decent tool, when it works... and that right there is the problem with it.  I've filed three tickets as of the writing of this post, and while turn around has been fast, I don't feel like I can trust it to do what I need, whenever I need it.  So get comfortable with the command line, as that's your primary place of operation in the GovCloud.  Don't worry though... it's only intimidating at first, you'll get used to it!

2. White Listed Load Balancing

This was not disclosed to me upfront, but apparently the Elastic Load Balancing service has some sort of separate white list you need to be on when joining GovCloud.  Quite honestly this doesn't make sense, but nonetheless I found myself with everything working except the Elastic Load Balancer and when I finally appealed to my GovCloud sales rep, she directed me to a nice (and hardly responsive) technician who told me I needed to be white listed. Rumor is he took care of white listing my account, and while I now have an Elastic Load Balancer up and working in the GovCloud I am still waiting to hear from my Support Technician at Amazon. So if you want to use an ELB in GovCloud save yourself the time and trouble and pre-empt the white listing by telling your sales rep up front.

3. Elastic Beanstalk

This is a great service that basically powers the automation of a full AWS deployment using git.  It's akin to services like OpenShift from Redhat but with an order of magnitude more power by virtue of the plumbing underneath.  I was stoked when Beanstalk came out because it gave me a standard PHP AMI with RDS, an ELB  and an AS/CW configuration right out of the box.  I had dreams of spinning my service up with git push and then walking away to enjoy a cold beverage of some sort.  Not on GovCloud though.  Despite having ALL of the services that make up the underpinning of Beanstalk, the tools for Beanstalk themselves are not actually configured for the GovCloud region.  This isn't spelled out anywhere clearly and the Beanstalk website is sort of misleading when it describes the service as a management wrapper around existing services.  It seems that there is some dedicated plumbing in there too.

4. Endpoint URLs

Most of the command line tools that Amazon ships are not configured to run with GovCloud out of the box.  You have to change the endpoint URLs for them in order to make magic happen.  Unfortunately try as I might I couldn't find all of the necessary environment variables that needed changing documented anywhere.  The endpoint URL's can be found here.  But what variables should you set?  I am not sure I have discovered all of them just yet, but here are the ones I have found and have been using:

export EC2_URL="https://ec2.us-gov-west-1.amazonaws.com"
export AWS_IAM_URL="https://iam.us-gov.amazonaws.com"
export AWS_CLOUDWATCH_URL="https://monitoring.us-gov-west-1.amazonaws.com"
export RDS_URL="https://rds.us-gov-west-1.amazonaws.com"
export AWS_ELB_URL="https://elasticloadbalancing.us-gov-west-1.amazonaws.com"
export AWS_AUTO_SCALING_URL="https://autoscaling.us-gov-west-1.amazonaws.com"

What threw me for a loop was "EC2_URL" and then "AWS_ELB_URL" and then "RDS_URL" and then "AWS_CLOUDWATCH_URL"... what the rhyme and reason was for when "AWS_" was prefixed is beyond me, but knowing this inconsistency would have saved me some time and I hope it saves you some too!

Hopefully there won't be any more surprises in GovCloud, but if they are expect a followup!