[lang]

Present Perfect

Personal
Projects
Packages
Patches
Presents
Linux

Picture Gallery
Present Perfect

git part 5910

Filed under: Hacking — Thomas @ 15:18

2010-12-01
15:18

I still can't get over how obtuse and error-prone git's command line UI is.

Today I was trying really hard to checkout a tag of some project to try and fix a bug.

Are there tags ? Why, yes.


$ git tag -l
redland-bindings_0_9_17_1
redland-bindings_0_9_18_1
redland-bindings_0_9_19_1
redland-bindings_1_0_0_1
redland-bindings_1_0_0_2
redland-bindings_1_0_10_1
redland-bindings_1_0_1_1
redland-bindings_1_0_2_1
redland-bindings_1_0_3_1
redland-bindings_1_0_4_1
redland-bindings_1_0_5_1
redland-bindings_1_0_6_1
redland-bindings_1_0_7_1
redland-bindings_1_0_8_1
redland-bindings_license_lgpl_apache2
redland-bindings_license_lgpl_mpl
redland_bindings
start

Here are my attempts and its responses:


$ git checkout redland_bindings_1_0_7_1
error: pathspec 'redland_bindings_1_0_7_1' did not match any file(s) known to git.
$ git checkout -b redland_bindings_1_0_7_1 redland_bindings_1_0_7_1
fatal: git checkout: updating paths is incompatible with switching branches.
Did you intend to checkout 'redland_bindings_1_0_7_1' which can not be resolved as commit?

Can you spot my error ? It took me a good thirty minutes to figure out what exactly I was doing wrong. Git could have just told me. Suggestions to improve these obtuse error messages?

The first error suggests that git thinks I'm trying to check out a file. Strangely enough git checkout -h says:


usage: git checkout [options]
or: git checkout [options] [] -- ...

so why does it even think I'm trying to check out a file ? The usage suggests the only way to check out a file is to list them after -- which I didn't specify. Isn't the more logical thing to assume I was trying to check out a branch ? And while on the subject, you have to somehow understand or assume that, even though a tag is not a branch, you can actually check out a tag this way.

Instead the error should probably say something like:


git doesn't know about a branch or tag named '...'
Check with git tag -l or git branch -a to see all tags and branches.
If you wanted to specify a file instead, use -- to separate branch or tag from file names.

Now the second one. I am sorry git that I crossed the flux capacitators to reverse the coagulation of the ninth-dimensional positrons. But could you please try and insult me in English ? All I can get from this message, *after* understanding what my problem was, is that you think I want to switch branches (is that the same as checking out a tag ? Maybe, how can I tell ?) at the same time as updating a path. I'm pretty sure I'm only trying to do one of those two things, although I'm not too sure. And I think the proper English for that second sentence would be something like

"Did you intend to checkout the tag or branch '...', which does not exist in the repository ?
Use git tag -l or git branch -a to see a list of tags and branches.

I can't *wait* for the comments to pour in telling me I'm stupid because I can't automatically read 'cannot be resolved as a commit' is gitese for 'the tag does not exist'.

I'm only writing this post because git in this particular instance caused me to waste less time than average with obtuse UI, so I had some time to spare to complain.

mach 0.9.6 ‘Carrot Cake’ released

Filed under: Fedora,mach,Releases — Thomas @ 19:22

2010-11-29
19:22

I finally got off my ass and upgraded my home machine to Fedora 14 (from 11).

Only ran into two bugs so far, one seems to be something annoying in redland causing moap not to break... check later.

In the meantime, I updated mach for Fedora 12/13/14, because yes I still end up using it whenever I build packages. So here is a new service release.

mach allows you to set up clean roots from scratch for any distribution or distribution variation supported.

Get it from the mach project page.

