»
S
I
D
E
B
A
R
«
Xbox 360 Wireless Racing Wheel
Feb 28th, 2008 by masukomi

The Logitech DriveFX had to go. Piece of crap. I plunked down an extra $50 ($100 total) when I returned it to get the Microsoft Xbox 360 Wireless Racing Wheel. The difference is incredible.

The Good:
This product is very well designed, and very well put together. It feels sturdy and solid. The rumble is very strong. The force feedback is also very strong. The buttons aren’t cheap. The pedals have an empty area that your heel goes in. At first it just looks like it’s there to save plastic, or to look cool, but it actually serves a purpose. Because it goes behind your foot it’s not possible for it to slide away from you because it would always catch on your heel. When you get slammed off in one direction you have to fight the wheel to turn back the other way.

The Mediocre:
The X,Y,A,B Buttons are reachable without difficulty, but they could be better. It’s a hard problem to solve though because when you go into a hard turn you still need to be able to reach them.

The Bad:
It doesn’t have equivalents for all the buttons. There’s no analog sticks and no trigger buttons. They advertise that you can remap some of the functionality, and that’s true, but the ability to remap is supported at the game level not in the OS.

The Burnout:
I got this because I freaking love Burnout Paradise. Unfortunately EA Games doesn’t support any controllers on the 360 other than the default. Since there aren’t any analog sticks you can’t navigate the map, and some maneuvering (controlling rolls for example) is harder than it would otherwise be. It does make your driving much smoother, but on the other hand sometimes when you bounce off of something (another car, a side-rail, etc.) the force feedback will drive you hard to one side and you’ll have to fight it to get it back to the other direction, then over-compensate, and reverse the process in decreasing sine-wave like pattern. Maybe this is realistic (I wouldn’t know), but it is trickier.

In Conclusion:
If you like racing games this is a really great product. If you only want to use it on racing games made by EA Games you’ll not be getting the full potential of it, but you may still find it worth it. I do.

P.S. If you set a new record on each of the roads you get the Carbon Ikusa GT which has 8 speed 7 boost and 5 strength along with the Speed King achievement. Unfortunately there’s no achievement for holding the fastest time on all the roads simultaneously, which yours truly happens to have at the time of this writing.

[Update: revised The Burnout and In Conclusion based on further play and input from fellow gamers. It wasn't as limited as I'd initially thought.]


Logitech DriveFX == teh suck
Feb 26th, 2008 by masukomi

So, I really like Burnout Paradise. I love just driving around the city setting new speed records for others to try and beat. I enjoy it so much I decided to pony up the $100 to get the Microsoft Wireless Racing Wheel but when I got to GameStop there was another option: the Logitech DriveFX, and it was $50 cheaper. “What’s the difference?” I asked. “The Logitech one isn’t wireless.”

I looked at the box and thought… “For $50 I don’t care about wireless.” And, Logitech tends to make good hardware. Then I got it home and found its fatal flaw. You can’t hold it in your lap. It’s got these two clamps that allow you to easily clamp it to a table. The only problem is that everyone I know only has a coffee table, about knee-high, in their living room. This means you’d have to lean over it like an adult crammed into a kids go-kart. Then there’s the pedals. Where are you supposed to put the pedals? You can’t sit on a couch, pull a coffee table close enough to use a steering wheel clamped to it, and then somehow put your legs out under it. You’d need to add a backwards knee half way down your shin.

The clamps don’t come off, and stick out uncomfortably from the bottom. Even if i was willing to dismantle the thing to get them off it’s not wide enough to really sit on your lap so you’d have to clamp it between your thighs which would get really uncomfortable really fast. If you try and set it on your legs, instead of between them, there’s nothing in the design to hold it steady so it’ll just keep shifting around.

It’s going back tomorrow and I’m shelling out the extra $50 for the Microsoft one, which can optionally clamp to a table but is designed to sit on your lap. Thus putting the steering wheel where you need it and the pedals out at the end of your extended legs, just like oh, I dunno… a car maybe?
Zombies!!! Player Turn Flow chart
Feb 22nd, 2008 by masukomi

I decided to make a flow chart to help new players in an upcoming attack of Zombies!!!. I think I may have gone a little overboard with the details, but it’s done now. This represents standard rules plus the Zombies!!! 6 (Six Feet Under) expansion, but you can just skip the subway and sewer bits if you don’t have that.

