Grailbox

I Got Hacked and That Made Me Move

Friday night, I was headed for bed. I brought up my RSS feeds in NewsBlur and noticed six new posts on this blog. About gambling. All six copypastas of an advertisement of some gambling site. These articles jolted me from near-sleep to wide awake, and I bolted to my home office. And I thought, “How am I even important enough to hack?”

After logging in to my hosting service, I changed my account password. Then I deleted the posts from WordPress. Note: I run my own copy of WordPress on my hosting service. And then started forensics. I found a new WordPress admin. Delete. I found a bunch of new FTP accounts. Delete. I was already at the latest WordPress version, but on an older PHP version. Upgrade. Crisis averted, maybe? I started poking around the file system, and found some suspicious files in wp-content:

Read more →

Using Raycast to Move My Mac

An AOC Ultrawide (49") dominates my desk. Stretching 47" from wingtip to wingtip, it serves as:

  • The only display for the Linux tower that hides between my desk and the wall.
  • A supplemental (primary) display for my MacBooks.
  • The KVM switch to swap

I have two MacBooks:

  • A 13" MacBook Pro for work
  • A 13" MacBook Air for personal use

During the work day, I typically have my work MacBook to the left of my monitor, plugged in to the USB-C cable. My MacBook Air sits against the wall, closed and dormant. The desk space in front of me is open and available, so I can use paper and pen to take notes, manage my to-do list, etc. That setup looks like this:

Read more →

Compiling the Birthday Problem into Rust

The Birthday Problem demonstrates that, in a group of 23 people, the odds of two people sharing a birthday exceed 50%. You can read the linked article for an explanation, but the probability is about 50.73% that, for a 365-day year and a group of 23 people, two people will share a birthday.

You can extrapolate this problem to different ranges other than 365, of course. Given range N and  population X, in which each X occupies a single slot of N, at what value of X does the probability of two members sharing a slot rise above 50%? 

Read more →

Editing Markdown in Zed

I’ve been cheating on Neovim lately. I’m playing around with Zed (in vim mode, naturally). Zed’s default settings allow Markdown editing just fine, of course. Markdown is just text, after all. I don’t want long lines to scroll off the right side of the screen, though. Horizontal scrolling is the worst. I want lines to wrap when they get to the right margin. To enable soft wrapping (and to enable vim mode), open Zed’s settings file ($XDG_CONFIG_HOME/zed/settings.json) and add these lines:

Read more →

Flipping a Rusty Coin

Recently, my boss asked me for a server capacity planning model. This was a new ask for me. I can launch Excel with the best of ‘em: fire up Alfred and type “ex<enter>”. I can format columns and enter data and create graphs that show trend lines. I know about p90s and standard deviations and Excel formulas. What I don’t know how to do is create a capacity planning model. So I did what anyone else would do: I asked someone else in the organization to create the model. And I bought a book to learn statistics in Excel, so I’d be prepared for the next time.

Read more →

Autostart Zellij in Nushell

Cool kids multiplex with Zellij. Data engineers shred data with Nushell. Let’s make them work better together. Let’s autostart Zellij when our terminal and shell start.

The Zellij documentation provides instructions for making Zellij autostart in bash, zsh, and fish. In short, Zellij provides commands that inject some shell script into your shell’s startup script. It doesn’t offer this support for Nushell.

I started down a path of creating a pull request to add this support to Zellij. I discovered that Zellij determines your shell based on the Shell enum in clap:

Read more →

asdf and Nushell: Functions to Install and Switch Versions

I use asdf to manage tool versions, fzf to save typing, and shell functions to bolster my memory. My recent switch to Nushell reminded me that I haven’t memorized the asdf command to install or switch tool versions. I could have created flash cards and learned the commands, but instead I wrote Nushell functions.

Here’s the Nushell function to install a new version of a tool for which the plugin is already installed. You can specify the plugin on the command line or select it via fzf:

Read more →

Date Parsing and Arithmetic on macOS

I recently wrote a shell script that required both date parsing and date arithmetic. The pertinent bits for this post are that the script:

  • Accepted a date as a parameter
  • Accepted a number of days as a parameter
  • Iterated through the dates to generate specific strings in “year-month-day” format, e.g., “20230225” for February 25, 2023

Seemed simple enough. A little googling and some experimentation gave me this snippet that worked on Linux:

Read more →

Nushell + fzf -- functions for git switch and git branch -d

I’ve recently re-discovered nushell and I’ve fallen hard. I’m committed. I’m stumbling my way through things, of course, but I’ve set my course and am not turning back.

Perhaps one day I’ll blog my reasons, but this post is about two of my most-used zsh functions:

  • gbs : a function to git switch using fzf
  • gbd : a function to git branch -d using fzf

I’ve ported them to nushell. Here’s the source, without comment or explanation:

Read more →

Post 3

Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt. Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum. Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat.

Read more →

Post 2

Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia.

Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud.

Read more →

Fridge Door Part 3: Building a React Application

This article is part 3 in a multipart series that makes a message board using a Raspberry Pi and a Tidbyt.

Here are the parts in the series:

  1. Describe what we’re building (Part 1)
  2. Create a ReST service using Rocket (Part 2).
  3. Create a React application to both display and manage messages (this article).
  4. Integrate the ReST service and React application.
  5. Deploy the ReST service and React application to a Raspberry Pi.
  6. Create a Tidbyt application to display messages.

Prerequisites

Nodejs

Read more →

Fridge Door Part 2: Building a Service in Rocket and Rust

This article is part 2 in a multipart series that makes a message board using a Raspberry Pi and a Tidbyt.

Here are the parts in the series:

  1. Describe what we’re building (Part 1)
  2. Create a ReST service using Rocket (this article).
  3. Create a React application to both display and manage messages (Part 3).
  4. Integrate the ReST service and React application.
  5. Deploy the ReST service and React application to a Raspberry Pi.
  6. Create a Tidbyt application to display messages.

Prerequisites

Create the Service

Rocket has a “hello world” tutorial at https://rocket.rs/v0.5-rc/guide/getting-started/#hello-world. Feel free to read through that documentation, or refer to it as you work through this tutorial.

Read more →

Fridge Door: a Message Board with a Raspberry Pi and Tidbyt

This article launches a multipart series that makes a message board using a Raspberry Pi and a Tidbyt. Note that you can skip the Tidbyt and use a monitor to display messages.

Here are the parts in the series:

  1. Describe what we’re building (this article).
  2. Create a ReST service using Rocket (Part 2)
  3. Create a React application to both display and manage messages (Part 3).
  4. Integrate the ReST service and React application.
  5. Deploy the ReST service and React application to a Raspberry Pi.
  6. Create a Tidbyt application to display messages.

Let’s get started!

Read more →

Post 1

Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem.

Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do.

Read more →

Set Upstream Branch for Git

Update 8/17/2022: I just learned about the new git setting: push.autoSetupRemote – I learned it from here, and so can you!

You’ve seen it many times:

There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> master

So what do you do? You go to the mouse, swipe over the command to select it, copy it (if your terminal doesn’t do that automatically), paste it as a new command, fiddle with it a bit for accuracy, and press Enter. Voila. Tracking information easily set.

Read more →

Supercharging asdf with FZF

Update (August 12, 2022): Just noticed this commit that changes the output format for the current version in asdf list – updated accordingly.

Update (August 11, 2022): I’ve added more intelligent version sorting and support for asdf’s “latest” alias in both commands.

I’ve switched to asdf for managing all my language versions. It seems to work well, but we can make it work better by adding fzf.

Installing New Versions

The syntax for installing a new tool version in asdf is:

Read more →

Displaying Your Kitty Theme Colors

Update (12/15/21): So I hadn’t updated kitty in awhile, and now themes are built in. Everything is mostly the same, except that the file containing your colors has a different name. And you don’t have to install kitty-themes. I’ve updated accordingly.

Nothing groundbreaking here, but documenting for anyone it might help. Including myself.

I use kitty as my terminal. I recently decided to swap dark for light in my computing, so I chased down kitty-themes, installed Solarized Light . . . and discovered that some colors provided insufficient contrast for my old eyes. Easy enough to tweak the configuration file, once I knew what each color looked like. Here’s how to see all the colors in your kitty theme file:

Read more →

Insert UUIDs in Vim / Neovim

In my forays with Deequ, I found myself frequently inserting UUIDs into test JSON files. Although Online UUID Generator worked for this purpose, copy-pasta between browser and editor started to feel clunky. Time to create a key mapping in Vim.

I targeted Ctrl+U to insert a UUID, whether in normal or insert mode. My first attempt:

inoremap <c-u> <esc>:read!uuidgen<cr>i
nnoremap <c-u> :read!uuidgen<cr>

Worked moderately well, but of course it behaved as read! does: it inserted the UUID on its own line, after the current line. Since my drive comes primarily from not embarrassing myself in front of Visual Studio Code users, I knew I hadn’t yet found my solution. “Aha!” I thought. “Capital J!”

Read more →

Switch Among Java Versions: FZF and SDKMAN!

The bang in the subject belongs to SDKMAN!, not me. It’s a tool for managing versions of various Java-world tools. Think nvm for Java, Maven, Groovy, et al.

I’ve been back in Java world lately for work, using Apache NiFi to create RDF Triples and push to Ontotext GraphDB. Our current NiFi installation runs on Java 8, so I’ve been swapping between Java 8 and the new hotness in Java 16, which I’m actually not saying ironically. I’ve been sleeping on Java, but it hasn’t conceded to JavaScript, Rust, or Go yet.

Read more →

Using sed to Update Markdown Headers

I’m in the process of migrating an existing set of markdown documents to an internal Docusaurus blog. The markdown-to-html rendering with Docusaurus has proved decidedly less forgiving than our existing renderer, so I’ve been running the markdown files through some tweaks to get things to display correctly. One item that caused me to work a little harder than normal involved headings: if the heading lacks a space between the octothorpes and the heading text, Docusaurus renders it as normal text, like this:

Read more →

The Lambda function result failed validation

I’ve been working with Lambda@Edge a lot lately. Throwing compute to the edge of a CloudFront distribution is handy for things like authorizing requests. Development can be frustrating, however, with slow turnaround times for changes. Usual strategies apply, like testing with mocks, to mitigate deployment delays, but sometimes issues with integration arise that you can’t duplicate locally.

I ran into one such issue recently when implementing OpenID Connect with PingOne. My sophisticated remote debugging (read: console.log('here #1')) couldn’t set me straight. All I knew was my Lambda@Edge was calling PingOne, and my browser kept telling me:

Read more →

Use System Clipboard for Vi Copy Mode in Tmux in macOS and Linux

https://twitter.com/hoop33/status/1298981207942639617

Since I sync my dotfiles through GitHub, I wanted to implement something that will work on both macOS and Linux. Enter if-shell, which is documented in tmux’s man page:

 if-shell [-bF] [-t target-pane] shell-command command [command]
               (alias: if)
         Execute the first command if shell-command returns success or the second command otherwise.  Before being executed, shell-command is expanded using the rules specified
         in the FORMATS section, including those relevant to target-pane.  With -b, shell-command is run in the background.

         If -F is given, shell-command is not executed but considered success if neither empty nor zero (after formats are expanded).

In short, you can run a command conditionally, based on whether your “if” condition returns true. Interestingly, you can also run an “else” command without saying “else.”

Read more →

Hijacked by Malware: My Wife's Perpetual Search Woes

I’ve used Macs since 2004. I’ve never gotten a virus. I’ve never had a virus try to trick me into installing it. I’ve never sniffed any malware on any of my Macs, and Friends was still on the air when I started using Macs. The Curse of the Bambino hadn’t been broken. Ronald Reagan still lived. Same-sex marriage was illegal in all 50 United States. It’s been a long time.

I’ve gone all these years without any threat, and yet: every time I touch my wife’s Mac, she’s got some type of malware. Almost invariably, something has hijacked her browser search engine. You type a search term into her browser address bar, and some raggedy interface with the aesthetics of urban decay pops up. I ask her how she gets into these messes, and she claims not to know. And I’m left to wonder how many of my personal details she’s sent to the Ukraine through sketchy search plugins.

Read more →

Git GUIs: A Tale of Two Source Models

I’ll confess: I use a GUI for Git. Not always, and not even most of the time. The CLI is usually quicker, and I’m usually in the terminal anyway, but yet I also use a GUI. Why? Primarily for reviewing diffs and history, or for performing rarely used operations. I mean, I can google “cherry pick” for those rare times I use it, or I can choose it from the menu and not worry about mangling things in Git history.

Read more →

JavaScript Destructuring: Renaming AND Nesting

While addressing some linter issues today, I couldn’t figure out how to destructure from a JavaScript object while:

  1. Renaming a field and
  2. Destructuring nested fields from that same field

Renaming, I could do. Nested fields, no problem. But to do both, for the same field? Googling got me nowhere – I found examples aplenty for doing one or the other, often in the same post. Examples of how to rename a field. Examples of how to destructure nested fields. But nothing for the syntax for how to do both to the same field.

Read more →

How to Set Up a Domain in Amazon Route 53 with Terraform

Edit: Oct 12, 2021

Please note the comment by Chris Harrison, below, regarding a breaking change with lists vs sets.

Original Start:

I’ve lately used Terraform to set up several domains in Route 53. My searches on the topic found posts more ambitious than this one explaining how to create an entire website using Terraform: domain, certificate, S3 bucket, and CloudFront distribution. Whether because of the articles’ larger focus or my own density, I couldn’t really understand them. I’m loathe to copy-paste code without understanding what it does. I wanted to understand the Terraform resources, how they interacted, and where the dependencies and boundaries lay. I also wanted to understand what was happening with Route 53 and Certificate Manager. Here’s what I learned.

Read more →

The Ultimate Linux Developer Desktop 2020

Excuse the hyperbolic title. That’s what I googled when doing my research. My goal: build a blazing machine for developing software using:

  • JavaScript / Node
  • Go
  • Rust
  • Python
  • AWS

My late-2013 MacBook Pro is still serviceable, so I didn’t need portability. I’m seeking:

  • More speed
  • More space

I briefly considered building a Hackintosh, but didn’t want to get stuck not being able to upgrade or boot. I know Microsoft has been doing some great things with terminals and shells and Linux subsystems, but I wanted to stay firmly planted in *nix-world. I never really considered anything other than Linux. I told my coworkers that my goal was to “run Vim faster than it’s been run before.”

Read more →

Reformatting X12 in Vim

I’ve been working with a lot of ANSI X12 files lately. Often, they come to me formatted either as a single line, or as multiple lines with line breaks at 80 columns. They’re much easier to work with when they’re formatted as multiple lines, but with line breaks at delimiters. So I added the following to my .vimrc:

When I get one of these files, I open it in Vim (well, Neovim), and I hit <leader>x12, and then everything is reformatted how I like it.

Read more →

Using fzf and oc to rsh into an OpenShift Pod

Getting a remote shell on an OpenShift pod is simple enough; you type:

$ oc rsh <pod name>\

Pod names can be long and complex, however. Here’s an example:

mysql-coolapp-5-rg59c\

Only a luddite would willingly type all of that, and mousing around a terminal to copy and paste is only slightly more efficient. If you have fzf installed, however, you can use fuzzy finding to type only a few characters of the pod name to rsh into it. Here’s a zsh function that seems to work fine in bash as well. Add it to your dotfiles somewhere, and then you can just type “ocsh” and then a few characters of the pod name (or use the arrow keys) and then press Enter, and voila.

Read more →

Please Don't Ask Me How I'm Doing

Back in the 1970s, my father and his partner ran a small consulting firm. Their accountant, a man named Morty or Artie or some other name that conjures images of a perm, polyester, and a butterfly collar, charged by the minute. I think each minute cost a quarter, which sounds ridiculously low but in those days could buy a lot of polyester. Charging by the minute drove certain behaviors — as my father said, you quickly learned not to ask after Artie’s health. You called Artie, asked your question, wrote down the answer as he spoke, and hung up.

Read more →

Down the Raspberry Pi Rabbit Hole

I can be easily distracted. Lately, I’ve been working on a new blog of sorts, but instead of technical stuff, this blog will focus on writings about life. I think. I’m almost 10,000 words into recounting my recent motorcycle accident, and I haven’t published anything yet. I’m determined, though.

Writing long pieces on my MacBook Pro is proving to be hit-or-miss. When I get on my Mac, I tend to update Homebrew formulae, check Hacker News, scroll Twitter a bit, and start coding projects in Go or Rust or whatever intrigues me in the moment. Further, I live in a zoo of people, so finding quiet time at home proves an impossible quest. I try going to a coffee shop or a library, but my Mac’s battery doesn’t hold up. Between the distractions, the noise, the people, and the battery life, I don’t get much writing done.

Read more →

Installing Go 1.12 on MacOS High Sierra

Go 1.12 was released three days ago (Feb 25, 2019). I upgraded my personal MacBook Pro, which runs Mojave, with:

$ brew upgrade go

The upgrade failed with the error:

The upgrade ran fine. Then, I tried to upgrade my work MacBook Pro, which runs High Sierra and sits behind a proxy and plays victim to corporate man-in-the-middle attacks for all network traffic, which creates all sorts of adventures, with the same command:

Read more →

Go, HTTP Headers, and Rubber Duck Debugging

A recent Jira ticket instructed me to make a call from one of my Go services to another group’s service. I’d perform a PUT to a specific URL to create a service provider in our access management solution, here known as “Cool Access Manager” or “CoolAM.” For authentication, I’d include an HTTP header with the key “X-CoolAM-Token” and the value of the user’s login cookie. Simple enough. Yes, I’m aware that the “X-“ prefix for HTTP header keys has been deprecated. So I added the following Go code to my service:

Read more →

Automatically Close NerdTree When Using Vimade

As the NERDTree README points out, you can automatically close Vim if NERDTree is the only open window by adding this to your configuration:

autocmd bufenter * if (winnr("$") == 1 && exists(“b:NERDTree”) && b:NERDTree.isTabTree()) | q | endif

If you are using vimade and Neovim (I couldn’t reproduce in Vim), however, you may see something like this in your terminal after Neovim exits:

Error detected while processing function vimade#Tick[1]..vimade#CheckWindows[3]..provider#python3#Call:
line   18:
Invalid channel: 3

Read more →

Building Microservices in Go Using Go Kit

Last August, I spoke at Code on the Beach on building microservices in Go using Go kit. Here’s the video:

An error occurred.

Unable to execute JavaScript.

The repo I used is available at https://github.com/hoop33/roster and the Node CLI is available at https://github.com/hoop33/roster-client. I hope this is helpful for anyone trying to come up to speed on Go or Go kit.

Code on the Beach was a great experience – I hope to see y’all there next year!

Read more →

How to Return All Fields for a GraphQL Query

A frequent GraphQL question is how to return all fields in a GraphQL query without specifying them all; see here or here or here. The conversation typically goes like this:

Q: “How can I return all the fields for a GraphQL query without specifying them? Can I just pass a wildcard character?”

A: “No, sorry. That’s not possible. That runs counter to the entire idea of GraphQL.”

Q: “But, that would be really useful for [this case] or [that other case].”

Read more →

Restricting ripgrep to certain file types

I’ve been using ripgrep to search files for awhile, but I hadn’t figured out how to recursively search only certain file types. Anytime I needed to search, say, for any occurrence of “doFoo” in Go source files, I’d type:

$ rg 'doFoo' *.go
*.go: No such file or directory (os error 2)
No files were searched, which means ripgrep probably applied a filter you didn't expect. Try running again with --debug.
$ find . -name '*.go' -type f -print0 | xargs -0 grep 'doFoo'

And then I resolve to get around to figuring out how to ripgrep through only certain file types.

Read more →

Ctags for GraphQL Schemas

I’ve been developing some GraphQL services lately. Since I use Neovim (and fzf) for editing, I wanted Ctags support for my schema files. Here’s what I came up with:

I’d love feedback – thanks!

Read more →

Another Windows Scammer

I got another call yesterday from “Windows Tech Support” that went something like this:

Him (moderate accent): “Hi, I’m calling from Windows Tech Support, and . . ."

Me: “Oh, no! Do I have a virus?"

Him: *chuckling* “No, you have a browser injection malware."

Me: “That sounds bad. Should I throw away my computer?"

Him: “No. I can help you fix it. What key is on the bottom left of your keyboard?"

Read more →

Brandon from Windows

I just got a call from “Brandon from Windows” that I wish I’d recorded. He, of course, told me (in a Bangalorean accent) that my computer had malware issues. Our conversation went something like this:

“Brandon”: This is Brandon from Windows. Your computer has malware issues.

Me: Oh, no! Should I throw it away?

“Brandon”: No, we can fix it. Are you in front of your computer now?

Me: Yes

Read more →

Making "java -v", "java --version", and "java version" Work

To get the version of most CLI tools, you type the tool’s command name followed by one of these:

  • -v
  • –version

Some CLI tools, like Git, support a “version” subcommand, so you type the tool’s command name followed by “version”.

Java supports none of these.

Instead, you must type:

java -version\

I’m too old to remember that, so I’ve created a bash/zsh function:

https://gist.github.com/hoop33/e02d8ae9113616e2cd60

Now I can type any of the following:

Read more →

Two Things I Learned About Vim from an Emacs User

Yesterday I was working on a problem with an Emacs wizard, and I saw him do a couple things in Emacs that made me squirm. You see, I badger and belittle him at every opportunity for not embracing The One True Editor, but I saw him perform two actions in Emacs that I didn’t know how to do in Vim. And no way was I going to admit that, at least not to him.

Read more →

URLs as Pictograms

I started my car to the chime of a low fuel alert, so I stopped at the Kangaroo for gas and my Morning Mormon Coffee (today’s edition: Diet Dr Pepper). While filling my cup, I noticed the graphic on a napkin dispenser:

2015 01 12 08 38 01

The social media icons looked familiar, of course, but it took me a moment to realize that they’d abandoned the traditional ‘@‘ prefixes for the user names — instead, they’d used the icons as pictograms for the URLs, followed by a slash, and then the rest of the URL (the username). Interesting take, and probably a little too geeky to catch on, but I like when people experiment to see what sticks.

Read more →

hc: Hex Color Command-Line Tool for OS X

I’ve been working a lot lately with LESS and Bootstrap, and wanted an easier and quicker way to visualize colors and what the various LESS operations do to them. So, I built hc — Hex Colors on the Command Line. It’s written in Objective-C and works on Mac OS X 10.9+.

It’s still in its infancy, of course, but it lets you do things like show, lighten, or darken colors. To show the color red, for example, type:

Read more →

Giving Firefox Developer Edition a Go

I love that I can run Chrome on my work MacBook Pro, my personal MacBook Pro, and my iPhone 6 Plus and keep my browsing history in sync. I love that I can install a plugin on one Mac and have it available on the other. I love that my logins are available whichever device I use. I love that I can bring up my open tabs from any device. My web experience transparently moves with me, and it makes life so much easier.

Read more →

Clojure, Emacs, and Evil Mode

I work with one of those functional language kooks who end every thought with “Haskell,” use xmonad or Ratpoison while scoffing at GUIs, and edit everything, even selfies, in Emacs. Serendipitously, he just walked by, read my opening sentence, and said, “Actually, Emacs DOES support graphics editing. Haskell."

Also at work, a group of us are learning Clojure, evidenced by our once-a-week Clojure Club meetings. Progress has been slow but steady and we’ve found a lot to like about Clojure.

Read more →

Recovering My MacVim

Although I usually edit files with (graphical) MacVim, I occasionally launch terminal vim. When I do, I see this:

github-issues.vim requires Python support, sorry :c

I always smile a bit at my nephew’s use of an extra-frowny mouth, but I also wince a bit to know that I’m letting this issue linger, rather than fix it.

The simplest fix is to use terminal macvim as my system vim, so last Friday I opted for what I expected to be the easy route and typed:

Read more →

The Pinnacle of Fitness Failure: Samsung’s Gear Fit Activity Tracker | DC Rainmaker

The Pinnacle of Fitness Failure: Samsung’s Gear Fit Activity Tracker | DC Rainmaker: “Samsung built a cloud-based service that lacks the cloud.  We’ll just call that a rock.”

I haven’t yet taken the plunge into the activity tracker market–I run with a Nike+ GPS watch, but only while running–because I haven’t yet understood why I’d want one. This review didn’t push me any closer, but I LOVED that line!

(Via. Daring Fireball)

Read more →

The Internet Is Too Small to Be Snarky

Last week, I was frustrated with Oracle SQL Developer (on Mac OS X) for two reasons:

  • When a connection times out (after being left idle too long), the application hangs and I have to Force Quit and restart it.
  • Every 90 days, the passwords for our databases change, so an updated connection XML file is put into source control (passwords are encrypted, and we aren’t allowed to know the passwords) and we have to import the new connections. You can’t delete multiple connections at a time from the SQL Developer interface, and importing over an existing connection pops up a Yes/No dialog box asking you if you want to overwrite the existing connection. Since the file contains about 30 connections, this means clicking Yes to the same dialog box 30 times.

I decided to vent, and tweeted this:

Read more →

Setting Up My New MacBook Pro

I just bought a new MacBook Pro to replace my mid-2010 MBP. This is my first retina laptop, and it’s beautiful. I’d been waffling for awhile, but I’m glad I took the plunge.

I briefly considered transferring all my stuff over from the old MBP, but I figured it was time to start clean. I use my laptop primarily for development (Objective-C, Java, Ruby, Clojure, JavaScript, Web, . . .), writing, and a little bit of graphics work. Here’s what I did after walking through the setup wizard:

Read more →

The Node Sessions: The Best of OSCON 2011; O'Reilly Media

Various Node.js gurus explain and explore the power of this server-side framework in this collection of videos. Two years later, the videos age pretty well, considering they cover Node.js 0.4.x and 0.5.x, and today’s current version is 0.10.x. The speakers range from Node committers to heavy Node users, and you gain insight into not only how Node works but why it works that way. Some highlights:

  • Real Projects Built in Node and Developing Cloud9 in Cloud9 speak to the what works and what doesn’t in real-world use. Advice includes to use libraries like Puppet for configuration and Log Magic for logging. Cloud9 continues to grow and is an excellent way to get started with Node.
  • Using jQuery with node.js introduces jsdom and how you can use this powerful framework on the server side. It implements the DOM as if it were a browser so jQuery selectors et al work fine.
  • Running Node.js in Production and Node at Scale tells you how to make sure your Node app scales in real-world use. It covers how to choose meaningful benchmarks, how to structure your code, how to deploy, and how to keep your dependencies stable using package.json
  • Programming a Chat Server does some live coding to show what you can do with sockets.io and Node. You can see the result at https://github.com/guille/oscon-chat.
  • Why We Chose Node compares the dynamic nature of JavaScript with static languages like Java and C++, and explains the importance of being able to see exactly what’s going on when errors arise.
  • Network Programming with Node.js talks about the challenges of porting Node to Windows.

I wish the speakers had repeated the questions before answering them–you’re left guessing what question the answer matches. Talks mostly finished ahead of schedule, reflecting perhaps speakers new to speaking. The information is prime (albeit dated), though, and the whole offers a good introduction to the world of Node.js.

Read more →

How to Lock Up Linux Using Sublime Text 3

Steps to Lock Up Linux Using Sublime Text 3:

  1. Log in to your Mac OS X machine.
  2. Install VirtualBox.
  3. Install a Linux virtual machine.
  4. Boot that Linux virtual machine.
  5. Install Sublime Text 3 on that Linux virtual machine.
  6. Launch Sublime Text 3 and open some files for editing.
  7. Hit Cmd+P to Goto Anything….

There you go. As we say in The Deep South, you’re locked up tighter’n a tick. You can click around, mash keys, yell, and curse, even for a long time, and you’re completely stuck.

Read more →

Installing ForgeRock OpenAM and Apache 2.4.6 on Ubuntu 13.10

TL;DR

touch /etc/apache2/httpd.conf

Enter /etc/apache2 as your Apache Server Config Directory Path

copy the generated line from httpd.conf to apache2.conf

The Story

I’m no sysadmin, as will become clear rapidly in this post. I develop software, including Web software, so I have some knowledge of Apache and how to set it up and configure it, but for anything tough I scurry to real sysadmins.

I’m currently on a project at work to replace our Sun/Oracle OpenSSO installation with ForgeRock OpenAM, so I plopped a Linux VM on my MacBook Pro and worked my way through installing OpenAM using the ForgeRock’s Getting Started with OpenAM document, which is easy to follow and works well. When I got to the OpenAM Web Policy Agent installation, however, I stumbled. I ran the commands:

Read more →

The Imperfect Craft | Bitsplitting.org

The Imperfect Craft | Bitsplitting.org: “I’ve seen what happens to people who cling to outdated standards of craftsmanship: they become self-righteous, bitter, and delusional. Guided only by the hallowed rules of yesteryear’s geniuses, they and their work become marginalized. Without a foothold in the modern technological context, programmers who should be great are rendered effectively incapable of developing their craft.”

One of the things I love about software development is that it always presents mountains to learn. I don’t understand developers who aren’t constantly learning, trying new things out, and experimenting. This article really struck a chord with me. I love this quote as well:

Read more →

Validation Errors in Eclipse and Alpha-Bits

Cartoons owned Saturday mornings, back when I was young enough to care. The commercials that wedged their way in and between The RoadRunner and The Justice League seemed to hawk either toys or breakfast cereal, all of which I longed for. My mother decried “sugar cereal” and preached the virtues of rolled oats.

One particular cereal commercial that lingers in my dwindling memory showed various calamities creeping up on the blissful muncher. Each time, at the precise moment preceding attack and doom, the happy eater would show his or her spoon spelling out the calamities’ titles in Alpha-Bits (“MONSTER”, “TORNADO”, “BOA CONSTRICTOR”), declare, “I ate ’em!”, and shovel the coveted sweet crunchiness down the hatch. The monster/villain/brute would promptly disappear. It was magical.

Read more →

Gas Pump Mashup: Software and Signware

I was filling my gas tank the other day and saw this sign on the pump:

Gas pump

Apparently, it’s easier and cheaper to slap a sign on a pump than to fix the software.

I puzzled over this bug a bit; why would a gas pump refer to high-ankled footwear or English trunks? Then I realized it probably refers to “Insert Boot Disk”–I guess there’s some corruption when accessing the string table, perhaps, and sometimes the pump displays the wrong string when prompting for a ZIP code.

Read more →

CodeFest 2013

Last Friday, the operations and infrastructure folks where I work were swinging the non-production environments to a new datacenter. The development managers decided to use this opportunity to challenge the developers to a “codefest”–a 1-day programming challenge. The rules boiled down to:

  • You must come up with your idea beforehand and submit for approval
  • Teams could be 2-5 people
  • You cannot write ANY code beforehand, but could set up your environment, install libraries, etc.
  • Coding starts promptly at 8:00 AM and ends precisely at 4:00 PM
  • Scoring criteria:
    • Completeness: 33%
    • Code Quality: 33%
    • Cool Factor: 34%
    • Bonus: Usefulness to the company: 1-5%
  • Cash prizes awarded to the top three projects.

What a great idea! I was amazed to see what sorts of projects people came up with, and to see the execution of a finished app in 8 hours. Here are some of the apps produced:

Read more →

A Window into Education

My 6th-grade daughter currently home-schools, taking her classes online with Florida Virtual School (FLVS). She started the school year using my wife’s MacBook Air, but couldn’t get the FLVS software working. My wife called Tech Support, and they told her they don’t support Mac OS X. We tried her on a Linux desktop for awhile, but the wireless connection kept dropping at inopportune times, so I finally broke down and dropped $800 on an HP laptop that runs Windows 8. It’s a little slow–I should have bought an SSD–but it’s working.

Read more →

Give Tyler His Senior Year

Tyler Anderson is a boy I’ve known most of his life. When he was an infant, an aneurysm burst in his brain, and he had to fight for his life. Now, he is fighting for something most people are freely given: a senior year of high school. You can read more here:

https://www.facebook.com/pages/Give-Tyler-His-Senior-Year/560967097269111?hc_location=stream

Here’s the email I sent to Mason Davis (davisw2@duvalschools.org) and Jason Fischer (fischerj@duvalschools.org).

I have known Tyler Anderson since he was an infant. I was in the hospital with him the night the aneurysm burst in his brain. I watched his parents face his near-certain death. I saw the stitching on his head, after his operation, that made his head look like some grotesque, over-stuffed softball. I couldn’t imagine much hope for him.

Read more →

Why your password can’t have symbols—or be longer than 16 characters | Ars Technica

Why your password can’t have symbols—or be longer than 16 characters | Ars Technica: “The password creation process on different websites can be a bit like visiting foreign countries with unfamiliar social customs.”

(Via. @lars on App.net)

When I was young, I remembered everything. Now I am old, and I remember nothing. And I’ve surrendered to password madness. I’ve stored all my passwords in safe since 2007, with my encrypted data file in Dropbox, so I can access it from any machine that runs Ruby. This way, I have to remember only one password, which is long and complex and just onerous enough to type that I feel safe without feeling overburdened.

Read more →

Seeking inspiration? | Derek Sivers

Seeking inspiration? | Derek Sivers: “Because nothing is truly inspiring unless you apply it to your work.

In other words, your work, itself, is the inspiration.”

Stop thinking about it. Stop reading about it. Stop talking about it. Just start doing. You can go back to the thinking, reading, and talking after you’ve done something about what you’ve thought, read, and talked about.

Read more →

More on "Where next for Grails"? • GRAILS.IO

More on “Where next for Grails”? • GRAILS.IO: “Grails 3.0 will be a reinvention of the framework that you love, and we will be making some hard decisions about what we support in terms of backwards compatibility. With Grails 3.0 we plan to allow the creation of applications in different architectural styles. Servlet API applications will always be supported, but we plan to make ‘create-app’ extensible, so that Grails can be used to create a range of types of applications (Batch, NIO, Netty, ‘static void main’ etc.).”

Read more →

LessConf is Dead, Long Live LessConf!

Today begins the last day of the last LessConf. Ever. And we mourn her passing.

Although Steve and Allan, Lords of LessConf, have stated clearly that 2013 marks the last LessConf, they haven’t explained why the run ends today. Is it too much work? Are they just tired of it and ready to move on? Does it drain them emotionally, physically, financially, or otherwise? Too burdensome on their families? Too much distraction to their core business? Have they tired of trying to top themselves, year after year, and fear the pity given to aging athletes who hang on too long? They may explain someday – perhaps even today – but they may not even know themselves.

Read more →

iPhone 6 – Marco.org

iPhone 6 – Marco.org: “They could release a revolutionary 60-inch 4K TV for $99 with built-in nanobots to assemble and dispense free smartwatches, and people would complain that it should cost $49 and the nanobots aren’t open enough.”

Well-crafted line.

Read more →

A $5 app isn't expensive: Customers need to help fix the App Store economy | Macworld

A $5 app isn’t expensive: Customers need to help fix the App Store economy | Macworld: “You don’t buy a Kindle just to enjoy the dictionary and manual that come pre-installed on the device. You shouldn’t buy an iPhone to enjoy only free apps, either. You’re cheating yourself, all because we’ve become conditioned to feeling that $5 is a lot to spend on an app. It’s okay to pay for good products.”

Read more →

Standing Desks

They just added a standing desk to our scrum room, and I’m excited to try it out. It’s wide enough for two people, and we plan to take turns to give it a try to see how we like it. I’ve never used a standing desk, though I often use my laptop at home while standing at the counter, so I’m not starting cold. I hope it keeps me healthier–and that standing while coding doesn’t make me all sweaty or something.

Read more →

Application Idea: Virtualize Cloud Storage

I have a Dropbox Pro account with 107.5GB of storage, an iCloud account with 15GB of storage, and free accounts with Box (50GB), SpiderOak (2GB), GDrive (5GB), SkyDrive (7GB), ASUS WebStorage (8.5GB), Cubby (5GB), and UbuntuOne (5GB). I have plenty of cloud storage space. What I don’t have is a good way to manage that space.

Each of those cloud storage options operates as an island. Most create a directory in my home folder that its daemon syncs to the cloud. I can set preferences on my various devices for what gets synced inside that folder, but that folder is its own beast. If I want to save something to the cloud, I have to decide which cloud service to sync to and either save to that directory or otherwise upload to that service.

Read more →

GeekTool Won't Let Me Drag an Icon to the Desktop

TL;DR – Turn off Path Finder desktop to use GeekTool.

I’ve been meaning to install GeekTool on my new Mac that I bought, um, over two years ago. Time flies. Anyway, I installed it from the App Store, ran it, and tried to drag an icon to my desktop as the instructions say. I kept experiencing these symptoms:

When opening GeekTool, I am welcomed to a blank Properties box with just “Geeklet Settings”. Many tutorials have told me to drag either “file” “Images or “Shel” onto the desktop. I do this and nothing happens. The little black box that appears when you click and drag bounces back up to the GeekTool 3 preference box.

Read more →

Microsoft Doesn't Want Me Using Windows 8

Upgrade to Windows 8 - Microsoft Windows:

Purchasing a full version of Windows 8

If you want to build your own PC and install Windows 8 or Windows 8 Pro, or want an additional operating system running in either a local virtual machine or separate partition (including a Mac), you can purchase the Windows 8 or Windows 8 Pro System Builder products (OEM versions). If available in your country or region, Windows 8 and Windows 8 Pro System Builder products can be purchased at participating stores, you’ll need to ask a sales rep for more information. This version does not include customer support.

Read more →

Kill the Password: Why a String of Characters Can't Protect Us Anymore | Gadget Lab | Wired.com

Kill the Password: Why a String of Characters Can’t Protect Us Anymore | Gadget Lab | Wired.com: “Think of the dilemma this way: Any password-reset system that will be acceptable to a 65-year-old user will fall in seconds to a 14-year-old hacker.”

Mat Honan nails it: the password system is irretrievably broken, and the only security any of us really have is our relative anonymity. We aren’t hacked because we don’t matter, not because our defenses are too strong. And we don’t get to decide if and when we matter enough to be hacked.

Read more →

Designing by Making: your process for arranging furniture can point toward a good process for UI design

Designing by Making: your process for arranging furniture can point toward a good process for UI design:

Many contemporary design process artifacts like field interviews, a wall of post-it notes, and paper prototypes reflect an increasingly antiquated premise: that building a real thing is much more expensive than producing a design. 

Later:

Much software is still designed this way, even though the economics of user interface implementation have changed radically. The effort required to create useful, functional, beautiful, reliable, and performant software application user interfaces has been dropping for years, and this trend will continue for the foreseeable future.

Read more →

My Phone WANTS Me to Text and Drive

While I was driving to work today, my pants pocket buzzed. “Incoming,” my iPhone nudged, and then awaited my response. And I knew my iPhone wasn’t going to tell me again, whatever the message, until I pulled it out of my pocket and looked at its screen. I had three choices:

  1. Pull my phone out of my pocket, look at the message, and respond.
  2. Pull my phone out of my pocket, look at the message, and then respond once I parked.
  3. Leave my phone in my pocket and wait until I parked to look at the message and respond.

Option #1 clearly holds the most danger, as the many “Don’t Text and Drive” campaigns attest. Options #2 and #3, however, require reliance on my increasingly less reliable memory to remember to respond to a buzz that had been stilled for a longer time than my short-term memory can contain. I have a hard enough time remembering my destination while driving, as my passengers will lament, and that seems a tad more important when captaining a car than remembering that my phone once upon a time wiggled. Do you see my dilemma?

Read more →

Everything's broken and nobody's upset /via @shanselman

Everything’s broken and nobody’s upset:

Here’s the worst part, I didn’t spend any time on the phone with anyone about these issues. I didn’t file bugs, send support tickets or email teams. Instead, I just Googled around and saw one of two  possible scenarios for each issue.

  1. No one has ever seen this issue. You’re alone and no one cares.
  2. Everyone has seen this issue. No one from the company believes everyone. You’re with a crowd and no one cares.

Sadly, both of these scenarios ended in one feeling. Software doesn’t work and no one cares.

Read more →

Fixing Wireless in Linux, and Why This Should Matter to Apple

In this post, I talked about my travails getting my son’s USB wireless adapter working in Linux. A few weeks later, it stopped working. Puzzling. I opened a terminal and ran:

lsusb

The computer duly reported that it saw the USB wireless adapter. Then, I ran:

ndiswrapper -l

Yup, the driver was loaded. I checked /etc/modules and verified that ndiswrapper was listed. At that point, I had dangerously stretched my sysadmin abilities. Frustration descended, I set the computer aside, bought my son a MacBook Air, and sent him to college.

Read more →

Good Job Apple, You (Screwed) the World - (by @baekdal)

Good Job Apple, You (Screwed) the World - (by @baekdal):

The idea that one company can own non-inventions is absolutely appalling to me.

(Via Baekdal.com)

Nails it. Yes, Samsung was lazy and unoriginal and brazenly copied far too much, but this is not a victory for consumers. Or developers. This is a victory for big companies and patent trolls and lawyers. As always, money trumps common sense and the common good.

Read more →

More on Wang Ting -- the copyright infringer swiping apps and selling them on the App Store

More on Wang Ting:

It’s frustrating that Apple has no problem playing gatekeeper and keeping apps out of the store for the most trivial and arbitrary of reasons, but won’t play gatekeeper when presented with clear evidence of repeated copyright infringement. A serial infringer who is stealing the creative output of dozens of developers, designers, and publishers gets a pass because that’s the legal path of least resistance for Apple.

Read more →

The 100 Top Rated Amazon Items /via @macdrifter

The 100 Top Rated Amazon Items [Link]:

My Amazon login experience is starting feel like walking past a cell phone reseller booth in a mall.

(Via Macdrifter)

One person’s cut at a different sort of landing page for Amazon–one that displays the 100 current top-rated items. Too busy for my tastes (too many items, too many social sharing buttons), but nice to see a different take. The line about the cell phone reseller booth, though, is classic.

Read more →

XOXCO - Is it time for password-less login?

XOXCO - Is it time for password-less login?: “I think an even better solution would be to remove the password completely, allowing users to login with only an email address. Each time a user needs to login, they enter their email address and receive a login link via email.”

I don’t know how well this would be accepted, but I LIKE the way this guy thinks. I’m SO sick of passwords and managing different passwords and then reading about how some hacker has dumped them all to a random website anyway. Absolutely worth a read and a re-examination of your approach.

Read more →

Mom Charged With Hacking School Computers to Change Children's Grades - ABC News

Mom Charged With Hacking School Computers to Change Children’s Grades - ABC News:

She has been accused of changing her daughter’s failing grade from an F to an M for “medical” in June 2010, and then changing her son’s 98 to a 99 in February 2012, nearly a year after she quit her job as an administrative office secretary to work at another school district.

(Via abcnews.go.com)

Apparently, she used the superintendent’s ID and password 110 times and banged around the systems pretty indiscriminately. What boggles the mind most, though, is that she bothered to change a 98 to a 99. I wonder if her possible 42 years/$90K was worth it.

Read more →

Closed for Business

Closed for Business:

A price-tag of one dollar is passive smoking. You’re killing people around you, for your own short-term benefit.

(Via Matt Legend Gemmell)

Love that line. App store bonanzas are rare, and we’re seeing more productivity apps fall (see: Sparrow) than rise.

You may not agree with everything Gemmell writes here, but you should read it and think. Can you think, for example, of businesses that build Linux apps for a living? Why would Android be any different?

Read more →

Google snatches up Sparrow team to work on Gmail | Internet & Media - CNET News

Google snatches up Sparrow team to work on Gmail | Internet & Media - CNET News: “Leca says that the company will continue to make Sparrow available, and keep it up and running with support, though he did not offer any details about the addition of any new features in the months ahead.”

Here’s a snippet of the email I got:

We will continue to make available our existing products, and we will provide support and critical updates to our users. However, as we’ll be busy with new projects at Google, we do not plan to release new features for the Sparrow apps.

Read more →

Introducing Ubuntu Web Apps: setting the web free of the browser

Introducing Ubuntu Web Apps: setting the web free of the browser:

Making web applications behave like their desktop counterparts improves the user experience dramatically; it’s faster and it reduces the proliferation of browser tabs and windows that can quickly make a desktop unmanageable.

The apps can even take advantage of Ubuntu’s new HUD system, making it even easier to navigate. So Web properties leap to the forefront of modern UI design, making for amazingly productive, fast and fluid applications on the desktop.

Read more →

Software Inventory -- Feature backlogs

Software Inventory:

Every product attracts new feature ideas, and you can’t implement ideas as fast as you can think them up, so you write them down, and this list is called the feature backlog. A lot of the ideas on the backlog are bad ideas, and you merely wrote them down to avoid hurting the feelings of the people who thought them up. Backlogs make everyone feel good.

(Via Joel on Software)

Read more →

Apple is Limiting the New Google Chrome for iOS. - (by @baekdal)

Apple is Limiting the New Google Chrome for iOS. - (by @baekdal):

Apple wants control and force people to create native apps, and are thus limiting the performance of web apps in third party apps. There is no reason why the iPhone and iPad comes with two different rendering engines - one for Apple and one for everyone else. This is purely anti-competitor behavior that limits choice and forces people to create native apps.

Read more →

Cisco provides a lesson: why closed source pwns you

Cisco provides a lesson:

This is why anyone who makes excuses for closed source in network-facing software is not just a fool deluded by shiny marketing but a malignant idiot whose complicity with what those vendors do will injure his neighbors as well as himself.

This is why you should demand open source in your router, open source in your operating system, and open source in any application software that is important to your life. Because if you don’t own it, it will surely own you.

Read more →

The Case For A 7″ iPod

The Case For A 7″ iPod:

The more I think about it, the more I think these rumors are right, but we’ve all been interpreting them the wrong way. The new 7″ iOS device supposedly coming this fall is not an iPad Mini.

It’s a giant iPod touch.

(Via MacStories)

An interesting counter to the direction of the rest of the iPad Mini rumors. It answers the nagging question I have with a 7" iPad with the tap targets all squished smaller than my gorilla fingers. I’d love to see a mockup of what the iPhone UI on a 7" device would look like.

Read more →

Mac Bundle Season

I know of four Mac OS X software bundles on sale right now:

  • MacUpdate ($49.99)
    • Parallels Desktop 7
    • BusyCal
    • ScreenFlow 3
    • Civilization V
    • Jaksta
    • Espionage 3
    • Speed Download 5
    • Attachment Tamer 3
    • KeyCue 6
    • A Better
    • Finder Rename
    • My Living Desktop 5
  • TheMacBundles ($39.95)
    • Bevy
    • Calibrate
    • CallItADay
    • CuteClips
    • Clean Text
    • DiskTracker
    • FolderGlance
    • FX Photo Studio Pro
    • SMART Utility
    • TopXNotes
  • ProductiveMacs ($39.99)
    • RapidWeaver
    • DEVONthink
    • Printopia
    • MailTags
    • HoudahSpot
    • Trickster
    • MacJournal
    • Voila
  • Bundle Hunt ($49.99)
    • iStopMotion 2
    • LittleSnapper
    • TotalFinder
    • Default Folder X
    • Typinator
    • Smashing E-Book Bundle
    • Keyboard Maestro
    • GlyphOcean
    • ThemeFuse
    • PhoneView
    • Picons 1, 2, 3

I’ve linked to the sites, which link to the apps. None of them are affiliate links–I have no financial interest in any of this. With this many software deals afloat simultaneously, though, I wanted one place where I could see all the software!

Read more →

XVim -- Vim in Xcode

XVim:

I work as a freelance Objective-C developer (amongst other things), so I find myself butting heads with Xcode on a regular basis. Recent releases have integrated several separate applications that betrayed Mac OS’s NeXT legacy, which means Xcode now feels almost the exact opposite of Vim.

(Via usevim)

Oooh . . . this is intriguing. I try to set everything in my world to vim keybindings, but that hasn’t been an option in Xcode. I’ll have to give this one a whirl.

Read more →

Installing Cisco / Linksys AE2500 wireless adapter in linux

It took me several hours and missteps to convert my son’s Windows 7 box to Ubuntu, all because of the wireless adapter. It’s a Cisco branded Linksys AE2500. Here’s what I learned:

  • Use the 32-bit version of Ubuntu (actually, I didn’t try 64-bit after switching to the source for ndiswrapper).
  • Download the latest ndiswrapper from sourceforge – follow the instructions at http://tinymelinux.com/forum/thread-865-post-3760.html#pid3760 to compile and install it.
  • The Windows XP drivers (don’t use Vista’s or Windows 7’s) are available at Cisco’s site.
  • This link was helpful as well – especially the part to do “sudo ndiswrapper -m” to automatically load on startup.

EDIT: The “sudo ndiswrapper -m” did NOT automatically load on startup; I had to add “ndiswrapper” to /etc/modules.

Read more →

If there's any doubt that developers have moved to Mac OS X . . . .

A Kickstarter project that caused buzz amongst developers is Light Table, a development IDE that aims to fundamentally shift how we build software. As of right now, it has 5,726 backers (including me) and pledges of $256,145 (the project’s lead, Chris Granger, was seeking $200,000). Paul Graham’s YCombinator noticed the project and included it in its 2012 summer program. If you develop software, you should follow those links, watch the videos, and find out more.

Read more →

Why I Bought Coda 2 Directly From Panic.com

With advance hype rivaling Diablo III’s, Panic has released the second version of their web development tool, Coda. It’s now on sale, as of this morning, for $49 – a 50% savings that’s good only through tomorrow. If you’re going to buy it, now’s the time.

As with several other Mac software vendors, Panic offers Coda 2 both through their own site and through the Mac App Store (MAS). It’s the same price to you either way (by Apple edict), but only 70% of the revenue to Panic if you go MAS. The MAS version, however, has one feature that the Panic download doesn’t: iCloud sync, which Apple opens only to MAS applications.

Read more →

How Steve Ballmer Predicted the Downfall of Mac OS X

Back in the year 2000, Steve Ballmer danced, as they say, like a Monkey Boy, chanting, “Developers! Developers! Developers!” in an infinite loop. Sweating like an offensive tackle in August two-a-days, he hopped and pranced and bellowed his devotion to developers. He may have his struggles running a business, but Ballmer understands how important developers are to a platform, and that devotion, along with the ever-excellent Visual Studio (yes, I said that without sarcasm), keeps the Windows developer stable stocked with thoroughbreds. 

Read more →

Daring Fireball: iOS Low-Hanging Fruit

Daring Fireball: iOS Low-Hanging Fruit: “iOS is by no means feature-complete. But it’s getting harder to identify the low-hanging fruit — the things you just know Apple has to be working on, not just the stuff you hope they are.”

Good post by John Gruber that explores the rumor that Apple will break from Google’s map data in iOS 6. He then goes on to say:

What else remains hanging low on the iOS new-features tree, though? I can think of a few:

Read more →

Two Skeuomorphs: A Radio and a Weight Tracker

The 2007 Transformers movie showcased three stars: Megan Fox, Shia LaBeouf, and an all-new, futuristic-but-retro Chevrolet Camaro. All men drooled over Megan Fox, but the car guys moved on to slobbering over the Camaro. Built to hearken the muscle cars from yesteryear, the Camaro combines old-school styling with today’s technological advancements. The dash, for example, incorporates oversized analog dials and digital readouts. The body shape is pure muscle, yet the windows automatically open slightly when the doors open and roll back up when the doors close to reduce cabin pressure. And it’s rollicking fun to drive.

Read more →

Eclipse: Insufficient access privileges to apply this update.

I use Eclipse for all my Java development (and Mac OS X for all my development). Today, a bug with portlet deployment to Liferay required me to update my Eclipse installation. For awhile, I’d seen (and ignored) an error when I ran Eclipse’s Check For Updates: the Eclipse IDE for Java EE Developers selection was grayed out with the message:

Insufficient access privileges to apply this update.

I assumed that the IT group here at work hadn’t given my user permissions on the /Applications/eclipse directory, and I’d never been motivated to investigate. Today, that motivation came. I quickly determined the fallacy of my assumption and, with nowhere else really to turn, I ran to Google. I found this:

Read more →

Learn to Read the Source, Luke

Learn to Read the Source, Luke:

No matter what the documentation says, the source code is the ultimate truth, the best and most definitive and up-to-date documentation you’re likely to find. This will be true forever, so the sooner you come to terms with this, the better off you’ll be as a software developer.

(Via Coding Horror)

Jeff Atwood’s take on a post by Brandon Bloom. This is my beef with comments as well–some folks push “well-commented” code, but comments rot disproportionally faster than the code they describe. No one opens bugs on comments. No one writes unit tests for comments.

Read more →

Developer Interview Advice from a Designer

I was chatting with one of the designers I work with about his interview experience when he was hired, and he remarked how interesting it was that much of the interview focus was on how his personality and work patterns would fit with the team, and less on his design skills or resume. He asked me what developer interviews here were like, and I said that, back when I did interviews, we made interviewees write code on the white board. He pondered this a few moments, and then said, “Hmm. You should have them write some HTML, too.”

Read more →

Debugging Through Google is Rotting My Brain

A couple of weeks ago I built a National Provider Identifier (NPI) lookup app as a proof of concept for the Vaadin portlet stuff we’re doing. For the search portion, it used a publicly-available, for-pay REST service to search for a provider’s NPI. Our architect, however, pushed me to the freely downloadable NPI data file and told me to set up an Apache Solr instance to do the search.

I know bupkis about Apache Solr except that it embraces the Flickr spelling approach and it lets you search for things, but an online tutorial and a few Ruby scripts later and I had a working Solr instance on my local machine, complete with the entire NPI database. Spinning up Solr with the NPI database on the target Linux server proved just as easy. When I discussed Solr startup scripts with the architect on the project, however, eerie background music started playing and I knew I was in for trouble. He told me to install the Solr webapp and run it on the app server instead of as a standalone server.

Read more →

Check out my site later--I'll remind you!

The creator of Faraday, the new calendar app for iPhone, posted about lessons learned from developing and publishing the app. It’s a good read, worthy of your time.

I’m not in the market for another calendar app for my iPhone–I have the built-in Calendar synced to my Google Calendar, but that goes largely unused because my most used calendar is in Outlook/Exchange/Good. I also have the Cozi app to coordinate calendars among my wife and five children. I wish it were all integrated. Why would I need another calendar?

Read more →

Dropbox rival Space Monkey puts 'cloud' in your house

Dropbox rival Space Monkey puts ‘cloud’ in your house:

Space Monkey uses storage devices located at its users’ premises, not in data centers paid for by the company. When you sign up for Space Monkey, you get a physical networked hard disk with 1TB of storage free for you to use. It’s actually a 2TB drive; the rest gets used by other people on the system.

(Via Hacker News)

Novel approach–if you’re a Space Monkey user, you’re part of the cloud. They give you a hard drive, and half of it has your stuff and half has other people’s, and it’s all encrypted. Not sure how I feel about that, but it certainly drives down costs. I wonder what their drive replacement schedule/policy is?

Read more →

‘New Apple iPad Does Little to Fend Off Rivals’ Advance’

‘New Apple iPad Does Little to Fend Off Rivals’ Advance’:

Even Research In Motion Ltd.’s much maligned BlackBerry PlayBook has seen some recent success after several discounts and promotions.

(Via Daring Fireball)

Seriously? They’re that eager to malign the new iPad that they try to make the PlayBook seem worthwhile? The sentence that leaped out to me from the article was this:

“The new iPad is quite possibly the best tablet on the market today. We have just come to expect more of Apple.”

Read more →

ARC Gotcha – Unexpectedly Short Lifetimes

ARC Gotcha – Unexpectedly Short Lifetimes:

ARC is within its rights to release the object between fetching theCGColor and setting the layer’s background color. ARC variables are released as soon as the optimizer decides that they are no longer referenced, so the compiler is free to release uicolor after fetching the CGColor. Current compiler implementations do seem to wait until the end of scope, but that’s not guaranteed.

(Via Big Nerd Ranch Weblog)

Read more →

Give it five minutes

Give it five minutes:

There’s also a difference between asking questions and pushing back. Pushing back means you already think you know. Asking questions means you want to know. Ask more questions.

(Via Signal vs. Noise)

This reminds me of Marshall Goldsmith’s What Got You Here Won’t Get You There. In that (required reading!) book, Goldsmith explains, among other things, that you don’t always have to be right, or be the smartest in the room. That is a tough but valuable lesson for geeks to learn.

Read more →

Farewell, Anthony Shadid

Where bullets flew, he jotted notes. Where despots abused, he documented crimes. Where war raged, he skulked in its midst, shouting the stories of common people with torn lives. Armed only with his wits and Microsoft Word, he flung himself repeatedly into peril so we would know, without doubt, that war is hell. And then cruelly, he perished from a snootful of horsehair, which is all the more cruel because half his family are doctors and likely could have saved him had they been there when it happened. Anthony, you were amazing, fearless, and a hero.

Read more →

Easy with the alerts

Easy with the alerts:

It’s like mistakenly asking for an extra fork with your ice cream and having the waiter just go ahead and bring an extra spoon, rather than needlessly correct you.

(Via venomous porridge)

Nicely phrased indictment of the misuse of alerts, and also a great example of the opposite: providing a user with helpful information without making them click to acknowledge. And I love the ice cream example.

Read more →

The mad dash to remove something before the deadline

The mad dash to remove something before the deadline:

Just like you shouldn’t let sunk cost determine future decisions, don’t let sunk design trick you into keeping something in your product because you already put the work in. If it’s non-essential, take it out, think it over, and invest the time post launch to make it right.

(Via Signal vs. Noise)

I find it awfully hard to can something I’ve already done! I’ve gotten better at it, though, and will continue to do so.

Read more →

Hey, Mobile! Let Me Change My Password!

Yesterday, my son’s iPhone 4 was stolen, which raises a cluster of inconveniences. Replacement cost, of course, is non-trivial. The pains don’t end there, though. He was planning to hold out for the iPhone 5, assuming it would be released in the fall, and now must decide whether to squander his upgrade price on a 4S (and put the future 5 out of reach), or limp along with a Hanging-With-Friends-less flip phone for 10 months or so.

Read more →

Creator of iOS App Halftone Speculates on Success

I Have No Idea:

My advice is to train yourself to recognize and note the small (but important) reactions that you have when you’re working with your own apps. Dismiss your professional knowledge about the effort it will take and consider the experience alone. Only when you’re willing and able to do what’s necessary to perfect a feature will you be accomplishing your best work. Your exit criteria should be when you’re delighted to use your own app or feature and surprised that you were able to pull it off.

Read more →

Why Apple’s A5 Is So Big, And Siri Is 4S-only -- A Possible Explanation

Why Apple’s A5 Is So Big, And Siri Is 4S-only:

Integration of Audience’s EarSmart on the iPhone 4S’ A5 could explain why Apple decided to not offer Siri on older devices, and why it will likely only feature the voice-based assistant on newer devices going forward.

(Via MacStories)

Here, at least, is an explanation for why Apple doesn’t offer Siri on older iPhones. If it’s really that simple, though, why wouldn’t Apple just come out and say it? That’s taking secrecy too far.

Read more →

Great time to be a developer--quick code solutions

Great time to be a developer:

I am in awe of the free tools available to software developers today. It is amazing how fast, and cheaply, you can turn an idea into productive code. I was so pumped by a recent experience, I decided to share.

(Via Los Techies)

Interesting view into how geeks solve problems. Many people would just drive the route one morning beforehand. Most people would just guess and rely on “new guy” forgiveness for any tardiness. And most people have no ability to solve the problem the way Joshua Flanagan did–in hours, weeks, months, or a lifetime.

Read more →

Dr. StrangeUnix Or: How I Learned to Stop Worrying and Love the Mac

Dr. StrangeUnix Or: How I Learned to Stop Worrying and Love the Mac:

But what the fact that “It’s just UNIX now” got us was the ability to create an X11 application that would run on the Mac.  So we did that – and customers loved it.  Well, that isn’t exactly true.  They acted more like we gave them a new BMW but first used it for one of those things you see at the county fair where you pay a dollar and get to hit a car with a sledgehammer (granted they usually do this with demolition derby cars, not new BMWs).  It was SlickEdit – it worked, but it just didn’t look or feel like people expected it to. Hardcore SlickEdit fans were happy… ish.  They were happy to have SlickEdit, but they missed all the Mac-isms, and were a little perturbed by SlickEdit’s menu being attached right to the top of the application window.

Read more →

On the Usability of Codecademy

On the Usability of Codecademy:

Usability is hard because real users use our UIs and software in different and unexpected ways.

(Via Zen and the Art of Ruby Programming)

Required reading for people who build software. We’ve got to stop dismissing people as “too stupid to use a computer” – if people can’t use what we build, it’s our fault, not theirs.

We’ve been conditioned to blame ourselves if we stumble and fumble when trying to interface with software, goods, or other services. “Where’s the light switch? Oh, there! How stupid of me!” I’ve learned to stop feeling stupid or blaming myself when I don’t “get” something new – I blame whoever dumped their assumptions and curse of knowledge on me. Both you and your audience should, too.

Read more →

App Cubby Blog - Free and Low-Cost Apps

App Cubby Blog - Free and Low-Cost Apps: “The pool of time users spend on smartphones is staggering and growing rapidly, but it is not infinite. The more time people spend with useful/entertaining free apps, the less need they have to actually pay for apps. That doesn’t mean people will never pay for apps — the market for paid apps has continued to grow alongside free and freemium apps — but users have been conditioned to expect more and more for less and less.”

Read more →

Trust is fragile - (37signals)

Trust is fragile - (37signals):

So let’s start with first things first: We’re sorry. We made a mistake. We should have thought it through and remembered that storing your data with someone else in the cloud hinges on a fragile layer of trust. We poked that trust in the eye and it was wrong. We shouldn’t have checked the log files to see the name of the 100 millionth file.

Read more →

Immobile Apps

Immobile Apps:

One of the most painful things we did when developing Glassboard was ban ourselves from Wi-Fi for a week. I live in an area where cell coverage is really spotty, and using our app without a fast connection was eye-opening and humbling. I spent the next week rewriting huge chunks of the app so it would better handle poor (or non-existent) network connectivity.

(Via Nick Bradbury)

Good reminder for minimizing dependence on connectivity. I watched my family members go berserk at the Gator Bowl last Monday when cell coverage was spotty and they couldn’t post pics to Facebook from their iPhones. It seems like the FB app could queue those up instead.

Read more →

Kindle Fire Does Not Fire the Imagination

Kindle Fire Does Not Fire the Imagination:

The Kindle software itself is a lousy reading experience; the justified, un-hyphenated typography is an eyesore, the font selection is depressingly homely, and the line-spacing is visually erratic. The net effect is that it feels like I’m consuming a pirated version of whatever book I’m reading, a sensation which might have been fine on earlier versions of Kindle hardware, but seems lazy on a device capable of producing beautiful results.

Read more →

Beginning OS X Lion Apps Development

The writing, editing, and reviewing are done, and Beginning OS X Lion Apps Development is set to go to press. The publication date is listed as November 9 on both the Apress site and Amazon. The premise of the book is to build a single app throughout the book, illustrating OS X development through the features we add. We think it worked out pretty well. You can read about the app (Graphique, a graphing calculator) on its website at http://grailbox.com/graphique, and it’s available on the Mac App Store.

Read more →

"An Introduction to MapReduce" by Pete Warden; O'Reilly Media

Founder of OpenHeatMap Pete Warden provides a simple introduction to MapReduce, the Google-created framework for examining large datasets. This video tutorial includes four videos: an intro to the topic, writing your first MapReduce job, and then two videos on running MapReduce jobs on the Amazon Elastic MapReduce cloud service. By the time you’re done watching the videos, you’ll understand what MapReduce is and how to write simple MapReduce jobs, and you’ll be ready to move on to more advanced MapReduce topics.

Read more →

Automator for the Web: ifttt

A new web service, If This Then That (ifttt), allows you to wire web triggers to web actions. Go check it out. I just wired this blog to Twitter: anytime I blog something (the trigger or “this”), then I’ll automatically tweet about it (the action or “that”). In addition to informing you about this service, this blog post exists to test whether my ifttt task works!

Read more →

My Review of Larry Bird

Originally submitted at Fathead

Larry Bird NBA Legend. Real.Big. Fathead Wall Graphic

Larry Bird

\

Greatest Player Ever

By hoop33 from Jacksonville, FL on 9/10/2011

 

5out of 5

Pros: Celtic pride, Crisply detailed

Best Uses: Game room

Describe Yourself: Die Hard Sports Fan

Larry Bird was the greatest ever on the best sports franchise ever. This will bring back memories!

(legalese)

Read more →

Using OmniAuth 0.3.0.rc1 with Rails 3.1

I’m posting this so others can avoid the frustration I felt yesterday trying to use OmniAuth in a Rails 3.1 application. After adding this to my Gemfile: gem "omniauth", :git => "git://github.com/intridea/omniauth.git"

and running: bundle install

I got this gem installed: * omniauth (1.0.0.alpha ba4bd3e)

When I tried running anything, however, such as rails generate . . . or rake spec, I’d get a stack trace complaining about: uninitialized constant OmniAuth::Builder

Read more →

Mac OS X Programming Editor Roundup

When I got my first Mac in 2004, I found few programming editors. Since then, however, Mac OS X has birthed many programming editors that match or beat options on other computing platforms. I’ve rounded up the ones I’m aware of, categorized into several sections. While some editors could fit several categories, I’ve confined each to one.

Some of these editors are free, and some cost money. While I understand people who won’t use closed-source software (though I don’t fall in that group), I don’t understand professional programmers who refuse to pay for software. Your programming editor is arguably your most important tool, and you should use the one that suits you best, regardless of cost. None of these editors cost much, especially compared to the value you derive if you program professionally.

Read more →

Hands On with HP TouchPad

Last Friday, I saw where you could get $200 off an HP TouchPad, so I decided to jump. I went to the Staples in St. Johns Town Center with my FatWallet coupon and the ZDNet story linked above, and the salesperson treated me like a thief. He disavowed any knowledge of the $100 off deal or the additional $100 off coupon, muttered “Whoever zee dee net is” when I tried to show him the story, and hid in his manager’s office long enough to call all his friends to laugh at the guy bothering to lie to get a deal on a TouchPad. After finishing his giggling, he summoned his manager, who stormed from her office like Billy Martin protesting a call at the plate and tried to lecture me about counterfeit coupons. Most of her lecture bounced off my retreating shoulder blades, though, and I could hear her still protesting as I walked out. I like to assume that her spittle showered other customers.

Read more →

Peach or Pumpkin?

Rather than catching up on sleep after we finished writing the first edition of Pro Core Data for iOS, Michael Privat and I have been working both on the second edition of that book and on another book: Beginning Mac OS X Lion Apps Development . It’s been a much different kind of project: we build a single application throughout the book, adding functionality to illustrate different aspects of OS X application development as we go. Sometimes it’s a challenge to stay at beginner level while still building a useful application that will eventually end up in the App Store, so we’ll be interested to watch reader feedback.

Read more →

My Review of Optimizing Tables in iPhone Apps

Originally submitted at O’Reilly

Any experienced iPhone programmer understands that you can’t build much in the way of complex user interfaces without tables. Every time you throw together a lengthy list view, tables are a concern. More than that, the stock manner of rendering tables is performance-intensive and results in …

Optimizing Tables in iPhone Apps

\

Well-done and Informative

By iOS Developer from Jacksonville, FL on 7/6/2011

Read more →

Ghostwriter Notes for iPad is New and Noteworthy

As I type this, Ghostwriter Notes, the notepad app for iPad written by my friend and coauthor Michael Privat, is listed in the New and Noteworthy section of the iPad App Store. With each release, this app continues to impress as it adds new functionality (text, DropBox and Evernote integration, picture embedding — the list goes on and on). This is a truly great app, and you should grab it while it’s on sale. Congratulations, Michael!

Read more →

An Event Apart Atlanta

A few weeks ago, my boss sent me an email that said:

http://aneventapart.com/2011/atlanta/

Is this something you would want to attend?

I clicked the link, saw the speaker panel, leapt through the question’s ambiguity, and signed up before my boss could clarify his meaning. Anyone who develops for the web knows that, when it comes to CSS, Eric Meyer cavorts with deities. Ethan Marcotte’s article on responsive web design still pops eyes and blows minds a year later. Jeffrey Zeldman’s web magazine, A List Apart, launched when Internet Explorer 4 was just edging out Netscape Navigator 4 and continues to enlighten web developers to this day. And that’s just a quarter of the all-star panel. This panel has produced some of the leading books and articles on web development. Did he really think I’d say anything but yes?

Read more →

Mobile Development in Jacksonville, Florida

Last night I participated on a panel with Michael Privat, Satya Komatineni, Dave MacLean, and Henry Lee, moderated by Eugene Chuvyrov. All six of us live in Jacksonville, and we’ve all co-authored books for Apress on mobile technologies:

Around 25 people showed up for pizza and mobile technology discussions, and I think most people were entertained and enlightened. We talked about the tools, native vs web, languages, difficulty of development, enterprise-ness, cross-platform solutions, and what we thought the future held for the different platforms. We enjoyed a friendly crowd and a friendly panel, and no one pronounced the earth-shaking or the bewildering. Points I can remember from the evening:

Read more →

Cmd+F Launches Finder -- Thanks, Alfred!

One thing I like about Windows is that Start+E launches an Explorer window. I get frustrated when Cmd+Tabbing to a Finder window on Mac OS X, and for some reason I usually have difficulty noticing the Finder icon in the Cmd+Tab popup. I’ve caught myself pressing Cmd+E to get a Finder window, which of course doesn’t work and I just get more frustrated.

I just got the new version of Alfred, and as a Powerpack user I get Global Hotkeys. I just mapped Cmd+F to Finder (/System/Library/CoreServices/Finder.app), and it launches Finder. Woohoo!

Read more →

Homework by Challenge

Developers love challenges, whether they be programming puzzles, word puzzles, or any other conundrum that flexes their minds and proves how smart they are — whether to others or simply to themselves. The quickest way to con a developer into writing some code for you is to preface your request with, “This probably can’t be done, but . . . .”

Seven years ago, I wrote a book with Bobby Harris on SWT and JFace, and the source code from that book has been posted to various web sites through the years. Consequently, I get occasional emails about the book, the code, or about other SWT problems. Bobby doesn’t get them because his email address from that book has perished, or so he tells me. I always respond helpfully, even though I rarely work with SWT anymore and have to crack open the book for refreshers.

Read more →

Why I'll Never Miss LessConf

How’d you spend your weekend? Did you mow your lawn? Do your laundry? Sleep late, watch TV, or catch a movie? Yeah? Well, I went to LessConf 2011 and got inspired, and now I’m on fire. Hope your lawn looks great.

Today’s artists and creative types have turned away from splashing watercolors on wetted paper, penning gloomy poems in battered notebooks, or recording songs that bemoan past loves. Instead, they’ve embraced a canvas meshing text editors with S corps to build web sites and start companies. The duo running Less Everything, Steve Bristol and Allan Branch, round up the best of them every year and hold a two-day inspiration-fest that leaves you determined to flush the sludge your life mires in and paint the world with your own genius.

Read more →

Red Dirt Ruby Conf and Using Core Data with MacRuby

I just got back from Red Dirt Ruby Conf in Norman, OK. The accommodations were terrific — The Embassy Suites in Norman looks new, and they served us free omelets-to-order every morning. The food was good, the Wi-Fi was blazing, and every table in every conference room had power outlets for every chair. The swag table had plenty for all, and I scored a black Stack Overflow T and a Red Dirt Ruby Conf Macbook Pro cover from Sticker Mule that dresses up my work laptop nicely:

Read more →

Distance of Time in Words for Objective-C

Rails developers have the coolest tools, from migrations RVM to Bundler to Pow. One cool Rails tool lets you explain approximately how long ago something happened in words, with phrases such as:

  • Less than 20 seconds ago
  • About 3 minutes ago
  • Over 3 years ago

You find this magic in date_helper.rb, in the distance_of_time_in_words method. I’m working on an iOS app that synchronizes with a Rails app that uses distance_of_time_in_words to describe how long ago certain events occurred, and I needed to mimic the web app’s description of how long ago things happened. I could have added the description to the JSON that the Rails app returns, but not only did that seem silly, but also it meant that iOS users would have to re-sync to get updated descriptions of how long ago things happened. Better to implement a “distance of time in words” capability for iOS.

Read more →

Quirky PowerCurl -- My New Favorite Product

The power brick for a Mac laptop sprouts two cords: a skinny one that plugs in to the laptop, and a detachable fat one that plugs in to the wall. You can swap a plug for the fat one to lighten your travel load. (Funny story: a coworker didn’t know what the fat cord was for, so almost threw it away. Seeing our power bricks with the fat cord plugged in was his “aha” moment.)

Read more →

Pro Core Data for iOS Table of Contents

I just saw this tweet from @compoundj:

I want 2 buy “Pro core data for iOS” by @michaelprivat & @hoop33, but I can’t find the table of contents online…any suggestions?

Whoops.

I checked both Amazon and Apress, and sure enough — no table of contents. So, I emailed our project manager, and she’s fixing that. In the meantime, here it is, unformatted:


Chapter 1: Getting Started
What Is Core Data?
History of Persistence in iOS
Creating a Basic Core Data Application
Understanding the Core Data Components
Creating a New Project
Running Your New Project
Understanding the Application’s Components
Fetching Results
Inserting New Objects
Initializing the Managed Context
Adding Core Data to an Existing Project
Adding the Core Data Framework
Creating the Data Model
Initializing the Managed Object Context
Summary
\

Read more →

Tri-state buttons in Gowalla 3

When Gowalla released version 3 of their iPhone client, they completely revamped the user interface. Although they switched from a rich olive green to a stony gray and downgraded the app’s icon:

Old Icon

New Icon

in general they improved the interface.

For those unfamiliar with Gowalla, it’s a social location app that allows you to publish where you are to your friends. When you arrive at a recognizable location, you “check in” and choose whether to publish this information to just Gowalla or to other services (Facebook, Twitter, Foursquare, and Tumblr). For each of these services, you can be in three states:

Read more →

Pro Core Data for iOS from Xcode 4 to Xcode 3

Last summer, Apple released a developer preview of Xcode 4 under NDA. When Michael Privat and I began writing Pro Core Data for iOS in August, we figured Apple would release the final version of Xcode 4 and lift the NDA by the time we completed the book. After all, it had taken about a year to write The Definitive Guide to SWT and JFace. We used Xcode 4 for screen shots, instructions, guides, examples — in short, we based the book on Xcode 4.

Read more →

What Coke and Pepsi Can Teach Us About User Interfaces

My oldest child spent much of his life with a loyalty to Coca-Cola matched only by Lassie’s loyalty to Timmy, and would go thirsty before allowing any product from Pepsi-Cola to wet his gullet. He freely drank Coke, Diet Coke, Sprite, Powerade, or Dasani, but never Pepsi, Sierra Mist, Aqua Splash, or anything else from those heathen infidels. Trips to Taco Bell required a swing through the McDonald’s drive-through for a beverage to accompany the latest bean-beef-cheese-tortilla mashup, as runs to the border offer only Pepsi products.

Read more →

Make Diffs Readable

Every time I look at a diff, I’m reminded of the gulf between me and Linus Torvalds. I just know he’s fluent in Finnish, English, and diff, but me? I know the diff syntax. I study the semantics. Heck — I even colorize my diffs. Doesn’t matter. Each time I view a diff, my head cocks to one side, and then the other, in utter bemusement. My hands stab tentatively right and left in flow with the <s and >s as if directing airplanes to their gates. I begin muttering like a paranoid schizophrenic, telling myself that “plus signs means addition, so those lines must be new, and those double @ signs mean an owl is staring at me, no, wait . . . .”

Read more →

Guiffy SureMerge is Today's MacZot, Works Cross-Platform

Today’s MacZot is Guiffy SureMerge, a three-way diff/merge tool. It’s discounted 49% today only ($30 vs $59), and the Guiffy website says a license allows you to use the product on all supported platforms (Mac OS X, Linux, and Windows).

Why am I excited about another diff tool? This apparently is the excellent three-way diff tool built in to the AccuRev client that we use at Availity, where I work, and it makes diffing and merging SO much easier. I use Git for my side projects, and diffing and merging isn’t nearly as easy as it is using AccuRev and the integrated Guiffy tool. Guiffy publishes instructions for using SureMerge with Git.

Read more →

10 Must-Install Mac Applications

I’m a software developer, so bear in mind that my Mac is for working and coding (mostly Objective-C, Java, and Ruby). You won’t find apps for ripping DVDs, viewing videos, or playing Canasta. These are the apps I use over and over to get my job done. Note that I assume a Mac OS X installation, so I didn’t include Safari or Xcode — you’d better have those already installed.

Read more →

From One Steve to Another: It's About the Developers

I got to watch Steve Ballmer, CEO of Microsoft, being interviewed at the 2010 Gartner Symposium in Orlando this past week. Though Forbes lists him as the 33rd richest person in the world, he strikes me as the kind of rube who snaps towels at bare geriatric behinds in the country club locker room and passes gas while guffawing at black tie affairs. He’s raucous, loud, uncouth, and passionate about technology and about Microsoft. In one of his more famous moments, he showed that passion by slopping and dripping across a stage while chanting “Developers! Developers! Developers!”

Read more →

The Quickest Way to Lock a Mac

When you walk away from a Windows machine, you can press <Windows key>+L to lock the screen and keep out the bad guys. Mac OS X has no such shortcut, so the workaround I’ve been using is to go into the Security preferences and check the box that says “Require password immediately after sleep or screen saver begins,” like this:

Then, I set one of the corners of my screen to trigger the screen saver in the Expose & Spaces preferences, like this:

Read more →

Hanging Out with Old Friends: SWT and JFace

I’ve been working on a new project at work that deals with files in X12 format: delimited files that generally use asterisks for field delimiters and tildes for line delimiters. Here’s an example fragment:


ISA*00*          *00*          *ZZ*XXXXXXXXXX     *01*030240928*100803*1628*U*00401*000091929*1*P*:
GS*HC*XXXXXXXXXX*030240928*20100803*1628*91929*X*004010X096A1

ST*837*00411452~\

The way to interpret this file is that each line is a segment composed of elements. The first element in each line, called the zeroth element, names the segment. For example, the first line in the segment above is the ISA segment. The segment then breaks down into its elements, like this:

Read more →

The End of Innovation

Last Saturday, Michael Privat and I drove up to Atlanta to attend Cocoa Camp, a BarCamp-style un-conference focused on Cocoa. We each got two free T-shirts, got to present twice, met a lot of bright folks, learned a lot, and had a great time.

Aaron Hillegass from Big Nerd Ranch gave the keynote on “The End of Innovation.” The man is tall, and he does indeed wear that hat, but he confessed it’s a marketing ploy and he doffs it in the office. His keynote was insightful, though a little depressing, and posited that the end of innovation is here for iPhones and iOS apps. Wow. He followed that, however, with what you can do to fend off the end. Here are the points he made as I understood them:

Read more →

Sibling Squabble over Regular Expressions

I was working in Java yesterday to parse a URL that had a somewhat flexible format, so I set up my unit tests, wrote the code in a declarative fashion using indexOf() and substring(), and got to greenbar. Then I looked at the code and shuddered at its inelegance. Time to switch to regular expressions.

Just in case someone hasn’t heard the Jamie Zawinski quote on regular expressions:

Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.

Read more →

Users Don't Read? They Don't Listen, Either!

The company I work for, Availity, LLC, provides (among other things) a web application that allows healthcare providers to submit transactions to insurance companies and get responses, all in real time. Users learn just one user interface (ours), submit the transaction to us, and we do the dirty work of routing the transaction to the insurance company, receiving the response, validating it according to HIPAA guidelines, and displaying the response back to the user.

Read more →

How to Write a Chapter a Week

When Michael Privat (@michaelprivat) and I signed up to write a book for Apress, we both gulped at the schedule: one chapter due each week. He gulped because, despite being a book virgin, it sounded like a breakneck pace. I gulped as a book veteran because I remembered the work involved in bringing The Definitive Guide to SWT and JFace to press. Writing this book seemed like a good opportunity, though, so we steeled our fingers, set our brains, and started working. We just finished drafting chapter five, and we’re precisely on schedule: five chapters, five weeks. Four chapters and four weeks to go!

Read more →

We Got a Cover!

Every so often I search Amazon for Pro Core Data for iOS, which I did this morning. Last time I checked, we didn’t have a cover image, but now we do! Look here.

I have no idea what that is, either, so I’ve asked our project manager to enlighten us. Any guesses?

We’re also working to update the “About the Author” section to include Michael.

We’re finishing up Chapter 5 this weekend. I’m writing about the undo manager right now.

Read more →

From Ablog to Grailbox

After some discussion with Apress, I’ve decided to move my blog from there to here. Many thanks to Apress for hosting my blog all these years. We must still like each other, too, because not only do I fill my shelves and my nook with all kinds of Apress titles, but I’m finally writing a second book for them. Details to come soon.

Many thanks to Pete Aylward at Apress for helping me move my content from there to here. We had an adventure, as the version of Wordpress running Ablog didn’t have an export feature. Pete exported my entries as a CSV, and I converted them to a WXR (Wordpress eXport Record, if memory serves) and imported them. I had some trouble finding a WXR spec, until I realized I had Wordpress running and able to export entries, so I created a couple of dummy entries (yeah, yeah, I know — ALL of my entries are dummy entries) and exported them to a WXR file. From there, I was able to reverse engineer the format, write a Ruby program to convert the data, and I was good to go. As you look at past entries, you’ll find them out of order chronologically, so I put an original post date on them and was satisfied. You’ll also find some formatting glitches that I may or may not fix eventually . . . .

Read more →

How to Set Up a New MacBook Pro for Development

I recently purchased a MacBook Pro and got a new MacBook Pro at work, so I had two machines to set up. Here are the steps I went through to make these machines tuned for developing iOS applications as well as doing Java, Ruby, and Groovy development. I’d love to hear feedback on things I missed, things you don’t agree with, or things that didn’t work for you.

Special thanks to Rogelio Samour, aka Ro, (@therubymug) and the rest of the folks at Hashrocket for sharing their setup steps for setting up a MacBook Pro for Rails development.

Read more →

6 Things Apple Should Change on the iPhone--and What You Can Do Until They Do

Originally posted 2009-08-30 13:37:19

Salespeople may live from a suitcase, but I’ve lived from a PDA for over a decade. I’ve bounced from Palm to Windows Mobile to BlackBerry before landing on my iPhone about six weeks ago. I love the big, crisp screen, the usability touches, and the abundance of apps–I tap the App Store icon far too often for my bank account’s viability. This is my favorite PDA so far.

Read more →

A Terrifying Experience in the Night

Originally posted 2006-06-08 02:56:35

Just before 5:00 this morning, my daughters’ screams ripped me from sleep. I have two sons and three daughters. The boys fight and the girls scream. That’s just what they do. So screaming girls shouldn’t startle me.

These screams, however, differed from the usual \Give me back my shirt!\ or \No, you can’t use my doll as home plate!\ screams. These were horror flick screams: blood-curdling, ear-shattering, abject-terror-my-life-is-ending screams. As I leapt from bed, my first thought was that one of my daughters had fallen from bed, landed awkwardly on a toy, and grotesquely broken her back. The three girls share a bedroom and have bunkbeds. They all usually sleep on the bottom bunk, however, as they did last night, so that scenario didn’t seem likely.

Read more →

Akiyoshi's illusion pages

Originally posted 2006-03-13 03:34:08

These are some amazing optical illusions, accompanied by explanations for why they fool the eyes. I especially like \Rollers\–I find myself staring at one portion of the image to verify that it isn’t actually moving, and wondering if somehow it isn’t actually an animated gif.

Akiyoshi’s illusion pages

Read more →

Alpha Geek

Originally posted 2006-06-22 16:09:47

I think I’ve found Alpha Geek. He’s one of the Unix sysadmins where I work. He hacks. He tinkers. He solves problems I can’t fathom. He does things like write Linux drivers for his cable modem so he can surf the Web at broadband speeds using Konqueror. Or develop a heap dump tool in a weekend to help us diagnose memory issues in our JVM. This time he’s outdone himself, however. For Father’s Day, he received an iPod Nano. So far, he’s loaded three different operating systems on it.

Read more →

Ant Tasks for AccuRev

Originally posted 2006-03-11 05:14:02

When we bought AccuRev a little over a year ago, we knew AccuRev had no direct Ant support, but that it had a command line tool that we could use inside our Ant scripts. This setup worked well, but required lots of comments for all the command line switches we were passing so that future developers could maintain that section of the script. Besides, the aesthetics of that part of the script grated on me, so I cobbled together an Ant task for extracting files from AccuRev (the \populate\ command), with plans to create more tasks that I’ve never gotten around to fulfilling. The task uses the command-line tool at its guts to do the actual extraction work. You can find the project here: SourceForge.net: Ant Tasks for AccuRev.

Read more →

Antivirus

Originally posted 2004-09-30 08:20:33

My Panda antivirus software informs me that my antivirus updates subscription approaches its end, and urges me to renew. In fact, the warning defaults to one visible option: Renew Now. Clicking a \show more\ button reveals one more option: Remind Me Later. What happened to Shut Up and Go Away?

Antivirus renewal time always brings me angst–should I embrace the ease of electronic renewal? Or, for about the same price, should I just go buy a new \tools\ suite? Despite my annual wavering, I always go for the new tools suite. For the price of a year’s antivirus subscription renewal, I get the latest versions of some new tool suite. Seems a no-brainer. The suites I’ve gone through, in various versions:

Read more →

Apple Mistake: Turning off Wi-Fi

Originally posted 2010-07-06 08:06:58

Everytime my 16 year-old son sees the screen of my iPhone 3GS, he mocks me as if I were carrying a dog turd. He claims that the jagged pixelation tears his retinas, and he hurriedly scurries to the rounded curves of his iPhone 4. Youth have no respect.

Apple, too, has no respect for those of us who live in the intersection of \always in a hurry\ and \need to prolong battery life.\ Like a vampire athirst for blood, we rush from power outlet to power outlet, cursing the anemia of our 3GS’s battery and urging it to suck energy up quickly. We read and obey every blog post that promises tips to prolong iPhone battery life, and it’s never enough.

Read more →

Are Java People Nuts?

Originally posted 2004-07-29 13:23:48

A friend of mine who works with .NET recently expressed some interest in Java. I urged him to download and install Eclipse and give Java a whirl. A couple of days later, he e-mailed me this gem:

\Ok, I looked at Eclipse and Java a bit. Here is my take: Java people are nuts. It is like all the loons from the Linux, BSD, and OS/2 camps got together and decided they’d all use a standard language. Then they invited some Powerbuilder evangelists to the group to give it a bit of a cult feel. I think I’ll stick with Microsoft tools where the feeling I get is ‘it pays the bills.’ I don’t think software development should be a religious experience or an artistic expression. Behold my curly braces! I think it should just get the job done.\

Read more →

Baby Names

Originally posted 2005-06-16 04:49:45

Naming babies has always caused my wife and me angst, and we had to do it five times. I wish we’d found The Baby Name Wizard’s NameVoyager to help guide us. It’s a Java applet that shows name popularities over time: you start typing a name, and it starts displaying a graph of the usage per million babies per year. I discovered that my name, Robert, has steadily declined in popularity since the 1930s. I always knew that my parents were square.

Read more →

Big To-Do in the Land of To Do

Originally posted 2010-05-16 07:41:50

I love software updates, and both my iPhone and my iPad offer me plenty. I’ve downloaded enough apps, both free and purchased, that I can count on available updates a few times a week. Like unwrapping a gift, updating software brings mystery, surprise, and intrigue. What’s fixed? What’s new? And yes, sometimes, What did they break? Always, though, software updates offer the thrill of getting something you didn’t have before. Launching App Store on both iPhone and iPad and checking for updates is part of my daily routine.

Read more →

Caller ID Abuse

Originally posted 2005-03-15 18:01:55

You’ve done it before: you’ve picked up the telephone and dialed the wrong number. Sometimes, you’ve realized immediately, and hung up. Other times, you haven’t realized your mistake until the answering machine answers, and the name on the machine doesn’t match the one in your little black book. Still others, you’ve gotten a live person at the other end of your call who says, \Hello?\ or some approximation, and you don’t recognize the voice so you slam down the receiver. The foreign voice hasn’t always tripped you, though, and sometimes you’ve gone so far to ask, \Hello? Is Bill there?\ only to be rebuffed by the response, \I’m sorry, you have the wrong number.\

Read more →

Cancelling a Credit Card

Originally posted 2007-05-15 14:02:20

Last Sunday–Mother’s Day in the United States–my wife’s purse disappeared. Actually, someone put a crowbar through the passenger window of her van as it sat in our church parking lot and helped him or herself to the purse. The crook felt no sympathy toward a mother of five losing her new Vera Bradley purse with matching wallet and coin purse on Mother’s Day, but I guess crooks don’t spend much time thinking of others.

Read more →

Capital NOT

Originally posted 2008-04-28 01:28:26

People are always careful when typing emails. People are now always careful when typing emails. People are not always careful when typing emails.

Emailers often both read and write the above statements synonymously, simultaneously asserting and negating their intents as they saunter through communication wreckage. I’m not sure why correctly typing \not\ or correctly reading \not\ poses such a challenge, but I bump into this problem at least weekly, if not daily.

Read more →

Crossing the Great Divide

Originally posted 2005-08-07 18:06:23

Do not go gentle into that good night. Rage, rage against the dying of the light.

Thus penned Dylan Thomas, the great Welsh poet, to his dying father. I felt as if he were writing to me, instead, when I left my development job this past week to enter the realm of management.

Yup, I swapped my upturned Dilbert tie for a pointy-haired coiffure. I willingly relinquished 42 IQ points. I traded discussions of refactoring patterns for discussions on how to motivate employees. Did I go too gentle to the world of endless meetings? Did I not rage hard enough against the dying of my programming career? Time will tell.

Read more →

Eclipse Project Settings

Originally posted 2005-07-13 06:12:12

I just came across this, which explains how to put Eclipse project settings like code styles in version control. Eclipse continues to amaze me with how they’re advancing the state of IDEs!

Read more →

Eclipse vs NetBeans

Originally posted 2005-07-05 11:31:39

I came across this post today via PlantEclipse:

http://blogs.zdnet.com/BTL/index.php?p=1546

It’s a long article–too long for me to read fully. The parts I read, however, which represent a significant portion of the whole, demonstrated that the authors:

  1. Didn’t know much about Java development, and
  2. Didn’t know much about JavaOne

Their premise, as I understood it, was that all the JavaOne talk focused on Eclipse, not NetBeans. Further, that developing Java applications in Eclipse encourages OS-specific applications, while developing Java applications in NetBeans does not. They must be Microsoft guys.

Read more →

Ergonomics

Originally posted 2005-02-18 12:28:05

While shooting baskets with my son a few months ago, I noticed my wrist protesting every shot I threw up. Odd, I thought.I didn’t recall injuring my wrist. Since the stiffness in my wrist groaned loud enough to hear only when shooting a basketball, I promptly forgot about the injury.

A couple of months later, my son coaxed me out to the driveway to play some more hoops. My first shot reminded me about my cranky wrist. I immediately concluded that I don’t play basketball enough. Then, I puzzled over why an injury I couldn’t remember continued to linger in my wrist. You’ve probably figured out the cause by now, but I’m a bit thick so it took me a little longer to realize that since I work on computers all day, every day, I must be succumbing to some sort of Repetitive Strain Injury (RSI).

Read more →

Ergonomics Followup

Originally posted 2005-04-05 02:29:36

In an earlier entry I complained about wrist pain, and described my quest to swap out my mouse and keyboard for more ergonomic offerings. I purchased an Evoluent Vertical Mouse and a TypeMatrix EZ-Reach 2030. I’m happy to report that my wrist pain has fled. Wise purchases.

I also have two conversation starters on my desk now. I haven’t yet determined whether that’s a good thing.

Read more →

Expiring Ink?

Originally posted 2008-05-07 11:56:22

I walked past our office plotter the other day and noticed this message on the console:

This picture is blurry but says, \Cartridges will expire in days: 8.\ Are you kidding me? When did ink start expiring like 2% milk? I’ve heard of invisible ink, but expiring ink? How dumb do they think we are?

One of the IT guys happened by while I spluttered about the stain of injustice. He opined that, since plotters weren’t pressed into frequent enough use to turn over enough ink cartridges to net enough profits, HP had to invent another way to extract purchase orders from data modeling departments. Hence, the arbitrary chromatic shelf life.

Read more →

External Recycle Bin

Originally posted 2007-08-25 02:23:12

From the what-will-they-think-of-next department, here’s an external hard drive designed to house your deleted files. It’s shaped like a trash can and sports the recycling logo, so it attempts to cover both the Mac and the Windows scenarios. Truthfully, it looks more like a coffee cup to me. It uses Bluetooth to connect to your computer, so you can just set it on your desk and never think about until you need to recover something, or until you take your laptop on the road . . . .

Read more →

Fine Engineering

Originally posted 2007-10-10 13:54:07

The rain Florida has received over the past few weeks has revealed some roofing shortcomings. We apparently have a roof leak in the building where I work–I walked into work the other day and saw this:

Yep, that’s a hose taped to the ceiling, running down to a trash can in the hallway. And there it’s sat for a week.

Or maybe the leak wasn’t caused by the rain–maybe one of our programmers slipped in a Leaky Abstraction!

Read more →

Forgetting Attachments

Originally posted 2005-07-11 13:56:45

Today, for the 4,256th time in my email career, I sent an email that promised an attachment but sallied forth with no files attached. After the recipient pointed out my mistake, I hastily resent the email with the proper file attached. Then I got to thinking: why don’t email clients detect this sort of behavior and protect us poor digital scribes from ourselves? This seems to be exactly the sort of thing that computers excel at. So, I launched Google and found this:

Read more →

Fun with Amazon

Originally posted 2005-06-17 07:47:29

I came across this blog entry that talks about a web site that allows you to type in a keyword search. It then searches Amazon using that keyword, and builds a graphic of the keyword with the covers of the books it finds. Try it here.

In an ego-stroking, self-aggrandizing move, I tried it using the keyword \SWT.\ Here are the results:

\SWT\

As you can see, Amazon offers a number of books that cover SWT, most of which I own. Just two years ago, however, that number was zero–which is why I decided to write The Definitive Guide to SWT and JFace. Eclipse has all the momentum :-)

