SealedAbstract data loss

Due to hardware problems, I’ve managed to lose quite a bit of data. My most recent full backup was from 2009.

If you know me, you know I have a very ridiculous backup setup, with stuff stored on multiple continents and pretty much instantly restorable going back years. Unfortunately, Sealed Abstract was not part of that setup (it is now…)

I’ve taken the opportunity of cleaning house. Getting rid of some old posts, and reimporting new ones from Google’s Cache. I’ve also adjusted the permalink structure, something I wanted to do for awhile but was afraid of breaking existing links.

I think I’ve got SA and DrewCrawfordApps (and a few other sites hosted here) back up. I’m still working to restore some custom servers I had running here.

If you see anything seriously missing, I probably have it around here somewhere… shoot me an e-mail and I’ll put it back up.

bassdll – an Arduino Piezo music library

I’m finally getting around to publishing bassdll, a project that (unfortunately) has sat on my shelf for over a year now.

bassdll is an arduino sound/music engine that lets you wire up piezo buzzers across your arduino pins and make multichannel music!

Check out the demo below:

Check out the source on github.

On Closed Systems

> We lose nothing by having closed systems.

For good or for bad, for the past 25 years or so, programmers have effectively been subsidized in that the tools to design and create programs are effectively the same as the tools to *run* programs.

So every system, simply by installing a compiler, is ready to write computer programs.

Early computers didn’t even have that step. They had assemblers and basic in the ROM. It was assumed that you were going to be writing programs; how else were you going to get computers to do what you want?

The iPad/iPhone is the latest and greatest step in that huge gap. A little uneasy, for some of us, perhaps, who grew up with QBASIC on-device-coding and can’t imagine any other way.

But that is sort of a straw-man issue. You have to buy a real computer, so what? There’s a closely-related, but way-more-troubling problem.

App review.

App review is painful. I’ve had two apps axed by Apple not for bugs or for security issues, but because, quite simply, Apple didn’t like them (technically I had 3 such rejections; one was “reversed” on “appeal”).

Think this doesn’t affect you? It does. Google Voice found out the hard way. It was easier for them to rewrite their app in HTML5 then to talk Apple into letting it on the app store. Same goes for Google Navigation, that will never see the light of day.

For every app that you hear about, there are hundreds (I suspect more like thousands) of developers who had an app rejected and quietly went away.

That’s the danger in these new devices. Not that you need a computer to develop for them. Not that the apps are sandboxed and you can’t animate your icons or you require some ridiculous API nobody should ever need.

The problem is that Apple can–and, in fact, does–reject well-behaved applications that it simply doesn’t like. Not just the buggy ones. Not just the malicious ones.

That’s a thought that should chill every developer to the bone.

Tower of Hanoi in MIPS (32 instructions)

##############################
####DREW CRAWFORD#############
####ASSIGNMENT 2##############
####COMPUTER ARCHITECTURE#####
####FEB 2 2010########
##############################
.data
.align 2
A: .asciiz "A\n"
.align 2
B: .asciiz "B\n"
.align 2
C: .asciiz "C\n"
prompt: .asciiz "How many disks?"
.align 2
newline: .asciiz "\n"
.align 2
print:  .asciiz "Move from \n"
.align 2
to: .asciiz " to \n"
.align 2
movet: .asciiz "The total number of moves is: \n"

.text
la $a0,prompt
li $v0,51
syscall
move $t0,$a0

#####t0 - n
#####a1 - "A"
#####a2 - "B"
#####a3 - "C"
la $a1,A
la $a2,B
la $a3,C
jal hanoi
#print totals
la $s1,movet
jal printstr
move $a0,$v1
li $v0,1
syscall
li $v0,10
syscall

li $v1,0

