MettaProgramming

Thoughts on Software and Technology

Today, I Bought an iPad

one comment

I remember this day 25+ years ago, when my mother came home with it. It was a box with a silver keyboard looking thing that said “TI 99/4a.” That big, blocky hulk of a purchase that was one of the best decisions of my mother’s parenthood.

She wasn’t always the best role model, my mother, but this decision was superb. It came with intent, a reason: She told us that she couldn’t afford this thing that she didn’t understand, but that she knew that it was the future. She wanted us to have access to this thing called a computer. She hoped that we didn’t get left behind like so many other children of The Projects would.

Over 25 years later, I own two software companies. They are small, barely worthy of the title “company,” but they are extant, and they exist entirely because a small, poor, geeky kid in the projects had a mom who was smart enough to go out one day and buy a cheap computer she couldn’t afford.

I’ve been a programmer ever since that day.

Today, I bought an iPad.

I already own an iPad, as does my wife. Among other things, I’m an iOS developer. I didn’t buy an iPad for myself. Today, I bought an iPad for my sister, and for my sister’s children.

It wasn’t planned. It was impulse. Strangly, suddenly, I felt strongly compelled to buy it. Compelled to make an impulse purchase in a way that is rare, to say the least. For some reason, I wanted them, I needed them, to own this thing that they should have access to, this thing that defines what we think of when we say “the future.”

Today, I bought an iPad. At almost the same time, a man died.

He was a man who re-wrote our world. A visionary who didn’t wait for the future, but created it. The man who changed the way we think about computers, about music, about information, about movies. The man who changed the way we think about life. At almost the same time as I bought an iPad for the same reasons my mother bought a computer, the greatest visionary and CEO of the modern world passed away.

And so as my sister plays with her new “iFun,” and my niece plays Plants vs. Zombies on mine– as they discuss email settings and games and calendars, I find myself needing to periodically leave the room to hold my head and sob.

It had to happen. I wish it wasn’t so soon, but it had to happen, and he himself said why:

“No one wants to die, even people who want to go to Heaven don’t want to die to get there, and yet, death is the destination we all share. No one has ever escaped it. And that is as it should be, because death is very likely the single best invention of life. It’s life’s change agent; it clears out the old to make way for the new. right now, the new is you. But someday, not too long from now, you will gradually become the old and be cleared away. Sorry to be so dramatic, but it’s quite true. Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma, which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice, heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.”

Steve Jobs, by describing why death is so good, you described what it means to live. You changed entire industries that laughed at you while showing us all what we could achieve. You’ve touched us, you’ve inspired us, you’ve shamed us. For the forth time today I find myself weeping for you, a man I’ve never met. A man who has changed my life.

Today, I bought an iPad. I bought it for my sister, so that she and her family would not be left behind by the technology of the future– the technology you created. The future you created.

Today, I bought an iPad. I bought it for you, Steve, so that my sister’s children can grow to be the new that sweeps away the old that was you, the old that is me.

Thank you, Steve Jobs. You have changed me.

Written by

October 5th, 2011 at 8:38 pm

Posted in Miscellany

The Ever-Deployable Github Workflow

2 comments

This entry is part 2 of 3 in the series Git Workflow

Scott Chacon from Github wrote a post describing the workflow that Github uses internally to manage projects, and I found that it cleared some issue up for some projects that I’ve been working on, specifically, how to keep your project deployable.

So, why don’t we use git-flow at GitHub? Well, the main issue is that we deploy all the time. The git-flow process is designed largely around the “release”. We don’t really have “releases” because we deploy to production every day – often several times a day.

His article describes a workflow based on working in branches and using pull requests before merging into master. I’ve used pull requests before, of course, but never thought to use them internally on a project.

Because I have a couple teams that this workflow would help, and because I tend to like rebasing on branches instead of merging, I thought I’d describe my slightly modified workflow in my own words as a way to formalize it for my teams.

Github Workflow

Modified from Scott Chacon, with minor adjustments based on my preferences:

  • Anything in the master branch is deployable
  • To work on something new, create a descriptively named branch off of master (ie: new-oauth2-scopes)
git checkout -b new-oauth2-scopes
  • Commit locally and rebase your branch to master regularly. Push your branch to the server often- so we all know what’s being worked on