Read more →

GTD: Belatedly Responding to Emails in Outlook

Originally posted 2006-05-25 10:33:28

After noticing an online buzz surrounding the book Getting Things Done, I decided to purchase and read the book. The practices it espouses are winning me over–I feel more organized and less stressed than before, and I seem more on top of things at work. Home . . . well, that’s a different story, but my wife has become a disciple of Fly Lady, and together we’re slowly winning the battle against our children.

Read more →

He Who Hesitates . . .

Originally posted 2006-04-08 06:04:31

. . . sometimes gets a good deal. I’ve been using my T-Mobile MDA for about a month and a half now, and am still glad I bought it. I’ve been searching for additional software for it–things that could make my life easier–and came across Pocket Informant, which replaces the standard PIM applets. I haven’t read the user manual yet or learned how to use its advanced features, but it’s clearly superior to the built-in apps. I decided I wanted to buy it, though I haven’t gotten around to purchasing it yet.

Read more →

HIMSS 2006 Day 1

Originally posted 2006-02-13 05:12:31

The HIMSS (Healthcare Information and Management Systems Society) 2006 Conference kicked off in San Diego with a reception last night. I flew out from Jacksonville, FL, yesterday morning with my boss and a coworker. We had a layover in Dallas, where we grabbed to-go barbecue and arrived at our connecting flight as it was boarding, so we made onto the plane just fine. My boss’s luggage, including golf clubs, made it on the plane just fine. My coworkers luggage made it on the plane just fine. My luggage stayed in Dallas.

