Adam Rice

My life and the world around me

Page 7 of 108

Survey of iPhone bike-computer apps

I’ve written before about the iPhone’s potential and drawbacks as a bike computer. And there are a lot of bike-computer apps available for it right now. Let’s take a look at them.

I’ve gone on a bit of a kick lately and tried out four different ones. There are one or two others that I haven’t gotten around to yet. I hope to eventually, and will report on them in this space when I do.

Executive summary: Rubitrack for iPhone and Cyclemeter are clearly oriented towards performance cyclists; right now I’d give the nod to Cyclemeter. GPSies seems almost like a toy, but might be of use to hikers. Motion-X is for GPS otaku.

Continue reading

Chile Recipe 2010

For the past four years, I’ve been making chili for a new year’s day party, a tradition I borrowed from my mom. Every year I’ve varied the recipe a little, and I think this year’s batch was the best yet. I am documenting what I did here.

I’ve always used the Pedernales River Chili recipe as my starting point. This year I also consulted The New Best Recipe, an excellent cookbook with a recipe for Texas-style chili that looks very respectable.

This is a very large recipe. Most chili con carne recipes start with 4 lb of beef, so scale accordingly.


  • 9 lb chuck roast. It should be no surprise that the cut of beef makes a big difference in the quality of the final product. I’ve tried stew meat and it’s nowhere near as good. I also don’t care for chili based on ground beef (leaving aside the potential food-safety issues with that).
  • 2 large onions.
  • 3 cans diced tomato.
  • 18 tbsp chili powder. New Best Recipe observes that 2 tbsp of chili powder per pound of beef seems about right, and I agree. Speaking as someone who likes spicy food and has a reasonably good tolerance for spice, I’d describe the level of spiciness as a mild slap: enough to get your attention, but not enough to slow you down. Central Market has an outstanding selection of chili powder in bulk, and I probably spent 10 minutes sniffing at different jars. I brought home both New Mexico chili powder and House Blend. Gila Flats also seems like a good candidate. I wound up using about 10 tbsp of the New Mexico, 5 of the House Blend, 2 of ancho, and 1 of chipotle.
  • 4 tbsp cumin seed. As per New Best Recipe, I toasted this in a dry pan first. Actually, I only had about 2 tbsp and wound up adding cumin powder to compensate.
  • 4 tbsp dried oregano
  • 3 cups water. This is a very dry recipe. Partly out of necessity: I was running out of room in my stewpot.


  • Cube the chuck roast into roughly 1″ chunks.
  • Chop the onion coarsely.
  • In a large stewpot, brown the chuck roast in small batches and set aside.
  • Sautee the onions in the stewpot with the beef fat, adding oil as needed.
  • Add all the spices to the onions and continue sauteing for a minute.
  • Return the beef to the stewpot and add the canned tomato and water. Add a few dashes of hot sauce. Bring to a boil and then reduce to a simmer while covered.
  • After about 2 hours on the stove, the flavor wasn’t didn’t seem properly rounded out, so we added over a tablespoon of salt. That helped but didn’t quite do it either, so we added a tablespoon of cocoa powder, which did the trick. The chocolate turned out to be the magic ingredient.
  • Continue simmering for a couple hours, store the whole pot in refrigerator overnight, reheat the next day for serving. At no point did I skim the fat off.


The “unofficial Apple weblog” had a post calling on readers to submit their wishlist for future iPhone OS features, which got me to thinking.

Multitasking is an obvious shortcoming on the iPhone right now. Multitasking is possible: some of Apple’s own apps run in the background, and there are jailbreak apps that allow apps to run in the background and for the user to switch between running apps. But Apple does not allow app-store apps to run in the background at all, presumably because of performance and battery-life problems.

I believe that multitasking on the iPhone can be broken down into two functional categories: apps that you want to run persistently in the background, and what I’m calling “interruptors”: brief tasks that only take a few seconds to complete, and where you don’t want to break out of your current app. I’m concerning myself with the latter case here.

A jailbreak Twitter app, qTweeter, has the kernel of an approach to presenting these interruptors: it pulls down from the top of the screen like a windowshade, and is accessible any time.

This approach could be generalized to present multiple apps in what I’m calling a pulldock. There could be one pulldock that pulls down from the top, another that pulls up from the bottom, to present up to eight interruptors.

