Running WordPress 3.8 on a Nexus 7

I had the good fortune recently to come into possession of an Asus Nexus 7 Android tablet. After a couple of months playing games on it, a task it excels at I might add, I decided it might be neat to see if I could setup a super-portable self-contained mini-development environment for WordPress. Turns out this is surprisingly easy to put together. With all the pieces in place I can both run and hack WordPress code on the device, even without an active network connection. There are surely many ways to accomplish this, but here is what worked for me.

  • Keyboard
    Trying to code with a onscreen keyboard is a show stopper for me, so in order to make this work I need an external keyboard. It just so happens that my employer, Automattic, included an exceptional Logitech Bluetooth keyboard in our very generous holiday gift packages. It pairs with the device out of the box, but unfortunately the media keys are not supported. To fix that, and to create some useful application shortcuts, I’m using External Keyboard Helper Pro (https://play.google.com/store/apps/details?id=com.apedroid.hwkeyboardhelper&hl=en). It’s not the most intuitive interface (quite possibly one of the worst) but it is powerful with a lot of advanced options.
  • PHP enabled web and DB server
    I expected this to be the most pain in the ass part of the process, but it turned out to be really easy. I chose the Bit Web Server (https://play.google.com/store/apps/details?id=com.andi.serverweb&hl=en) app which is amazingly simple to use and does not require root privileges. It had a small problem with some default paths on first install, but that only took a minute to fix. Web and DB services are accessible via the localhost interface so you can use them without any external network connection. It even comes with phpmyadmin for database management.
  • Vim
    I use Vim for software development and there is a very nice port for Android called Vim Touch (https://play.google.com/store/apps/details?id=net.momodalo.app.vimtouch&hl=en). It’s really a full featured build, and for the most part compatible with my standard configuration.
  • WordPress
    Download the latest WordPress zip file, move it to the document root of the web server, unzip it, run the browser based install. I expected this to be easy, and I was not disappointed: It worked flawlessly.
Vim FTW!

Vim FTW!

I'm blogging!

I’m blogging!

So far it seems to all fit together nicely. I can switch between code and a browser with just the keyboard, and the fact that it’s entirely self contained over localhost is handy for traveling. I have some LONG flights coming up in the next month or two, so I’m hoping I can take advantage of the time and work on some plugins. I have to admit I’m strangely disappointed at how easy this was to setup. I expected a long drawn out battle with obtuse error conditions and undocumented issues. Maybe I should see if I can dual boot Debian and Android …

Message In A Bottle

My first modern computer was an overpriced Compaq Presario I bought from Best Buy in 1999. Armed with AOL dial-up and Windows 98 I waded onto the internet and was amazed at what I found. So much stuff to explore! Eventually I stumbled on Linux and the rest is history, but before then I got hooked on Povray, a freely available ray-tracing program originally released in 1992. Povray can render a 2-D image by calculating the interaction of light and objects in a 3-D space. You control the lights and objects by using a scene language, then it interprets the results and generates an image file.

Povray is good old-school geeky fun. The scene language is unique but pretty easy to get the hang of. You can build entire scenes with nothing more than declarative statements, though execution flow control is supported by a pre-processor like syntax. Each scene needs at minimum a camera , a light source, and one or more things for light to bounce off of. Povray supports an incredible array of geometric primitives along with powerful textures. I have never created anything close to what the real experts can do, but I did have some fun recently putting together the WordPress themed “Message in a bottle” header image above.

Everything in this image except the bottle cork and the island/iceberg thing in the background are made using one of the geometric objects available in the scene language. For example the sky and water are actually endless planes placed above and below the camera set parallel to the horizon. The reason they look like sky and water is because of the texture properties applied to each. The bottle is a composite, built from a lathe object and several cylinders. The cork and iceberg are height field objects that use an image as input and scale the Y-Axis (height) to the lightness value of each pixel of input.

bottle_split

Exploded view of the bottle components

just_sky_water

Just the sky and water planes

Scene without the bottles or clouds or water texture.

Just the sky, water, and land

water_no_clouds

Everything but the bottles and the clouds

png file used as input for the iceberg height field

png file used as input for the iceberg height field

Height field object rendered in Povray using the png input file

Height field object rendered in Povray using the png

png file used as input for the cork height field object

png file used as input for the cork height field object

rendered_cork

Rendering of the cork height field object

Incidentally the first program I ever wrote was a Perl/TK monstrosity that wrapped a GUI around the CLI-only Linux version of Povray. All it really does is build the command arguments and shell out to run the renderer. The almost 1000 lines of code I wrote to do this could best be described as fractally wrong. As bad as the code is, it still works and I still use it :).

This really just scratches the surface of what Povray can do. If you are looking for a time-sucking hobby that will stress both your CPU and your brain, I highly recommend it. If you want to mess around with this scene you can download the source code and input png files here.

At WordPress, Happiness is Automattic

On the first of May, I started a new job at Automattic, the company behind WordPress.com. I was hired as a “Code Wrangler,” but to date I have not written a lick of code. This is because for the first three weeks new employees must participate in a customer support rotation. I know what you are thinking: “Let the software engineers communicate directly with customers? I saw Office Space, so I know that’s a bad idea!” or maybe “Bummer, customer service is a thankless soul-sucking quagmire of loathsomeness.” Surprisingly, neither one of these normally valid assumptions is true in this case. So what makes working at Automattic so special that software engineers can enjoy communicating directly with users and customer service ends up being rewarding and fun? Quite a few things actually.

The customer service team is known as the “Happiness Team,” and its members are “Happiness Engineers.” When I first heard this I thought, “Cute, a little silly, but no sillier than my title of Code Wrangler.” Now that I have worked on this team for a while, I have come to realize it is anything but silly or cute; in fact, it’s quite brilliant. The impact of having this title is subtle but powerful. The Happiness Engineers truly do an incredible job helping WordPress users with every problem they report, even ones not related to WordPress. There is an infectious helpfulness that permeates the interaction between team members that can best be described as the exact opposite of the “not my problem” attitude. Your problem is their problem and they want to help resolve it. For my part, it has become a personal challenge to find the most disgruntled user and try to find a way to inject some happiness into their life. When you slide the keyboard back at the end of the day, it’s very satisfying to know you did your best to help people with their problems, even trivial ones.

During my training on how to handle user issues we walked through a few real-life problems and talked about how to approach them. One in particular had two possible responses: one in which we suggested a solution that would also generate a revenue stream for Automattic, and one that did not. I took this opportunity to ask the trainer how important customer retention and revenue generation was to the Happiness Team. His answer was as refreshing as it was surprising. He told me to always judge each case independently and recommend a solution that best matches the user’s needs, no matter what the outcome to our bottom line. This really captures the essence of the Happiness Team’s approach to customer service, and it is reflected in the conversations I have with other engineers every day. To date I have not once heard an employee disrespect or disparage a user, even in private, even when their question is inane and deserving of ridicule. By stripping away the need to follow a script or try to up-sell someone, Automattic has made it possible for its Happiness Team to address users not as customers, but as people. The effect of this is striking, both on the engineers and those seeking assistance.

When you combine the surprisingly powerful psychology of the Happiness Engineer title, the talented personalities on the team, and a culture of courtesy and respect, you end up with something very special. Automattic has done just this, and it really has been an honor to participate. At the time of this writing I have two more days of support rotation left. In all honesty when I started I was not looking forward to these first three weeks. I have a genuine talent for pissing people off, so trying to make people happy has been an interesting learning experience. Turns out I’m having so much fun, I’m going to be a bit sad to move on. Just a bit though. If Automattic can make it such that even I enjoy customer service, who knows what’s around the next bend.

From Wall Street to WordPress

I never thought I would have a “Wall Street” job. For starters I live in Kansas. It’s not exactly the financial industry wheel of fortune you are probably picturing. Secondly, at that time, I knew nothing about how markets worked. Na da. Lastly I am a computer hobbyist turned software developer, not a likely contender when pitted against CS PHDs for coveted high paying jobs at them there high-falutin’ Wall Street firms.

Against all this evidence to the contrary, one such company did hire me for a development position. It so happens they were running a trading system on the east coast from a quaint Kansas City suburb office park. Ever since I have been knee-deep in free market plumbing, doing what I can to keep the leaks to a minimum and the cogs of capitalism turning smoothly. It’s been challenging, rewarding, hair-graying, and one heck of a ride.

Being on a team that develops and operates a licensed US Stock exchange is simultaneously invigorating and horrifying. The stakes are big, the players are bigger, and the more you learn, the more you don’t know. During my five years we converted an ATS (alternative trading system) to an official US exchange, launched a pan-European trading platform, started a US options exchange, started a second US stock exchange, and bought then merged a competing European trading system. All the while carving out serious market share.

We had victories and setbacks, flawless execution and brain-dead mistakes. Pretty much the same things all endeavors undertaken by humans endure. We continued to thrive because of impressively dedicated and brilliant employees. No rock was ever left unturned in the pursuit of process excellence. I’m proud to have contributed in my small way to the underpinnings of what makes trading in a complex system work a little bit better, and I’m truly honored to have done so among such excellent company. Now I’m doing the one thing even more unlikely than landing this job in the first place. Leaving it.

I have no love or hate for Wall Street. It is what it is. The best I can muster after working to maintain its infrastructure is a feeling of bland disdain. Big picture wise moving money from one bank to another at lightening speed is hardly inspiring, technical challenges notwithstanding. The stock market is capitalism stripped bare. It is the business of making money with money, without all the pesky distractions of other industries like producing a useful product or service. I appreciate its purity in this regard, but it rings hollow for me in the meaning department. For as much time as I have spent studying it’s inner workings, I’m surprised to say I won’t miss it. I will miss the damn fine people working behind the scenes to make it run as smoothly as it does.

Now it’s time to mosey on down the road to life’s next adventure. I’m happy to say I have accepted a position with Automattic, and am honestly beside myself with excitement over what challenges lay ahead. I started writing Open Source web applications in PHP before WordPress even existed. Through the years I have continued to contribute to Open Source projects in my spare time, and it remains something I am passionate about. With this career change I feel like my professional life and personal labor of love are merging into one. I’m already dreaming about how it will all play out after the next five years.