Here's my programming productivity idea, and it's so absurdly simple that there has to be something wrong with it. . .
I noticed recently that I use lots of bits of free source code from various places. Stuff like SWFObject or cunitescore or PHPFlashMyAdmin pr AMFPHP or other little bits of eternally updated code that exists on various sites Problem is, I need to check with those sites once in a while to check for bugfixes and the like.
What if the makers of that code put a little chunk of XML in their header like so. . .
/*
<standardCode>
<name="fribblefrox's kewl graphic object" />
<version="1.0.1.22" />
<location="http://www.whatever.blurg/code/kewlgraphic/graphicobj.cpp" />
</standardCode>
*/
Then you'd have an app that'd scan your project directory for files with this header or, even better, a plugin to a development environment that'd scan the files in a project. And once in a while you could run the app or schedule it as a task or press the "check my internet objects" button in your IDE, and it'd compare your files with the ones in the repositories, pester you if something had changed, let you see the changes in a diff-tool (if it's text), and let you decide if you want to replace the existing version with the new one.
That way keeping your objects updated would be as simple as pressing the "scan c:/documents/projects for changes" button in an app.
Again, this is so absurdly simple that there must be something wrong with the idea. Either it's fatally flawed or it's already been implemented. I know revision control systems do this kind of thing, but that's killing a fly with a shotgun. I don't want to have to subscribe to a source code repository if I just wanna be notified that some little handy piece of javascript I use (like SWFObject) has changed. I'd rather just have something that'd quietly scan my project folders once every couple of weeks and pop up a box that says "Hey, SWFObject just updated to version 1.1.1, but you still have 1.0. Whatcha wanna do?"
Thoughts?
Thursday, October 30, 2008
My dumb programming idea
Wednesday, October 29, 2008
New Lappy
Well after griping about the quality of the software on Maggie's OLPC laptop a couple of weeks ago, we decided to do something about it. After a little discussion, we chose to ebay the OLPC and replace it with one of the legion of baby laptops that hit the market recently. Given that OLPC's are holding their value rather well, we figured we could probably trade it in for another lappy for a net of less than $100.
So I started looking. And, if you know me, you know I found a deal :)
Actually this one's from Microsoft. If you use any search-engine nowadays, you'll notice the sponsored links at the top, often combined with some icons as to how well they support the search engine's parent company. Well Microsoft is doing this too, but they're combining that with some pretty impressive rebates. And one of the participating companies is ebay, seller of pretty-much everything on the planet.
And the rebates are pretty substantial. I got 30% cash-back on the new lappy.
There's a full description of how to do it here, but suffice it to say it's easy to do and it works. My little live.com cashback page tells me that in 52 days I'll be sent $135 by paypal, dropping the net price of Maggie's new Lappy to $314.
And it looks like the deal works for pretty-much everything that has a "buy it now" price on ebay. I think you need to sign up with live.com, but if you have an old hotmail address laying around somewhere, you're already signed up.
As for the new Lappy (purchased from reseller "multiwavevideo" and highly recommended), it's great. It's an EEE PC 901 with XP. It's about the same size as the old Lappy. It's white, which made me sad because they have cute pink and green ones that Maggie would've loved. It has a similar collection of ports and such to the OLPC, although it adds an ethernet and VGA port. While they have hard drive versions available, we opted for the one with the 12 gig flash drive so the unit would be kid-proof and long-battery-lived like the old Lappy.
My biggest worry was with XP and 12 gig, there'd be pretty-much zero space left for anything else, especially after Windows Update installed 20 updates including new Media Player, .NET, and Silverlight. After uninstalling the built-in apps and installing all the updates, I ended up with 9 gig free (one gig free on the main OS partition and 8 gig on the now-empty app/content partition). I figure between the free space on the app partition and the plummeting cost of SD Cards, it won't be a problem getting a long car-trip's worth of videos and games on this thing.
Only complaint now is that there's not quite enough free space on the main OS partition to hibernate. Anyone know of a free nondestructive re-partitioner I can use on this thing?
The screen's basically a scaled down version of those 1280x800 widescreen laptops. It's a 1024x600 screen that's very sharp. It has a couple of hotkey-activated screen modes that are presumably for apps that demand a 4x3 aspect ratio. Basically 800x600 with the sides cut off or 1024x768 with scrolling. Thus-far the only thing we found that simply will not fit is webkinz.com, which is a Flash-based site that (very rudely) refuses to scroll OR resize to fit a smaller screen. All of the other kid-friendly sites (Disney Pixie Hollow, Yahoo Kids, Homestar Runner, The Code Zone [g]) work just fine.
And, best of all, it runs Flash content like a champ. My biggest complaint about the OLPC was mediocre-to-unusable Flash performance, which made the vast bulk of kid-friendly websites (see above) a poor experience. Suddenly Maggie's enthused to use her Lappy because the kids websites work great.
It's running one of the new Atom processors. Apparently the first generation of EEE's ran celerons which caused some performance complaints. The Atom, though, is way snappier than it has a right to be. Windows thinks it has two processors, but a check on the BIOS settings reveals that the Atom is actually using "hyperthreading" which was a trick the P4's used to wring out a little extra performance by pretending to be two cores. It's not as nice as an according-to-hoyle dual-core machine, but there's only so much you can expect out of a machine that's half-again as large as VHS videotape.
The only thing keeping me from getting one of these myself is the keyboard. I like my big cheap Acer laptop because it has a full size keyboard and is great for touch-typing and taking notes in real-time. The EEE keyboard is doing its best with the space it has, but it's cramped and is really uncomfortable for typing. And while I don't have big freaky sausage-fingers, I found it easy to press neighboring keys while typing. Six year-old hands fit it just fine.
The speakers are microscopic and very quiet. If you wanna watch videos on this thing, get some headphones.
There wasn't a ton of bundled software. Some of it was important, like their little hotkey software that let you toggle clock speed from "slow and run for eight hours" versus "fast and run for two" and the screen-resolution-switcher. One oddity was that it shipped with both MS Works and StarOffice installed. Given the amount of storage on it, I uninstalled both figuring that Google Docs (which works wonderfully) would be a good choice for now. I can always slap OpenOffice on it later.
One other feature it brags about is "20 gig of online storage", which is one of those online services that stores your files on their cloud. Given that everybody and their brother nowadays wants to give you free storage on their cloud, I didn't bother with it.
So, is it for you? It depends. If you're a kid, absolutely. Maggie's been pining away for a Wii for a year now, but a little Lappy that'll play every Flash game it can find (including Pixie Hollow, which is the biggest danged girl-magnet on the planet) is a good substitute.
If you're a grownup, it depends on what you wanna do. If you want something to surf the web from the living room, play Bejeweled on the front porch, and play videos while you're on vacation, then absolutely. If you wanna do real work on it, then you'd better at least plan to buy an external USB keyboard or you're gonna hurt your fingers.
Thursday, October 23, 2008
Robocopy is your friend
Here's a nice hint. Since I run a little engineering shop, I'm always on the lookout for little utilities that make our system more automated. And this time it turned out to be one already built into Windows.
Since I have a big terabyte NAS drive hooked up to the network and it's important to keep backups of things, I decided to mirror our most important documents from the engineering machines. And there are loads of free folder-mirroring solutions out there. But it turns out that there's one built into Vista (and is available pre-Vista if you have the "Windows Resource Kit" or you just dig around a bit).
It's a Microsoft command-line gizmo called "robocopy", and it's basically xcopy on steroids. It's got millions of options, but the most important thing it does over xcopy is that it'll only copy changed files like a standard disk-mirroring utility. That means that if I have 50 gig of mirrored folders but only three files have changed, it'll only copy over those three files.
So a little batch-writing and work with the standard Windows task-scheduler, and I have a full mirror of our documents. And it's been working just fine for a year now, so I'm happy about it. Actually I mirror the files to a different folder every night (civilgrrl-1/monday/documents, civilgrrl-1/tuesday/documents, etc) so I have a seven-day backup of all of our files.
One good hint. If you're copying files from NTFS to Linux (a distinct possibility as most NAS boxes are running Linux) then use the /FFS command-line switch. When I first tested the robocopy-backup, it was backing up a lot of files that hadn't changed between sessions. Turned out that NTFS's file timestamps were more finely-grained than whatever the NAS is using, and the timestamps weren't exactly the same (just really close). The /FFS switch assumes that timestamps up to 2 seconds apart are the same, which fixed the problem.
Wednesday, October 22, 2008
Found the Flash CS4 bug
Since google's still bearing out that I'm the only one with the previously-mentioned bug, I decided to dig a bit. Realizing that CS4 migrated over all of my old CS3 extensions, I started there. After a few rounds of disabling extensions and restarting, it turns out the problem is with the old Pixel Tools extension. Pixel Tools is an extension to the standard drawing tools (pencil, eraser, brush) that gives you pixel-level non-aliased tools.
And apparently it gives Flash's new IK tools fits.
Pixel Tools were abandoned in 2005. The JSFL source code is still on the site, so it's conceivable that someone could find what the tools are doing that's upsetting IK and re-release, but I'm not the man for that.
I almost never use Pixel Tools anyway, so I just disabled it and got on with my life.
Monday, October 20, 2008
Am I the only one?
I just googled for this and got no hits, so I figure that I might as well be the first. Maybe start some discussion.
Am I the only one getting the following two errors in the output panel of Flash CS4?
Plugin tool script error in method ik_activateTreesFromSelection
Plugin tool script error in method ik_clearActiveTrees
Seems to be happening every time I select a graphic in the design window. Anyone else?
Much fun was had this weekend
Not at all game development related, but we did Maker Faire in Austin this weekend and had an absolute blast. Shelly was accepted as a "maker" for her little antique sock-knitting machine hobby. She was pretty-much tied down to her booth all weekend, but she still had lots of fun talking to people and showing off her antique knitting gizmo.
Even better, she won an Editor's Choice award, which I attribute to the strength of her presentation. There really wasn't much to her booth. Just her and a friend cranking on socks and talking about the machines, but she did take a lot of time to show people how the machines worked and the cool stuff you could do with 'em.
She also did an audition for Make:TV. We'll see how that goes.
Maggie and I had two days to do the entire faire, and we did pretty-much everything. Shelly posted a pile of my pictures here. As you can see, Maggie loved the snake-bike. We also got to see the eepybird.com diet-coke-mentos-fountain and the life-size mousetrap game, both of which were quite fun to watch.
There were loads of great things for kids to do free. Singer (the sewing machine people) were helping kids machine-sew cloth lunch bags, and Maggie proudly took hers to school this morning. She also made a kite, a parachute, slime, and innumerable little hand-painted doodads.
And I didn't get pictures, but they had robot wars going on in the big Austin rodeo arena. Most impressive was the 340-pound class. You don't really get an impression of the violence of colliding robots when you see the show on TV -- imagine two riding lawnmowers crashing into each other at top-speed and jumping five feet in the air and you get the idea.
All in all, it was a two-day celebration of everything nerdy. It was a blast. I'm sure we'll do it again.
Sunday, October 05, 2008
Me the iconoclast
Ahem. . .
Putting Windows XP on the OLPC is a terrific idea.
My kiddo has had her little OLPC XO laptop since February. And it's an awesome little piece of hardware. It's got a great screen with a high-contrast-ebook-mode that looks great and a built-in video camera and it swivels to work as an ebook reader and it has stereo sound and it's got no rotating storage and a spill-resistant keyboard and it's just an ideal little laptop for a kid who wants a computer.
That is to say that it'd be an ideal kids' laptop if the software wasn't such an absolute lemon. It's running somesuch linux kernel with a nonstandard UI called "Sugar" that seems to inspired by DeskMate (and this is speaking as a former member of the DeskMate team). The apps (called "activities") are a very mixed bag. Some of 'em are really good but most of 'em are pretty poor. Its all-pervasive "journal" metaphor makes things as simple as bookmarking a website an unintuitive multi-step process.
Three examples. . .
Problem 1: The XO has an SD-card slot, so one initial idea I had was to throw some MP3's on a card so Maggie could listen to some music. Problem is, there's nothing that'll play MP3 files. There are a couple of experimental projects out there to play MP3 files, but they're way too complicated to be used by a kid. Furthermore, since the OLPC foundation actively discourages anything that's not open-source of patented, they discourage MP3 even though it's the most obvious standard to support.
Case 2: I'd like Maggie to learn how to use a word processor and a spreadsheet. Unless I replace the UI with something experimental and 102% unsupported, I can't run that. If it was running XP, I could install OpenOffice or MS Office with no problem.
Case 3: The OLPC ships with GNU GNASH for playing Flash content in a browser. If you've not tried GNU GNASH, let me save you the time and tell you not to bother. Apart from the most rudimentary timeline-based animations, GNU GNASH does not play Flash content worth a damn. Even sites that are written for very early versions of Flash (like Homestar Runner or my own thecodezone.com which are both written to work with Flash 7) don't work. If you go to the OLPC Wiki, you discover that you can install the real Adobe Flash player on the XO. It's free and it works just fine, but they still don't recommend you install it because, yes, it's not open-source.
And case 3 really underlines the main weakness with the OLPC's software, and that's that open-source is more important than usability. Their model not only prefers but MANDATES open-source patent-free software, even if that software is useless. Open-source software that doesn't work is preferable to closed-source software that does.
If Maggie's OLPC ran XP, it'd have Windows Media Player or WinAmp so Maggie could play MP3 files easily. I could put OpenOffice on it so she could learn how to use a word-processor and a spreadsheet and a presentation app (which she would absolutely love because she's all about making presentations at school). Rather than the OLPC's nearly-useless moviemaking app, it'd run the (at least passably usable) Windows Movie Maker so Maggie could record simple videos on it. I could put any of a dozen ebook reader programs on it so I could use its really cool portrait B&W mode as an ebook reader.
In short, it'd have software that's worthy of the hardware.
And note that all of this is written from the viewpoint of someone with actual end-user experience and not just some blogger who's against Windows on general principle.
XP will not kill the XO. To the contrary, XP will save the XO. The XO currently has a slate of software that's about 1/3 speak-n-spell class games, 1/3 "programming environments for kids", and 1/3 stuff abandoned in pre-alpha or proof-of-concept.
Biggest problem right now is that MS hasn't yet committed to how they're gonna sell XP for the OLPC. If/when MS comes up with a way to reflash and install XP on existing units, I'll be first in line to buy one.
Friday, October 03, 2008
What is the blog etiquette?
So what is the proper way to respond to a blog comment? Do you comment on your own blog, email the comment-er, or make a new post?
Eh, I'll do the last. A couple of posts ago, Bryan offered to test the waters for me regarding the iPhone development. And I'm always up for that.
If you (you being Bryan, everyone else is eavesdropping) want existing source code, you can have it. I don't, though, know what good it'll do. All the source is in C++ (the Retro Pack) or ActionScript (the new games), and I don't think they have enough in common with Objective C to make it good for anything other than a ground-up rewrite. At least that was the case with my games. Apart from reading code to remember how I did things, I didn't end up moving over any code when I rewrote some of my C++ games in ActionScript (Voracity, Shi Sen, Bulldozer).
As for the games, why don't you (again you being Bryan) start off with your own games? I think Lasso and Evolve would be a natural for the iPhone, especially if you could move the lasso around with the tilt-sensor. Also when you're done with 'em, we don't have to split the revenue. Slap Lasso up on the Apple iPhone store and start making the big bucks.
Unless you have some kind of agreement with your employer. Then I suppose we can label Lasso as a Code Zone game, although I do intend to give you the lion's share of the proceeds on that.
Wednesday, October 01, 2008
Retro Pack Revisit
I worked a bit on the retro pack today. The biggest change I have to make is to eliminate the .HLP files. That format has been discouraged since Windows 2000 and is basically unavailable under Vista. You can still download the .HLP viewer on the Microsoft site, but I'm not gonna put my users through that kind of hoop-jumping.
My first instinct was to do what everyone else does, which is make help into a PDF. Unfortunately my basest of base platforms, Windows 98, no longer has a PDF viewer. I presume that I'll have to do CHM, which is just more monkey-work. I found a couple of HLP-to-CHM convertors that do a pretty horrid job, but I figure it might be good enough for the three minutes that you'll actually use it.
It looks like Bryan's games are unfortunately lost. Back around 1995 Bryan agreed to write a few games for a pack that needed 11 games completed in six weeks. When the pack went to Cosmi, I dropped Bryan's games from the set (because the contracts were just getting too danged hairy and also I'm a greedy sumbitch). I kept around the source code necessary to build the Cosmi packs but not the Expert packs, as the chance of Expert needing updates was nil. I backed up the Expert stuff on CD, but I can't find any of the old backups anywhere. Bryan backed up his stuff on tape and that's apparently lost too.
Which is a shame. A couple of his games were awesome. I considered just grabbing the executables off the old Expert CD's, but it turns out his little timer-based animation system wasn't quite as clock-agnostic as he thought. On my machine all of his games run several times too fast. They run beautifully under the Windows 98 emulator.
So unless I figure out something else, they're lost :(
Now I have to figure out how to market these things. I'll be honest and say that my Puzzle Pack 1 is not a big seller. I put it together during a rather different business model for The Code Zone. My original aim was to do daily puzzles and then upsell premium versions of the puzzles with. . .
1. better music and graphics
2. playable more than once a day.
Then the embedded ad-thing hit. And I found that I could make more money off ads than I could off actually selling games. So I made non-daily versions of all my puzzles that you could play as many times as you want and uploaded 'em to a couple-dozen game portals.
So where does that leave the Puzzle Pack? Well, you do have a little nicer music and graphics and they're not web-only so you can play 'em without an internet connection, but that's not all that compelling and isn't worth ten bucks (apparently).
So my thought at this point is to dump the Puzzle Pack entirely and replace it with the Retro Pack. That way they won't be competing with each other and I can conceivably still offer a big pile of games for a low price.
But I'll pull the Bulldozers out of the retro-pack because that's still my moneymaker.
And I was thinking of also making it a freebie if you bought both Duck Tiles and Bulldozer That way you can get a big honkin' pile of games for $20.
Actually the retro pack is shaping up to be 47 games. I could pump the count up to 48 if I finished up "Alien Isotope", which was a standalone bejeweled knockoff that I started in anticipation of another "N Games for Windows" pack that never happened because the standalone "N Games For Windows" market disappeared with the advent of web games.
48 isn't bad. It's not a nice round 50, though. Hmmmm.
Thoughts?