Blogroll

The New Domino Admin

A great source of information for Lotus Domino administrators

ecmarchitect.com

Jeff Potts' excellent ECM/Portal blog

Jared Ottley

Lots of very useful Alfresco articles

Looking for web hosting?  I have been using DreamHost for years and have found them to be reliable, inexpensive and very good at what they do!  Click below to sign up, use promo code 'unorganized' to get a free domain registration and 10 bucks off your first year of hosting!

 

dreamhostBadge

Home
Your Favorite Programming Language Sucks PDF Print E-mail
Written by Nathan McMinn   
Friday, 31 December 2010 00:00

With the recent release of the TIOBE Programming Community Index for December 2010, it seems like I have been seeing a lot more "Language X sucks" articles.  All of the effort required to create, read and refute these articles is surely a drain on the productivity of developers around the world.  So, to simplify things may I present for your consideration my handy "Your Favorite Programming Language Sucks" form.  Do you know a heathen that insists on developing in Java?  A hipster that can't stop ranting about Ruby?  A pretentious Pythonista?  A C# coder whose arguments fall flat?  Print out a copy, fill in the blanks, check their perceived offenses and leave it on their desk, smug and secure in the unassailable superiority of your choice of language.

 

Click the image for a PDF version (yes, I know PDFs suck too).

 

formScreenshot

Whether or not most developers will admit it only about 50% of language selection for a project really comes down to fitness of purpose.  The rest is style / preference / familiarity / buzz.  I don't care what language you use, just keep building and sharing cool stuff!

 

Happy Coding!

Last Updated on Wednesday, 05 January 2011 10:33
 
Why The Internet Still Blows My Mind (Just a Little) PDF Print E-mail
Written by Nathan McMinn   
Tuesday, 21 December 2010 10:55

Let's get one thing straight right off the bat.  I'm not old yet.  So, when I reminisce about the days of dial up BBSs and confess to being a bit blown away by the ways the Internet has changed the world I'm not pining for simpler times.  The bad old days of disconnected computing have been relegated to the dustbin of history where they should remain.

 

By the time I got to high school, the infant Internet was just starting to find its way into homes and schools.  In the mid-1990s at ASMS, the Alabama School of Math and Science, we were toying around with building web sites and using Mosaic to browse the web.  This seemed like a natural evolution of the BBS systems that had already become commonplace, just on a much grander scale.  But, the Internet hadn't really caught fire yet.  It was mostly academic, with a few technology companies beginning to stake their claim.  By the time I graduated, however, the Internet had exploded.  Hundreds of millions of people poured online as new businesses and ideas were conceived, built, bought and self-destructed on a daily basis.

 

It is in this context that I run my blog.  This site, this little, insignificant corner of the Internet is mine.  I post a few times a month about very niche topics in computing.  Even so, one guy with one tiny site can reach a global audience.  Nothing makes this more visible to me than the world map view provided by Google Analytics.

 

global_visitors

 

The map is pretty self explanatory.  The color of each country indicates how many people have visited from that locale.  The darker the country, the more visitors they send my way.  When I look at this map (which shows visitors from the last couple months) a few things strike me immediately.  The first is how many countries have sent readers to my site.  The fact that somebody publishing a niche blog on a cheap web host can have a global reach truly speaks to how the Internet has democratized publishing.  You don't need a publisher, press and distribution network to get your ideas out there.  All you need is a simple site and something to say.

 

The second thing that strikes me is where the bulk of my visitors come from.  I am based in the US and write in English, but only about 25% of my visitors are in the United States.  The country that is number two on the list should be no surprise given the topics I blog about:  India.  India sends a huge number of readers and commenters which speaks to the size of their IT industry.  So, a big hello (नमस्ते) to all my Indian friends!  As expected, various countries in Western Europe usually fill out the rest of my top 10 visitors by country.

 

The last thing that stands out is the places that don't / can't visit.  Look at the giant swathes of Africa that have sent zero visitors.  It doesn't matter if I map the last month or the last two years of site visits, that section of the world remains off the list.  The same is true of much of the Middle East and the former Soviet republics.  Why don't they show up in the list?  Is it a lack of interest in computing topics?  A lack of infrastructure to get online?  Or is it something else?  Tragically, it is these parts of the world that have the biggest need for the economic transformations that can come from the Internet, as well as the political changes that can only start when people have open access to information and a platform for free communication.    

 

When I was 8 or 9 one of my aunts and her husband moved to Japan to teach English.  Within a few months they had set me up with a pen pal.  I can still remember dropping a letter in the mail knowing that it would be weeks, if not months before I could expect a reply from one of the few people I knew who lived in a foreign land.  Asynchronous communication at its slowest.  This was my first experience building a relationship with somebody I never met face to face and it was painfully slow.

 

Maybe that is why I find it so amazing that it has become so trivial to engage with a global community.

Last Updated on Wednesday, 22 December 2010 11:37
 
10 Things to Learn Next Year PDF Print E-mail
Written by Nathan McMinn   
Monday, 20 December 2010 13:15

