Monthly Archives: February 2013

My Mobile Upgrade

I switched my mobile service to Ting in late March of last year. The experience has been great, and I’m glad I switched. Why did I switch? I’ll get to that. First, let me give you some background.

(OK, so this post turned into a narrative of my journey from feature phone to smartphone. I’ll post my thoughts on Ting in a separate post.)

I had come to the end of my contract with Verizon in 2010 (I think). In the summer of 2011, I began looking at upgrades from my flip-phone (don’t remember why), and saw the Microsoft Kin (I was shopping feature phones, because $30/month data plans are dumb). It had 802.11 wireless, a halfway decent camera, and a crippled browser, so it seemed to be a clear upgrade. I could pay for data at $10/75MB which also seemed reasonable. So I visited a local Verizon reseller. They didn’t have good things to say about the Kin (I don’t think they even had them in stock). I ended up looking at the low-end smartphone options. This was about the time that Verizon was killing their unlimited plans, so there was some uncertainty about exactly what it was going to cost just to have a smartphone. I ended up getting an LG Ally. It took me about a day to reach full-blown buyer’s remorse. I figured out quickly that a) this thing came with a $30/month ball and chain and b) it was never going to be worth $30 per month. I returned the device after about a week.

The Ally was definitely nice (still the best mobile keyboard I’ve ever laid thumbs on), and I still wanted a smartphone. I started doing more research on data plans and the available devices, and began looking at exactly what a smartphone was worth to me per month. I started paying attention to the device market, looking for a device that could have better utility for me.

It was around this time that a number of MVNOs with reasonable data plans started popping up. Their plans were more geared toward someone like me who spends 95% of their waking hours in range of a wireless access point. I was aware of these providers, but I found their phone selection unacceptable (I had two requirements: physical qwerty and at least a 400×800 screen). News of the Droid 4 also leaked in the fall of 2011, and it looked promising. I began biding my time, waiting for Verizon to release the phone. Between a great device and an 18% discount on our family plan (which I had previously been unaware of), the cost of a data plan was acceptable, just barely. December came, it looked like the Droid 4 might release along with the Droid Razr, and I was ready to pull the trigger on an upgrade.

December went, and there was no announcement of the Droid 4. Then, some time in January, one of my lab-mates switched to the Ting beta. I was already aware of Ting at the time, but this kept them in my attention. They had a flexible plan structure, and appeared to be all about providing excellent wireless service. Within the next month or so, Ting ended their beta and started selling to the general public, and I started paying attention to Ting’s blog, along with their Facebook and Twitter presences.

That’s right, they’re a brand new wireless service with presences on Facebook and Twitter. And not just sales and PR drones trying to sell the service. These presences were actually managed by real, living, thinking, feeling human beings. People asked questions, and Ting was obviously trying to be as open as they possibly could in their responses. Some people came to Ting on Facebook and Twitter with problems, and Ting would start troubleshooting right then and there, on the public Internet. This usually ended with a “You’ll need to contact with your personal information. They should be able to fix you up.”, but this is a big step from the way any other service provider interacts with their customers (and potential customers).

Sometime in March, the HTC Detail made it into Ting’s device lineup. Now Ting had a pricing model that worked for me and a device that I found acceptable. By the end of March, I was a Ting customer. I was paying only maybe 30% more than with Verizon, but I had a smartphone and a data connection. If I wanted to contact Ting, I could contact them via email, Facebook, or Twitter, or I could pick up the phone and call them and be talking to a human being in less than 10 seconds. Oh, and did I mention that there was no ball and chain contract involved? Take that Verizon.

KOAP 20130205

In an effort to sustain momentum going into the semester, I was tentatively scheduled to give a talk about KOAP for our research group Tuesday afternoon. KAOP is my tool for developing OpenCL applications using the C host API. I took the opportunity yesterday afternoon to change a few of the things that were bugging me about KOAP.