For those of you who aren’t familiar with Zombies!!! there’s a good review / overview of Zombies!!! here. The biggest complaint people have about it is that it can run long. A nice atypical aspect of this game is that you absolutely will / must screw over your opponents repeatedly as opposed to most games where people tend to get annoyed with you if you do that. I liked it enough to go buy 2 expansions (3.5 and 6) and a bag of extra zombies (you’ll need ‘em when you have lots of people or expansion sets with tiles). You probably have to enjoy poking fun at the shambling zombie movie genre to enjoy this game.

A PDF of the flow chart.

A PNG of the flow chart

The OmniGraffle file

Burnout Paradise Review(ish)
Feb 10th, 2008 by masukomi

Burnout Paradise (XBox 360) Review


I played until I got a crick in my neck and my ass hurt,
both from setting on the edge of my seat.
Then I stood up so I could play more.
Then my friend came online.
Now it’s 1:30 am.

Nuff said.
A rebuttal to “Use Mercurial You Git”
Feb 7th, 2008 by masukomi

There’s a good deal of confusion about Git, Ian’s Use
Mercurial You Git
article is a good example of it which I’d
like to address point by point. But first, I’d like to say that I’m
giving Ian the benefit of the doubt. I don’t think he’s intentionally
trying to mislead people I think he simply doesn’t understand Git very
well, and that’s not his fault. Git has two problems that face new
users. It suffers from the Blub Paradox
and the documentation tends to assume that you already “get” how
radically different Git is. So people end up applying the assumptions
of how other version control systems to how Git and end up becoming
confused and frustrated like Ian, because while some of the commands
look similar, what Git is doing and how it does it are dramatically
different from other systems, but that’s a good thing. It’s what makes
Git so much better than the competition. It’s kind of like how Struts
(Java web framework) and Ruby On Rails (Ruby web framework) are both
doing essentially the same thing and processing the same parameters
from a web server, but if you try and program a Rails app like you
program a Struts app you’re in for a world of hurt.

The basic version control concepts are the same in Git, but at the same
time, they’re not. Most version control systems are concerned with
managing files, or metadata about files. Git doesn’t even care about files. Yes, it seems like it does,
and you can even use it as
if
it does but it really doesn’t. The key for me
to really buying this statement was when I realized that, if I
really wanted to, Git would let me pick and choose between the various
hunks of a file and only add the ones I wanted to the next commit.

My advice to new users is simple. To get started, act as if it’s like
the version control system you’re familiar with, but as soon as
something doesn’t work the way you’d expect take the time to learn what
is really happening and why Git is doing it. Every single time this has
happened for me I have obtained another “aha!” moment which gave me a
significantly better understand of Git as a whole and showed me how
truly awesome git really is.

So, with that said, let’s look at Ian’s complaints:

Installed Files
When talking about Git’s usability Ian complains that Git installs
“nearly 150 distinct binaries” and claims that “Mercurial has one.”
What Ian doesn’t mention is that while Git may install nearly 150 files
you only have to reference one of them directly just like Mercurial
which installs over 150 files (a number which roughly doubles as each
.py
file begets a binary .pyc file after it gets executed). But, this is a
straw-man argument because it doesn’t matter how many files an
application installs, and it
doesn’t matter if they’re binary or not. What’s a much more important
measure is how many you have to interact with directly and in
both
cases the answer is one. The confusion is probably a result of the fact
that Git actually allows you to call its component parts directly if
you really want to
, whereas Hg does not. Another
good example of this is Dreamweaver, which installs a metric fuckload
of files, including a little JavaScript file for almost every one of
the cool pieces of functionality. But you never hear newbish web
developers complaining about it because they never have to interact
with them directly. However, power users love the fact that they can work with them
directly (and change how Dreamweaver works).

Usability
Ian uses Git’s rebase command as an example of why Git’s usability is
bad. Rebase is one of the most dramatically powerful tools in the Git
arsenal, it’s also something you never
have to use if you don’t want to. It allows you to reorder,
merge, and
exclude any / all of the commits in your history. But guess what?
Ian doesn’t mention the fact that Mercurial has a similar
functionality called
Transplant which is
roughly as easy to get confused about using as Git’s rebase
functionality. Of course you don’t have to ever use it in Mercurial
either, as evidenced by his not knowing about it. I’m assuming he
wasn’t intentionally trying to make Git look bad by ignoring
Transplant. The fact that the Rubinius project he was looking at
requests that committers use it for it’s valuable housekeeping aspects
is irrelvant to the discussion of Git’s usability.