Read more →

HIMSS 2006 Day 2

Originally posted 2006-02-14 05:41:55

I awoke yesterday morning at 3:30, got up, read, ironed, checked emails, and then went out for a (small) run. You know you

Read more →

HIMSS 2006 Days 3 and 4

Originally posted 2006-02-16 06:16:01

Too many late nights and early mornings make it hard to keep up. I hope to sleep the whole plane ride home.

The last two days, we

Read more →

I have too much hard drive space!

Originally posted 2008-01-15 05:16:38

By the time people who knew nothing about soldering guns started buying home computers, memory was measured in kilobytes. My first computer, an Atari 400, had 16 kilobytes of RAM, and my second, and Atari 800, tripled that. Even the lowly Timex Sinclair had a full kilobyte, which could light up the screen and not much more. People running IBM machines and clones soon had 640 kilobytes of RAM, and and about this time Bill Gates never said 640 kilobytes would be plenty.

Read more →

I Should Have Brought My Mac

Originally posted 2006-02-14 05:12:48

My work-issued laptop is a Dell Latitude D610 with a 2.1 GHz Pentium M processor, 2 GB RAM, and a 60 GB hard drive. It runs Windows XP Professional. It’s a nice machine. When I want to connect to a wireless network, however, which I do often throughout the day (including at night in my hotel room), I must do the following:

  1. Open Services and start Wireless Zero Configuration
  2. Right-click the Wireless Connection icon in the system tray and select View Available Wireless Networks
  3. In the ensuing dialog, under Related Tasks, click Change advanced settings
  4. In the next dialog, click the Wireless Networks tab
  5. Click the checkbox beside Use Windows to configure my wireless network settings
  6. Click OK
  7. Right-click the Wireless Connection icon in the system tray again and select View Available Wireless Networks
  8. Select the network I want to log in to and click OK