First, a little bit about how KOAP works internally (well, how it worked until Tuesday). KOAP takes an input file containing C code, OpenCL code, and KOAP directives as input. KOAP expands the directives into OpenCL API calls and combines all of the OpenCL code into a string for compilation at runtime. KOAP does not use formal parsing methods. The parsing takes place over multiple passes and is very ad-hoc. KOAP reads the input into a single string. KOAP processes comments and KOAP includes (like C preprocessor includes) in this first step. KOAP then separates the OpenCL source from the C source and breaks the source strings into double-ended queues (STL deque) of strings, using newline characters as delimiters. KOAP expands directives one line at a time, building a deque of output lines as it goes.

Why STL deques you ask? At one point, that was the only STL container that supported the methods I needed (or thought I needed). My first modification Tuesday was to replace all deques with STL vectors. Vectors support all of the needed operations, and are better suited to the problem (I’m mostly using the element access operator [] and the push_back method). KOAP has been released for over two years now, and I’ve spent two years thinking it was dumb that KOAP used double-ended queues. That’s not bugging me anymore.

My other modification is actually user visible. KOAP understands a handful of arguments for things like setting the flags passed to the OpenCL compiler, setting the device type to be used (OpenCL works on CPUs, GPUs, and other accelerators), and a few other things. All of the command line arguments came in pairs (-argname argument). I had written a very dumb bit of code to parse the command line arugments and set the necessary internal flags. My old parser required that the KOAP file for processing be the last argument, and would only process one KOAP file. I’ve rewritten the argument parser to be more general. The new parser is smarter about how it parses the arguments and accepts as many KOAP input files as you wish to give it.

The queues and the argument parser were the two things that bugged me the most about KOAP. Now that they’re fixed, I’m reasonably satisfied with how KOAP is structured internally. I’m not quite to the point of being proud of the codebase, but at least now there’s nothing in KOAP that I find embarrassing.

We have a MakerGear M2


The research group I work with ordered a MakerGear M2 back in November, and it finally arrived yesterday. My lab-mates and I took the afternoon to pull it out of the box and become acquainted with it. We ordered the pre-assembled package, so this was mostly a plug-and-play operation.

I arrived in the lab shortly after the unboxing, so I can’t describe the packaging in great detail. I’m told that the box was covered in “fragile” labels, and that the zip ties on the printer were color coded; red for ties that should come off and black for those that are permanent. MakerGear uses high-end chocolates are for packing inspection tokens. I can say from experience that those are very good. Before shipping the assembled printer, the folks at MakerGear printed two test patterns, a bracelet and a gorilla head; both were shipped with the printer.

bracelet bigfoot

We started by fiddling with the motion on the head and the bed. Before printing anything, we brought the head and the bed up to printing temps (185 C and 60 C respectively, for PLA) and ran some filament to clean the head. Finding the right calibration settings took three or four attempts at printing something. Somewhere in the process of learning how to manipulate the machine, we managed to move the bed to the positive limit in Y and the power/sensor cables snagged on the frame. The power connector simply unplugged. Unfortunately, the sensor wire snapped at the solder connection inside its connector. After half an hour of negotiating with the connector housing, we were able to extract the metal contact and re-solder the connection. One more round of leveling and we began printing a Companion Cube. We’ve apparently got some issues with our configuration for the skirt, and I think we probably need to adjust the head clearance, but our first printing looks pretty reasonable.

printing cube

I’m certain I’ll have more to say about our printer in the coming days/weeks. It’s an interesting device, and I expect it to be a good toy (or distraction).

Hello, World.

I think I’ll use this first post to talk a little bit about why I’m starting a blog. I’ve been thinking about it for a while, but the catalyst was my recent shift into job-search mode. I’ll be finishing my degree this spring, so I’ve started polishing my resume and my interviewing skills. I decided I should establish a web presence apart from UK (I’ve had a static site on the College of Engineering’s web server for some time).

I really don’t know how much I’ll be writing, or exactly what I’ll be writing about. I hope to post several things about programming and the projects I’m working on. I’d also like to post some reviews of the tech products I use. I’ve got a ThinkPad, a Raspberry Pi, and a smartphone for starters (I’m really not happy with the term smartphone, I guess that’s a topic for a short post). I’ll probably also talk about the marching arts; I follow Drum Corps International pretty closely and I’ve been involved in the local high school marching circuit since 2003. I’m sure I’ll write about other things that don’t fit into either of these categories.