Author Archives: death mountain

Developer ups and downs

A friend of mine had questions about how feasible it is to start programming as a career and what it’s like. This excerpt addresses some of that.

One thing that is kind of tricky about seriously learning to be a developer is that it can be hard to assess whether it is “right” for you. For me, it was fascinating and promising at first but then I hit a big drop where it just seemed like it wasn’t worth it.

After about two quarters of it in college, I thought I might actually hate programming. I stuck with it simply because it was the third major I was on in college. I felt like I had no options left. Gradually, I felt better about it, but by graduation, I still didn’t really want a career in it. (I was really fascinated by the process of making music at that time.)

After college, I reluctantly took a job that the company sort of thought of a “farm league” for developers. Because I had nothing better to do, I dug into that job and became a developer a year later. It felt good simply because of the external validation. I learned a lot of new stuff and made parts of a product that survived in the wild. I was excited about being a developer.

A few years later, I got frustrated with the conditions of that workplace. Then later at another job, bored with the work itself. When the iPhone came out, I was excited again about the possibilities of programming.

Currently, I’m not particularly excited about iOS, but I do like programming in general. There’s plenty of interesting stuff to get into now, like previously awkward server side stuff and data visualization. And of course, there’s plenty of ways to make games in a reasonable amount of time. (That said, I still have not shipped my “totes sweet indie game.”) Partly because of an increase in skill and partly because of convenient modern frameworks, programming feels good as an artistic tool and reasonably stimulating as an occupation, if you find the right job.

Those ups and downs probably don’t happen to everyone, but I thought I’d warn you about them. Not being 19-25 will probably help with keeping a more even keel about it, as will working in sane environments. (There’s quite a few other things you can do to mitigate them, but I gotta get this letter out.)

Regardless of all love/hate jibba jabba, being a developer did pay the bills, and I had no trouble finding work.

Maybe your best course of action, if you can clear the time for it, is to spend a few months coding and reading up on programming for 20 hours a week and see how it feels. Also, there’s a large variety of technology jobs that involve little or no coding, so maybe those are worth thinking about, too.


Fire sprinkler!

I’ve been playing the port of Baldur’s Gate on the iPad of late. It’s great if you’ve already played through it on the PC. I just assumed it would be for everyone, but a friend of mine pointed out a jillion things about it that are completely unexplained, both in the realms of UI and the Dungeons and Dragons mechanics. Spell descriptions are especially mystifying if you read them from the perspective of someone that has not played D&D.

Even if you have played the original on the PC, the conversion has rough edges. They did not enlarge tap targets, so they are still mouse-click size. Picking up dropped loot can be quite the chore, as can finding the tiny hit box that lets you pass through a doorway or go up the stairs. Getting to spell descriptions is trouble (it seems you have to fill all of your spell slots before being able to launch the descriptions window). Invoking the window for separating grouped items (e.g. splitting 80 arrows into two groups of 40) involves pressing on a group for some amount of time. What that amount of time is, I still don’t know.

The game’s successor, Baldur’s Gate II, is one of my favorite games of all time, and is certainly my favorite PC game of all time, if that subcategorization has any meaning for you. So, I was willing to push past onerosities like that. And thus, I found that the magic is still there in this port.

I became immersed until morning a few times, not in a Skinner box “oh, man, if I keep going I can level up” kind of way, but in a “this feels great, and I want to keep playing” way. The line between those kinds of compulsion are blurry, I know. Regardless, it had to banished to the weekend.

There’s a lot of elements that loosely pull together to make these games great. One of them is the vast field of tactical possibilities. Quite a bit can happen in a battle, given the varied settings, items, spells, and weapons. I remember reloading major battles in BG 2 3-5 times — even if I had won the first time — to see how this or that would play out.

Among these possibilities are some exploits that make you feel like you’re getting away with something, when in fact its quite likely that they occurred to the designers or were even intended. They are delightful, whether emergent or by-design.

Here’s one I hadn’t noticed in my previous playthroughs.

Ingredients:

– A cleric that has the Sanctuary spell, a thief, or a mage with the Invisibility spell. The cleric will usually be more durable in case the caper goes awry.
– Boots of Speed.
– A Potion of Fire Breath or Aganazzar’s Scorcher. (I think the Potion of Fire Breath is implemented as a maxed-out Aganazzar’s Scorcher.)
– A room full of enemies.

Directions:

0. Optional: If you’ve got anything that boosts your defense, this is not a bad place to use it.

1. After enabling either Sanctuary, stealth, or Invisibility, send your character to a corner of the room, either unnoticed or ignored. Stand them right next to the enemy guy closest to the corner.

2. Use the potion or Aganazzar’s Scorcher on that closest guy. The fire stream will anchor itself to that spot and to your guy.

3. Immediately start doing a lap around the room. The fire stream will sweep across the room as you do so. Each guy the stream hits will take (I think) 6-48 points of damage. Thanks to the Boots of Speed, you’ll cross the room fairly quickly, depending on whether your enemies move in a way that blocks your path. You will probably take some hits, but hopefully not enough to kill you. You might even have time to do a little backtracking to do some extra scorching to some of the guys.

You can then bring in your other guys to mop up whoever is left alive.

Wheeee!

In this way, you can achieve Fireball-like effects (perhaps even double the damage of a low-level Fireball if you’re lucky) even if you are not high enough level for it or have not been able to find it or have already used it. And it looks hilarious.


We shall defend our islands, whatever the cost may be.

I finally saw Iron Maiden tonight. They tour only every other year, and they play the humongous venues that foment irritation. So, I’ve never been.

Sea of Madness

But they are not going to be playing or living forever, so you really should see them. I’m glad I did. Despite the many obstacles to my enjoyment I hit en route to Maiden’s performance, I ended up having an ecstatic time.

They were spotlighting stuff from Seventh Son of a Seventh Son, which is not my favorite Maiden album. Yet they totally sold all these long-ass progressive ragas just on the power of their sound, which is very vivid and very robust live. They made me believe that anything would sound good coming out of them.

I can’t recite a set list, but here’s the songs I remember them playing, in approximate order:

Moonchild

I don’t know the song well, but it was exciting. Very nice build-up. I shot a few clips of the show here and there. They sound bad, as expected, yet they’re surprisingly intelligible. I guess I was far back enough. Here’s one of the opener.

The Evil That Men Do
Two Minutes to Midnight
The Prisoner

The Trooper

The harmonies really breathed and felt richly “wavy” like they were maybe playing them a bit rubato. At the same time, the song seemed to whiz by. I was on the edge of every note, headbanging like nuts, and it seemed like it was over in two minutes.

Also, Bruce went the whole nine yards. While wailing about Russian guns, he waved the Union Jack and wore the traditional red suit of the British. Throughout the show, he was running about and climbing all over things. It was not unlike Method Man’s stage craziness.

Number of the Beast

So ridiculously exciting. Certainly, part of it is yelling 6! 6-6!

The Phantom of the Opera

Afraid to Shoot Strangers

Bruce dedicated this to America and Charlton Heston. I had never heard this song, but it ruled. Lots of abrupt tempo changes, which they played off as no big deal, and so did not seem at all song-breaking. I’m going to have to check it out.

Fear of the Dark

I sang along with this loud enough to hear myself and realized I sounded like Anton Maiden. Kept going anyway! Such is the strength of its anthemic call.

Can I Play with Madness?
Wasted Years
Iron Maiden

“Encore”

Aces High

I was not surprised by the melodrama that is the encore, but I was surprised it was this. That Churchill intro is so goddamned epic that it makes the first fast riff in the song seem ten times bigger. Kinda lost my shit over this one.

Run to the Hills

For years, I heard Metallica’s parody of this intro riff in my head every time I heard the real one. Even after I came to like the song overall, I didn’t think too much of that riff. Tonight, they brought it to life, and it sounded anything but silly.

Throughout the show, you could tell Bruce Dickinson is a great singer, but here, you really felt like he was commanding perfectly a very powerful thing.

