Working on a Referral Pre-Launch Site

Since I'm at zero followers, I'm crafting a plan to bring in as many emails as possible in a week's time so I'm not "launching to crickets" as the Harry's founders phrased it. What Harry's did was nothing short of remarkable. They acquired more than 100,000 email addresses in seven days on a referral campaign where they awarded products to those who participated. The more referrals a person garnered, the greater the reward. If you're interested in the whole story, [check it out here](http://bit.ly/2onK38o). I was so impressed with how they ran their campaign, I decided to follow in their footsteps. Since they released their code as open source, I was able to fork it and quickly make changes in preparation to launch my own campaign. I was close enough I could launch, but then I… read more


Making Commitments, Reaching Out

In a very real sense, today is monumental for me. Today, I committed developer resources (not just my own) to my upcoming mobile app. I don't quite have the specs together for the developer, but I have enough now that I can get him started on building some of the foundational components of the app. We're making room in our collective schedule to get this project formally under way. So far, I have built the user management component of the system that allows a new user to register an account and log into the system. We have a little more work to do on the user onboarding experience, but we've got enough that a solid API scaffold is in place in the budding app and I can start assigning user stories to the developer. I'm… read more


Preparing for Countdown

Today, I focused on setting up email and twitter accounts so I could begin to get the word out for [Matchpoint](http://matchpoint.io). When you're getting started it's tough to know what to do if you've never done this sort of thing before, so here's a quick walkthrough on some of the steps I've taken so far. ## Domain name registration The very first thing most online businesses are faced with is registering a domain name. A lot of experts say your domain has to be .com or don't bother. These days, it's mattering less and less if you're .com, .io, .us, or dot anything else. Dot com is cybersquated to the point you have to string three full words together to have find a name that's not taken. When was the last time you strictly judged a… read more


Ground Zero

I am at ground zero for a new venture I'm launching. So, let's talk about what I'm planning and where I hope to go with it. # First Thing's First Let me talk about what I mean by "ground zero" with just a few bullet points. First and foremost, my newest venture is nothing programming or computers, which means... * I have virtually zero followers in my traditional core audience. * No store, no products, no sales * No page views * No Inventory * No mobile app built, let alone tested, approved, and available in the App store. * No marketing, sales, or publication attempt other than limited sharing with a few close friends. # That's About to Change I am about to launch my very first mobile app and it's written in… read more


A Reflection of the Technologies I Built Things With

Sometimes, a random event triggers a walk back down memory lane. That moment came for me the other day when I came across a CDR containing the code I ever wrote the first 15 years of my programming career. For just over 30 years, I've been building software professionally and I have kept backups of nearly everything I've ever written. What somewhat surprised me as I looked through all this old code is the breadth of machines, operating systems, and languages I touched along the way. As I thought on this list, I wondered what all I made use of during my career and wondered what that list might look like, so I set out to compile just such a list. If I used the language, operating system, or platform and built a complete application that was deployed and used… read more


Dynamic Routing in Rails Revisited

Ever since my original post [Creating Dynamic Routes at runtime in Rails 4](/ramblings/creating-dynamic-routes-at-runtime-in-rails-4), I have been digging into Rails routing more and more. I've gotten a lot of feedback on the post itself as well as comments in the IRC #rubyonrails channel with an over abundance of passionate pleas not to do routing this way in Rails. But it seems a lot of people desire do to it this way and I have even been inspired to put a gem together to do it. A few days ago, I introduced a refactored version at 0.1.1 and then two days later, a radically refactored version at 0.2.2. Let's talk about this gem and why it's upsetting some Rails purists. This is a long post and describes a bit of my journey from a good solution to a slightly… read more


Creating Dynamic Routes at runtime in Rails 4

I was working on a fairly simple site that has a content management component to it and wanted to find a way to dynamically generate the routes to the pages that were managed on the back-end by the site authors. This article presents an alternative to the usual approach of creating a catch-all route in the routes.rb by generating specific routes to each and every page. ## Preamble Sometimes, its faster to re-invent the wheel than to figure out thousands of lines of other people's code. Rails is great in that way -- you can look at the ecosystem and find lots of great pre-existing solutions or you can roll your own in very short order when the requirements are clear and precise. Such is the situation I found myself in while trying to get one of the… read more


Adding Google Analytics script to Sprockets

Today, I wanted to add Google Analytics for tracking my website's usage history. Rails 4.0 has an excellent assets pipeline that generally works well out of the box with little fuss, but when you try to do something outside adding another require to the "assets/javascripts/application.js.coffee" file, it gets a little more complicated to implement. Here, I show you exactly how to add Google Analytics as a coffeescripted script that is only loaded in the production environment. ## Preamble One of the things I _don't_ do is use sprockets' "require_tree ." directive because this tends to pick up everything I have in the assets folders for every rendering and that's just not necessary. Even though uglifier and sprockets does a good job of compressing and minifying the javascript code, I rarely need more than a handful of those assets on the… read more


Gems you should consider for every Rails projects

Ruby on Rails provides a lot of great functionality out of box, but there are a few gems I almost always add to my new Rails projects. Here are some of those gems I practically cannot live without. ## HAML Templates ~~~ text gem 'haml' ~~~ I know many developers who say "HTML is a perfectly good DSL for HTML" and I used to follow in this mantra myself until one day I had to work on a new Rails project that already had HAML in use. There's a lot to be said for "less is more" when the clutter of punctuation and inconsistently indented code is replaced by the stripped down, well-indented code. When you inherit a ERB-based project that is full of conditional flow and Ruby code embedded in the view files, you really start to appreciate the… read more


Weak Password will get you Hacked!

# Weak Password will get you Hacked! If you're like me and you are online a lot, you probably have more website accounts than you can count from Facebook and Twitter all the way to your banking and blogging accounts. Today, I got an alarming email from my email provider saying that multiple attempts were made to log into my account from Argentina. Fortunately, my provider blocked the attempt, sent me an alert and I was able to act promptly! How did they do it? Well, over time, the major web services collect a lot of data on break in attempts and patterns of behavior and, whether you like it or not, know your general behavior, frequency, and geographical areas where you log in most. If you live in Georgia and then fly to California and attempt to log into… read more


Ramaze vs. Padrino Benchmarks

I have been developing all of my web-based projects in Ramaze since January 2009 when I switched from Rails to Ramaze. At that time, I did some [benchmark comparisons][1]. The other day, I heard about [Padrino][2], the micro-framework for [Sinatra][3], which is comparable to the [Ramaze][4] micro-framework for [Innate][5]. What caught my eye was the benchmark tests the Padrino folks had run that put Ramaze at the bottom of the stack. I thought to myself, "no way!" and set out to run my own benchmarks comparing Padrino to Ramaze as I know at the very least, Ramaze quite outshines Rails' performance. Something ain't quite right. ## What was tested? There are two things I have grown to love since switching from Rails to Ramaze and that's Sequel as the object relational mapper (ORM) and Erubis as the templating engine. So… read more


A comparison JRuby vs. Ruby MRI with Sequel

For the most part, I stick with Apache 2, Phusion Passenger, and Ruby MRI as my deployment stack. Even so, I regularly foray into other territories to see what's going on in the wide world of Ruby. This weekend, I turned my eyes to JRuby again for the first time in almost 18 months. I wanted to explore how what JRuby would do performance-wise with a database intensive application. I have been doing some data loading from one database into another using [Pentaho's Kettle][1] and that got me curious about JRuby since Pentaho's toolset is built upon Java. Quite simply, my work with Kettle got me wondering, "why not JRuby?" I've been hearing some great things about JRuby and how it greatly leverages the Java stack to bring you all manner of improvements over Ruby MRI, notably scalability on any… read more