It's almost the end of the year, which means that the usual flood of "Top 10", "Year in review" and other backward-looking articles are here.  Retrospectives can be a lot of fun and even occaisionally insightful, but in my opinion they are looking in the wrong direction.  So, in the spirit of looking forward to a new year, here's my top 10 list.  Not things that happened in 2010, but things I want to learn in 2011.  Some of these I have already started using but want to master, others are mysterious new toys that have grabbed my attention if not my time.

 

10.  HTML5.  The importance of HTML5 cannot be overstated, IMHO.  With support for the Canvas object, video, geolocation, etc, etc, HTML5 is already changing the web in surprising and innovative ways.  The best part?  It's not a new language.  All the tags I know and love are still there.  There is still a lot to learn, but I don't have to start from scratch.  In some ways (like the doctype), HTML5 is even simpler than earlier versions, a refreshing reversal of the usual cruft of complexity that builds up on a language over time.

 

9.  GroovyGroovy is one of a slew of new(ish) languages that run on the venerable and performant Java Virtual Machine.  Groovy borrows heavily from Java's own syntax, flattening out the learning curve for developers that already know Java.  So, it runs on the JVM, and it looks a lot like Java.  What's the big deal with Groovy?  Well, proper closures, for one.  A great console, for another.  One of the things I LOVE about coding in Python is that if I want to play around with some code I can just start up a Python console and go to work.  Java's edit -> compile -> debug cycle seems positively crippling by comparison.  Add in the fact that apps written in Groovy can leverage Java's gigantic library of existing components and you have a language that I have to add to my toolbox this year.  Oh, and don't forget Grails.  I've built a couple simple apps with it and I think I'm in love.

 

8.  The ins and outs of cross-platform mobile development.  Compared to the whole of computing, mobile applications are still in their infancy.  Without getting into the growing pains this market is going through (Apple's walled garden, Verizon Android crapware, etc), there is one big challenge as a developer.  What platforms do you support?  What language(s) do you develop in?  Is it worth it to build both Android and iOS apps?  Do you even have the resources to do so?  Companies like Appcelerator aim to make this easier by creating cross-platform dev tools for popular mobile device platforms.  I want to make my apps available to as broad an audience as possible without the headache of maintaining several codebases.  This is a space to watch.

 

7.  A NoSQL database.  Most of the platforms I work with rely on relational databases.  They work.  MySQL / Oracle ( the two I work with most frequently) are mature, stable and perform well enough when properly tuned.  But, like any tool, RDBMSs aren't the right solution for every problem.  They can be expensive to scale quickly, and frankly I don't always need a well defined schema.  Sometimes I just need a persistent store for some simple objects.  Now that CouchDB is available as a client-side DB for Android, I can see quite a few interesting applications for this technology.  If iOS support comes through then we have another choice for cross-platform data stores.

 

6.  Arduino.  What the heck is an embedded processor doing on a top 10 list for a web / mobile developer?  Well, the Arduino is simply one of the coolest things I have ever seen.  It's open source.  It's cheap.  It's easy to program.  It's capable of surprising feats.  I have an Arduino Mega sitting on my desk just begging for the right project.  I had originally intended to use it as the brains behind an automated bottling line for my homebrew, but decided that kegging was much more practical :-).  Right now it is hooked up to a 2 line LCD display and a couple of blinkenlights, just waiting for inspiration to strike.

 

5.  GIMP.  This is one of those tools that I already use constantly but wish I had a better handle on.  The GIMP is a great image editor for the price (free), and I use it all the time for creating iPhone buttons, logos, splash screens, etc.  If you just need to slice and dice some PNGs for the web it is a great option.  In the next year I want to hone my design skills and GIMP-fu.

 

4.  TropoTropo is a telephony platform that runs in the cloud.  If you want to add SMS or voice functionality to a web application, Tropo takes all the guesswork out.  They build the infrastructure and provide the APIs, you build the cool stuff on top of it in your choice of Ruby, Python, JavaScript, PHP or Groovy or your language of choice by calling their REST API.  Oh, and did I mention that it is free for developers? 

 

3.  Django.  This is another one of those tools that I have worked with occasionally but haven't ever really mastered.  In particular I want to use Django running on the Google App Engine to build some simple scalable web services.  I haven't ever implemented a REST API in Django, but need to learn.

 

2.  Alfresco.  I use Alfresco constantly.  It's a big part of my day job and I have even written / contributed to a few open-source components that exist in the Alfresco ecosystem.  However, it's a huge product.  It provides so much functionality that I feel like I only know / use 10% of what it is capable of.  Maybe with another year of hard work I can bump that to 20%.

 

1.  Time Management.  As evidenced by the list above, I have more ambitions than time.  To get all of this done I will need to focus on what is, in my opinion, the single most important tool that any developer or engineer can learn.  This is one of those critical life skills that almost everybody has room to improve.  If I only get one thing done next year, this should be it.

 

So that's my list.  10 things that I want to focus on in 2011.  What are yours?

Last Updated on Tuesday, 21 December 2010 10:00
 
Appcelerator - First Impressions PDF Print E-mail
Written by Nathan McMinn   
Friday, 10 December 2010 17:51