Also, remember that episode of Beavis and Butt-head in which they get taken to jail to be “Scared Straight,” but end up singing “Run to the Hills” with some inmates? Quite a few guys there looked like those inmates (and quite a few didn’t, of course).

Seventh Son of a Seventh Son
Running Free

Other Notes

  • Iron Maiden is a very “ringing” band. The vocals ring, the bass clangs, and the vocals sing. They’re also very punchy, but something is always ringing. The metal bands I listened to most in my formative years favored crunching, dense percussiveness over extended reverberating when it came down to it, so it’s striking to me.
  • Steve Harris is the most commanding bass player I’ve heard. First off, he’s loud enough in the mix that he easily cuts through three guitars. Then, he tends to play riffs that are like metal rhythm guitar riffs, and the guitars sometimes end up playing more melodic and less percussive stuff. It’s not important that the bass lead, and it’s not possible at certain tempos, but it is salient.
  • As I mentioned above, the guitar harmonies seemed to flourish live. I wonder if it’s the third guitar. (Janick Gers, their third guitarist, did not record on their older, classic albums.)
  • If you’ve ever wanted an opportunity to sing “Whoahhoahoah!” a lot, a Maiden show is probably just as good for this as a Misfits show.

Gathered on foot, just for you.

For a previous blog, I had a script that collected all of the links I bookmarked on del.icio.us that day and put them in a post. As time went on and I wrote less and less, those link roboposts became about 90% of the content.

That was bad for the blog, so I stopped doing that. Here, I’m doing something that feels similar, but it’s game stuff that happened to be presented to me in person. So, it’s as if I went out and physically gathered these links for you. Appreciate!

Summoner Wars

I discovered this at PAX East. It looked like any other card game, except it was played on a grid. There was a lot of orcy fantasy art on it, with the fonts that customarily accompany that kind of art. My friend Tim and I were walking by its booth, and the game’s designer invited us to try it out. I said sure but was skeptical.

The designer, Colby Dauch, did a great job of walking us through a first turn, and it did turn out to be a very good game. It’s an elegant tactical combat game that centers largely around positioning, as most tactical combat does, but also involves resource management and acquisition. Like in chess, you win by defeating the enemy’s key piece. Like in Magic and Dominion, you have a deck of cards that provides your guys, all of which have different abilities that can be coordinated in many different ways. The guys in your deck can be summoned using your magic points, which are obtained by killing your opponent’s guys.

You can build your own decks, which adds another dimension to the game, but we played with the prepackaged decks, all of which had a very distinct flavor. We played the hell out of this game at PAX, and I think it’s the best game I played there. Colby said an iOS version was in the works, so I’m looking out for that.

Spell Tower

Spell Tower’s another game I saw at PAX. It’s an iOS game in which you make words out of a tower of letters. When you connect a string of serially adjacent letters to make a word, they pop off and the rest of the letters fall to fill the void they leave. It’s vaguely Tetris-esque. You have to consider where you’re making words because you can cause letters to pile up in concentrated spots. A tall pile is bad because when a pile reaching the top of the screen ends the game. Making words in this context is fun, but also compelling. And by “compelling,” I mean it can create compulsion, which I’m ambivalent about.

The developer, Zach Gage, talked to me for a bit about its development. He got a working version in a surprisingly short amount of time using Open Frameworks. This was a surprise to me because I didn’t even know there was an iOS port of OF. Zach’s made a wide variety of software art with it and has a library for working with sprite sheets.

I was tempted to get into it, but I have enough fluency in Objective-C right now to express myself fairly well and am generally short on time. If ofxiPhone had been around three years ago, I would have been all over it, the same way Ruby people are all up ons RubyMotion. If you’re coming to iOS development from a C++ background, you should check it out.

Letterbrush

Finally, a couple weeks ago, I went to a Game Dev Night where I met other people making tile-based game maps with ASCII in plain text. The host, Greg Smith, presented us with Letterbrush. Plain text is relatively easy and simple to work with, but it does involve some annoying arrow key-dancing to specific columns and rows. Letterbrush gives you well-known drawing tools so you can skip all that foofawing.

