Friday, January 17, 2014

APC Rock (Hardware Review)

I'll add more bits about this as I discover more, but the Fox has landed!


I had a little trouble yesterday because all I had was a VGA cable, but today I managed to find a HDMI to DVI and when I turned it on, the above screen appeared. It's the Firefox OS lock screen for PC. (Don't know if that's the official name.)

Swipe with your mouse to get this:


And again for the next screen.

How cool is that? The picture is a little fuzzy because I took it with my Geeksphone Peak.

I don't know how to take screen shots or even load an app on to this and I don't have WiFi hooked up, but the Fox has defnitely landed!

And a bargain at $59 US. Their site says $79 but that's a mistake. They answer email! And the shipping was fast (and I think maybe another $25 from Taiwan to the Seattle). Who are they? Why, this wonderful device is called the ASR Rock and it is made by the folks at VIA. I've known about VIA for several years and have a few computers made by them. Their specialty (among others) is making x86 Intel-compatible chips. The computers I had were about the size of a hardcover book and they sell this board for $99 with a book-like enclosure.

If you want to know more, check out http://apc.io/products/rock/. Essentially this is a single-board computer that is about the size of a phone. It comes with a power supply and not much else. But it does come with Firefox OS and a metal shield to fit inside a computer case. The board is compatible with the Neo-ITX form factor, which  is compatible with Mini-ITX and MicroATX. (That's geek for small form factor cases.) The board is bigger than a Raspberry Pi but very similar in concept except it boots Firefox OS! All I did was plug in the power, plug in the HDMI, plug in a USB keyboard and mouse, and I now have a Firefox OS PC and two Firefox OS Phones (ZTE Open and Geeksphone Peak).

This Changes Everything

A few days ago, Andre Jaenisch wanted to know why I was using absolute positioning when this isn't considered (by many) to be a best practice. I'm so used to doing this that I needed to think more about this.

Absolute positioning was needed the way I was using text elements mixed with SVG. One of the fundamental issues of writing games in a browser is that you have to be very aware of the display flow of the elements in a browser. Usually what you type is what you get, but once you start calculating and mixing different kinds of elements, you have to be careful. In that example, I had put the text in the body and then the SVG in the JavaScript code. It looked great in the desktop browser, but on the phone the bottom half of the SVG pane was cut off. The Head and Paragraph elements had pushed it down!

The answer was to take the text elements out of the browser flow and slap them down on top of the SVG pane, which was meant to take up the whole phone screen. So that's why I did it there, but now my head is spinning, realizing that the game is changing.

When I started a few months ago, it looked like the phone would be the main outlet for Firefox OS, and the screen size was the same for the first few phones. So I targeted that, never dreaming that those speedy Firefox boys and girls were working day and night behind the scenes to bring more goodies.

So now the Firefox OS PC (is it a PC? The chip is VIA ARM (no Intel here) but it can fit in a PC box and use PC peripherals. How soon will I be writing my blog on that?

And just last week the Firefox OS tablet was announced and the first tablets are now being tossed around at Firefox towers in the UK, courtesy of Foxconn (is this the beginning of the Fox conspiracy?)

What next? Laptops? FoxBooks? FoxWatches? Where's my Fox Toothbrush?

Anyway, Andre, I'll now think about making responsive games. Right now I'm concerned with making very simple games that show basic principles, so I don't want to add any extra of anything. I'm not teaching computer science, I'm showing how to make some games for Firefox OS. Same reason I use globals -- they make the code more efficient for small games. But in a big game with many screens, globals might not be a good idea, and name spaces are very important (SVG uses namespaces).

But now I am thinking about it. A game like PaddleFox would be easy to adapt, but an RPG might be more difficult. Responsive design is growing very fast and SVG can be part of it. But there's an even newer slant called adaptive design that is somewhat similar but instead of just changing the width and height, it displays different information depending on the device. So your watch gets one set of data and your Firefox OS PC gets another. Something to think about.

Now to get back to getting the wireless running on my APC Rock!