Why is this so hard?

Read more →

Import Email Addresses in Apple Address Book

Originally posted 2007-08-06 17:40:17

My parents spent the past three years Down Under doing missionary work. They lived in Melbourne, halfway around the world from us in Florida, USA. Email shortened the distance and resolved the time zone issues, so communication ran freely. Rather than ferry a computer around the globe and foot a shipping bill that exceeded the value of the goods shipped, they bought a computer in Australia and left it behind on their departure. They did all their email in Outlook Express, and my father took care to ask me how to preserve the contents of their address book to bring back to Florida. I told him to export the address book, copy it to a flash drive, and we’d deal with it when they got home. He obeyed me as well as I obeyed him a few decades ago, and instead sent five separate emails announcing his new stateside email address to the people in his address book, one-fifth of the addresses per email, and bcc’ed his new address on each one. He fancied himself clever.

Read more →

Insights

Originally posted 2004-11-30 13:27:29

I can’t convert hours to days, or vice versa. I never have been able to. Sure, I’ve memorized that 24 hours make one day, and that 48 hours make two days. Beyond that, however, I’m lost, and when someone says, \You’ve got 96 hours to deliver that document,\ I’m left fumbling, trying to divide 24 into 96 in my head while cursing the Sumerians.

The other day, however, I overheard my 9-year-old son and his cousin discussing hours-to-days conversions, and my son said, \Think of them like quarters, minus one.\

