Negative letters

June 16th, 2006

It’s really pretty obnoxious the way there are three camps of people dealing with characters in C; there are the people who think they should be signed (aka, char), the people who think they should be unsigned (aka, unsigned char), and the people who are oblivious, using some weird mishmash.

As of some GCC release, they added a warning when you’re mixing up signedness of pointers (which is a Good Thing, since it really could be indicative of a problem), so in my anal quest to build everything I touch cleanly with -Wall, I find myself having to do a lot of pointer casting at times.

Right now I’m really seeing it because the glibby functions all want to take a gchars (aka, signed) , but then I’m using libxml, which operates on xmlChars…which are unsigned. Of course, xmlSAXUserParseMemory, the function to let you just pass in a big blob of text for parsing takes a const char *, so I need to make sure it’s signed when I give it to libxml, but then I’ll be handed back unsigned stuff. Fun.

But of course, I don’t have to cast everything, since certain functions (I’m looking at you, g_str_equal), actually just take void pointers, so they don’t really care. This, of course, is always fun, too, since you strip away the compiler’s ability to catch you doing something braindead. Not that I ever would, of course.

Impulse Buying

June 1st, 2006

Maybe my new toy will help fill the empty spaces.

Delivery Notice

May 16th, 2006

Seriously, man, this is exactly the shit I would see in the apartment in Fullerton. The UPS guy would come to the door, fill out the note saying “you weren’t here”, knock, slap it on the door, and turn to leave.

I would be 10 paces from the door, make a bee-line for it the instant it made noise, and I’d still have to shout down the hall going “hey, I’m here, gimme my damned package!”

But yeah, apparently at 10:15 they decided nobody was there, but somehow 2 minutes later logged in that they were (add in minute-level rounding and the time it takes to go “uh, oh, yeah, sign here please”, and the timeline looks really exciting)

Seriously, though, if I’m at home, deliver the damned package. It’s not that hard. I know you’ve got a lot of packages to deliver, but come on, don’t just assume that nobody’s going to be there.

Things I Would Like to Hack On

May 9th, 2006

So, in no particular order… Things I would really like to spend some time hacking on, but I have pretty much zero free time at the moment between moving, marrying, releasing at work, etc.

Asbestos

Yeah, good old Asbestos. It’s been…a long time since I’ve had a chance to commit anything. There was a period where there was some Ubuntu user who was all excited about things and looking to send me some patches, but that fell through. Add to that the fact that Network Manager has pretty decent vpnc support, and I’ve really had little need to bang on Asbestos. That being said, I still think it’s actually a pretty handy-dandy little tool, and has its appropriate niche it can fill.

I’d like to:

  • Get Network Manager integration ala vpnc; I really wanted to do this before I’d seen how nicely it could work, so I definitely want it now.
  • Update to the latest dbus. Got, could that stuff hit api stability sometime, please? I really don’t have time to chase the changes, but I want to use it.
  • Link in appropriate libraries to do ssh in process rather than spawning it; by doing this, I could more easily do some fancier things such as…
  • Allow live modifications to Asbestos tunnels; it’s a real PITA to have to drop the whole tunnel in order to add a new thing to it.

I’m sure there’re more things (hell, if I dug out the source, I probably have a TODO file with a bunch of these things already), but those are the big ones off the top of my head.

Scanning Support

The state of things in the linux world with scanning is pretty hokey. I’ve seen people complaining, but as far as I’ve seen, nobody’s really stepping up and doing what I want. I want proper HAL integration for scanners. I want a scanning frontend that doesn’t terrify me (really, XSane, I don’t need all that stuff you throw at me. I really don’t care about being able to scan at 297 dpi instead of 300, etc.)

I’ve got notes about what I’d like to do, and probably if I go poking around, I have the start of some code to wrap the sane api into a glibby thing. The sane api is really a bit of a pain; there’s only about a dozen calls to it, because everything’s a matter of “oh, query the scanner to see what thousand options it has, now do some string matching to figure out if any of those are interesting, and make sure to store the indices to them, since you’re going to need those to poke at the values”. Yes, it’s very flexible. Yes it means that the same API can be used for a zillion different things. But really? At this point, I care about a simple API to talk to a flat bed scanner. I really don’t care about hand scanners, treating a web cam as a scanner, etc.