#A hanoi solution in 32 instructions
#(11 print instructions, 1 move count instruction)
#So only 20 algorithmic instructions.
#And only one expensive lw/sw pair per call.
#Beat that.
hanoi:
beq $t0,0,silentreturn
addi $t0,$t0,-1
xor $a2,$a2,$a3
xor $a3,$a2,$a3
xor $a2,$a2,$a3
addi $sp,$sp,-4
sw $ra,0($sp)
jal hanoi
##############non-algoirthmic section
#An implementation detail prevents me from using the printstr syscall on my emulator
#Feel free to replace with the syscall
la $s1, print
jal printstr
move $s1, $a1
jal printstr
la $s1,to
jal printstr
move $s1, $a3
jal printstr
la $a0,newline
la $v0,4
syscall
addi $v1,$v1,1
#############end non-algorithmic section
move $t1,$a3
move $a3,$a1
move $a1,$a2
move $a2,$t1
jal hanoi
xor $a1,$a1,$a3
xor $a3,$a1,$a3
xor $a1,$a1,$a3
lw $ra,0($sp)
addi $sp,$sp,4
addi $t0,$t0,1
silentreturn: jr $ra

printstr: #my hack around a printstr issue on my emulator
ld $s2,($s1)
andi $a0,$s2,255 #select xxxX
li $v0,11
beq $a0,10,ret
syscall
andi $a0,$s2,65280 #select xxXx
srl $a0,$a0,8
beq $a0,10,ret
syscall
andi $a0,$s2,16711680 #select xXxx
srl $a0,$a0,16
beq $a0,10,ret
syscall
andi $a0,$s2,4278190080 #select Xxxx
srl $a0,$a0,24
beq $a0,10,ret
syscall
addi $s1,$s1,4
j printstr
ret: jr $ra

Phoenix Wright Headed to iPhone

So it looks like my wish has come true: Phoenix Wright is finally headed to the iPhone.

I’ve blogged about how lacking the iPhone games market really is, and how this series was a point sample of how Nintendo still owns the market. That ownage may be slipping.

As a prominent iPhone developer, I’d be happy to assist with the port or help test. Unfortunately, I can’t figure out who’s actually behind it…

Year of the Linux Desktop

A lot of developers (myself included) have expressed disappointment in the app store on ideological grounds. Can’t install your own software! Apple keeps competitors off the platform! Apple doesn’t let innovative apps through!

But there’s another angle to this that nobody’s covering. The app store keeps piracy off the platform. Not because it makes buying easier than pirating (which it does), but it also makes pirating hard. You can’t be running the latest firmware. You have to forego security updates. Apple’s own development tools often have unexpected behavior on jailbroken devices (not intentional, I think. Just Apple never bothered to test it).

And so developers are pacified because piracy is constrained to those people who wouldn’t have bought anyway (in a way that computer apps aren’t)[1]. This sort of stronghandedness hasn’t worked on other platforms because the users are up in arms. Extra DRM isn’t a feature.

But in this case, the app store acts like an insurance policy. None of the apps are going to wipe out your data. They’re not going to hook into your OS and break Dashboard. They’re not going to forward themselves to everyone on your address book. Users are willing to put up with buying more software if it actually works. And so this is an acceptable trade for them.

And meanwhile, Apple is sitting in the back, pocketing lots of cash[2]. They’ve pacified the developers with more money (less piracy), and they’ve pacified the users with software that works. They’ve solved the two biggest problems in the industry, and they’ve been incredibly successful as a result. The major personal computing platforms of today are no longer desktop and laptop PCs. They’re devices running the iPhone OS.

2012 may very well be the year of the Linux desktop. But only because people using Linux might be the only desktop users left.

My iPhone Clients

Well, I’m certainly not hurting for work at the moment; my inbox is full of inquiries (mostly fly-by-night folks who want to do “revenue sharing”).

However, after discovering that I’m result #5 on Google for “find an iPhone developer“, I figured it might be a good idea to have a rant-free landing page for my iPhone consulting business that would convert better than reading blog posts full of yelling and swearing.

30 minutes of dragging and dropping in iWeb later (I know, I know… but it was so easy…) I have a new “professional-looking” landing site.  So if you want to hire an iPhone developer, send me an e-mail.

Phonepipe now open source

Phonepipe was one of my random app ideas that really never got the love and attention it deserved. I wrote it in a weekend, and then Monday happened and real work happened and it ended up on the shelf. There never was a terribly big market for it, and it would be too much work for people to run their own server stack just to get one-off notifications when the compile was done.

Well today I’m finally releasing it. Notifo published a new API allowing you to send notifications to yourself. In the space of about an hour, I copy-pasta-ed some old phonepipe code to target the new API.

Phonepipe has changed the way I work. I’m much more apt to go take a walk or get involved in a conversation with someone knowing that I’ll be pinged as soon as the download’s done and it won’t cost me any precious work time. I’ve found myself outside more, more social, and overall more productive. Not bad for a crappy little python script.