Well, I think there were more, some non-game ones, but I’ve forgotten them. So, I hope you enjoyed those.


A static WordPress

If you have been within earshot of any technology blogs in the last few years, you’ve probably heard about static web sites being a good way to power a blog.

It makes sense. Most weblogs http://web.archive.org/web/20130831044950/http://en.wikipedia.org/wiki/Static_web_pageare just for reading. They need to change when there’s an update, unlike a web app like Health Month or Mint that needs to change every time you visit. At most, updates need to happen whenever a new comment is posted, but that’s if you have comments and if your comments aren’t handled by an external service like Disqus.

Why should a bunch of PHP stuff and database queries run every time someone wants to read something? All that does is slow things down, and if you had a lot of traffic, it would cost you money.
A bit of last weekend and some of today, I decided to move Death Mountain to a static weblog. I didn’t truly need to do so; I don’t post that often, and I don’t get much traffic. However, I do have concerns about my current web host, and I’d like to not be tied to hosting that provides WordPress.

Mostly, I think that I wanted to do a bit of low-stakes messing around. Non-sequitur tinkering, you could call it. It’s sort of like working on your car, or the Hackintosh hijinks discussed in the Salad Days episode. (Or making a bunch of stew even though your wife doesn’t want any. Like I’m doing right now.)
Jekyll is a nice, lean static blog generator. However:

  • I already have this blog looking the way I want, and I don’t want to painstakingly recreate it.
  • There’s also that should Death Mountain leave a web host that uses WordPress, Bravest Ever would leave it, too, and I don’t want to mess with the way Katt does posts (via WordPress).
  • Also, I liked posting using the WordPress iOS app the one time I’ve used it so far.
  • I like WordPress’s thorough cross-linking by dates and categories.

I wanted to keep the WordPress design and input methods while also having a static site. Maciej, the Pinboard guy, said something about this in passing quite a while ago.

You can use a program like wget or curl to generate a flat HTML version of your website from this local version, and then upload these files to your public server to share them with the world.

Here’s how to do this in practice:

First, get a copy of your WordPress blog running locally.

  1. Transfer the directory containing your instance of WordPress (usually named yourblog.com and containing index.php and various wp-* subdirectories) to your local machine.
  2. Transfer your database entries to your local MySQL instance. Export the database named after your WordPress blog. Some hosting services provide a web-based way to do this; but you can also use a shell command like mysqldump -u[username] -p [db name] > mysql.dump. To import that file into your local MySQL instance, use mysql -u[username] -p [db name] < mysql.dump or the equivalent. (I use MAMP to run Apache, MySQL, and PHP locally. It’s simple.)
  3. The tricky thing about running WordPress locally is that it uses a stored value to determine its base URL rather than using relative paths. e.g. So, if “WordPress Address” and “Site Address” in the WordPress dashboard (or in wp-config.php) is set to http://death-mountain.com, it will point all the links to other parts of the site to something based on http://death-mountain.com rather than on http://localhost.Now, you can set those properties to http://localhost. Then, all the links will work on your local instance of your blog, however, when you take a static snapshot of your site, the links will be pointing to localhost, which is no good.So, you need to keep these WordPress properties pointing to your real blog URL but get requests for http://yourblog.com on your local machine to go to localhost. So, add an entry to your /private/etc/hosts file like so: 127.0.0.1 yourblog.com.

    If you’re on Lion, make sure you put that above the “fe80::1%lo0” line. And don’t forget to flush your DNS cache afterward. On OS X, dscacheutil -flushcache will do it.

    Now, you will be able to run your WordPress blog locally, using your real URL. You can shut down your Internet connection to make sure it’s working.

    Oh, also: You will need to run Apache (or whatever web server you use) on port 80. To do that, it needs to run as root, so start it with sudo.

  4. Now, use wget to get a static snapshot of your site. Unlike running WordPress locally, wget is much less tricker. Just go to a clean directory and run:
    wget -m and robots=off http://yourblog.com
    Within seconds, you’ll have your whole site as static files. It will be from the non-admin’s perspective as well, so none of the admin stuff will be there.
  5. If you want, that can be the end of the line. When you want to post, just start your MAMP/LAMP stack, write your post, run wget, then upload the files wget gets to the server.I’d prefer not to upload the whole thing, every time, though, so I use git to handle just sending the diffs. It also has the side benefit of letting me revert to specific versions, plus everything else git does. If you are not already familiar with git, though, this is probably not worth it.I’m already git-centric, though, I created a git repo in the directory in which I put wgets output: The static snapshot. Then, I followed this awesome howto to set up a way to update the web site just by pushing with git. (If you’re using github for hosting, you can just push straight to github and skip all that.)

    So, my update workflow goes like this:

    1. Start MAMP, if it’s not already running.
    2. Go to http://myblog.com (which will actually be my local instance of the site) and post.
    3. Run wget in my static site directory. (Which is a git repo.)
    4. Commit the changes in git.
    5. Push the git repo to the web host.