Making Ruby talk to MSDE

Getting Ruby to talk to Microsoft SQL Server 2005 is one thing. Getting Ruby to talk to Microsoft SQL Server Developer Edition 2000, has one twist that threw me off for hours. Here, I'll show you how to do and hopefully save you lots of frustration and brain damage from banging your head against the wall. I won't cover a complete Ruby and Rails/Ramaze/Sinatra installation. This post assumes you have that much down pat, so we'll pick up the ball with installing FreeTDS, unixODBC, Ruby ODBC If you're using Ubuntu 8.10, you can get away with installing everything from packages with the following: ~~~ bash apt-get install unixodbc freetds-common tdsodbc \ libodbc-ruby1.8 \ libdbi-ruby1.8 libdbd-odbc-ruby \ autoconf make ~~~ **NOTE: I wrote this article and right before publishing, attempted to replicate these results on both mac OS X and CentOS… read more


Implementing Ruby jobs in the background

I needed a way to kick off a background job that was triggered by an end-user on my Ramaze-backed website and could run for almost two hours! This article brings together all the elements to get the job done. ## Preamble (a.k.a. Ramblings) I can hear you exclaiming, "Two hours!? Are you nuts? You really don't want to do that on a web application," and you would be correct; I did not. But alas, my users wanted it and they waved money in front of my face to get it done. What's a poor sap like me to do but to comply? So, what is this crazy task that needs to run so urgently it couldn't wait until a midnight cronjob task to kick it off? Well, the task is basically exporting data from the live production database to a… read more


