A lot on my mind—APIs and Streaming Sites

October 3rd, 2011

I’ve been working on a Chrome extension for awhile. I hit a fairly major roadblock in what should have been a fairly easy project by a pretty annoying quirk in Justin.TV’s API. I plan on sending an email on this particular point after this post is finished.

Working on the Chrome extension caused me to realize that the Twitch.TV changeover for gaming-related channels resulted in a few API changes. It didn’t break anything on our website, but there’s additional information we didn’t have before. I’ve subsequently made some updates to our website to take advantage of this. So far the response has been overwhelmingly positive, so things aren’t all bad.

However, in doing the website updates I was reminded that I have some material in there for handling UStream and Livestream channels. We’ve been extremely happy with Justin.TV/Twitch.TV in the past year; they’ve been very responsive in adding useful tools and working out issues with us.

Thus, it shouldn’t really be any kind of surprise that I haven’t looked at either US or LS since I did the API code last December. Since I was taking a break from the extension code and had been reminded by the PHP I wrote, I figured I’d take a look at the APIs and sites for those two to see if anything needed updating.

The results were extremely disappointing.

UStream’s API is still utterly useless. I can’t pull a live snapshot of the stream. I can’t even pull viewer counts. The only useful things I can pull out are the state of the channel (live or not) and the embedding code for the channel and chat. Had either of those been missing, the API would be inoperable entirely, but this is barebones beyond the ability to do anything good with.

Livestream, on the other hand, is a sore spot with me. We left Livestream a few years back when repeated requests for technical support via official methods were ignored for a year and major problems we were having with our channel went unfixed.

It didn’t help to discover that Livestream’s limitations for free accounts were so far below Justin.TV’s free accounts as to be ridiculous. Livestream limits you to 500kbit total streaming bandwidth on a free account. If you need more, you can expect to pay over $100/month easily—when the bandwidth calculator for the “Premium Account” was released (this was shortly before we left Livestream) I ran our channel through the calculator and determined we’d be paying over $250/month for something we do for free.

What I discovered when I returned wasn’t surprising, but it was extremely disappointing. Nothing has changed at Livestream. The limitations are still unworkable, I found many unanswered tech support questions on their forums, their website hasn’t been updated to show an accurate comparison with Justin.TV and UStream (both sites have Video-on-Demand now and have had it for quite some time), and their own API is still a horrific wreck.

I used to love their (often slow responding) broadcast studio, which still has no peer on Justin.TV or UStream, but I’ve heard from some contacts I have that still use Livestream that their Procaster broadcast tool has gotten a lot worse and even less stable.

I honestly can’t see the Sanctuary Crew leaving Twitch.TV any time soon. There are occasional headaches and frustrations, but there’s no doubt in my mind that they’re still a mile ahead of the competition.

Dusting off the PS2 for updates

August 29th, 2011

A brief Internet outage relating to downed wires from the storm two nights ago got me to sit down and work on a small project I’d been putting off for months.

My PS2′s optical drive has been dead for quite awhile now. Normally this isn’t a big deal as I tend to just swap stuff on and off the hard drive as needed. However, I’m not expecting an old IDE drive to last forever, and the life support patches for HDLoader ended with 0.8C– that was over five years ago, if my recollection isn’t totally wrong.

In the subsequent time, the homebrew replacement for HDL was developed and it has equalled if not surpassed the unofficial patches HDL received.

Thus I took a bit of time this afternoon to install and tweak OpenPS2Loader. Results are encouraging so far, but I have hit a few snags already. We’ll just have to see how it goes.

Honestly, in the long term I’d call this a side trip– within five years I think we’ll all have moved to PS2 emulation, which is already pretty usable.

Blogs and Twitter

May 15th, 2011

Despite all of the angst I’ve come to see from the blogging community, I’ve come to the realization that blogs and Twitter really can coexist nicely for certain kinds of uses.