That’s it! I’m posting with this method now. It’s two extra no-brainer steps. It’ll serve up faster, and I’ll be able to move web hosting easily now. It’s not the most detailed explanation, but hopefully, you get the idea. I’d go into further detail, but my stew is almost done.


A new kind of work

I completed my first week as a full-time independent developer. Things I learned:

1. It’s easier to get solid concentration going in the morning if I work somewhere outside of the home. Concentrating in the afternoon is not as hard at home, especially if I have momentum from the morning. I still need to learn how to get going in the morning at home, though. Coffee shops cost money.

2. Having a broad plan for each day of the week helps. This way, you don’t spend too much time thinking and re-thinking what you should be doing. (I had guessed as much from my experience with meal planning, which severely reduced our decision fatigue.) You also cut career existential doubt out of the loop completely.

3. I can kill ideas that are unlikely to work by starting to plan out the work for it. It might not be a true death, though, as they keep popping back into my head. But at least I didn’t spend time on them.

4. I thought I liked listening to podcasts and music while working, but that turns out to only be for work that I have to push myself to start. I think they distract me from my resistance to starting. If I don’t have a problem starting, though, as is the case with a lot of what I worked on this week, podcasts and music are just distracting. The sounds I’ve enjoyed the most this week are near-silence and background chatter that’s busy enough that I can’t distinguish individual conversations.

5. It is really good to have an “American dream”-style weekend in which you don’t expect to do much work and thus are not disappointed when you don’t. When you’re a part-time indie, concerns over whether or not you really are getting as much as you should out of the weekend hover over you like a cartoon stink cloud. They’re a lot easier to dismiss when you know you’ve put in a solid week.


Maybe you’re not that special.

Edward Sung dove deep into the well of consciousness, inspired by the age old question, “Do teleporters kill and recreate you, and if so, is that really you?”

It got me thinking about how ill-defined consciousness is and why we care so much about it.

Sometimes, I think consciousness is important, but other times, I feel it’s narcissistic for us “higher” order organic systems to make a big deal out of consciousness.

We’re systems that sustain ourselves for a period of decades. When these systems operate, the layers of reactions that are furthest from outside the system manifest as consciousness.

When we observe other systems that take actions in response to stimuli in a way that is similar to ours, we assume that those other systems work in a similar way and assign it the status of being conscious.

When a system such as, say,

  • A plant
  • A unicellular organism
  • A virus
  • A tire fire, or
  • A star

does not respond to stimuli in a way similar to ours, we say that it is not conscious.

However, they have their own ways of sustaining themselves, and they have their own particular internal tensions and reactions. How can we be sure that these are really that different from what we have labeled consciousness?


The dearth of electronics manufacturing in the US: More than met my eye

This article provoked quite a few thoughts, but I don’t think it’s worth the time to write an essay. I don’t really have any solutions to these problems, so an essay-style piece would just be pretty wrapping for fragments anyway.

But here’s my fragments:

– I thought manufacturing in Shenzhen was mostly a matter of costs for technology companies. It’s not.

In particular, companies say they need engineers with more than high school, but not necessarily a bachelor’s degree. Americans at that skill level are hard to find, executives contend.