What makes a top award candidate, anyhow?

In our local Linux user group mailing list, one of the participant asked the group for recommendations for open source software projects that should be considered for a prominent publication's top 100 awards. The ensuing discussion got me to wondering: What is the purpose behind doing the awards? Most of what I see talked about are all well-known and well-used, such as git, mercurial, word press, joomla, django, and so on. Usually, when I look at a list like this, I'm looking to uncover new and undiscovered projects that have real potential to make a real impact in my daily life and thus was somewhat surprised that such mature projects are being so heavily promoted in the discussions. Its not that I don't think these tools are worthy contenders. Most of them, I have used fairly extensively myself over the… read more


macports is not darwinports

For those of you who don't keep a close eye on the macports system that provides you with convenient builds of popular open source software, let me put you on guard: macports supplanted darwinports a few years back to [avoid continued confusion][1] over the name. I was having a good bit of trouble getting ports to install ImageMagick and have had trouble many other times getting ports to install things. As such, I often fell back on fink or compiling and installing from source rather than figuring out the root causes of my macports problems. Macports was surprisingly easy to fix up and get fully operational again, and this was on a fairly old machine that I am pretty certain I started with "Darwin Ports" roughly 3.5 years ago. ## First Thing's First First, know that the official macports website… read more


One ActiveRecord Model Acting as a List and Tree

Occasionally, Rails can appear to make your life extremely easy while silently throwing you a curve-ball. I needed a model that required a hierarchy while also preserving order of the records. Although fairly straightforward to set up and start immediately using, there are a couple of "gotchas" to watch out for and this article covers those pitfalls and shows how to apply the cool new "dirty attributes" feature in ActiveRecord. ## The Problem I am working on a content management system (CMS) where I want the pages to have a hierarchical structure that turns into a menu with sub-menus. The content manager needs to also be able to order these pages so that the menu structure renders in the desired order. ## The Solution Two plugins jumped to mind almost immediately: **acts_as_tree** and **acts_as_list**. The tree plugin will manage the… read more


Rails vs. Ramaze Performance Comparison

One of my biggest concerns of late is that my "more than just a little trivial" Rails projects seem to find their way straight into the heavyweight category in no time at all. While I am quite hopeful that Merb being the 3.0 version of Rails will resolve many of the issues I face today, I have no idea when I can truly count on Rails 3.0's arrival at the party. Thus, I have begun looking at other frameworks that are available today. ## Introducing Ramaze One I found is [Ramaze][1]. I have to say that Ramaze is a very minimalist approach to a framework that is actually rather enlightening. For one coming from a Rails' world, it can feel a bit sparse at first. But lately, I'm attributing my lack of comfort to being put on my toes to… read more