Twitter is best for small stream of consciousness posts, but larger posts get mangled badly. This is where a full blog post shines. Additionally, Twitter acts very much like an RSS feed, so the blog posts can be fed through Twitter.

This overlap is starting to make me understand why people keep saying RSS is dead, but there are still a lot of sites only publishing RSS right now; I wouldn’t call RSS dead quite yet.

In any case, my Twitter name is @firehawke. I do block spammers, though, so don’t even bother if you’re a machine.

Eyes and Brain Reprogramming

May 13th, 2011

I recently had a sharp reminder about the depth perception issue I have with my eyes. Long story shortened, they didn’t discover some issues with my eyes until I was about twelve years old. In particular, that I’m nearsighted in one eye, farsighted in the other, and because of a slightly abnormal eye socket, one eye has additional pressure applied to it.

Normally, when this kind of issue pops up, it’s caught early enough that corrective measures can be made through the use of glasses or surgery. When it isn’t discovered soon enough, however, glasses and surgery become useless.

The reason why this is the case is simple and amazing in its own way—the brain reprograms itself to disregard what it considers to be bad data input. A few years of visual issues while you’re young enough will eventually lead to the brain killing the possibility of depth perception and using the eyes one-at-a-time even with both open.

This is what happened to me. Even when I force myself to try to use both eyes at the same time to focus on something, I might see 3D for a faint instant before my brain forces me back to a single eye. I also get a massive headache for the effort, of course. This means that things like 3D movies, the Virtual Boy, and the new 3DS hold nothing for me.

It also explains why I’ve always had major problems playing sports. I simply cannot perceive the depth axis for a ball thrown to me, and even the remaining two axes tend to be skewed.

It’s entirely possible I could train myself to see in 3D, but the possibility of further damage through trying makes me very much not inclined to try.

Only a partial derail..

May 9th, 2011

My luck never ceases to be trying to knife me in the back. Managed to get a slight stomach bug that’s throwing my concentration out the window. I’m feeling pretty drained, and I don’t feel like I managed to really get anything useful done code-wise in-between naps.

I did, however, get a chance to look at Metroid’s use of WRAM a little better. I feel like this Lua project is helping me understand the Metroid code a lot better. The port from Famicom Disk System had to have been a bit of a challenge, as the original code made definite use of extra RAM the FDS added, forcing the use of extra RAM in the cartridge itself.

What I wasn’t quite expecting is that apparently not all that RAM is being used by the game itself. There’s apparently quite a bit of free space! The Lua script uses a chunk of that free space at the end of the WRAM mapping space for keeping track of the map, as I’d previously stated in my last post. After doing a bit of digging, I was able to find a good location (read: not being touched by the existing script or by the game itself) to store configuration settings for the script.

While doing the initial research in this area, I learned something very interesting. Zelda, also itself an FDS port, needed similar treatment in the conversion to cartridge: There they also use a significant chunk of the WRAM for holding a code bank, and a very tiny amount for the actual saved games. Mario 2, also a (heavily modified) FDS conversion, also used WRAM in the prototype phases. By the time the game was done, though, they’d converted it to a different mapper.

Any case, I’ve made a bit of progress, but I don’t have anything tangible to show for it because I’m having trouble keeping focus on code. Hopefully I can get back on track for that part soon, but in the meantime I’ll just keep working on what I can. The better my understanding of this, the easier it will be in the long run.

Digging into Zebes in a different way

May 7th, 2011

I’ve been doing some deep digging into the depths of the original Metroid the last few days, as a result of getting sudden inspiration from Neill Corlett’s Lua script for Metroid under FCEUX.

I’ve found more incompatibilities with the script and semi-recent builds of FCEUX since I reported the initial bug to him, and I’ve been cleaning things up as I go. FCEUX seems to have changed some Lua functions in backwards-incompatible ways.

As a result, I’ve actually had to keep the original script website open on a secondary monitor while working on the script, in order to see how he intended it to actually look, because FCEUX’s most recent stable build as of now breaks the look a LOT worse than I’d expected.