git commit
git checkout master
git pull origin master
git checkout new-oauth2-scopes
git rebase master
git push origin new-oauth2-scopes
  • When you need feedback or help, or you think the branch is ready for merging, open a pull request
  • After someone else has reviewed and signed off on the feature, you can rebase the branch to master, then merge it into master
git rebase master
git checkout master
git merge new-oauth2-scopes
  • By rebasing your branchto master, you put all of your changes on top of the master branch. This allows your commits to be grouped (not interwoven by date), reduces the ubiquitous (merge) commit to something that never needs to be explored, pushes all requirement to fix merge conflicts onto the branch, and always results in a clean merge to master.
  • Once it is merged and pushed to ‘master’, you can and should deploy immediately

Coda

I really like the Github mentality of having the master branch always deployable. It forces good development practice in so many ways. I also love the idea of using pull requests to have an at least cursory code review before merging that code into master. Finally, I like the idea of pushing all the branches to the server- although I’ve always been hesitant to do that before. It always seemed like it was making things messy, but as Scott points out, it gives an easy way to look at, and track, what’s being worked on.

This Github workflow is my new “gold standard” for development. Thanks Scott!

Written by

September 7th, 2011 at 1:25 pm

Posted in Miscellany

XCode: “You have updates available for other accounts”

leave a comment

If you are unlucky enough to have installed XCode from the Developer Network, instead of the new Mac App Store, you may be seeing this message:

You have updates available for other accounts.

This may be followed by either an actual account email address, or by a generic message saying to “sign into the account you used to purchase it.”

Either way, it’s a problem. You can’t install or update XCode until you delete the “Install XCode.dmg” file which is usually found in your /Applications directory, but which was in my Downloads folder, because I copied the DMG file from someone else with a local connection, rather than download it from the Developer site again.

Bit of a stupid problem, but luckily it has a simple answer.

Written by

August 19th, 2011 at 8:53 am

Posted in Miscellany

Tagged with , ,

Hey Look! A Gorge Tech Happy Hour!

leave a comment

For years, I’ve been trying to do things to bring the tech community of The Gorge together, and get them into the same room regularly with the non-tech people to answer casual questions, connect about opportunities, and generally make this a stronger, more connected community. Well, it helps to have friends in high places, because now I’m teaming with The Gorge Technology Alliance to offer a regular, roaving, friendly tech happy hour.

Are you a person just starting out in WordPress and looking to chat with someone in a casual atmosphere and ask questions? Are you someone who has questions about tech subjects and wants to connect with people who can answer them? Are you a programmer looking to meet up with designers? Are you simply a person who loves to grab a beer and chat with other people?

Come join us Tuesday, August 23rd, 6:30pm at Everybody’s Brewing in White Salmon.

Come have a beer, come hang out, come ask questions. Come Connect.

 

Written by

August 18th, 2011 at 9:10 am

Posted in Miscellany

Subdomains: Well, Everyone Else Is Doing It.

2 comments

I had a phone call today that made me really think about subdomains for the first time in a while.

I’m working on a project that can basically be described as something of a social network for artists. The details are unimportant1 but the upshot is that the artist can have something of a home page. The call was to get the designer, clients, and developer all playing on the same sheet of music, and I was laying out some of the possible option for various pieces, one of which was “should we implement subdomains for the artists profile.”

Why? Because johnmetta.thissite.com would be better than thissite.com/johnmetta? It’s embarrasing to admit now, but it’s not even something I thought about. I didn’t even consider the reason we’d implement a subdomain, I just added it to the list.

Subdomains

I started administering Unix systems back in the early 90′s, not too long ago, granted, but long enough ago that I have a history building server networks. From the beginning, server names had a mixture of comedy and reverence. I name my testing server Loki, and it’s both a joke and something I take seriously. Subdomains are, in essence, server names for networks,2. Even if they are named after a Star Wars character, subdomains are always meaningful. Meaningful in that the subdomain– the sub-network, this small, divided portion of the total network– is providing a service that is fundamentally separated from the main network.3 Originally, “www.thissite.com” was a subdomain that meant “The World Wide Web accessible version of this network,” which is fundamentally different from “mail.thissite.com,” which a web browser wouldn’t handle. Different functions.