Read more →

Installing Tiger

Originally posted 2005-04-30 06:03:11

Posted Saturday, April 30, 2005

Yesterday evening, I hustled my children into our mini-van to run errands. Since my wife had already left for the weekend, I reasoned that I’d have plenty of time last night, after getting the children to bed, to install Tiger, so I decided to make a Tiger purchase part of the errands. \Where are we going?\ they chorused. \To Blockbuster, to take back some movies, and then to CompUSA,\ I replied. I didn’t explain further, not out of any desire to conceal the nature of our mission, but because I figured they really didn’t care.

Read more →

iPhones?

Originally posted 2005-05-12 15:21:00

Bill Gates claims that the iPod will tumble towards irrelevance, displaced by mobile phones with integrated MP3 players. Can you sense the iPod envy? Frustrated at his inability to make any inroads into the portable music market, Gates tries to sell the convergence chimera. When have convergent devices pushed anything aside? TVs with integrated DVD players? PDAs with mobile phone capabilities? Peanut butter and chocolate? (Well, I guess that one works)

Read more →

Java Developer Interviews

Originally posted 2006-04-17 21:37:35

Java developer resumes all look alike. They’re all too many pages, and list all the buzzwords: Eclipse, EJB, Struts, Hibernate, Spring, WebSphere. I can tell almost nothing from the resumes that cross my desk, which means I have to interview a lot of candidates for any job opening. Consequently, I’ve conducted more than my share of programmer interviews in my career–for a long time as a potential peer, and more recently as the hiring manager. I’ve written quizzes for screening, asked what their strengths and weaknesses are, drilled them with questions about polymorphism and reflection and collections–everything you’d expect to encounter in an interview. I find, though, that all I really care about is:

Read more →

JavaOne 2007, DayFour

Originally posted 2007-05-14 02:46:03

The last day of JavaOne featured Java-powered toys, introduced sequentially by James Gosling. None of them commanded more than a raised eyebrow or polite applause, except perhaps the programmable dancing robots–and that probably because of their contrast with the merely dull. The parade began with some either from the DTrace project or Project Delight–I couldn’t discern which. He demonstrated tracing a Garage Band-like application, though he should have instead showed an eBay-like application, for he spoke like an auctioneer. You can get incredible amounts of debugging information using DTrace, or Project Delight, from what I gathered.

Read more →

JavaOne 2007, DayOne

Originally posted 2007-05-09 08:34:22

JavaOne, DayOne kicked off to a packed room. John Gage from Sun led the session that saw several Sun luminaries (Jonathan Schwartz, Scott McNealy, James Gosling), as well as other industry leaders like NASDAQ’s CIO and an SVP from Yahoo!. Executives and geeks paraded on and off the stage to announce, demonstrate, or evangelize various Java-related technologies, while the Brazilian cadre near the front waved their national flag and cheered.

Read more →

JavaOne 2007, DayThree

Originally posted 2007-05-11 07:14:01

I didn’t say, \Hello Moto\ to today’s Motorola keynote–to many fires at work to take care of. In fact, 6:00 AM found me standing outside the hotel in my pajamas, trying to find a cell signal. The keynote was supposed to cover usable UIs on mobile screens, I believe. I wish they’d covered cell signals in hotels in downtown San Francisco.

I went to a session titled \Assembling Ajax Apps with Power Tools,\ thinking they’d focus on development tools, not development libraries. I got it backwards. Presented by someone from ICESoft, purveyor of ICEFaces, the session really was a shill for ICEFaces. True, it walked through two other libraries first–jMaki and Dynamic Faces–and credibly explained them, but then finished with ICEFaces is better. I’m not sure yet, but they may be right. They offer drop-in, Ajax-ified components for JavaServer Faces.

Read more →

JavaOne 2007, DayTwo

Originally posted 2007-05-10 09:22:46

I haven’t seen an attendance figure for this year’s JavaOne, but it must approach a gazillion. The logistics of moving this many geeks from place to place would boggle my mind, if I weren’t so focused on preventing my death by trampling. The event coordinators allowed 20 minutes between technical sessions, but it doesn’t suffice to both empty and fill a room before the next speaker begins. Scores of black-clad ushers direct the mass of geekanity with varying levels of success, but the hallways and doorways impose limits that even they can’t overcome. To ensure proper classroom sizing and reduce disappointment, JavaOne requires attendees to sign up for sessions beforehand, and form two lines for each session: one for those who signed up and the other for those who didn’t. This seems to work well, but creates a doorway stranglehold as people have to scan their cards before entering. JavaOne has become crushingly popular, which bodes well for the continued popularity of Java.

Read more →

JavaOne, DayFour

Originally posted 2005-06-30 14:10:19

Last day. I woke up at 4:30 AM, packed my bags, read awhile, then headed to breakfast: pancakes at Mel’s Diner.

The General Session belonged to James Gosling. He was wearing . . . drumroll, please . . . a T-shirt and jeans. His T-shirt sported Duke playing an electric guitar. He actually didn’t say much, but invited various folks up to the stage to show off things.

Read more →

JavaOne, DayOne

Originally posted 2005-06-28 09:22:37

I missed the book signing. By the time I got off the plane, got my bag, and took a shuttle downtown, it was 11:20. I was scheduled to sign until 11:30, so I gave up, found my hotel, checked in, showered, changed, and headed for the Moscone Center.

Clutching my bar-coded registration form, I stepped up to a registration screen . . . which displayed a Microsoft OLEDB error. Hmm. The friendly Sun helpers reset the browser, which was running on Mozilla on <a href="%22http://www.opengroup.org/cde/" data-"="">CDE (which is still ugly), presumably on Solaris, so I don’t understand how MS OLEDB wedged itself in there. I didn’t spin many cycles fretting about it, though, and scanned my form, got a badge, strolled across the street, and got my free backpack and conference materials. It’s a geek-lovers backpack–lot’s of compartments, lots of storage space, and a big Java logo on the back.