I envision these interruptors being stripped-down interfaces to existing apps or services, such as twittering or text messaging, that would appear in some kind of HUD-like view superimposed over the running app. Interruptors should be lightweight enough that they wouldn’t overburden the phone. I can also imagine new ways of passing information between a regular app and an interruptor—such as launching a camera interruptor while in the mail app as a way to take a photo and insert it into a mail message, which would save a few steps.

Here’s a screencast:

Yeah, there’s a lot of “umms” and sniffing in there. It’s the first screencast I’ve ever done. The visuals were done in Keynote using the template from Mockapp.

Cilantro lime ginger sauce

People seem to be interested in this, so here’s how to make it.

  • Take one bundle of cilantro and cut off the stemmiest parts. Chop coarsely into smaller bundles.
  • Juice four limes.
  • Peel a fat chunk of ginger about one inch long and chop coarsely. Enough to fill the palm of one’s hand.
  • Take one or two jalapeños (depending on intensity) and cut off the stems.
  • Throw all this in a blender and puree. See if you need that second jalapeño. Add about a tablespoon of oil and salt to taste. Run the blender for a few more seconds.

This is especially good on fish or shrimp, but will work on just about anything. We typically pan-fry some kind of white fish, pour the sauce over it when it’s about halfway done, let it cook in the sauce for a while, and serve over rice.

Search tip

A couple of nights ago, Gwen used the phrase “Googling for something on America’s Test Kitchen” instead of “searching for…”, which just reinforces that Google has become a synonym for search.

Google search results are often polluted by irrelevant links to commercial websites like bizrate and dealtime, though. Wouldn’t it be nice if there were a way to avoid that? There is: use Give me back my Google.

It would be even nicer if you could search via GmbmG right from the search field in your browser. And in fact you can, but you’ll need to set it up first


Safari does not let you customize your search field out of the box, but there are some hacks like Glims that add this capability. Once you’ve done that, you’ll need to add GmbmG to Glims as a custom search engine and teach it the specific search syntax that GmbmG uses. It is: search key

Firefox or Internet Explorer 7+

These browsers support something called the “open search description document,” which makes adding a new search engine dead-simple. I have no idea how this works in IE, but in Firefox, just install this plugin (which I created, not the creator of GmbmG—the plugin is currently listed as experimental, but it’s perfectly innocuous, I promise) and it will add that site to the list of search engines your browser uses.

Moving forward and circling back


I recently resolved a nagging issue in my life that had been like an albatross around my neck for years.

Back in ’97, I visited the Netherlands, and became interested in recumbent trikes. I’ve always been drawn to the mechanically obscure, and if recumbent bikes are weird, recumbent trikes are way out there. As is my wont, I researched them obsessively when I got back home, and eventually homed in on a model that, even by the rarefied standards of recumbent trikes, was exotic. It was the AS Engineering Zenit. Made in Russia by former Illyushin Aircraft engineers, it had front-wheel drive, a box-section aluminum frame, hydraulic drum brakes, and other unusual features.

I ordered one. It took forever to arrive—the better part of a year. I may have been the last customer to have an order filled. I know that AS Engineering stiffed several customers. It didn’t come as a finished product, but it didn’t come as just a frame (the way many custom bikes do) either: because of its many custom parts, it was somewhere in between. I began putting it together with quality parts, but after a while, I got bogged down. I had routed the hydraulic lines poorly, and didn’t want to redo them. One of the lines also needed to be re-bled, which was a massive pain. The shifting was erratic, and I had trouble getting that dialed in.

So it sat in the shed. For a decade.

Every time I went into the shed, there it was, mocking me. Eventually Gwen gave me the ultimatum “ride it or get rid of it.” and I eventually decided to get with the program. I took it to Austin’s recumbent bike store, and had the proprietor deal with its various shortcomings. At the same time, I found a website for recumbents that included a classified section. Someone saw it listed and told a friend, who had been looking for a Zenit for years. I sold it.

Putting that trike behind me was an illuminating life-lesson. I had let a molehill grow to a mountain in my mind: I had become frustrated by some minor problems and intimidated by the prospect of fixing them. Ironically, in the ten or so years that had passed, those problems became much more difficult to solve (the hydraulic parts needed for the trike had become much harder to obtain, and there was a new leak somewhere).