I built packages for F12/13/14 available from my repository, and will start rebuilding some other packages (I did redland-bindings, but be warned, the F14 one version doesn't seem to work for me!)

Filed under: couchdb,Python,Releases,Twisted — Thomas @ 23:27

2010-11-24
23:27

I've been working on Paisley some more recently, finishing a first stab
at a document mapping API.

As discussed with Christopher Lenz a long time, I basically took his
mapping code and applied it to Paisley.

In my personal project I also added a caching version of the CouchDB
object, but I'm not yet convinced it is the right approach, so it's not
in Paisley yet. One of the things I think I will need to do to make
that useful is to have it listen to change notifications, so it can
change cached objects when they change in couchdb, and implement
notifications for these changes so that a program can be informed of
them too and react accordingly.

In any case, I'd like to work towards a release, so feel free to take a
look at
the branch I've made
to implement this on, give any feedback or
do any code review, and let me know.

The National cleans up

Filed under: Music — Thomas @ 20:16

2010-11-22
20:16

I am in Belgium this weekend for mostly one reason: The National were playing the AB, and it's probably the last time I will see them in a smaller-than-2000-people venue. I actually had tickets to see Arcade Fire in Barcelona this same evening - but since they were going to play a 10.000 people venue, I preferred to go see the National instead.

For some reason this year the band really broke through. The concert was sold out in a day, and I've been getting asked by a lot of friends if I had any spare tickets. "But you're always buying extra tickets for shows and you didn't for this one ?" Yes, well, how could I know that out of all the bands I like you'd pick this one to like too ?

The boards were filled with requests for tickets, outside of the venue the streets were full of people asking if anyone had any left. It was one of those concerts booked right before a band jumps to the next level, and played when they've made the jump.

But I digress. High Violet didn't grab me as much as Boxer did - although I don't know if it's because of the anticipation or because Boxer is actually better. I got lost in Boxer for two months straight.

When I saw them in London at the beginning of their tour they were just as good as any other time, but it was obvious the new songs weren't road-tested yet and didn't fit into the set that well yet. It wasn't for lack of trying - I remember Matt climbing off stage, into the audience, and then up the rafters of the Royal Albert Hall. They just didn't have the sound of the new songs down yet live.

This summer at Pukkelpop was good too, but a band like the National really needs a dark closed room.

I missed the Club 69 National concert of a few weeks ago - I have to admit I would have killed to have been there, but my life has changed now...

And then yesterday hit. Their sound was spot-on right from the beginning. This was the first show I've seen without Padma. His duties were mostly taken over either by the horn section (which was beautiful) or by Aaron or Bryce taking over keys. Matt was in great form, Aaron spoke French a lot and Matt interrupted him continuously. At one point Matt asked Aaron 'say something in French again, it sounds so cool' so Aaron thanked us in French, the audience cheered, and Matt said something like 'I don't know what you said, but you really brought it home.'

Really good set list too - finally got to hear Daughters of the SoHo Riots, which was beatiful live. They surprised me by throwing out Available/Cardinal Song from Sad Songs For Dirty Lovers. I would have gone with Slipping Husband (which I only recently learnt has a small snippet of 'Don't forget the alcohol, ooh baby' as a nod to Afghan Whigs' 'Milez iz Ded') myself, but hey, Sad Songs has a few gems on it and this was one of them.

Glad to hear About Today again, that song just hurts in all the right places. Right before K broke up with me I made a mix CD, and a live version of this song is on there, for the fantastic line of 'How close am I/to losing you?' Very, it turned out a few weeks later. A gentle wind of a song that picks up steam in the end and explodes into a gutwrenching whirlwind.

This must be the first National show I saw where they didn't play Abel. I'd gladly trade the excellent Mr November for Abel any day.

All the High Violet songs have evolved live, all for the better. Some new guitar lines in some of the songs, a better drum pattern, whatever they did, it worked. My personal favorite, Conversation 16, sounded excellent. Matt's intro was hilarious - he said something like 'This song is about cannibalism. Most of the lyrics were written by my wife. When she was in college she ate people. I'm cool with it. It's good she's not here today.'

Fake Empire was beautiful with the horns. Aaron played both the waltz and 4/4 bits with both hands, I have no idea how a human being can keep up two different rhythms like that, and it looked awesome.

They ended with an acoustic version (no mikes!) of Vanderlylle Cry Baby, probably my least favourite song on the album, but it worked very well like this, and the audience sang along the whole song.

Last week in Barcelona I went to see Greg Dulli in a 250 people club and got to talking to their webdesigner, who asked me what else I was going to see soon. When I mentioned the National, he said 'Oh, they're great, they played here, once for 25 people and once for 60 people'. Jesus Christ - I wish I'd been there.

I'll probably next see them in May 2011 when they play Primavera festival in Barcelona.

If you get a chance to go see the National live, make sure you do - they are at the top of their game right now. I'd love to hear more Alligator or even some more stray first two album tracks, but my mistake for missing out for so long.

Overy 0.1

Filed under: Hacking,morituri,Music — Thomas @ 23:41

2010-11-19
23:41

I' m finally making some progress on one of my 2010 goals - making a Lego robot that can take CD's and feed them to my computer to rip.

What am I trying to do ?

I'm making a computer-controlled robot out of LEGO that will allow me to rip multiple cd's onto my computer, using morituri.

The goal is:

  • to use Lego Mindstorms for the robot
  • only use regular lego pieces, like Technics, for everything else
  • work with my computer, but preferably with any
  • rip 50 cd's or more in batch

I've been asked a few times why I'm doing this. The main reason is because by now I own over a thousand CD's. I have most of them ripped by hand to Ogg Vorbis, but disks are big enough these days that I really want to rerip all of them just once to FLAC. I've spent quite some time writing an accurate CD ripper for Linux, and I want to have all my audio CD's in correct digital bytes on a computer, so I can use the files to transcode to whatever format is useful for whatever player I'll have.

This probably sounds strange, but a while ago I got to wondering what I would not like getting stolen from my apartment, and my CD's are pretty high on that list, if not number 1.

Some people ask 'why not just do it by hand? You'll probably get it done just as fast as it would take you to make the robot.' I guess people who ask that question don't understand the joy of making something. But there's another reason to do a robot - I'm planning to offer my friends a remote digital backup of their music. Ideally, I could drop this robot off at a friend's house with a Live CD and some instructions, and I would then transcode their music for their iPod or whatever they have. And keep an offline copy at my place purely for archival reasons, of course.

In any case, I am working on my first attempt at robot after building two of the sample ones from mindstorms.

The base mindstorms set is a bit limited piecewise, so I started by getting a really big Technics set that has sawtooth pieces (because that's the mechanism I wanted to try to use for the CD loader)
71173

After looking at a few other approaches out there, I decided I wanted to try one of my own before trying to reproduce someone else's.

After lots of thinking and discussing with some friends, the following ideas fell into place:

  • If I want 50 cd's at once, grabbing one is going to be a problem. After considering pneumatic pumps, arms, some fingers going through the middle and opening, or a wheel at the top of a stack, I went for a simple approach using the sawtooth pieces to space the cd's, and a little axle going through the middle
  • Peter had a great idea to use a USB drive - this way the robot is self-contained and should work anywhere with any computer
  • I wanted to use the CD drive itself as much as possible, so I came up with the idea of rotating the CD drive, so that I can drop ripped CD's by ejecting the CD when it's 180 degrees rotated. I also want to insert the CD when the drive is either at 90 degrees (facing down) or some other angle, before loading it.
  • Mindstorms has 3 motors, so you can roughly (without weird tricks) create three kinds of movements. So I'm using one to pull in the CD rack, one to rotate the first CD 180 degrees into the drive, and one to rotate the drive after ripping.

Here's the CD loader I made; it doesn' t fit 100% but rubber bands finish the job for now. I'll need more sawtooth pieces if I want to load 50 cd's - anyone know where to get some ? The LEGO site doesn't sell those pieces individually.
71177
This was with 2 motors but without CD drive; it already has the mechanism to pull in the CD rack, and the axle (with wheel rim) to pick up the first CD in the rack. It's mounted on a touch sensor so I can stop pulling in the rack when the rim hits a CD. The motor will then rotate the disc 180 degrees around the axle of the sensor, and drop it into the CD drive.
71180
This is the first complete build that I finished tonight. The CD tray is mounted and opened so you can see where the CD is supposed to go. After loading, the CD drive would rotate back to horizontal, then eject the CD the other way around to get rid of it.

I thought I was ready to start trying it for real, but when I went through the process by hand, I noticed two pretty fundamental problems...
71183

First of all, the external drive I used is one of those where you have to firmly press down on the CD so that it fits tight around the round bit in the center. My robot cannot press down. It would be very wobbly anyway because at the point where it hits the tray the CD reader is floating at an angle.

Second, it seems this external USB CD reader has no way of triggering a load electronically, something I had not thought of. It turns out most external drives don't, and again, my robot cannot press on the tray to close it.

So, I guess tomorrow I'll try to shop around for external USB CD readers that can eject and load electronically, and that have a normal tray in which I can drop the discs, like my desktop PC's have.

Backup plans are:

  • Getting one of those hoover CD readers, that suck in and spit out CD's. There again I don't know if you can spit out electronically.
  • Getting one of those 3.5 inch carcasses and put in an internal CD drive. That will probably make it really heavy though, so that might give stability problems with the robot.

If any of you out there know about an external USB CD reader that has computer-driven eject and load, please let me know! For example, this LaCie Lightscribe drive looks like it might be one that would work - if you have it, let me know.

« Previous PageNext Page »
picture