Read more →

JavaOne, DayThree

Originally posted 2005-06-30 08:57:37

I awoke this morning chilled. I finally discovered that my window was ajar–no wonder the street sounds penetrate so fully. I’d never thought to check that–only a moron would open a window in Jacksonville, Florida. Opening a window lets out the bought air and lets in the mosquitos. I think I’ll close it tonight–maybe I’ll be able to sleep past 4:30.

Not having any JavaOne experience to draw from, I never realized how impressive a show Sun puts on. The facilities are excellent. The signs everywhere are beautiful, and look as if they’re permanent fixtures in the Moscone Center. Java logos festoon every view. The wireless network works pretty well, though had some problems yesterday. Sun Ray stations sprawl throughout, and anyone with a badge can insert his (or her, but mostly his) card to surf the web, check email, etc. Large movie screens show movies throughout the day. Clusters of theme-colored beanbags offer rest for tired feet, though I don’t think I could cozy up to a public beanbag. A massage station rehabilitates aching backs. I’ve already blogged about the amazing screens used in the general sessions. These folks can put on a show. One idea for improvement: electrical outlet trees so we laptop users can recharge during the day.

Read more →

JavaOne, DayTwo

Originally posted 2005-06-29 08:39:39

When I walked into my room at The Mosser Hotel for the first time yesterday, I gasped. I hadn’t expected a rollicking suite, but neither had I expected a room scarcely larger than my pantry back home. I’d say it’s 10’ x 10’, with a small sink in the corner, a closet whose door can’t open farther than 45 degrees because of the bed, and a bathroom hanging off the corner. I find it quaint, however, and feel a richness of history. I also find it hard to walk in without tripping, but I was never the most nimble guy.

Read more →

JavaOne, DayZero

Originally posted 2005-06-27 14:37:18