In the last few years the reality of software development has fundamentally changed.  It is no longer enough to deliver stunning web apps, useful and powerful desktop applications and solid "enterprise" infrastructure software.  The mobile device market grew almost 14% from 2009 - 2010 and shows no sign of slowing down.  Smartphones only made up 20% of overall sales, but are growing faster than the overall mobile device market.  For us developers this means that you need to be sharpening your mobile skills now, not later.  But what platform do you develop for?  Do you dump your web skills and learn Objective-C and do iOS development?  Do you leverage existing Java skills and focus on Android?  Do you stick with the web and build mobile browser-only apps?  Each approach has its pros and cons, and none of the answers are entirely satisfactory.  Faced with the prospect of having to develop an application that works on both Android and iOS devices, I went in search of a better way.

 

I'm far from the only person that fears the heartburn associated with building and maintaining multiple codebases for the same application on multiple devices.  When you start development of a mobile app one of the first questions you have to ask yourself is what platforms will you support.  If you have to maintain multiple codebases, each additional platform you have to support is more work.  Two projects in two different languages for two different devices is twice the work and can have a big impact on the value equation for mobile apps.  Thankfully there are a few companies that are stepping up to offer cross-platform mobile development.  Mashable.com has a great roundup of the best players in this particular space.  After looking at all 5, polling some other developers and taking a little leap of faith, I have started building a couple of mobile apps with Appcelerator Titanium.  The basic concept is that you can build your apps in HTML5 and JavaScript and Titanium will translate the code into both Android and iOS versions, compile it and package it up for you.  Sounds great, right?

 

Well, yes and no.  Titanium certainly has some cool features, but it is lacking in other areas.  On the upside Titanium supports a TON of functionality.  Whether you need access to accelerometer data, the GPS, the camera or just about any other feature of the device, Titanium probably supports it.  This is a pretty big deal.  Part of what makes mobile apps so compelling is all the goodies the hardware provides.  I haven't finished a comprehensive comparison yet, but so far Titanium seems to have a bit of an edge when it comes to device feature support.  Titanium apps also have a native look and feel.  They use the native widgets, so there is nothing "funny-looking" about applications developed using the tool.  Another think I dig about Titanium is the Kitchen Sink app that is available on GitHub.  Kitchen Sink is a sort of living documentation, a comprehensive app that demonstrates every feature Titanium supports.  This is pretty cool.  API docs are useful, but seeing the code in action provides a sort of clarity of intent that simple static documentation cannot match. 

 

So those are the awesome parts of Titanium as I see things.  Now, on to the not-so-awesome parts.  When I first installed Titanium and tried to create a project the tool spit out a cryptic "failed to create project" error message.  That's it.  No details about what might have gone wrong.  WTF.  I'm a developer, I can handle some technobabble in my error messages.  Turns out that I had not downloaded all of the Android SDK packages that I needed to get things going properly.  That's fine, my mistake, but a little nudge in the right direction would have saved me a lot of time.  Once my project was created I started poking around in Titanium looking for a way to edit my code.  Maybe a little autocomplete?  Integrated documentation?  Syntax highlighting?  Text editing?  No dice.  That's one thing that Titanium is not.  It is not an IDE.  On the bright side I can use whatever editors and tools I like, since it is all just JavaScript and HTML.  It's a matter of preference, but I would have liked a bit more of a dev environment included.  The last issue I ran into, however, is a biggie.  Appcelerator has no debugger.  Want to set some breakpoints and step through your code?  Maybe inspect some complex objects?  Set a watch?  Tough luck.  You can always use alerts, but debugging JavaScript using alerts or logging is a huge step backwards from tools like Firebug that I have come to rely on for debugging JavaScript on the web.

 

Will I continue with Appcelerator?  Probably for at least a few simple apps.  The feature set rocks, it supports the two mobile platforms that I really care about, I can repurpose the web skills I spent so long building up and it should (in theory) let me push one codebase out to two platforms.  If they can figure out a basic debugger and a little IDE love, I'm sold.

Last Updated on Friday, 17 December 2010 15:31
 
WordPress CMIS Plugin - New Project Home PDF Print E-mail
Written by Nathan McMinn   
Tuesday, 07 December 2010 11:52

To make it a bit easier for people to find and contribute to the WordPress CMIS plugin I wrote a month or so ago, I have moved the project to a new home at Google Code.  The old .zip archive is still available, but I won't be updating it any longer.  The plugin is still pretty basic, but I hope to find some time to add a few new features in the next month or two.  If anybody out there wants to contribute, drop me a comment, email or tweet and I'll add you to the committer list.

 

Happy Coding!

Last Updated on Tuesday, 07 December 2010 11:55
 
<< Start < Prev 1 2 3 4 5 6 7 8 9 10 Next > End >>

Page 3 of 12
RSS Feed Icon

About Me

 

My profile picture

 

My name is Nathan McMinn.  I'm a software engineer, beer geek, wannabe adventurer and genuinely curious guy.  Find me on Facebook, Linkedin or Twitter

Latest Comments