But revisiting the trike reminded me of an idea I had for it when I first got it: to use it as the vehicle for a transcontinental bike ride. I had completely forgotten about that goal after the tumult of breaking my pelvis, getting divorced, and getting into firedancing in 1999–2000. But reminded of it, I realized that I still wanted to do it. I mentioned it to Gwen and she said “You’re not getting any younger!” So that’s going to be my big project in 2010.

Ironically, I still think that a recumbent trike is the right vehicle, but I have no regrets about having sold the Zenit, and would shy away from using it for this purpose if I hadn’t: a trike with critical parts that simply cannot be replaced if they break is a bad vehicle for a 3,000 mile journey. And at this point it would be bad mojo to ride a trike that symbolized my own inability to complete a project.

The iPhone as bike computer

I have become slightly obsessed with the idea of using an iPhone as a bike computer. What follows will be of little interest to anyone except gadget-nerd cyclists.

Continue reading

Mueller ramble

Gwen and I went for a walk through Mueller today, and because it’s Sunday, there were a lot of open houses. We stopped in six. It was educational.

The first two we stopped in were of a small number of showcase, architect-designed, “parade of homes” houses facing the park. These all have seven-digit pricetags. The others were all builder houses. The contrast between them was interesting. The architect-designed houses were profligate in their use of fancy materials and construction techniques. One of them had a floating staircase where each tread was supported from the ceiling by a serpentine square-section tube, and slatted overhangs above the windows that in total consisted of many hundreds of small tubes, each screwed down in four places. Swingarm mounts for flat-panel TVs abounded. Another had a rooftop porch (accessible by elevator!) with a sink shaped like a martini glass.

The builder homes, in contrast, were all swaddled in carpeting that could charitably be described as “disposable,” and generally had cheap finishes and cheap materials except on certain bullet-point features. We were struck by one home, listed for $608K, that had pine cabinets stained to look like walnut, but a vast expanse of marble countertops in the kitchen practically equal to our house’s floor space. On a house that was listed for more than $500K, the interior doors were plastic. Most the builder houses felt very suburban, with fussy trim, “great rooms,” and upstairs playrooms for kids. There was only one house that had a (sort of) open-plan first floor. While all the homes have some level of LEED certification and meet some kind of green-building standards, this struck me again as a bullet point to be checked off rather than as an actual design goal. Houses had incredibly high ceilings (whose main purpose seems to be making lightbulb-changing difficult), but no ceiling fans. None of the homes made any provision for rainwater collection, and when Gwen quizzed the realtor at one of the architect-designed homes as to why, she answered “there wasn’t room.” Which struck me as unlikely—I doubted it had ever been contemplated.

I was struck by the way quantity is prioritized over quality: maximum floor space seems to be the number one priority. Yard space was very limited—I know that short setbacks were mandated for Mueller, and I can’t really complain about small back yards in a city, but those are some of the very few features of the development that feel urban. All of the houses were at least twice as big as our house, and were clearly not designed with people like us in mind. Something that traded space for quality of construction, without going overboard on showy, labor-intensive features, and that reflected a more urban aesthetic. There is a single row of boxy, modern townhouses, but that’s the only part of Mueller like that, and we didn’t get a chance to look inside them.

Finding translations

Wil Shipley wrote about how coders can organize their software projects for localization. But what happens on the other end—once those files of strings to be localized get handed off to those “errrr… whatchacallums. ‘Polyglots!'”

I’m a translator. I’ve done a small amount of coding, so I can appreciate the issues involved on that side, but it’s not my strength. I’ve done a little software localizing, and a lot of translations of software manuals.

Suppose you’ve got an application that you want to make available in other languages in addition to your native language. You’ve got the technical aspects of the problem solved. How do you get it translated? I will assume that you want every localized version to produce the same delight and satisfaction in speakers of other languages that you are trying to create with your own-language version, and that you are willing to go to some trouble to do so.

Your first decision, from which many other tradeoffs will follow, is whether to give the project to a translation agency or to act as your own translation coordinator. There are pros and cons to each approach.

When you hand a job off to an agency, they will act as a buffer between you and the translators. In fact, they will insist on it. If the translators have any questions in the course of the work, they’ll footnote it and the agency will try to resolve the question either on their own or by contacting you.