Go play with phonepipe. Patches and feedback welcome.

Your Wi-Fi Rights FAQ

After having a few run-ins with various over-enterprising institutions, I’ve gotten a pretty good grasp on the state of US Wi-Fi law.  Behold, a FAQ.

First of all, you have a right to run Wi-Fi networks, period.  The landowner can throw a hissy fit all they like, but (more often than not) you can still set up your hotspot.  The rationale is pretty simple.

1.  The 2.4GHz band is owned by the public.  This isn’t a “landowner’s right”, where each landowner “owns” the radio waves traveling over his/her particular land.  It’s like airspace.  American Airlines doesn’t consult with you before they fly planes over your house; they consult with the FAA.  Similarly, you don’t consult with the landowner before broadcasting radio waves, you consult with the FCC.

2.  The FCC has given you permission to broadcast on 2.4GHz (erm, the part that WiFi uses anyway, there are some IRM bands that are still licensed airwaves).  This is like the FAA saying you can fly over above 3500 feet–who you’re flying over has no say in the matter.

3.  Claims of “you can’t use hotspots because they interfere with our network” are not legally sound.  In the eyes of the law, “their network” is no more legitimate than yours, and they have no claim (either through landowner rights or through “first use”) to the airwaves.  If they want their own band, they can pay the FCC for licensed spectrum.  Otherwise, they have to share it with you/everyone.  Period.

4.  This leads to something extremely interesting–it’s perfectly legal to “jam” unlicensed 2.4GHz space (as long as you don’t interfere with licensed space or broadcast louder than the normal WiFi ceiling).  In particular, it’s perfectly legal to use beacon-layer flooding (bringing up lots of imaginary hotspots) or to talk over transmitters (as long as you don’t go above allowed transmit power).

5.  You cannot “sniff” conversations (encrypted or unencrypted) to which you are not a party (47cfr15.9).  There was an incident in the not-distant past in which an organization was sniffing wi-fi packets in order to determine the identity of persons operating “unauthorized” networks.  This is illegal.  Furthermore, if the AP is encrypted, it very likely meets the “access without authorization” test, rendering it a federal trespass crime.  It is also my considered (but untested) opinion that breaking WEP/WPA is additionally DMCA violation in some cases.

Okay, well maybe I can’t ban radio transmission, but as the landowner, surely I can keep hotspots (the physical boxes) off my property?

Actually, no.  Sure, if the Hotspot Bandit runs on your property, you can issue him a trespass warning, and he and his hotspot can go broadcast on the curb.  But if we’re talking about a legal resident / tenant, they can have whatever hotspots they want.  Huh?

It’s simple, really.  There are rules about what landlords can and cannot do.  They can’t not rent to black people or to women or to handicapped people.  They also can’t tell you that you can’t use a hotspot.  The FCC’s reasoning goes like this: since the 2.4ghz spectrum is unlicensed, anyone can broadcast on it.  The only reason to ban hotspots is to prevent people from accessing public airwaves.  Therefore, landowners can’t ban them.

The FCC has ruled like this on case after case–against residential landlords, airports, everybody.  As long as you have “exclusive use” of an area (basically, you can deny random people off the street entry), you can install a WiFi hotspot.  Period.  (You can also install small satellite dishes and many other kinds of antennas, and you can even put things on a mast above the roofline, subject to some safety restrictions.)

But my lease / the rules say X and Y!

I can write a lease that says you can’t have any Asian guests.  That doesn’t make it even remotely legal.  And if anybody tried to enforce it, there would be hell to pay.  Same with WiFi.

But… but…

Sorry.  That’s clearly and unequivocally the law.

Phoenix Wright and iPhone Games

There are some really, really great iPhone games.  And there are more coming.  The unsung hero of the iPhone 3GS (and upcoming iPod Touch) is the new graphics chip, which is going to rock the socks off what we’ve been seeing so far.

That said, I’m really worried.  Let me tell you why.

Phoenix Wright is a ridiculous game.  You play a crazy, how-did-he-pass-the-bar-exam defense attorney who ends up with hopeless cases where clients are consistently and inexplicably being framed by huge criminal organizations, the government, and/or the prosecution.  Which, by the way, is allowed to bring weapons in to the courtroom and assault and batter both you and officers of the court.  In a court system in which clients are guilty until proven innocent, and the prosecution has all of the evidence.  Also, you have psychic powers and summon people back from the dead to hear them testify.