Bootstrapping my Blogs

Ever notice that blogs that are tutorial in nature spend a lot of time providing instructions on installing things, but a whole lot depends on what the author already has installed that he's forgotten to tell you about? Or perhaps the author simply left out the details necessary for you to fully replicate his environment? For me personally, I get downright tired of writing the same thing over and over. Like my code, I want my blogging efforts to be efficient and DRY. Since I work extensively with virtual machines to maintain an orderly environment in a known state, I figured it makes just as much sense to document by establishing a git repository that contains all my bootstrap scripts and configuration scripts needed to get things installed. Whether you use bare metal or virtual machines, you are now empowered… read more


Ultraviolet gives new life to Syntax highlighting

I am tired of Google's Syntax highlighter.  If I accidentally switch to Visual mode in the editor and do some edits and switch back to HTML mode, then I lose the class="code" moniker and I have to go through the entire post and fix. Another drawback I have with Google Syntax highlighter is that the page renders without highlighting and then all the code listings change to syntax highlighted text a few moments later. Introducing [Ultraviolet][1], a syntax highlighter supporting over 50 syntaxes and any [TextMate][2] theme.  Ultraviolet is based on [Oniguruma][3], a regular expression library that comes standard with Ruby 1.9. Ultraviolet requires a little more effort for me to cut and paste, but I am definitely much happier with the end results and Wordpress no longer mungs my posts. Only real complaint I have is that I can't… read more


Ramaze and ActiveRecord

Thanks to the great folks on IRC over at Freenode#ramaze, I was able to not only get Ramaze working with Erubis and Activerecord for a pseudo apples to apples comparison of Rails vs. Ramaze performance benching, but I was also able to get Apache 2.2.9 talking to Passenger to Ramaze. This quick post will take you through the basics. ## Environment This post will guide you through setting up the following environment on Ubuntu Intrepid (8.10): * [Apache 2.2.9][1] * [Passenger 2.0.6][2] * [ActiveRecord 2.2.2][3] * [Ramaze 2009.01][4] * [Erubis 2.6.2][5] * [MySql 5.0.67 (assumed installed)][6] To get started: ~~~ bash sudo apt-get install apache2 passenger sudo passenger-install-apache2-module ~~~ Install the Rack, Ramaze, Activerecord, and Erubis gems ~~~ bash sudo gem install rack, ramaze, activerecord, erubis ~~~ ## Establishing Project Now create your first ramaze project with: ~~~ bash ramaze… read more


Initial release of Elemental

I am happy to announce the initial release of Elemental 0.1.1. Elemental provides enumerated collection of elements that allow you to associate ruby symbols to arbitrary "display" values, thus allowing your code to think symbolically and unambiguously while giving you the means to easily display what end-users need to see. Additionally, symbols are associated with ordinal values, allowing easy storage/retrieval to persistent stores (databases, files, marshalling, etc) by saving the  Element#value as appropriate (String by default, Fixnum if you "persist_ordinally"). The primary aim of Elemental is to collect and abstract literals away from your code logic. There's an old programmer's wisdom that you should not encode your logic using literal values, especially those the end-user is exposed to. Complete details provided in README.txt http://github.com/mwlang/elemental/tree/master http://rubyforge.org/projects/elemental/ From Gem: ~~~ bash sudo gem install elemental ~~~ From Source: ~~~ bash gem install… read more


Ruby, Mysql, CentOS 5, and 64-bit

I have lately switched away from Ubuntu as my desktop and started using CentOS 5.2 because I wanted better support for a lot of RAM and virtualization (where I can quickly commission Linux servers to build out my testbed of target environments).  With the change, I also make the leap into pure 64-bit libraries with little to no 32-bit libraries installed.  There's been a few sticky points to push through and one of them is getting Mysql and the appropriate mysql gems installed.  This quick post shows the way. ## My System I am running CentOS 5.2 64-bit. Or more succinctly: ~~~ text 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 11:57:43 EST 2008 x86_64 x86_64 x86_64 GNU/Linux ~~~ ## The Problem If you simply execute: ~~~ bash sudo gem install mysql ~~~ You'll get the following errors on a 64-bit system:… read more