Apple’s executives had estimated that about 8,700 industrial engineers were needed to oversee and guide the 200,000 assembly-line workers eventually involved in manufacturing iPhones. The company’s analysts had forecast it would take as long as nine months to find that many qualified engineers in the United States.”

I would have loved to buy a “fair-trade” iPhone that cost $600 or so. But it turns out not even that is possible.

– Why don’t we have these technical workers? Well, “many reasons” is always the right answer, but I think our fetishization (or maybe “fetishization” is an over-emphatic way of saying “over-emphasization”) of Making It to the Top is part of it. Our insistence that everyone strive to be important millionaires makes vocational jobs (I know – redundant, but I can’t think of how better to describe them) seem like loser business, so people go for bachelor’s degrees in something they can’t get work doing. We’re forcing too many variously-shaped pegs through round holes.

Have you made fun of DeVry? I know I have. Yet, it’s good work, and people could be happy doing it.

– Factories are in China, not just because of the labor cost and available skill, but because everything else is also there, which makes logistics easier and cheaper.

The entire supply chain is in China now,” said another former high-ranking Apple executive. “You need a thousand rubber gaskets? That’s the factory next door. You need a million screws? That factory is a block away. You need that screw made a little bit different? It will take three hours.

I’d actually heard about a pro-US effect of proximity last week: American stringed instruments factories are still competitive with Chinese ones because of the prohibitive cost of shipping cellos and double basses overseas. Yup, didn’t think of this one, either.

So, it’s not just, oh, we tweak this or we tweak that, and we get manufacturing work back. There has to be a manufacturing “community” in place. And to get that, we’d have to commit to developing for decades.

I have doubts about our ability as a nation to commit to anything for decades.

– I don’t think that we necessarily need to bring back electronics manufacturing in order to prosper. (We do, however, need to use our work force in better and more varied ways.) However, I’ve heard people, when discussing how well the American economy is doing, point to Apple and Google or some other fantastically successful company.

“If you scale up from selling one million phones to 30 million phones, you don’t really need more programmers,” said Jean-Louis Gassée, who oversaw product development and marketing for Apple until he left in 1990. “All these new companies — Facebook, Google, Twitter — benefit from this. They grow, but they don’t really need to hire much.”

So, what does that get the country as a whole? It gets us prestige, which not worth nothing. But the success of multinational corporations that started in US doesn’t really help you or me (yeah, some of you work for these companies, so it does help you, but you know what I’m saying) all that much.


I guess it’s a pretty small upside, really.

On Todd Glass coming out on WTF (a good episode, BTW):

Katt:
Came out like he’s gay?

Me:
Yope.
He’s an established comedian/podcaster.
I’m always amazed people can be secret gay for that long!

Katt:
It must be really hard.

Me:
OTOH, it’s probably sorta cool to have a surprise to unleash on people.

Maybe I’ll come out as Batman.

Katt:
You’re not Batman, honey.


Today’s nonsense

I figure that, without context, this works as some kind of William S. Burroughs thing.

Me:
Yo, you gotta crush a lot of content if you wanna be cool like Bowser!

Katt:
Don’t they mean Middlebury?

Me:
He crushed it up into a berry!

Katt:
Also, I guess if your name is Gomer, you feel pressure to be even more cool.
Dragonair ate his Middleberry! His Critical Thinking skill goes way up!

Me:
Oh, man, we gotta play that!
Well, once we get a TV.

Katt:
Pokemon Education Revolution!

Me:
Also, a pro-Bowser blog written by the candy stand guy would be good.

Katt:
Oh yeah. I wonder if Bowser ever visits his stand.

Me:
What? Squirtle is getting a master’s degree?
Probably just to pick up from the vault.

Katt:
What? Ivysaur is evolving!

Me:
He’s, like, yeah, yeah, crunch some candy. Let me see the receipts.

Katt:
Congratulations! Your Ivysaur evolved into UNEMPLOYED MFA!

Me:
deer yahoo answers how come my iveysor power went down

Katt:
u sent him to art scool dumass he needs to be a laywer

Me:
loyer stone is xpencive tho