01 Jun 2009
Android system-level development can be done on either Linux or OSX. For the
past few years I’ve been using OSX, but recently I’ve switched over to using
Linux.
Why? Mostly for the higher performance. The full Android system build
takes about 30% less time under Ubuntu 8.04 LTS than it does on OSX 10.5 on
the same hardware. Not to mention that it’s much cheaper to buy a generic PC
workstation than the equivalent Mac Pro.
I have had some early troubles:
It
took me a while to get used to typing the “Ctrl” key instead of the “Command”
key, and the ugly Linux fonts bothered me for a few days.
But since I’m mostly
using the exact same programs on Linux as I was on OSX (FireFox, Eclipse,
Android), after a few days everything clicked, and I think that I’m just as
productive as I was before. And the faster builds and file system stuff (like
grep) are wonderful.
It helped a lot to install the Blubuntu theme and some
nice wallpaper to get away from the awful Ubuntu brown/orange color scheme.
Oh, and I’m using Chromium for Linux, which works pretty well, except that it
doesn’t support Flash. I still fire up Firefox occasionally to watch Flash
videos.
01 Jun 2009
A few years ago I tried Ubuntu and predicted it would become a serious
challenger to Windows, in about 18 months.
Well, it’s about 18 months later, was I right?
Not exactly. Ubuntu seems to have stood still, if not actually
gone backwards. In particular, the newer releases have much worse sound and
video performance on my hardware (Intel CPU/GPU Mac Minis) than earlier
releases.
The sound driver issue is because Linux, in its typical
decentralized fashion, is trying to figure out how to provide a standard audio
subsystem, and has two or three competing standards that are duking it out.
Since they all suck it seems odd that people defend them so much. Just pick
one already.
The video driver issue is because Intel decided to take several
years to rewrite their Linux video driver stack, and Ubuntu decided to ship
the new broken drivers rather than continue to use the old unbroken drivers.
Very very lame on both Intel and especially Ubuntu’s part.
And Phoronix’s
performance tests show that the performance of Ubuntu has gone downhill
slightly over the last few releases. (With no offsetting user-visible feature
improvements.) So we see the problem’s larger than just sound and video
drivers.
It’s almost as if the Linux community doesn’t want to be
successful.
Microsoft must be laughing all the way to the bank on this one.
02 May 2009
I just bought a Logitech diNovo Edge Mac Edition
keyboard for my Mac Mini HTPC. I bought the diNovo instead of the Apple
Bluetooth keyboard because:
- Built-in trackpad.
- Built in volume control slider.
- Dedicated media transport controls.
- Nifty dock / recharger stand.
It’s my first Bluetooth device. So far I think Bluetooth works a lot better
than IR, because you don’t have to point it at an IR receiver.
The diNovo does have some flaws:
- No key backlighting, which makes it hard to use in the dark.
- The mouse buttons below the trackpad are mushy and hinged at the outer edges, making them hard to press. (Happily tapping works and there is a separete left-mouse-button on the left edge of the keyboard. So for typical Mac usage you don’t need to use the mushy buttons.)
- A skim of the Logitech support forums indicates that the function keys are not as programmable as some people wish. I don’t use function keys that much so this hasn’t been an issue for me yet.
My TV is a 40” LCD, and I sit about 15 feet away from it. At this distance the
1920 x 1280 desktop is just too high resolution for my eyes, so I reduced my
screen resolution to 1366 x 720. That seems to work well for now. Apparently I
need to get a bigger TV :-)
Using a keyboard/trackpad instead of a button-
based remote control is nice. I like being able to use all the ordinary apps
that I already know how to use, rather than have to learn a new set of apps
and UI commands. I also like not having to switch input devices depending upon
what I’m trying to do. (For example if I want to use a web browser to look up
some fact about a video that I just watched, it just works.)
The diNovo is
very smartly designed, so that it’s easy to use the mouse while holding the
keyboard in two hands. Of course I’m a right hander. A left hander might have
a different opinion, as the trackpad is located where it can be used easily
with the right hand, but not the left hand.
What about Linux?
I have been able
to use the same keyboard with both Mac and Kubuntu 9.04. With Kubuntu there
were some issues around the initial pairing: You need a working keyboard and
mouse in order to pair a new Bluetooth device. You even need to reboot once,
and answer one final dialog box using a working keyboard / mouse, before the
new device pairing is complete.
A second issue for HTPC use is that the Mac
Mini video driver on Kubuntu does not have the flexability to slightly lower
the resolution of the screen. I blame Intel for this, as they are in the
middle of converting to a new driver model and their current drivers are
pretty bare bones.
One final issue for dual booting Mac systems is that it
seems to take a while for the keyboard to reconnect after a restart. This is
an issue if you have reFit installed and you’re trying to send keystrokes to
reFit during the reboot. I found I had to press multiple keys multiple times
until reFit started recognizing keys, after which the keyboard acted normally.
30 Mar 2009
###
Here’s the first public version of the slides from Tom Forsyth and Michael
Abrash’s GDC 2009 talks on Larrabee’s instruction set, by way of Japanese
magazine PC Watch, as seen on Beyond 3D’s Forums. (You have to manually click
on each of the little thumbnails of each slide.):
Larrabee Instruction Set
Hopefully Intel
(or GDC) will release a better version of these slide decks sometime soon.
Say, was it just me, or was blogging really light about GDC this year? In past
years I was a lot more technical writeups than I saw this year. I wonder if
blogging is down in general? Is everyone on Facebook and Twitter now? I can’t
imagine Twitter being very useful for reporting technical information.
Here’s Michael Abrash’s Doctor Dobbs Journal article on the Larrabee instruction set.
Dr. Dobbs Larrabee
Here’s the
Intel GDC 2009
Larrabee talks:
Rasterization on Larrabee: A First Look at the Larrabee New Instructions (LRBni) in Action
SIMD Programming on Larrabee: A Second Look at the Larrabee New Instructions (LRBni) in Action
27 Mar 2009
The Xbox Media Center (XBMC) is a nifty open-source application for watching
videos. It was originally designed for use on modified Xbox video game
consoles, but has more recently become popular for Intel-based Home Theater
Personal Computers. It has been ported to Windows, Mac, and Linux. It has no
PVR features, instead it concentrates on displaying streaming and downloaded
videos. Its big advantage over using the Xbox 360’s similar application is
that it handles a much wider variety of streaming video sources and downloaded
video codecs.
I’ve been running Plex, an OSX-
specific version of the Xbox Media Center, on my Mac Mini for several months
now. Overall it’s a good product, but I had some issues for my application. I
wanted Plex to serve as a consumer electronic device that my mother-in-law
(who doesn’t use computers and can’t read English) could use by herself to
watch videos. The system I put together didn’t work very well for her. The
problems we ran in to were:
1) The integration with the 6-button Apple Remote
Control into the Plex/XBMC UI leaves a lot to be desired. The XBMC UI was
designed to be used with a full-featured remote, and the Apple Remote mapping
is just too hard to use. My mother-in-law would end up in the weeds of some
obscure corner of the Plex UI, without knowing how she had gotten there or how
to get back. The Plex software contributed to this problem by having a very
sluggish interface to the Apple Remote, that frequently missed clicks. When
you couple this with the overloading of “short” and “long” presses to try and
give the Apple Remote more logical buttons, it became quite difficult (even
for me) to reliably drive the UI. Even a task as simple as backing out of a
playing video was difficult to do reliably.
2) OSX (and Plex) have trouble
running in consumer-electronics mode, without a keyboard or mouse. OSX and
Plex both liked to bring up modal dialogs to report errors or software
updates. I was always having to drag out a keyboard and mouse to dismiss these
dialogs.
Now, a sensible person would work around these issues by buying a
Bluetooth keyboard and mouse, and software like
“Remote Buddy”
that enables the use of a full-featured remote. A somewhat more ambitious
person might have rescripted the Plex UI to work better with the Apple Remote,
or even dug into the sources to try and fix the sluggish event problem. But
I’m restless, and wanted an excuse to try out Linux on the Mac Mini anyway. So
this week I decided to see if the Linux version of XBMC worked any better.
Installing Linux XBMC
Installing Linux is alot like the old pre-Windows 95
days of DOS. I spent a lot of time trying different things and fiddling with
hardware issues. Here’s what finally worked for me:
So far (one day) this has worked well. The full-functioned remote control make
a big difference in usability.
Some issues I ran into
Ubuntu 9.04 beta problems with OpenGL accelleration for the Mac Mini
The Ubuntu 9.04 beta Intel
945 OpenGL driver does not hardware accelerate as many features of OpenGL as
in older versions of Ubuntu. XBMC’s user interface runs very slowly. This is
not XBMC-specific. Try using apt-get to install the “amoeba” OpenGL demo. It
runs smoothly on Ubuntu 8.10, but is a 2-frame-per-second slide-show on Ubuntu
9.04 beta. I hope this regression gets fixed in future versions of Ubuntu
9.04, as it otherwise looks like a good system.
The prebuilt “PPA” XBMC binaries will crash on Ubuntu 8.10 when pausing video
I had to build XBMC from
the subversion sources in order to fix a bug where pausing a video would
immediately cause XBMC to crash. (I used a build from Thursday March 26th. I’m
sorry but this is the first time I’ve used subversion, so I don’t know how to
figure out which revision number I’m synced to.) This is a bug that’s been
reported several times in the XBMC forums. It seems to be solved by compiling
from source, without making any other changes. I’m suspicious that this may be
due to some subtle difference between the libraries that you install to
compile and the libraries that are installed when you install the prebuilt
binary. (But that’s just a guess. The real reason may be something completely
different.)
Well, after all this the system seems to work pretty well for my
application. Too bad my mother-in-law’s finished her visit with us and gone
back home. At least now I’ve got plenty of time to work out the bugs before
her next visit.
[Revision notes]
3/27/09 - Updated for Ubuntu 9.04 beta.
25 Mar 2009
Perhaps in preparation for Friday’s GDC talks by Michael Abrash and Tom
Forsyth, Intel has described the Larrabee instruction set:
Prototype Primitives Guide
Intel includes a C source file that implements their new
instruction set, so people can play around with the instructions before
Larrabee ships.
The instruction set looks alot like a typical GPU shader
instruction set. Lots of “log” and “rsqrt” type instructions. But there are
also some interesting variations on MADD, such as MADD233_{PI,PS}, which I
assume help shave cycles off of inner loops. The compress and expand
instructions also look very useful. I look forward to reading code examples
from Abrash and Forsyth in the near future!
06 Mar 2009
For some time I’ve wanted to listen to my home music collection on my computer
at work. I tried a bunch of different approaches, and finally came up with one
that works pretty well:
The resulting system works pretty well. In case you’re wondering, the
SqueezeCenter program’s main use is to serve music to the Squeezebox brand of
internet radios. The ability to use it with a regular computer, without
purchasing a Squeezebox internet radio, is a nice gesture on the part of the
Logitec company that makes and sells Squeezebox internet radios.
17 Feb 2009
Phil Taylor, a long-time Microsoft graphics and gaming evangelist is now
working for Intel on graphics tools evangelism. He started a blog, called
Future GPU, where he drops hints and links about
Larrabee development. He also tells Microsoft war stories for people in the
mood for inside-baseball information about Microsoft’s DirectX and game
groups.
Back when I was working at WebTV and just learning about the 3D
graphics world, Phil was nice enough to give me and a few of my WebTV co-
workers tickets to the super-desirable GDC DirectX party. These parties were
intended for external developers, so it was very hard for non-DirectX
Microsofties to attend. Thanks Phil!!! :-)
From reading Phil’s blog it sounds
like
Intel’s developing a set of graphics debugging tools that they’re going to announce at GDC.
Could it be PIX-for-Larrabee?
I found Phil’s site through a “Google Alert”
that I set up for Larrabee news. It does a weekly search for Larrabee news.
The web’s so big and sparsely connected
that I’m finding that I’ve never heard of any of the web sites that the Alert
is dredging up. Most of the sites mentioned in the Google Alert are not worth
visiting, but a few (like Phil’s site) are very interesting indeed.
08 Jan 2009
For at least 10 years GPU vendors have been talking about “Pixar Quality”
graphics. But what does that mean? Well, according to this lecture on
The Design of Renderman,
the original goals for the REYES architecture were
- 3000 x 1667 pixels (5 MP)
- 80M Micropolygons (each 1/4th of a pixel in size, depth complexity of 4)
- 16 samples per pixel
- 150K geometric primitives
- 300 shading flops per micropolygon
- 6 textures per primitive
- 100 1MB textures
That’s a shading rate of 80M * 300 * 30 Hz = 720 Gflops. (They were probably
more concerned about 24 Hz, but for games 30Hz is better.)
In comparison I
think the peak shader flops of high-end 2008-era video cards are in the 1
TFlop range. (Xbox 360 Xenos is 240 Gflops, PS3 is a bit less.). Now, GPU
vendors typically quote multiply-accumulate flops, because that doubles the
number of flops. So it’s more realistic to say that 2008-era video cards are
in the 500 Gflop range. So we really are entering the era of “Pixar Quality”
graphics.
31 Dec 2008
A very thorough talk describing the Nintendo Wii game console security model
and the bugs and weaknesses that allowed the Wii to be compromised:
Console Hacking 2008: Wii Fail
In a nutshell, security is provided by an embedded ARM CPU that sits between the
CPU and the IO devices, and handles all the IO. The two main flaws were (a) A
bug in the code that compared security keys, such that it was possible to
forge security keys, and (b) secret break-once-run-everywere information was
stored un-encrypted in RAM, where it could be extracted using hardware
modifications.
There’s a nice table at the end of the presentation showing a
number of recent consumer devices, what their security model was, and how long
it took to break them.
The PS3 is the only console that’s currently unbroken.
The PS3’s security model seems similar to the Xbox 360, but somewhat weaker.
But it remains unbroken. This seems to due to the existence of an official PS3
Linux port, which means most Linux kernel hackers are not motivated to hack
the PS3 security. (Only the ones who want full access to the GPU from Linux
are motivated, and only to the extent that they can access the GPU.)