Overview of Xen Virtualization

Many people start looking at Virtualization Technologies because of the promise of doing more with less and high-availability solutions that the technology offers. However, there are many other benefits to virtualizing your data center, which are explored herein. Here, we will mainly focus on the free, open-source offering of Xen. This post closely follows a presentation I gave at the local [Classic Hackers UGA Linux Users Group][1] (CHUGALUG) in Athens, Georgia.… read more


Getting mouse wheel to work with KVM and Ubuntu

I have been busy getting a Ubuntu based Network Attached Storage server up and running as well as finally switching my trusty desktop to Ubuntu running my old Windows XP as a VMWare Server image.  All was fine and dandy until I decided to add a KVM to the mix so I could easily switch between the NAS and my workstation without having to have two monitors and keyboards. Turns out the mouse wheel would stop working after a switcharoo.  It took me a little while to track down the solution on the Ubuntu forums.  There was a lot of back and forth in the comments, but this is the dead-simple solution: ### Ensure the psmouse module is loading Edit and add the following line to /etc/modules: ~~~ bash psmouse ~~~ You'll need to use sudo (i.e. **sudo vi /etc/modules**).… read more


Jumpstarting your Virtual tour with Oracle VM

Server virtualization technology has come a long ways in the last 18 months (today being a wonderful October 28, 2008 crisp, cold Fall Sunny day).  Here, I am going to take a look at Oracle VM, one of the relative newcomers to the game and show you how to quickly get up and running with a Xen host and virtual server. ### A little background... Our shop has been using virtual technologies for just over two years. At the time we started taking it seriously, the open source offerings were just on the cusp of being production quality; Citrix had not yet bought into Xen; and VMWare had just rolled out their free VMWare Server option.  We had a mixture of Linux and Windows servers, all physical, and were really feeling some of the budget pince in our rapid growth.… read more


Rails has and belongs to many (habtm) demystified

Every time I have to implement a many-to-many relationship between Rails models, I seem to have to figure out how to do it effectively all over again. Especially as Rails seems to evolve the relational hooks with better support and elegance. Here, I will show a has_and_belongs_to_many strategy that works well for me. Along the way, I'll expose a few other minor tricks, such as adding a custom inflector for pluralizing your model or not adding the ID column on a table declaration. The following Browser Edit form is what we're going for. That is, having a list of Operating Systems to check off while editing a Browser object: ![Editing Browser View][1] First, the models: What I wanted, was a way to declare browsers (Firefox, Explorer, Opera, etc.) and associate them with one or more operating systems (OS X, Windows,… read more


Changing ANSI colors in Terminal on Macs

Probably the most frustrating experience I have had with Macs so far is figuring out how to change the ANSI colors in Terminal (Terminal.app) so that I can read the outputs of **man** and most especially **ls** and comments in **vi** when colorization is activated and I have chosen a dark background theme. I am using Mac OS X Leopard 10.5.4 at the time of this writing. These are the steps I took to fix that most hideous of all colors, dark blue on black background: 1. Set your terminal theme colors to your liking 2. Set up **ls** to colorize directory listings by default. There are two ways to do this: Either set the CLICOLOR Environment variable or add an alias for ls to include the -G flag. I chose the CLICOLOR flag: ~~~ config export CLICOLOR=1 ~~~ 3.… read more


Converting Oddmuse Wiki to Edgewall Trac

Our company began long ago with wiki's, but we chose the Oddmuse wiki way back when. These days, we're heavy users of Trac wiki because of its integrated ticket support system. So what to do with all those old wiki's that folks have stopped using and reading. The Oddmuse wikis still hold valuable data, but they have since become an administrative overhead to keep around, so I decided to convert them all to Edgewall's Trac. To get started, I needed to know how to get the data into Trac. The following links gave me an API I could utilize to create trac pages and content: * [Trac Data Models][1] * [The Data model Python code][2] Great! Except there's one small problem. I don't really know python all that well, even though I did do a bit of Zope development, oh,… read more


Configuring ntpd to hand out time to local servers

Syncing your servers to public time servers is one of the most common ways of keeping server times in sync. Apparently the less common approach of configuring one server to sync with public servers and it in turn becomes the authoritative time keeper for the rest of your servers is less well-known. Digging through the copious ntp documentation, I have to say, its some very, very dense documentation mainly because the jargon isn't well translated to a layperson's "How do I?" inquiry. I combed the documentation for days trying to figure out exactly how to set up a server to hand out time to all my other servers. Normally, my Google-fu can pierce just about any need, but "time" "server" "local" and so on are all too common terms in both client-and-server and client-only configurations and by far and away,… read more


Pradipta's Rolodex

Something funny happened last night. A one, Max Archie from Indiana hired an India-based Call Center to find a couple of Ruby developers. Well, by and by, the recruiter mass-mails some 400 developers asking if they're interested. Within about 10 mins, I had to 10 emails of somewhat ticked off developers begging for people to stop replying! Unfortunately, it was getting on late and stressed out developers up after midnight tend to get a little cantankerous and start poking real fun at the world in ways only we can do. Today, we have [Pradipta's Rolodex][1]! [digg link][2] [Reddit][3]. To all developers out there unfortunate enough to get caught in this web, thanks, for you have made me laugh out loud harder than I have in a good while! Cheerios! [1]: http://groups.google.com/group/pradiptas-rolodex [2]: http://digg.com/programming/recruiter_stupidly_CC_s_400_coders_and_one_replies_all [3]: http://www.reddit.com/info/6scl4/comments/… read more