He then goes on to say that “For day-to-day use of Mercurial, you only
need hg fetch to get code, and hg commit to give code.” except commit
only works on a local repo and doesn’t “give” code to anyone, and my
fairly
recent copy of Hg only has a “pull” command but I do see mention in
Google
that fetch is “…only available when you enable hgext.fetch
extension…”. So,
what he should have said (unless we want to include non-default
commands) is that for day-to-day use of Mercurial, you
only need hg pull && hg up && hg merge
&& hg commit to get code and hg push to give code.” If
we cut him some slack and replace all that garbage with hg fetch
and compare it to Git where you need git pull to get code and
git push
to give code you’ll see that the two are almost identical. In fact, for
a surprising
number of operations Git and Hg use exactly the same name for the same
command.

Overloaded Commands
Ian complains about the fact that git checkout can do three
“massively different tasks”: change to a new head, revert changes to a
small number of files, and create a branch. And from a the perspective
of someone who doesn’t understand Git or version control
systems I can
see why they might look “massively different”. But, lets look at them
from the perspective of someone who does understand Git
and version
control
a little better.

First off, if you don’t know, “change to a new HEAD” is an odd way of
saying switch to a different
branch (HEAD is just a convenient pointer to the current branch). When
you grab a branch from most version control systems repositories the
operation is
referred to as “checking out” the code/branch so when you replace the
tree in your current directory with that of another branch you are
literally “checking out” the code from the repository
which is what every system does when you request the files from a
branch. But, if “checking out” a
branch was confusing for him, he could simply keep each branch in a
separate folder like most revision control systems do and just change
directories.

To cut him some more slack git allows you
to manage multiple branches within the same repo which entails managing
multiple branches in the same folder.
And yes, the power to manage totally different branches in the same
place, does require some new learning, and has some potential gotchas
if you don’t understand how it works, but note that I said “allows you
to manage” not requires.
You can live in the simpler one branch per root folder world if you
want and there’s no real penalty to doing so. Actually, I encourage new
users to work that way. It’s a simpler way to get started. And yes, to
be clear, each folder would be a different repo, but Git’s smart and
hardlinks the common objects (unless you tell it not to) to save space
and merging branches in across repos is just a matter of git pull
instead of git merge.

When you “revert changes to a small number of files” Git, like any
other version control system, gets a copy from the repository, and what
do you call the action of getting files from a repository? That’s right
kids, “checking out”. The fact that git calls it what it is instead of
giving it some misleading name like CVS’s “update” command, which
doesn’t “update” shit but instead checks out a version from the repo,
should be a point in Git’s favor not a point against it.Hg calls this operation “update” too but “checkout” is an alias for it*, so I guess they get to make it work the way the CVS / SVN people and Git people expect.

His argument about checkout enabling you to create a branch is a fair
one, but isn’t it nicer to be able to create the branch and check it
out in one command instead of two? If Ian was really confused by this
he could simply create it with “git branch
and then check it out with “git checkout “.
Personally I prefer the combined form since I’m creating them all the time.

In writing this book on Git I have repeatedly come across situations
where a command took options that made it seem to do “massively
different tasks” but when I spent the time to investigate what it was really doing I
almost always found that the problem was simply that I had been
applying
behavioral expectations from other version control systems to Git
without understanding the fundamentals of how things work in Git. Now,
helping people to understand the its fundamentals is something that
Git’s docs are not particularly good at. They tend to tell you how to
execute a command and assume you understand what’s happening (at a
conceptual level) behind the scenes. This is one of the things I’m
trying to address with the book. “git add” is a great example of this.
If you don’t really understand how Git leverages its index you’ll be
bewildered as to all those “massively different tasks” you can do with
it, but once you understand the index they all make sense and you
realize
that “add” is exactly where they should be.

Simplicity
He says that Git has lost the “simplicity argument”. But the
basics of Git are, in fact, very simple to use. If you wanted to
you could use it in almost exactly the same way you use CVS with
commands of essentially similar complexity, and CVS is a
very simple system. But, Git also offers you the power to do
very complex things. And that’s exactly how I wish every piece of
software I used was.

Let me give you an example of how simple things can be:

Operation CVS Git Hg
checkout a repo cvs co git clone hg clone
add a file cvs add git add hg add
replace a file with the version last checked in cvs update git checkout hg revert
commit changes to the repo cvs commit git commit hg commit