Most large agencies will claim to handle any language combination; for any relatively common language combination, they probably have access to dozens or hundreds of translators. The coordinators at these agencies often have no ability to evaluate the quality of translation work themselves. Some of these large agencies farm work out on a first-come, first-serve basis, some farm them out to whichever translator is in their database as handling that subject matter at the lowest rate. Large jobs on tight deadlines will likely be split up among multiple translators, perhaps with some effort at harmonization after the fact. Editing work is also usually farmed out using the same methods.

One point that Shipley makes is not to use pictures of words, since they are so much more work to localize. While this is unquestionably good advice, bigger agencies may have tools for stripping text out of Photoshop/Illustrator files to be translated, and substituting the translated text back in (if it’s styled text, this could obviously get sticky).

There are smaller agencies that specialize in only one language, or only a few. These typically have bilingual people on staff, do the editing in-house, have some kind of personal relationship with the freelance translators they work with, and have a pretty clear understanding of each translator’s strengths and weaknesses. These agencies will also act as buffers between you and the translator.

Finally, there is dealing with individual translators. This will allow (or require) you to work more closely with the translator, which should in theory permit them to do higher quality work. Dealing directly with the translator will expose you to a wider range of rates: on the one hand, you’re not paying the agency’s vig (which can be anything from 15% to 200% in my experience). On the other, you may be dealing with translators who have priced themselves out of agency work. Dealing with individuals does place you at risk if one of them flakes out (rare but possible), and will take some work just to find suitable candidates. You should also arrange for someone to edit the work. You should be able to ask the translator to do this, although some translators might be reluctant to let their colleagues see their work. Any freelancer worth his salt who is working for a direct client will do a meticulous editing job, but the more eyes that look at it the better. Mistakes can always slip by.

Let’s assume that, one way or the other, your localizable strings file has reached the translator. I’ve seen agencies send these as Excel files, with each text chunk in its own row, the source in one column and the target to be translated in another. I hate doing extended typing in Excel, but this at least has the virtue of clarity. I usually wind up moving the table into Word, which is a friendlier place to type.

The problem with these chunks of text is that they are disembodied. Out of context. And context matters. Knowing that a chunk of text is going to appear as a menu item, as opposed to a dialog box, tooltip, or whatever, will influence how the translator expresses that idea. For that matter, knowing that several menu items are all clustered in the same menu, between separator bars, would also influence how each of them was translated. A keen-eyed translator will often be able to figure out some context based on hints the text provides, but there are limits. The result of this lack of context is that the localized version will be prone to seem a little disjointed to native speakers. Screenshots of the most common interface elements would be one way to ameliorate this. Actually giving the translator the software to play around with (in addition to the strings file) would be even better, but this restricts you to working with translators who use the same platform as you (which wouldn’t be a bad idea, since they are more likely to be conversant with platform-specific lingo), and probably rules out working through an agency.

Let’s jump ahead and assume that you’ve received the translated strings file. Now what?

Well, you could blindly assume that the work has been done to your satisfaction, and you might get lucky. Or not. Regardless of whether you are working with a big agency, small agency, or individual translators, you should line up native speakers of the target language to critique the translation and make sure that if you incorporate it into your product, you’ll be happy with the way it appears in that language.

It would be prudent, regardless of who you’re working with, to request an early delivery of a fraction of the work, and have that go past your native informants to make sure the work is up to snuff. Sometimes, prospective translation clients will ask an agency to have a sample translation done on spec. In cases like this, some sleazier agencies have had a known-good translator do the sample (or many translators do a sample so they can pick and choose), and then pass the job on to the cheapest translator. Many reputable translators resent being asked to do spec work at all, so the use of spec work as a selection method is clearly fraught with problems. Better to suck it up and gamble on 10% of the project.

You should also provide as much information up front about the job as possible. Make a list of special terminology that needs to be handled consistently, and give a glossary if possible. Explain your expectations regarding style and voice.

Update: See also the response by Ryan Ginstrom, a real-live programmer and translator.


Today is the tenth anniversary of the day I broke my hip for the second time.

« Older posts Newer posts »

© 2018 Adam Rice

Theme by Anders NorenUp ↑