I really want to start banging on this stuff, because it’s an important problem space, and could do a lot of good for people. I also want to get my foot in the door before I languish on it long enough and somebody else beats me to the punch. I want some celebrity, damnit! :)

Synergy

I’ve mentioned in the past how I use x2x to glue my laptop and desktop together. The other day I was pointed to a more fancy-pants solution to the problem (which I’ve probably also talked about wanting to implement myself. So with Synergy, you run a daemon, have clients connect to it, blahblahblah.

It seems to work pretty well at first blush (at work I now have my mac glued to the left of my workstation glued to the left of my laptop), so I’m fairly excited. It needs some usability love, though; you need to write a config file describing all the screens and their relationship to each other (and it’s not reflexive; I have to say that my laptop is immediately to the right of my workstation AND that my workstation is immediately to the left of my laptop), etc.

I’d potentially like to clean that up some (or who knows, maybe that work’s already in progress; I haven’t honestly poked at the project too much at this point. See also: my total lack of time), but what I’m even more interested in doing is sorting out mDNS and making a clever little thing so that you can look for synergy servers, register with them, etc.

In my mind, I see something like this:

  • I fire up my laptop at work, and NetworkManager brings up the network
  • My synergy lurker catches the dbus signal that the network is up, and checks with mDNS to see if there are any synergy servers on the network
  • My workstation goes “Oh look at me! I am!”
  • My laptop and workstation have already been paired, so it does some quicky authentication and poof, I’m glued together

As for the pairing bit, I see it as something sort of akin to bluetooth devices; I can initally get a list of open synergy servers, tell them to pair, either end wants soms pin to prove that I’m kosher, etc. After that, they’ve got some sort of stored state between them, an auth key, or whatever, so my laptop can always go “Hey, you know me, I’m that laptop that sits to the right of you”, and it can all work, even if I happened to dhcp to something different.

I could see it being very slick, and it seems like a reasonable excuse for me to figure out how to work with the mDNS stuff; that always seemed cool, but I hadn’t come up with a practical demo to play with until now.

Set Up LDAP

For years now, I’ve been wanting to finally bite the bullet, set up an LDAP server, and start stashing things in there. I’ve got a handful of boxes I’d like to run with shared authentication, I’d like to do server-side address books, etc. Yes, I could cobble together something stupid for myself, but I really want to do it right, otherwise I won’t have time to maintain it. So LDAP it is.

Eventually.

Set Up Bugzilla

I actually did this once upon a time; I set up a bugzilla server for my own person stuff, so I could do things like file a bug saying “Fix the toilet” or “But toilet paper” or some such. It’s really just me on my personal quest to find a way to manage my todo lists, etc. I just figure that maybe it’s worth trying it again, especially since I’m building up a rather large mental list of things to do now that we bought the house. (Building up and….forgetting. Crap.)

Win The Lottery

Seriously, man. There’s so much FOSS stuff I’d love to just spend all my time on, but I can’t right now. Looking at the current jackpot, it’s $25 million. If you divided that by four (losing half of it to get as a lump sum, and then losing another half to taxes), that leaves ~$6 million. If you shoved that into something giving 4.5% annual interest without touching the main lump, you’d sill be making ~$280k a year on interest. I could find a way to scrape while making over a quarter million a year with 0 hours work.

And then I really would spend time doing FOSS hacking. I could really just make it my day job to work on some of this stuff. I know that sort of risks one of the big problems in FOSS; since there’s no monetary incentive, I would be at risk of abandoning things in search of the next shiny thing that caught my interest. But at the same time, I’d actually be able to invest the time and effort into things to get them into a much better state before I did that anyways; a couple weeks of serious time spent on things is more than the same time spent scraped out of free hours on the evenings and weekends.

RINGRING

May 3rd, 2006

Confidential To That Guy In The Bathroom:

Hey, how about you don’t answer your phone in the bathroom?

An Abomination Against God and Man

April 27th, 2006

There’s nothing quite like using the C preprocessor while writing perl.

It imposes a few constraints (e.g. no single pound-sign comments at the start of a line, else it thinks they’re cpp directives, watch out for c-style comments since those will get pulled, etc.), but it’s actually sort of liveable. I’ve got a little makefile that builds the thing, runs it through perltidy, and then runs perl against it to check for syntax correctness, so it feels almost like I’m writing in a compiled language, rather than a scripting language.

Originally I was just using it to be able to glue a couple files together (I need separate files for managability in development, but really want to ship a single file), but now I’m starting to get drunk with power. I’m actually writing cpp macros and using those. Oh, what a horrible, horrible person I am.

But hey, it lets me be really dirty with importing things into my namespace:

#define dump_error(code, extra, fatal) Errors::dump_error(code, extra, fatal)

Oh, yeaaaaah.

This is supposed to make it better?

April 21st, 2006

At work, someone just, out of the blue, sent out email about coding standards that we should start following. My personal favorite:

4. For simple double for loop, the second for loop do not need to indent, and the closing “}” can be on the same line. Note that for the looping index, proper spaces are maintained for clearity. E.g.