I could continue but you get the point. For all your basic commands
these systems are all equally simple. Yes there are complex commands
too, but there are in all version control systems.

Ian quotes a bit of Git knowledge:

The core Git filesystem can be explained as four
types of objects: Blobs (files), Trees (directories), Commits and Tags.

And then says “Unfortunately, no, it can’t. The core of Git
may well be implemented
as four kinds of things. But to get even the most basic tasks
done, you need to know repositories, working trees, branches, remotes,
masters, origins, index caches, and a bunch of other unexplained
concepts.”

With the exception of the index (or “index cache” as he calls it) all
of these things exist in Mercurial and you also need to understand the
same ones in both. Although maybe Mercurial does have something similar
to the index for staging commits, I don’t know. You could argue that
“masters” don’t exist in Hg but master is just the default name for the
initial branch in a repo. They had to call it something and they picked
“master”. Every version control system has at least one branch whether
or not they happen to mention it, and if you only use one branch per
repo you never have to even think about “master”. And if you don’t want
to name it “master” you don’t have to. SVN has the idea of remote
repositories just like Hg and Git and you don’t need to use
remote repositories in any
of them. It’s certainly helpful if you understand the concept but it’s
not as if this is some obscure thing that Git came up with and no-one
else has. To do basic CVS style operations you can be
blissfully ignorant of the index in Git. All you need to know is to use
the “-a” option when you commit to commit all your changes.

Finding Documentation
He’s totally right about not being able to look up the appropriate
command in Git’s man pages without knowing what it’s called. It is
sometimes hard to find instructions for what you’re trying to do in
Git. This is another thing I’m trying to address in the book but that’s
no help to people who don’t have the book, and no excuse for it not
being better handled by the docs, but since the book will be GPL I
fully expect some of what I write to make it onto the web (I may even
put it there myself), and maybe into the docs.

Windows
He’s also right about Git sucking on Windows, although he doesn’t put
it that way, and this is the biggest reason not to use Git. If
you need to share your codebase with Windows users Git is, IMNSHO,
simply not ready. It can be done with Cygwin but Mercurial is much less of a hassle
on Windows. There is work being done to address this, but for now Git
is primarily for Linux, Unix, and OS X.

Unreliability
He also complains about Git being unreliable but doesn’t back it up in
this post. I’ve seen no evidence to this effect or mention of any on
the web, but I’m betting that his problems with Git’s “reliability”
will be based in similar misunderstandings of how Git works. Which
would mean that Git needed to work on it’s documentation to help
improve people’s understanding.

Closing Thoughts
Ian makes a lot of complaints about how much worse Git is than Hg, but
in almost all cases if you examine the truth behind what he says you
end up with Git and Hg coming out almost exactly the same. The places
where Mercurial wins are Windows support and, probably, documentation.
Both of these are very important, but neither of them make the tool
more functional. For everyday simple usage Hg and Git are roughly
equivalent tools, from a usage standpoint (assuming you understand how
to use them), but I believe that Git is simply a more powerful tool
that lets you go much farther beyond the “everyday simple usage”. Yes,
it requires thinking differently about version control. Is that really
so bad? Most of the programming tools that can dramatically enhance
your productivity, or capabilities require getting your head around new
concepts. Git really isn’t hard, it’s just different. Think of it like
a harp. It’s simple to understand how to play and it looks like
plucking it would be the same as plucking any other stringed
instrument, but it really isn’t and you’re going to have to get used to
it because your fingers interact with it like nothing else, and you’re
not going to be able to take it everywhere either.

On a related note: Ian’s gripes are primarily founded in issues about
usability the failure of Git’s documentation to help him understand it,
but based on those criteria Darcs
kicks everyone’s ass. I don’t recommend Darcs anymore for a number of
reasons, but, with a couple exceptions, Darcs is damn easy to use
and it’s not a bad system at all.


*Thanks for the correction on Mercurial Lurker and thanks SJS for your notes about CVS.
The rules of Presidential Bitching
Feb 6th, 2008 by masukomi

The rules of Presidential Bitching are quite simple:

  • Everyone gets to bitch about all things presidential until the primaries.
  • After the primaries only the people who voted (or honestly intended to but were thwarted) can bitch about the candidates and party nominations. Everyone can bitch about general presidential issues.
  • After the election only the people who voted (or honestly intended to but were thwarted) can bitch about anything our president does or how much better off we’d be if someone else had of won.