De-valuing the domain

This is true of networks, but early on in the web, it started being applied to individual sites (which are really just networks of information anyway). I might have a johnmetta.com domain with a network of pages that talks about me, and a separate blog.johnmetta.com which is really not the same function as johnmetta.com (who am I, what do I do?), while still being part of the larger johnmetta.com “network.” In a way, this is an early devaluing of the concept of subdomain concept, I guess. Is blog.johnmetta.com really a subdomain in the same way that mail.johnmetta.com is different than www.johnmetta.com? Or is johnmetta.com/blog really what we’re talking about?

These days, subdomains are everywhere. Everything from ilovemycat.someblogthing.com to my much used johnmetta.freshbooks.com account. WordPress, 37 Signals, ZenDesk, FreshBooks, plenty of sites give you a subdomain if you want it. It’s everywhere now and it’s gotten almost to the point of expectation.

I remember a few years ago thinking “What? A subdomain for that? That’s weird.” But honestly, I didn’t give it too much more thought. It was weird, I didn’t really think it fit, but I moved on. Over time, I think I’ve gotten a bit desensitized to their presence. It’s almost like there are “real” subdomains (what I use in my server networks), and there are “fake” subdomains, like johnmetta.zendesk.com, about which I just kind of think “eh, whatever” and move on.4

As embarrassing as it is, I have to admit that I just stopped thinking about them. So when a member of this conference call said that using subdomains wouldn’t be valuable partially because “they massively de-value the concept of the subdomain,” I was kind of taken aback. Mostly because I think he’s right.

Is creating a subdomain for everyone stupid, or useful? I tend to lean toward the “it’s stupid” side, I think– at least I want to believe I do. What’s the real different between going to wordpress.com/myblog and myblog.wordpress.com? Is it meaningful, or is it just some weird vanity? Honestly, myblog is not providing anything functionally different from wordpress.com. In fact, in everyway I can think about it, wordpress.com/myblog is fundamentally more correct, because myblog is, in fact, the exact functionality that wordpress.com is providing.

I think I agree that subdomains are de-valued. Yet I suggested them. I added them to the list. Why? The only reason I can come up with is: “Well, everyone else is doing it.” That’s a rather embarrassing reason.

A Different Meaning

I guess you could argue something like “They mean a different thing now.” But do they really? I’m not so sure. I think they mean the same thing, and we just use it lazily. As if I were saying “well, I have, like, this subdomain and, like, I can visit it from anywhere.” I’m not using “like” in the right way, but mostly people are just going to say “Eh, whatever” because everyone is doing it. We’re desensitized to the Valley Girl.

But maybe it’s true. Maybe they do have a different meaning- at least in the context of The Web. I mean you want to talk about devaluing the subdomain? Look at sites like ma.gnolia.com (now, sadly, defunct, but no less brilliant in its absence), which use the subdomain purely as a way to create a word. They don’t just devalue the subdomain, they devalue the main domain. I’ve even created one of these. I named http://kwisatz.hadera.ch purely to get that name. The domain hadera.ch has absolutely no meaning, and the subdomain kwisatz means just as little. It only has meaning in the context of the whole address.

So, I say that I agree that subdomains shouldn’t be devalued, and I create sites like kwisatz.hadera.ch which totally devalue them. I guess I’m up in the air, speaking like a Valley Girl and complaining about people’s grammer. I think subdomains should have value, I really do, but I also like my kwisatz.hadera.ch. I don’t actually think that johnmetta.wordpress.com is any more meaningful as wordpress.com/johnmetta, yet I have a freshbooks account which is at johnmetta.freshbooks.com.

This is the first time I’ve actually sat and thought about subdomains in a while. I don’t have any answers about this question, but I do think it’s an interesting question.

  1. and still somewhat secretive []
  2. I’m arguing “network” here because I’m thinking of “network function,” and it’s still the case even if that “network” is a single server- or, even just a different virtual host []
  3. There are subtle arguments and plenty of flamewar munitions in this definition, I’m sure, I’m simplifying, and I’m okay with that. []
  4. Wikipedia calls them “vanity domains” which I think fits quite nicely, actually []

Written by

August 4th, 2011 at 1:14 pm

Posted in Miscellany