Apr 28 2013

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.
Continue reading


Jan 12 2013

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.


Aug 24 2012

No dogs and Chinese allowed

This scene is so over-the-top, yet it works so well. If you’ve ever felt like you’re being shut out of something unjustly, it’s incredibly resonant. It makes your insides go YEAAHHHH!

I look this up scene up probably a few times a year. I don’t know what, if any, constructive lessons it can teach (the movie as a whole imparts a depressing lesson about the futility of rage), but it just hits some spot. Defiance, even when it’s strategically detrimental, has some incalculable value in regard to feeling properly right.


Aug 11 2012

Habibi

I finished Craig Thompson’s Habibi last night. I found it both sad and wonder-packed, a combination that is in itself kind of wondrous.

It’s a huge story about a girl, Dodola, in a poor Middle Eastern country. She escapes from a slave camp to a ship husk in the desert. She takes a fellow slave with her, who is an infant at the time. The infant is named Cham, namesake of the damned dark-skinned son of Noah.

Dodola renames him Habibi. They go through quite a bit.

The story flows around quite a few heavy issues, among them, child brides, slavery, prostitution, racism, sexual repression, familial/sexual role ambiguity, gender identity, poverty, and oligarchies. It notes them, lets them roll around in your head, but does not dwell on them. It does not pity its characters, as horrible as their situations sometimes are.

Dodola is well-read and knows many stories – tales from Arabic legend, the Quran, and Islamic mysticism – which she tells herself or Zam (Habibi’s nickname) when things are rough. The narrative focus gives these stories as much weight as much as Dodola’s and Zam’s reality. They are connected to their real problems, so they are not pure escapism as you might think. Rather, they are, perhaps, a more useful perspective than literal reality is.

Where and when they are is a mystery for most of the book. There’s some skipping around, chronologically, and many huge reveals of new settings. This, too, adds to that feeling of wonder that one might think would clash with the crushing things that happen to Dodola and Zam. (It does not.)

This book is illustrated meticulously. He adopted fully the intricacy and reverence for geometrical relationships and patterns of Islamic art. I think I was blown away every three pages. Ornate lattices, calligraphy, super detailed panels of packed with literal junk – all amazing.

Pool

Door

But nothing is every confusing, a la the super busy cross-hatching tornados of early nineties superhero comics. It’s all strong, purposeful lines that know exactly what they want to emphasize, even when there are thousands of them.

I feel I should say, that while I’ve mentioned several times that the characters suffer a lot of cruelty and that the story doesn’t pity them, neither is it cruel to them, if that makes any sense. It is also not without humor.

Incredible work. I’m glad I stumbled upon it.


Jun 27 2012

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:
Continue reading


May 15 2012

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.


Mar 31 2012

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 are 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 this 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:
Continue reading


Mar 18 2012

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.


Feb 24 2012

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?


Jan 22 2012

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.
Continue reading