Reserve your right to bitch. Vote!

Remember: you can vote on a provisional ballot if you neglected to register to vote.

Some thoughts about Git
Feb 4th, 2008 by masukomi

Not too long ago I decided to start writing a book about distributed
version control. I was originally going to focus on Mercurial (Hg)
because it’s quite good and of the two leading systems it was the only
one that ran on every OS (because it was written in Python).
 The fact that it could also run under Windows meant that I
could help spread the word about distributed version control to more people, and it slightly increased the chance that I might actually make
some money in the process.

There was just one problem: Linus was right.

“Hg is pretty good, but Git is better.” – Linus
Torvalds

When I heard him utter those words in his talk to the folks at Google I
took them with a grain of salt. Almost every project owner
believes that their software is “better” than the competition,
especially when they’re so similar, but it turns out that it wasn’t
hubris on his part.  When you sit down and compare the
functionality Git simply lets you do more.

I had actually
started writing the book about Hg but time and again I found myself
confronted with something that was either easier to do in Git, or
simply not possible in Hg. It happened enough that I decided that I
didn’t want to keep writing about, and arguably helping, out a product
that I not only wouldn’t choose to use myself but also felt was
dramatically inferior from a usage standpoint.

And then I
joined the Git mailing list. Linus mentioned that it had a high signal
to noise ratio but… holy shit. I have been on a lot of mailing lists
for open source projects over the years and I have never seen anything
like this. Almost every e-mail is a patch, or a good discussion of a
patch, or a good discussion of some new feature and how to go about
implementing it. Currently, one of the topics they’re
discussing
is how to allow people to push to a Git repo based on GPG keys stored
in, or accessible by, Git. What’s amazing is that it isn’t just one or
two people going back and forth or someone trying to proclaim the “one
true way” to do things. It’s exactly what you would expect if you took
a bunch of smart geeks, stuck them in a room, and watched them all work
together to solve some common problem. That alone is impressive, but
when you combine that with the fact that it’s a pretty high traffic
list and you’ve got a lot of really smart people pushing a tool
forwards at an incredible pace.

Now, all is not sunshine and roses in Git land:

The
documentation is actually pretty good, but when you want to do a
specific task and don’t know the Git specific terminology for it it can
be a little difficult to find what you need, and sometimes the commands
take a dizzying array of options and could really do with more
examples. That works out well
for me, because it’ll be all the more reason for people to buy my book,
but it’s obviously not great for attracting new users. I still think
that, for most use cases, Darcs does a better job than anyone at making
it easy to ferret out what command you need to accomplish a task.

Git
is a lot like C. It’s incredibly flexible and powerful but it is also
incredible flexible and powerful. If you want to shoot yourself in the
foot Git will point you to the gun rack and show you how to load the
bullets.

Under the covers Git is a collection of small C apps
surrounded by shell scripts, Perl scripts, Python scripts…. whatever
the author chose to  get the job done. From a usability
standpoint
this is irrelevant. Calling “git foo” is going to work just as well
regardless of what foo was written in and will have no impact on the
user, but I’d personally prefer to hack on a project that was all
written in one language. It also means that the msysgit
team has a lot of work ahead of them in trying make it install easily
under Windows. If you’d like to see git working under Windows, and are
familiar with coding for Windows please check these guys out and see if
there’s anywhere you can help out. Even just taking on a little task
here and there is something that would be greatly appreciated. Part of
me wonders if it wouldn’t be better to just port everything in Git to C.

I
think that if the Git book goes over well I may go back and retool it
for
Mercurial, but in the meantime I have to agree with Ted Tso*:

“…the main reason why I’ve come out in favor if Git
is that I see its
potential as being greater than [that of] Hg, and… in the long run I
think
it has ‘more legs’ than Hg…”

* Just to be totally up front. Ted did have some complaints about ease
of use and documentation, but I think that since his post came out Git
has made some really significant improvements in those areas.

P.S. For anyone who things I should improve the docs instead of bitching
about their limitations and profiting off their lack by writing a book
I would say, “chill”. I plan to submit some documentation patches and
the book will be GPL v2 licensed so people will be free to grab
anything they want from it, although the book is taking a task-based,
cookbook style approach which isn’t really appropriate for man pages,
but may be useful on the wiki. Also, I probably won’t see much, if any,
profit from the book. ;)

»  Substance: WordPress   »  Style: Ahren Ahimsa
© Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.