Geocoded Zipcodes

You would think that loading up a database of zip codes would be an extremely simple case of finding a public database on www.usps.gov, and then loading up with a database bulk load. It turns out that, while the USPS does offer products for you to purchase, and a rather nice lookup interface for looking up zip codes and so on, there's not really any free data to be had that I could tell. So the hunt was on to find some zip code data, preferably geocoded (latitude/longitude for GIS) zip codes and then load them into MySQL. A bit of hunting around turned up [this list of zip code databases][1]. The first link to CivicSpace database appears to be defunct (I got a Go Daddy "this page is parked" page). So, the next free one, offered by [Popular Data][2]… read more


DRYing your Views

Let me start out by saying that I am finally beginning to understand a bit about that magical Ruby block notion and how implementing methods through block passing can really empower you as a Ruby developer. Thanks to, a most excellent [Ruby tutorial][1], I am definitely feeling a good bit more empowered about getting my Views in Rails all DRY'd up. The problem: I wanted to introduce a property editor metaphor for the website I'm working on where properties could expose edit forms for just about any situation, much like wordpress' widget interface does. That is, there's an area of the current page that shows basic information about the property in a read-only (and preferably compact) form, and user could click an "edit" button and exposed an editable version of the properties. The "edit" link becomes a "cancel" link, which,… read more


Cross-browser AJAX updates to table elements

It seems that one of the toughest Javascript challenge is to get your AJAX code consistently behave between browsers when you're dealing with IE's handling of table elements vs. Gecko and other engines. It took quite a bit of finagling to figure out exactly where the issues and trappings are. Most web developers know about IE's, ahem, rather unque way of handling tables and the likes, but what's a web application to do if (s)he is gonna bring some sanity to the picture? Well, Mootools 1.2 goes a long ways towards easing your misery in terms of interacting with the DOM and doing some really cool Javascript things in a consistent manner, but you still have to figure out the specifics that you're encountering for your application's needs. My needs were simple. I wanted to use AJAX to pop up… read more


A model-free wizard