The conference kicked off this morning, but I’m still at cruising altitude. After arriving at the airport Sunday evening about an hour and a half before my flight, I slumped down in a chair, cracked the David Baldacci paperback I’d borrowed from the library (<a href="%22http://www.amazon.com/exec/obidos/tg/detail/-/0446610100/qid=1119907383/sr=8-1/ref=pd_bbs_ur_1/104-2439234-9050355?v=glance&s=books&n=507846" data-"="">Wish You Well), and read for 3 1/2 hours. Do the math, and you’ll see how long Delta made me wait. Something about bad weather in Atlanta, but that should be no big deal, right? If bad weather in Atlanta would prevent my flight from taking off from Jacksonville, surely it would prevent the connecting flight to San Francisco from taking off for a commensurate duration, right?

Read more →

Judging a Book by its Cover

Originally posted 2005-06-14 22:33:56

Grandma Thelma always admonished, \Don’t judge a book by its cover!\ whether or not any reading material lay nearby. Her waggling finger didn’t refer to Great Expectation’s dust sleeve, but rather the importance of looking past superficialities to understand the true nature of other people or things. Of course, we didn’t always listen to Grandma Thelma, especially that part about keeping baseballs out of her petunias, but we recognized the merits of this nugget, didn’t we?

Read more →

Kudos to fetchmail

Originally posted 2004-06-25 11:57:35

My e-mail was broken. Irretrievably broken. I knew I had messages out there, out in the ether, but I couldn’t pull them down–not using Thunderbird under Windows XP, nor the Mail app on Mac OS X. Both applications reported no messages on the server, hoping to put me off with pretense. Frustrating.

Then I remembered the Linux box that sits in my closet, the one that I sometimes SSH into from the outside world so I can read my e-mail from any Internet-connected machine. I run fetchmail on it to retrieve my mail, and mutt to read my mail. With some amount of resignation, and even less hope, I SSH’ed in and ran fetchmail. Like obedient ducklings behind a matronly mallard, my messages waddled through the wires to my Linux box, where mutt scooped them up and offered them for my perusal. No lies. No sham. No pretense. It saw the messages and pulled them down.

Read more →

Kudos to Parker Pens

Originally posted 2006-11-05 03:58:52

I collect pens, a hobby I inherited from my father. In a digital world, I habitually revert to analog paper and ink. Writing with a fine pen provides an exquisite tactile experience that everyone should enjoy. I love fountain pens and roller balls, in that order, and tolerate ballpoints. While I use the Logitech io2 Digital Pen for taking notes, I keep hoping they’ll release at least a roller ball version. A coworker recently returned from Italy and gave me a gorgeous wooden dip fountain pen, which I’ve been using with an inkwell to sign people’s time sheets. My pen habit used to get me in trouble with my spouse, until I told her to think of them as my jewelry, and since then I’ve had no problems with her.

Read more →

LessConf 3010 Day One

Originally posted 2010-05-22 08:39:08

I first met Steve Bristol in 2007 at the inaugural RubyJax meeting. I walked into the meeting expecting a typical tech gathering of strangers: people sitting as far away from each other as the room will allow, reading email on their smart phones and acting as if they’d rather be anywhere else, and hoping someone else would start the conversations. Steve (along with Jon Larkowski) set the tone for the meeting. He started the conversations, and was no stranger (though he was stranger than I expected). As people filed into the room, he acted as if his life had been leading to this moment, that he’d hoped to meet that person for so long and was as happy as a Macolyte on iPad-release day to finally do so. That night, he was open, fun-loving, needling, profane, unkempt, and raw, and has been so every time I’ve seen him. The RubyJax user group continues in that vein, and is the most social, smartest group of people I’ve ever hung around. It’s worth moving to Jacksonville, just to come to our meetings!

Read more →

LessConf 3010 Day Two

Originally posted 2010-05-23 20:35:21

The folks at Storenvy cooked us breakfast: pancakes, chocolate chip pancakes, and bacon pancakes. Lots of buzz about the bacon pancakes. My love for Bacon, Egg, and Cheese McGriddles drew me to the bacon pancakes. I took an eager bite, a charitable nibble, and gobbled a chocolate chip pancake. I’ll keep my bacon and pancakes separate in the future.

Alex Hillman, cofounder of IndyHall, grabbed the podium first and strode forcefully into a presentation sans slides. He should have used slides, or he should have had less to drink at the party last night, or something, because he abruptly faltered, looked blankly at the crowd, confessed that he was stuck and stumbling, and turned pleading eyes to Steve Bristol. Bristol tossed some prompts from his seat (\You were saying that . . .\, \Talk about . . .\), and Hillman tried to leap on them, sputtered a bit, then said, \Steve, I’m dying up here,\ so Steve bounded onto the stage and co-presented.

Read more →

Living with Windows (Lifehacker)

Originally posted 2006-06-02 03:53:07

I came across this that explains how to make Windows a little more Unix-like. The first hint tells you to turn off the desktop icons and turn on the Desktop toolbar. I have a small collection of icons on my desktop. It’s the worst place I can think of to put them, except for any other place, so I live with them there and have to periodically click on Show Desktop or move a slew of windows to the right to access them. This tip’s a keeper.

Read more →

Logitech io2

Originally posted 2005-10-14 14:10:23

A few weeks ago, I bought a Logitech io2 Digital Writing System. Now that I’m in management, I attend numerous meetings, I take copious notes, I jot down multiple to-dos, and I have to use my notes later and complete all the tasks I accept.

For awhile, a short while, I tried using my PDA to take notes and enter to-dos, but I just can’t input text fast enough on a Palm. Toting my laptop to every meeting sounded too painful to contemplate. Scribbling on paper with a rollerball, while quick at the moments that required quickness (i.e. during meetings), meant that I consumed too much time transfering to-dos to Outlook and lost too much information because my notes weren’t searchable. I was swimming through my synchronous work and drowning in the asynchrous tasks.

Read more →

MacBook Pro: One Week Report

Originally posted 2007-10-08 14:10:46

After using the MacBook Pro for a little over a week, I must confess: I miss Outlook. Admittedly, Outlook 2007 has three years on Entourage 2004, but I’m using Outlook 2003 so Entourage has a one-year advantage. My struggles:

  • Meeting Requests do not display whether they conflict with existing calendar items. I have to view the calendar to check for conflicts.
  • Meeting Requests do not automatically delete when I accept them.
  • The Move Message dialog does not remember the last-selected folder, but always has the top folder selected.
  • Out of Office messages go out for every received message, not just for the first message for a particular sender, and go out only if my Mac is running, Entourage is running, and I’m connect to Exchange. This was a fun surprise when I returned to the office and hooked my laptop back to the network and automatically sent out a slew of Out-of-Office messages.

Maybe some of these can be fixed with settings, or maybe Entourage 2008 rectifies these, but for now I stray back to my Windows laptop and Outlook. I spend my day in emails and calendar items. I’ve ordered the only Entourage book I can find, the imaginatively named Microsoft Entourage for Mac OS X, to see if it can jump-start me toward equaling or even surpassing Outlook 2003’s functionality. I’m also looking for alternative OS X Exchange client options that will give me full email and calendar functionality. Any suggestions?

Read more →

Macs to the Max

Originally posted 2007-05-09 18:18:17

Like any typical company, the place where I work relies on Dell/Windows/Outlook/Office for all internal computing needs. Even our Unix sysadmins run Windows XP on their desktops, though they hurriedly cover their stock Windows wallpaper with PuTTY windows. I can’t fault our infrastructure team for choosing this platform–every company does, all the employees know how to use it, and it works (except for that time a virus slipped through . . .). I long, however, for the speed, simplicity, and power of a Mac at work. I bug our Director of Infrastructure about it from time to time, and he sends me any article he can find decrying Macs–often resorting to stories from the ’80s, when he still had hair.

Read more →

Marketing

Originally posted 2004-10-27 10:00:48

My three-year-old daughter looked me in the eye a few weeks ago and announced, \Dad, I’m switching to Geico.\ Geico, for those who are unfamiliar, is a car insurance company in the US. They run a fairly aggressive marketing campaign (TV and radio) using a gecko as a mascot, and they claim you’ll save 15% or more on your car insurance by switching to Geico.

That was good for a chuckle, and I’m sure the Geico marketing folks would be pleased to know of their mindshare penetration (albeit by an audience unable to avail themselves of Geico’s services). I recently read Eric Sink’s review of The 22 Immutable Laws of Marketing, and it interested me enough to buy the book. Reading it interested me enough to buy some more books by this author, including The Origin of Brands. After reading a few books, I felt like I was reading redundancies, but I still found the subject fascinating.

Read more →

More Proof that Apple Will Win

Originally posted 2007-08-21 17:17:22

Last year I built a computer with parts ordered from newegg.com. Over time, and because of its faster processor, larger hard drives, and buckets more memory, my home-built computer has replaced my aging iBook G4 as my principal away-from-work computer. It runs Ubuntu 7.04 (64-bit), and Compiz Fusion amazes everyone that happens by. I realize that building my own PC separates me from Grandma Myrtle, Joe Sixpack, or whatever other metaphorical average computer user you favor, but I’m no Jeff Atwood. I got recommendations from my then local LUG president for which parts to buy. When my new machine wouldn’t power on, I sought the help of my local office alpha geek, who directed me to check my power cables to the motherboard (I had ’em backwards). Without them, I’d have had to get a Dell, dude. In other words, I’m a former developer who’s now in management.

Read more →

Music

Originally posted 2005-03-16 16:06:45

I listen to the same CD over, and over, and over again.

. . . Even better than the real thing . . .

It’s U2’s Ach Tung, Baby, and it blends plaintive wails with blistering beats. It rocks. It’s one of my favorite CDs. By one of my favorite groups. And I just keep listening to it.

. . . Even better than the real thing . . .

Read more →

My MacBook Pro Saga

Originally posted 2007-09-13 17:48:17

I bought my first Mac in 2004: an iBook G4. Before then, I called Macs

Read more →

My MacBook Pro Saga Completed

Originally posted 2007-09-28 19:03:53

Apple fixed my MacBook Pro for free. They replaced the surface of the laptop–the part that surrounds the keyboard. No more random reboots. The IT guy from work temporarily misplaced the power cord, which delayed a fruitful reunion, but I’m now happily typing away on the backlit keyboard. I may never touch a Windows machine again!

Incidentally, I’m typing this blog entry on a trial version of MarsEdit, which I downloaded because of Guy Kawasaki’s recommendation. I’d rather use Soho Notes, but I can’t figure out how to make it work with WordPress.

Read more →

No Fluff Just Stuff 2007 Orlando, Day One

Originally posted 2007-08-25 02:59:27

I’m at the Sheraton Four Points Hotel in Orlando, Florida, at No Fluff Just Stuff. Both an offsite management work meeting all morning and an accident on I-4 delayed my arrival past the registration, opening remarks, and the first session, but I arrived in time for the second session: David Geary’s presentation on JavaScript frameworks. He covered aspects of Prototype, Scriptaculous, and Rico with overview, code, and demos. Seeing some of the possibilities that these frameworks offer was certainly interesting, and the Rico Accordion will tempt me to implement a solution-driven design (\This is cool! Now, what problem can I apply it to?\), but I was more excited for his next talk: Ajaxian Faces. I want to understand the synergies between JSF and Ajax.

Read more →

No Fluff Just Stuff 2007 Orlando, Day Three

Originally posted 2007-09-11 13:05:45

Day three started with Bruce Tate, Ruby, and Rails. Tate isn’t entertaining nor dynamic (a la Scott Davis), but his presentation skills suffice and his material is excellent. Leading Java developers bemoan his defection to Ruby for a reason.

I’ve been playing with Rails and Ruby (see my password management program at http://safe.rubyforge.org), but I have much to learn about the Ruby way. For example, I understand what duck typing and mix-ins are, but I don’t understand when or why you’d use them, nor do I really get their power yet. Tate’s presentations pushed me farther along that path.

Read more →

No Fluff Just Stuff 2007 Orlando, Day Two

Originally posted 2007-09-02 16:38:03

I spent the morning of Day Two with David Geary, JSF, Seam, Facelets and Ajax4jsf. The session came in two parts, and I could have stayed for a part three and a part four if they’d been offered. The Seam/Facelets/Ajax4jsf development model represents significant advancements beyond the Servlet/JSP model we’re preparing to upgrade, and Geary does a terrific job presenting those technologies. He seems to get into a lot of different technologies. He also presented Rico, Prototype, and Scriptaculous, as well as a two-part series on Google Web Toolkit. He presents very well, with clear-cut examples, and leverages the Mac’s built-in zooming and window hiding capabilities to display and focus what’s relevant.

Read more →

No Fluff Just Stuff Tampa -- Day One

Originally posted 2010-04-16 20:57:05

No Fluff Just Stuff began in Tampa today. This is my second NFJS conference – my first was in 2008. Five of us from work drove down from Jacksonville, all expecting great things. So far, the conference hasn’t disappointed.

After check-in, at which we were handed a badge, a binder, a commemorative 10-year T-shirt, and a 2GB branded thumb drive with all the conference materials pre-loaded, we went to the various sessions. The first session I attended was Neal Ford’s Implementing Evolutionary Architecture. He talked about how architecture evolves, going from a spaghetti-pile of connections among servers and services, to a clean implementation of an Enterprise Service Bus, to a renewed spaghetti-pile because the policies and bureaucracies around the ESB make stringing wires around it faster and easier. He asserted that the web as a platform needs to be more evolvable than that.

Read more →

No Fluff Just Stuff Tampa -- Day Three

Originally posted 2010-04-19 15:44:08

I started the day plopping down for breakfast at the same table with Nate Schutta and chatting him up about various technology questions and issues. I then went to his talk: jQuery: Ajax Made Easy. I think I would have chosen a different title for the talk – something like jQuery: An Overview, with Some Comparisons to Other JavaScript Libraries. It was a good talk, though, and stressed the importance of using a library. The only way to do JavaScript \wrong,\ he said, is not to use a library. He talked about the paradox of choice that all the JavaScript libraries puts us in, and explained why jQuery is a great choice. Here are some other highlights:

Read more →

No Fluff Just Stuff Tampa -- Day Two

Originally posted 2010-04-18 06:41:23

As Moore’s Law gets repealed and multicore processors demand that we actually learn to write good, safe, non-buggy multi-threaded code (Note: if the business people where you work understand the term \race condition,\ you’ve got threading problems), functional languages gain appeal. I’ve eschewed Haskell, started looking at Erlang, and vowed to look at Scala. When I saw Ted Neward’s The Busy Java Developer’s Guide to Scala: Basics on the schedule, I figured I’d go to get a Scala jumpstart.

Read more →

OnStar and Usability

Originally posted 2004-08-23 10:34:33

Here in the US, OnStar is running a radio ad trumpeting the power of their flagship service. This system allows motorists to press a button inside their vehicles while they drive down the road, which contacts an uber-service for fixing all their problems and curing all their woes. You can read more about it here. DISCLAIMER: I’m not associated with OnStar, nor do I have access to it in any of my vehicles. I have never used it, and know virtually nothing about it.

Read more →

Password Policy

Originally posted 2006-02-10 14:25:07

An internal audit at the company where I work determined that we should strengthen our corporate password policy. Consequently, our head of data security drafted a new policy and began to solicit comments. At a company-wide meeting, he officially presented the policy one month before its institution. Management continued to socialize the new policy to prepare folks for the rollout. No one complained. No one squawked. No one cared.

Read more →

Playing with Core Data

Originally posted 2005-11-24 10:50:32

I continue to delude myself into believing that I’m going to learn Objective-C and Cocoa. My bookshelf droops like a swaybacked cayuse with all the Cocoa and Objective-C books I’ve purchased (side note: they all seem more folksy than technical, demonstrating that the artsy culture must permeate everything Apple). I’ve leapt from the object.method syntax to [object message]. I’m coming to grips with creating live objects in a binary file during development, although I still prefer doing such things in code (even simple GUI builders make me nervous these days). After a 6-year hiatus from C++ and COM, spent basking in Java’s garbage collection, I’m maneuvering release rules and reference counting. I even added a patch to the excellent iTerm (it’s the one that adds a keystroke to toggle transparency, if you must know, but it missed the 0.8.1 release).

Read more →

Registering Peek-a-Boo Process Throb

Originally posted 2008-04-22 05:57:05

Last week macZOT offered a discount on an application called Peek-a-Boo Process Throb. I’d never heard of the application, and am not yet sure how often I’ll use it, but I found the concept interesting, the execution well done, and the price negligible, so I paid the registration fee. Some time later, I received my registration key in an email, so I copied the key to the clipboard and command-tabbed to Peek-a-Boo to figure out where to paste the key. The following dialog popped up:

Read more →

RubyJax Inaugural Meeting

Originally posted 2007-11-17 02:37:34

Last Thursday I attended the inaugural meeting of RubyJax, the new Ruby users group in Jacksonville, Florida. I drove straight from work and strode into the meeting wearing a golf shirt, crisp khakis, and tan Cole Haans, and instantly felt overdressed. A few people sported clean jeans and polos, but I’d have blended much better in a techno T-shirt, battered dungarees, and sandals. Hoops and baubles festooned nostrils and earlobes, and I knew instantly that these folks never proactively facilitated synergies nor thought outside the box to formulate win-win action plans. These were bohemian coders, not corporate drones, but they betrayed no suspicion when extending me hellos and handshakes. In fact, these bonhomous bit-twiddlers welcomed each newcomer as if reconnecting with long-lost cousins at Uncle Dale’s family reunion. I’m used to more reticence and reserve at technical meetups, and I enjoyed the agreeable ambiance. We were there to connect and have fun, not hide behind Dependency Injectors or Object-Relational Mappers.

Read more →

Running on a Mac

Originally posted 2005-03-31 20:30:10

I’ve had my iBook, which introduced me to both Macs and Mac OS X, for almost a year now. When I first got it, I struggled to find software for it–what tools should I use? Which work well? Which don’t? Over time, I’ve amassed several software tools that help me to be productive.

Today, I had lunch with a former colleague, who confessed that he’d just popped for a 17\ PowerBook. Like Paul Graham recently said, the techies are moving to Macs. I told him (my friend, not Paul Graham) that I’d send him a list of the software I use. Later, I realized I might as well blog my list, so more people can benefit from it.

Read more →

Safe 0.2 Released

Originally posted 2007-08-21 18:05:02

I just released version 0.2 of Safe, the command-line password management program I’ve been using. This is the first public release, and it’s still alpha, but I’d love feedback. I’m using it on Linux, Mac OS X, and Windows. It requires Ruby, Rubygems, and the crypt and highline gems.

Read more →

Safe 0.5 Released

Originally posted 2008-04-09 13:16:31

I just released version 0.5 of Safe, the open-source command-line password management program written in Ruby. This version adds diffing and merging Safe password files. I keep my Safe file on a USB thumb drive, but I also copy it to the various computers I use in case I don’t have my USB thumb drive with me. Sometimes the files get out of sync. Now I can diff and merge the files.

Read more →

Serendipity

Originally posted 2004-08-11 12:49:00

Recently, my company purchased a Sun 420R for testing purposes, so I’ve been installing software on and configuring it. For some reason, it couldn’t get out to the Internet, though it saw the local network fine (aha! a clue!). I get together with our sysadmin, who knows virtually nothing about *nix but is a Windows whiz, and we pored through Linux books (we don’t have any Solaris ones) and man pages, and finally determined:

Read more →

Social Browsing for the Creative Class

Originally posted 2006-06-17 12:48:19

I just came across Flock – The web browser for you and your friends. It’s a web browser based on Firefox for Mac OS X only, and it’s in beta. It differs from other browsers in intent: it aims to integrate with popular web-based social tools. I don’t know its roadmap, but Flock currently integrates with:

  • Blogging software (I’m typing this entry on its built-in blog client–right-click in any page and click on the Blog This menu entry to launch the client)
  • Photo-sharing software (currently Flickr and Photobucket)
  • RSS Feeds
  • Bookmarking (currently del.icio.us and Shadows)
  • Search (defaults to Yahoo)

How does it work? This is my first attempt with the blogging software, so I don’t know yet how well the publishing works. The client seems workable enough. Here’s a screen shot:

Read more →

Source Control

Originally posted 2005-07-13 05:49:40

Last night, I gave a presentation to The Jacksonville Developers User Group titled “Source Control Using CVS, Subversion, and AccuRev.” You can download the Powerpoint file here, or view it online here. We had a good discussion, good questions, and I hope I made a few new converts. I felt a few tense moments when I discovered I’d left my laptop power cord at home, and the new battery I’d just put into it had died. I’d forgotten that when I just close the lid, Windows goes into standby . . . and stays there until the battery is dead. My iBook doesn’t do that. Luckily, I had the latest version of my presentation on my keychain USB key, and the facility where the meeting was held had a PC in the podium with a USB extension cord ready and waiting. Phew.

Read more →

Staffing Companies--What Will They Think of Next?

Originally posted 2006-06-14 14:00:56

As someone who manages a growing team of people, I often have positions to fill. To assist with finding excellent, highly-qualified, motivated, high-energy people, I work with several staffing firms. When I have an opening, I send them the position description, they send me resumes, I and my team review the resumes, and we interview the people who pass the resume sieve. We hire people based on how they do in the interviews, how well we think they’ll fit on the team, and all the other criteria you’d expect. One item that has no bearing on whether or not we try to bring someone in is the staffing company from whom we received the resume. I don’t play favorites, and I expect that few people do. I have to count on the people I bring in to do the work and make me look good. Making me look good requires talented people!

Read more →

Surviving Meetings: The Limerick Challenge

Originally posted 2010-03-23 16:24:39

An unknown author penned a self-describing limerick (meta-limerick?) that perhaps represents the pinnacle of its genre:

The limerick packs laughs anatomical In space that is quite economical, But the good ones I’ve seen So seldom are clean, And the clean ones so seldom are comical.

You can read more about limericks here.

Isaac Asimov, who wrote about almost anything you can think of, published a series of short stories, across several volumes, about a men’s group who called themselves The Black Widowers. These men dined, discussed, dissected, and divined the answer to some puzzle in each story. The stories are quite good, and I recommend them heartily. In a few stories, until an editor convinced Asimov otherwise, one of the characters delivered a limerick summarizing a book of Homer’s The Iliad (or was it The Odyssey?).

Read more →

T-Mobile MDA--Impressions after 2 1/2 weeks

Originally posted 2006-03-11 03:40:47

The day the MDA came out, Feb 21, I went to a T-Mobile store and bought one. The next day, a coworker who has a Windows Phone/PDA from yesteryear, couldn’t stand himself and bought one, too. The day after that, another coworker, who has gone staunchly PDA-less his entire life, caved in and bought one, too. He had some problems–he called around the city to all the T-Mobile stores, and they were all out. He finally found one, though. So, all three technology directors at our company carry one of these devices. Our boss, the CTO, carries a Treo 650 and envies us.

Read more →

Tech Books Deals of the Day: Sinatra, Haml, and Heroku

Originally posted 2010-04-02 16:09:57

I buy books, but I swear I could quit any time. The bookshelves in my home swing low like telephone wires, topped with books perched like crows wing-to-wing and two-deep to maximize the shelf space. I’ve wedged clouds of books into the gaps above the bird-books, distending the shelves even more. Authors and genres span a gamut that rivals public libraries: Tolstoy, Petzold, non-fiction, thrillers, Bryson, Bloch, contemporary fiction, tech books.

Read more →

Technical Teens

Originally posted 2008-11-11 12:33:17

My oldest child turned 15 yesterday. We had planned a family party for him–eat barbecue, open presents, eat cake–but we ended up canceling after he cussed me out at church the day before. He doesn’t live at home, and we decided he’d rather not spend his birthday with his parents. You see, this child has bipolar disorder, oppositional defiance disorder, and obsessive compulsive disorder. I could tell you stories. Parents of children with mental illnesses would nod their heads knowingly, and the rest of you would stare in horror and disbelief. If you’re interested in what life is like for parents raising a bipolar child, you can read my wife’s blog at http://parentingyoyos.blogspot.com.

Read more →

Testing Tools

Originally posted 2005-08-25 07:09:56

While at JavaOne last June, I wandered past Cenqua’s booth. The brochure for Clover caught my eye, so I spent some time chatting with one Cenqua’s reps about it. I took the brochure, stuffed it into my backpack, and didn’t really think much about it again.

Until the other day, as we talked about how to get better at writing solid code. We have begun to infuse our development with JUnit tests, and I wanted to see how well we were doing. So, I downloaded a trial of the Ant version of Clover, followed the steps to insert it into our build process, generated an HTML report . . . and sat agog. I’ve got to buy this tool.

Read more →

The Best Code I Ever Wrote

Originally posted 2010-04-09 16:37:48

On Christmas 1981, our parents gave my brother and me our first computer: an Atari 400. I was in 7th grade and my brother was in 8th. My parents really couldn’t afford to buy this gift, but they consistently made sacrifices to make sure our active minds stayed engaged. They also gave us the Atari BASIC language interpreter, which came on a cartridge, and the Atari 410 cassette player so we could both store and load programs. The 400 was later replaced by an 800, the 410 by the 1010 cassette player (which moved the power supply to a wart) and later a disc drive (1050?). We wore all that computing power out. These were the days of Softside and Compute! magazines, which offered entire code listings that we painstakingly typed in, ran, debugged, and ran again. We read those magazines like we’d read comic books a few years before, typing in program listings, learning to program, and writing our own programs. We fired at spaceships, redefined character sets, drew mazes, and programmed sounds. It’s like the Bill Gates story, but without all that pesky fortune and fame.

Read more →

The Elite Eight Development Principles

Originally posted 2009-04-18 03:11:31

As a management team, we recently crafted and presented a list of development principles for our developers to follow. The goal was to provide vision and direction, not to dictate the outcome of every scenario. Here’s a somewhat sanitized version of what we presented.\

The Elite Eight Development Principles

  1. Code with your teammates in mind. \
  2. Don’t break the build. \
  3. If it ain’t in source control, it doesn’t exist. \
  4. If it ain’t testable, it doesn’t work. \
  5. If it ain’t repeatable, it was never done. \
  6. Think more, write less, and keep it simple. \
  7. You’re better with tools. \
  8. Share what you learn. \

#1: Code with your teammates in mind

\It’s OK to figure out murder mysteries, but you shouldn’t need to figure out code. You should be able to read it.\ – Steve McConnell

Read more →

The Fate of New Computers in My House

Originally posted 2008-12-12 07:27:04

In recent months, two computers in my home reached the ends of their useful lives. The first was the HP desktop that my children use. They’ve loaded so many game demos on it over the years that it had become painfully sluggish. I was going to wipe and reinstall the OS, but the DVD drive doesn’t work. I had replaced the drive some months ago, and it worked for a week then quit working again, so it’s probably an issue with the motherboard. The computer is old enough, and my time is valuable enough, that it was simply cheaper to give the computer to a geeked-out nephew and buy a Lenovo on sale for less than $500 (3 GB RAM, 500 GB hard drive, 19\ monitor).

Read more →

The MacZOT Revolution

Originally posted 2006-04-25 02:27:55

Mac users should get to know MacZOT, a pioneering web site for software marketing. In a nutshell, they work with software developers to sell their applications at a lower price for a day, trying to create a buzz around the product. Their approach seems a little offbeat, hawking such offerings as MyzteryZOTs, which are grab bags of applications at a low price–you find out what they are after you buy them.

Read more →

Three Egregious Outlook Problems

Originally posted 2010-03-31 10:37:09

My workplace uses the Outlook/Exchange juggernaut to manage email and calendars. This post doesn’t argue for or against that solution – it’s in place, it works, and it allows me to communicate and schedule my days. Rather, this post pleads for Microsoft to change three things in that platform:

  1. They always mean \manager,\ never \manger\
    OK, around Christmastime, someone might send out nativity scene notice, but most people are talking about managers. Outlook’s spell check doesn’t flag \manger\ because it’s a correctly-spelled word. Outlook’s grammar checker doesn’t flag \manger,\ presumably because, as a noun, it grammatically interchanges with \manager.\ The Pareto principle should step in and flag \manger.\
  2. They never mean \pubic\!
    Every few months, I get an email that intends to say \public,\ but doesn’t. With apologies to any gynecological Outlook users out there, no one ever intends to say \pubic\ in an email. I’m having trouble typing it right now–my fingers keep inserting an \l\ to save me from embarrassment. Outlook should flag \pubic\ every time and make users answer complex anatomy questions before sending any email that contains the word \pubic.\
  3. All-day events should not have reminders that trigger five minutes before the event starts
    When my team members take vacations, they send all-day calendar events so we’ll all know not to look for them on those days. Other all-day events land in my inbox regularly. I accept them, they’re added to my calendar, and I’m well-scheduled. My calendar syncs to my iPhone, which also serves as my alarm clock. Far too often, my iPhone screams me awake at 11:55 PM to tell me that Melba will not be showing up to work the next day. I scream back and remind myself to do a better job of turning off notifications for all-day events as they come in, but Outlook shouldn’t let you send other people midnight alarms.

I’m reading Steve Krug’s Rocket Surgery Made Easy, and I watched the 25-minute usability testing demo right before I typed this post. In the video, he asks viewers to identify the three biggest usability problems with the web site. You may disagree, but the three issues above are my list for Outlook.

Read more →

Tiger Direct Sues Apple

Originally posted 2005-04-29 04:59:07

Unbelievable. Tiger Direct has sued Apple for trademark infringement. The issue? The new version of Mac OS X, dubbed Tiger, has flooded the Internet with techie \Tiger\ references, bumping Tiger Direct down the list in search engine results. The flagrant timing of the lawsuit, one day before the new Mac OS’s release, marks this as a publicity stunt or an attempt at a cash grab. I wonder what implications this lawsuit holds for search engine manipulation, though. If Alabama’s football team becomes good again, and sparks thousands of armchair quarterbacks to pen insightful and noteworthy online articles about them, will Proctor and Gamble sue? Talk about a slippery, or at least sudsy, slope.

Read more →

Treo 650 and Smart Phones

Originally posted 2006-02-13 04:58:27

I’ve used a PDA since 2000. I started with the Handspring Visor Deluxe, later adding the VisorPhone to it. I graduated to a Treo 180, which I used until the hinge broke. I tried going PDA-less for a time, but THAT didn’t work, so I bought a Palm Tungsten E and carried a separate cell phone. I continue to use the Tunsgten E today.

Since I’ve joined the ranks of management, however, I’m finding that the Tungsten E no longer adequately solves my PDA needs: it has no wireless capabilities. After a typical day of meetings, I return to my desk to find over 100 emails, each of which requiring thoughtful responses. So, I’ll hunker down and start replying . . . and my wife will eventually call to ask where I am and when I’m coming home, and somehow I never come up with the right answer (the fact that she’s had to call indicates that I’m already too late for redemption). The time has come to address this issue.

Read more →

Usability and the Common Man

Originally posted 2004-05-05 12:29:51

After some contemplation and waffling, I finally ventured out of x86-land and got a Mac–one of the new iBook G4 1.25 GHz machines. I think I was swayed less by the \Switch\ campaign and more by James Gosling’s endorsement. Besides, I got a great deal (thanks, Bobby!). I’ve got Eclipse up and running on it, I’ve compiled and run some SWT and JFace apps, and it’s all pretty cool. I’m now reading a book on Cocoa and Objective-C, wondering what I’ll do with that.

Read more →

Website

Originally posted 2004-08-25 06:29:03

My 10-year-old son, Tyson, decided he wanted to learn how to make web pages. I bought him a book, which directed him to Netscape Composer, and I showed him how to FTP his files into the appropriate directory on the server. He’s been working on his site:

http://www.interspatial.com/tyson/

I noticed this morning that he put a plug for my book on his site, so I’m returning the favor and plugging his site. He’d love to hear from you :-)

Read more →

Why Engineers Need Marketing Folks

Originally posted 2008-02-13 10:57:38

YazSoft has just announced version 5 of Speed Download, its download management product for Mac. They charge $25 for this product. The price may or may not seem reasonable to you, depending on your need for a download manager and your willingness to pay for software, but it’s certainly not outrageous. They offer a reduced price to upgrade from previous versions ($15 - $20, depending on which previous version you use), as well as a cross-grade \switcher\ price for $15. Thus far, the engineers have done fine without anyone from marketing.

Read more →

Why SWT?

Originally posted 2004-05-20 12:44:34

I recently attended my first Java Users’ Group (JUG) meeting. My interest in belonging to a JUG has coincided with a renaissance in the previously moribund local JUG, so I couldn’t have timed things better.

In this meeting, we discussed ideas for future meeting topics. Most suggested topics revolved aound J2EE, which covers most of what I do, but I offered to do a presentation on SWT and JFace in conjunction with the release of The Definitive Guide to SWT and JFace. Heads agreeably nodded and a few \yeses\ bubbled up. Then, however, one member, apparently only just restraining himself, wondered aloud why SWT even existed, that Swing rendered SWT completely superfluous, and SWT should disappear. He spoke in clipped tones and measured syllables, revealing his contempt for and hostility toward SWT. I frantically scanned the room for the nearest exit.

Read more →