for ( i = 0; i < Nx; i++ )
for ( j = 0; j < Ny; j++ ) {{
}}

Holy crack-laden, Batman. What’s terrifying was seeing a response saying “I agree completely and 100% with all these suggestions.” I can only pray it was supposed to be dripping with sarcasm.

More ICQ Hillarity

April 13th, 2006

So, per my earlier complaints about random people sending me messages and gaim/icq not properly denying it like they should, I wrote a little gaim plugin of my own. If somebody sends me something, and they’re not on my buddy list, it immediately responds with “Go Away.”

I have it logging, and skim it on occasion, because it’s pretty hillarious to see people try to have conversations with it. For instance, this morning:

Some Person: hi
My Auto-responder: Go away.
Some Person: you scara me
My Auto-responder: Go away.
Some Person: i am a HK people
My Auto-responder: Go away.
Some Person: you are very impolite
My Auto-responder: Go away.
Some Person: OK.But i just want to make some oversea friends
My Auto-responder: Go away.
Some Person: I am a nice person
My Auto-responder: Go away.
Some Person: Karma,don’t say go away
My Auto-responder: Go away.
Some Person: you said go away many times
My Auto-responder: Go away.
Some Person: where you are?
My Auto-responder: Go away.
Some Person: just you will talk to me
My Auto-responder: Go away.
Some Person: OK.can i talk withyou
My Auto-responder: Go away.

I love it.

Billions of Blistering Blue Barnacles!

April 3rd, 2006

Bob Ross: The Videogame

I need that. Everyone needs that.

Something Like Spam

March 20th, 2006

ICQ seems to have become a more obnoxious place over the past few weeks, lending itself to wonderful conversations such as these:

(12:13:09) 265884162: hello!!!:-)
(12:13:16) Karma: go away
(12:13:31) 265884162: fuck you
(12:13:47) Karma: you’re the one sending unsolicited messages to strangers
(12:14:09) 265884162: no
(12:15:51) 265884162: ok, sorry, bye
(12:17:41) 265884162: but why did you say go way? its rude
(12:18:14) Karma: you’re the one sending unsolicited messages to strangers
(12:18:26) 265884162: who told you?
(12:18:49) Karma: exhibit a) I don’t know you, nor do I have any desire to be in contact with you
(12:18:55) Karma: exhibit b) you sent me a message
(12:19:11) Karma: it’s a complicated line of thought, I know, but think about it for a while and it might come to you
(12:20:19) 265884162: yes, i sent, it doesnt mean anyth
(12:23:47) 265884162: so do answer go away usually?
(12:23:51) 265884162: very nice way
(12:24:42) Karma: It’s quite succinct. And usually quite understandable, though you seem to be having difficulty with it.
(12:28:07) 265884162: i understand it, but its rude….. anyway

(Yes, he/she actually did say “anyth”, I didn’t truncate it copy & pasting to here)

Typically they don’t actually have a prolonged 10 minute discussion with me, the just usually send back a frown or something and then go away. But there’s the occasional gem like this.

I really wish gaim actually denied messages from people not on my buddy list like the checkbox claims it does.