Maybe I'm taking the whole MVC thing too far, but I've been reading and learning both Ruby and Rails at a fairly fast clip and just when I thought I was getting the hang of what goes in models, views, and controllers respectively, along comes The Advanced Recipe for Rails book with a recipe for implementing a wizard that threw me for a loop here. This implementation just so happens to be based off acts_as_state_machine, which plugs into your model classes. And of course, the acts_as_wizard plugin wasn't too far behind! Well, asking myself whether the wizard logic *should* be allowed to bleed over into the model prompted me to see just how hard it was to build a wizard in a web interface anyhow (this is my first attempt at a multi-step workflow bit on the web). Most of… read more


Handling Date Entries

Separate inputs for a single Date Entry? pop-up Calendars? Enforce one way (i.e. enter in "mm/dd/yyyy" format)? What happened to the end-user perspective? User input parsing and validation is classic computer science and usability fodder, yet we seem to get ever more clever at making it more cumbersome to enter a date than to get a date! (I'll leave the pun implications to the reader...) ## The Rails Way Separating inputs into month, day, year drop down lists makes the user click three times with mouse (or worse, type, tab, type, tab, type. It looks cool and minimizes programming effort to get a guaranteed valid date entry, but before Rails came along, I haven't seen this entry style in practice since the days of IBM 3270 terminal applications! At least in those old applications, there was a predictive key parser… read more


Why Macs?

For Years, I have used nothing but Microsoft Windows desktops and my development effort was 100% Windows based systems. Long story, short, lets just say I knew way more about the inner bowels of Windows and its various API's than I will ever care to recall nowadays. Around 2001, I realized "The Web" was where the future lies and took nine months off from doing paid contract work to rediscover UNIX, or more specifically Linux where I set up DSL and my first server at home and ran various websites off Zope (python-based CMS). But I still used Windows as my main desktop. Then around late 2005 or early 2006, our company, which does Ruby on Rails development, decided to buy a couple of the first Intel MacBook Pros and give them a whirl. It all started as our quest… read more


Hello world!

_Welcome to WordPress. This is your first post. Edit or delete it, then start blogging_ ...and with that, I almost did delete this post to begin start blogging. But alas, every programming example seems to start with "Hello, world!" so I figured this is an appropriate beginning to this blog about myself and programming. (Is this code reuse?) My interests span both programming and hardware, you'll find a mixture of discussion ranging from software development to actually deploying the systems. I have been working with computers since 1984 and had my first consulting gig by 1987 and have been hooked on computers ever since. As I begin this very public journey (for the Internet does not forget!), I aim to focus the bulk of my discussions to the nitty gritty details that often aren't covered in basic how-to's...the things you… read more


Conway's Game of Life in CoffeeScript

I was recently invited by Jonathan Wallace to a local Code Retreat where the developers were going to tackle Tim Conway's famous Game of Life  Unfortunately, I was unable to attend, but the whole idea sparked my own self-exploration into both CoffeeScript and Middleman, which I had little practice and practical experience with.  You can find the resulting code in its entirety at https://github.com/mwlang/life_with_coffeescript I learned some interesting things about CoffeeScript along the way as well as DOM manipulation and JavaScript performance issues that are worth sharing. In case you have not seen the game of life before, below is a screen shot of the game in action with a world that is 25 x 25.   The above shows a simple form that allows the size of the world grid to be changed… read more


Apache 2.2 and Active Directory and Group restrictions

I was really struggling with getting Apache and Active Directory talking and restricting access (authorizing) only a sub-set of users that belonged to a particular group. Here, I show you how I solved the problem. … read more


Install Passenger on Ubuntu Intrepid 8.10

Phusion Passenger is one of the easiest Rails and Rack environments to set up and configure with Apache2. With my bootstrapping scripts, the ability to establish a Virtual machine image and have a working Rails application on it in minutes is a reality. Here is how I do it. … read more


Bootstrap Ubuntu Server 8.10 Intrepid 64-bit

This post covers getting the basic Ubuntu Server 8.10 Intrepid up and going and ready for further configuration (such as Ruby on Rails, or MySQL Server, or Bind 9, etc.). … read more