Suppose you are a gaming exec and somebody pitches this idea to you.  WTF?  Dumbest idea I’ve ever heard.  What genre would this even be?  What’s the demographic for bizarro-world law and order?  How is this universe even remotely self-consistent, let alone sane enough for a rational player?

The thing about the Phoenix Wright franchise, though, is that it’s quite possibly the best mobile gaming franchise ever made.  For one, its episodic format fits perfectly into the mobile space; its gripping plot and stunning characterization stand out like an extremely good book.  I feel like I know Detective Gumshoe, something so hard to pull off in this format I don’t even know where to begin.  Somehow, the writing is so good that this insane world actually feels believable.  The plot is so complex that the detail you missed back in game one should have tipped you off that so-and-so was the criminal mastermind in game four, and people endlessly speculate online about things like this like they did back when maybe Dumbledore wasn’t dead.  The localization team has quite possibly performed a miracle: the text effortlessly weaves together nerd humor, insightful aphorisms (thanks Godot!), witty puns, and the whole thing feels so polished you’ll swear it was originally a DS title (it wasn’t) and it was originally in English (nope).

You won’t find Phoenix Wright on an iPhone.  Sure, you’ll find innovative indie houses that find new and clever things to do with accelerometers and location, that make beautiful, well-designed titles.  This is new and exciting, and is bringing a lot of new players into the game space that weren’t there before.

But look at Nintendo’s stable.  No, really, look at it.  You’ve got The World Ends With You, and its sibling, Devil Survivor.  Here are two breathtakingly-gorgeous games that are innovative and refreshing and all that cool “indie” stuff.  And they have epic story arcs that make you feel something.  FF: Echoes of Time.  Solid franchise (arguably the solid franchise), solid gameplay, very competitive graphics (when you ponder this is done without real 3D acceleration, it really becomes a WTF moment), and an excellent story.  Covenant of the Plume, a dark, serious story-driven title.  Suikoden Tierkreis (possibly best-looking mobile game ever).    DQIV.  Fire Emblem.  FFIV.  Tactics A2, arguably the greatest strategy game ever.  I dunno, just work your way down the Editor’s Choice list: these are 100+ hour titles that look great, play great, and tell a great story.

Now go down the iPhone game list.  You’ve got some good titles.  Alternate Endings is cool.  CSI: Miami worked a lot better than it sounded on paper.  You’ve got your prettied-up Nethacks, which are playable, I guess, but no feeling.  You’ve got Monkey Island, which is a great idea but too buggy to be playable.  You’ve got Myst, which I’m sure was a checkbox for the rights holders (seriously, what platform does Myst NOT run on).  You’ve got some good “casual gaming” or whatever titles where you tap some colored circles to music or play something that looks an awful lot like Tetris except has some “innovative” feature like blocks moving sideways or something.  And then you’ve got the artsy titles which are really decent–I mean somebody really loved this game–but it just doesn’t hook me without a killer plot.

Now here’s what I can’t figure out:  we’re told that gatekeepers (like Nintendo) keep innovation out of the marketplace, because they’re motivated to not take risks and such.  But the fact of the matter is, Nintendo is consistently turning out excellent, high-quality titles, while, conversely, the king of the app store is mass market fluff.  I mean if you asked me “Which will be backed by a video game conglomerate: crazy innovative lawyer game or Tetris clone,” my money is on Nintendo passing on an innovative game and settling for something with wide appeal, the developer instead sets up shop with Apple and makes a million bucks.  And yet.

So I draw two conclusions from all of this.  First of all, I’m not throwing away my DS.  Nintendo’s hardware may be woefully behind, but they’ve nailed mobile gaming, at least for me.  You can pry their titles from my cold, dead hands.

And the other is, in spite of my aversion to taking on new work, I’m dying to put a decent story arc on an iPhone.  I’m dying to take old-school adventure RPGs, bring them into the 21st century with some GPS or multiplayer or something, and get them on the App Store.  I’m dying to feel something again.  So if that’s your cup of tea, feel free to hit me up and we can work on it.

Return top