I could have sworn it was possible through a password hack to get an ice beam with the wave properties, but I haven’t been able to reproduce it. Maybe my memory is faulty. I’ll keep looking at that one, but I’ve got a lot of other stuff to be digging through as well.

For instance, I’ve added a third screen to the script for configuration of individual features. This came from RetroNutcase’s comment that he wouldn’t want the destroyed block timers. I haven’t yet added the ability to toggle specific script features just yet, but that’s next on my list of things to be looking at.

I should also see if there’s any way to save a text config file to the current directory (hopefully where the script itself is stored?) for a platform agnostic way to save settings for the script. Actually, I just realized he’s probably saving the map info to NES RAM so to be able to save it as part of a savestate. That suddenly makes this all make a lot more sense. Instead of using a config file, I should use NES RAM if there’s any free—I’ll need to actually look at the memory map.

This is actually the first Lua scripting I’ve actually done any serious work with, so I’m also learning as I go. This also makes the going a bit slower than I’d prefer, but you can’t win them all.

State of the Firehawke

May 2nd, 2011

So much for my intentions to keep this thing updated more often. Well, honestly, with the chaos going on behind the scenes, I pretty much HAVE to forgive myself on this one. Things have been pretty crazy, both in the real world and the virtual one.

It’s all starting to come together now, with my wounds actually finally starting to heal, but I’m still feeling pretty burned out. I’ve even taken a major break from streaming for a bit and considered stopping entirely. That’s the kind of stress level I’m at, where I’m so burned out that I don’t even have the willpower to be doing things I normally would be doing.

I think I’ll be okay, though. I’ve been through this before, and I recognize the signs well enough that I’m not making important decisions while under the influence of stress.

Found an interesting blog post earlier tonight that someone wrote a few years ago. Turns out the Japanese Turbo Duo’s mini-DIN is identical to a Macintosh one, allowing me to go to Monoprice to pick up an extension cable for the controller for a lot less than an official one goes for. I’ll likely be ordering that extension later today, in fact.

Once I get my mind and body back in gear, I really want to get back into game development again. I’ve got pages upon pages of design work and even some CODE for at least three games that I’ve been sitting on for a few years! I’ve just been demoralized from working on them due to certain reasons I won’t go into here.

Here we go again..

April 8th, 2011

I’ll admit it, I really didn’t keep this blog up to date.

It’s been a bit chaotic in recent days, but I’ve got a bit of downtime again now because I’m coming off an unannounced marathon stream session. I played through the entirety of the mainline Mega Man series, from the  very first to the tenth, while taking a brief sideline visit to a rare Genesis title.

Of course, I’m also feeling the effects from it after the fact– one blistering thumb and a slow ache from arthritis that’s leading to a bit of power loss in my right hand grip.

I’ll live, but there will be some downtime before I can go on to the Mega Man X stream I’ve been promising.

Now I just need to get back into the habit of  keeping this thing updated properly!

Cheap shot of the morning!

January 31st, 2011

Floofy: oh hey.
Floofy: NOAA just announced the storm warn classes for 2011.
Firehawke: Oh?
Firehawke: Hurricane Floofy got announced?
Floofy: XD;
Floofy: I’ve been meaning to get spotter trained for several years now.
Firehawke: …..
Floofy: I can make the scheduling with this new job.
Firehawke: …….
Firehawke: ……..
Floofy: ….
Firehawke: You know, we have toilets for a reason..
Floofy: not like that!! :<

Sometimes you just get handed a perfect set-up line!

Back in full operation!

January 24th, 2011

Power’s back on, got my computer back online, and I’ve even resumed streaming. The project I was previously hinting at was a redesign of the backend of our website, which was completed and uploaded in early December from my netbook in what time I could get together to work on it.

While the new site looks a lot like the old one, the whole thing is dynamically generated and designed for future expansion.

At this point, I just need to get back into the habits of writing here and streaming again. I’ve been out of action way too long!