Older blog entries for hacker (starting at number 177)

IBM Warantee Information

    Related to some of the others I've seen here and on the web complaining about their IBM battery life on Thinkpads (raph was it? I forget).. my T23 battery finally stopped holding a charge about 2 weeks ago. It started to decrease slowly in overall on-battery time, but now I get about 10-15 minutes out of it. It reaches about 50%, then drops down to 5% in about 20 seconds and gives me the low battery warning. It won't hold a charge at all.

    What's interesting though, is that I habitually charge it to full, then unplug, then let it run down while I use it to about 1%, then plug it back in. I've been told that this is the way to ensure longer life out of the battery (I realize they don't have memory, and this isn't to prevent that). I never keep the battery in the unit when it's sitting at 100% fully charged.

    So I called IBM today to report the problem. The woman said that IBM laptop batteries are only waranteed for 1 year, and are generally "..are not engineered to last longer than that..". I told her I got the laptop about a year ago, maybe 10 months, but I'd forgotten exactly when. She checked, and found out that my 1-year warantee runs out ON WEDNESDAY. That was 2 days away.

    Funny thing too, my history at IBM for this laptop is longer than my credit report. It's already been into them 5 times for repair and had various innards replaced multiple times.

    Needless to say, a new battery is on its way to me, care of IBM Customer Care. How's that for good luck. Whew.

Other Stuff

    • Trying to grok XML for use in an upcoming release of pilot-link. It makes sense for the type of data we're representing on these devices, and it fits in with a product idea I've been working on in my head.

    • Investigating SyncML.

      Weird questionable licensing involved there. They basically make the claim that if you don't properly protect your IP when using/implementing it, they own whatever you don't claim. Odd arrangement. It's not clear I can use it freely yet in my code. What I'm probably going to end up doing is writing mod_syncml for Apache and use that. I'm hesitant to try the oddball Java versions I've been seeing floating around. I found an interesting thread on it over at handhelds.org.

      If anyone is feeling generous, I've earmarked the SyncML book on my Amazon Wishlist.

    • More RFC reading, this time 2445 for iCal objects. It's not clear to me whether or not I should directly support this in pilot-link yet, or just go straight to XML, and skip the whole ldif/iCal/vCard/vTodo train.

    • Community domains expiring.

      I've been managing and maintaining a bunch of community lists, work, code in cvs, websites, and code for quite awhile now, out of my own pocket. Some of the domains are coming up for expiry soon (two weeks). Since I've been unable to find paying work in 466 days, I'm wondering if I should just let them expire, or make a plea to the community to chip in a few bucks and help me keep them alive.

      Has anyone run into this before? What do/did you do?

    • Someone special has a birthday coming up. We just had Valentines Day and our 3rd anniversary. So many things so close together. Not sure what I'll be able to do without any income, but I'll think of something. She's turning the big 31 this year, while I'll be 32 in a few months. Some days I feel 62.

This life isn't going the way I thought it would. Now what?

More Sendmail Hacks

    I've been handling mail for some friends, one of which gets a LOT of spam. He's a good litmus test for how to tweak a spam filter to maximum effectiveness.

    I'm using a combination of Sendmail, triple-RBL, ordb.org, SpamAssassin (and the milter), and iptables to filter out spam from reaching $USER mailboxes. Here's some recent tweaks I came up with (some with the gentle nudging of others):

     # There is no reason to send HTML in email, none. Blocked.
    HContent-type:  $>+Check_Content_Type
    SCheck_Content_Type
    Rtext/html $*    $#error $@ 5.5.5 $: "555 HTML email denied; use plain text."
    
    

    # There is no reason for anyone to send a Content-Type of # multipart/alternative. Multipart is fine in the body # or as an attachment, but the generalized header for those # should be text/plain, not multipart/alternative. Blocked. HContent-type: $>+Check_Content_Type SCheck_Content_Type Rmultipart/alternative $* $#error $@ 5.5.5 $: "555 multipart mail blocked; use plain text"

    # Likewise for base64-encoded bodies. There is no reason # for the ENTIRE message body to be base64-encoded. Blocked. HContent-Transfer-Encoding: $>+Check_Transfer_Encoding SCheck_Transfer_Encoding Rbase64 $* $#error $@ 5.5.5 $: "555 base64-encoded body blocked; use plain text"

    And recently, there is an increase in the number of people being affected by this W32/Sobig@MM trojan, so I blocked that (and another worm) too:

    /etc/mail/access

    big@boss.com         ERROR:5.7.1:550 Sobig worm rejected
    hahaha@sexyfun.net   ERROR:5.7.1:550 Hybris worm rejected
    
    These small changes alone have begun to cut down the number of spam messages that my system(s) will accept for users. A quick grep shows that in the last 2 days, the three tweaks above have successfully blocked 417 separate spam messages that would have otherwise been caught by spamassassin or passed onto a user.

    Any spams that get through these + spamassassin, I block with iptables. It's been doing quite a good job so far. In the last week, my iptables blocks for known spammers has produced 1,291 hits in the logs.

Other Stuff

    Things are busy here, but still no permanent employment (427 days, 61 weeks so far). It may be time to call UPS/Fedex/USPS and see if they have any openings. There are definately no technology jobs left here on the East Coast. Depressing.

Have you ever wondered what your current life would be like, if you went left instead of right, or right instead of left at all those forks in the road of life?

pilot-link 0.11.6, "Chasing Platform Bugs"
    Mac OSX
    I successfully ported pilot-link 0.11.6 over to OSX and managed to get it building cleanly.. apparently the libtool provided on OSX isn't really the same as GNU libtool.
    Apple's Developer Tools contain a program also called libtool, which is used by the compiler driver to build shared libraries. However, this is completely unrelated with GNU libtool. The GNU libtool that Apple ships is installed as glibtool instead.
    What I had to do, was change autogen.sh from pilot-link to run 'glibtool --version' instead of 'libtool --version', and now configure runs properly. I'll hack in a check for that later.

    This Fink Libtool page was useful.

    FreeBSD 4.7-STABLE
    There's still a lingering FreeBSD issue that I can't seem to quite figure out yet. I'm not sure if it's BSD, or pilot-link that is the problem (or both), but I'm leaning towards BSD, since the same branch of code works over serial and IrDA through birda, without problems. Thanks to groggy, and the PR he filed, we may see some positive fixes in this area.

    I've had a machine donated to me by a very helpful person in Dallas, specifically to put FreeBSD on and get this working. Its actually caused me to close up a bunch of lingering bugs in the past month (thanks Larry).

    AIX 4.3
    There's an open issue with AIX 4.3 using vsnprintf(), basically that it has none. I need to add a better test for that. tridge lent me a shell for a bit, but I ran out of neurons to focus on it. Can anyone else lend me a chrooted/jailed environment that I can ssh into and test building pilot-link against AIX?

    Sparc
    Sparc hardware requires aligned structures and addresses. Our current use of unsigned char slp_buf[...] and then casting it to a struct slp * then dereferencing it causes a bus error because of the misaligned address. Again, need testers or actual shell time to fix this.

    Most of the trouble right now is gaining access to boxes that I can test and fix these issues on. Everyone seems to be in either some far-away country, or behind very restrictive environments that I can't mole my way through.

Plucker 1.2
    Well, we released Plucker 1.2 and have had quite a bit of hits lately on the site. The whole site was redesigned from the ground up to take the load, and to properly stuff the necessary bits into mod_perl. This is all going to tie into a larger project on the horizon, when I get time to work it out.

    I managed to cut together an email-only interface to Plucker also (info here), and threw a wiki up with all of the PDA-sized urls I've been capturing for years (over here). I also did a comparison of AvantGo vs. Plucker, which has been quite popular, gauging from the hits (over here).

Rack it up!
    I need to find some 1U and 2U rack cases. Anyone know of a dot-com or three that has some of these they want to unload, fairly inexpensively? I'm trying to get all of these bits of various hardware racked into 1U and 2U enclosures, so I can start saving space around here in the server closet. It's getting crowded in there.
Weather calls for... SNOW!
    One big huge pile of snow says the map. No mountains near here though to take the board out on.
Genetics
    Well, it looks like I'm next in line for the chance to be a father. I wonder what the percentage of Y chromosomes it takes to father males or females. My father had brothers, my mother had three sisters, and their families had lots of siblings (though ours did not). I also have a brother. Does that mean I'll have sons?
Employment
    Status: None, 385 days.

    I did find one small contract gig, which should pay up a small slice of the bills, and maybe give me some money for Christmas expenditures, but nothing really promising looms on the horizon. The threat of major layoffs at $PHARMA has us both concerned.

Landlords
    Our previous landlord's daughter, who owned the apartment below us, verbally told us that her parents weren't going to renew the lease on our unit (which was up in about 45-50 days), since she was going to buy the entire building. She handed "E" the classifieds.

    We immediately scrambled to find a new place to live, and sent the landlord a very formal letter, explaining that since we weren't properly notified, as required by Rhode Island's Landlord Tenant Act (specifically 34-18-37(c)) which says we are supposed to be given 90 days, in writing), that we were legally justified in terminating our lease 30 days early, and moving out post-haste.

    We moved out, and then the landlord gives us a hard time about some dirt in the oven, and some minor garbage he found on a shelf in the bathroom. He demanded we come over and clean it up first, and he STILL hasn't given us our deposit. He has 20 days, and if he doesn't return our deposit by that time, RI law says we can then persue him for triple damages PLUS our deposit back. That's $2,900.00/USD total.

    Since there were no damages to the unit, and there was no "back" rent owed (we always paid on time), he legally cannot keep the deposit. Cleaning is not damage, even if he wants to hire people at $100.00/hr. to paint the walls or polish the wood floors. Then he claims WE terminated the lease without proper notice. How inept.

    We're settling in well in our new place, 4 floors of a split townhouse. Lots of little fixups to do, but it's nice and quiet here, unlike the previous place, which was a circus 24x7.

So much to do, so much to learn, so little time, it seems.

Lastly, something I saw on a job forum the other day, which was perjured out of Slashdot:

1999: "How To Get Hired As An Open Source Developer"

2001: "How To Get Hired As A Developer"

2002: "How To Get Hired"

2003: "How to Get Hired in a Completely Different Industry"

How true it seems... how true...

Happy Cooked-Bird Day, my fellow peers.

26 Nov 2002 (updated 26 Nov 2002 at 21:49 UTC) »

Brief contract work for $CLIENT

FreeBSD USB bugs that plague pilot-link

Holidays upon holidays

Another life move, apt. 1/2 mile away

No permanent employment

No money

..please let 2003 be different.

11 Oct 2002 (updated 11 Oct 2002 at 21:26 UTC) »

Perpetuating Copyright Infringement

    Why is it that companies like Dell, Gateway, Intel, Cox Communications, and Time Warner Cable are all actively promoting copyright infringement?

    I caught a bunch of television commercials last week from each of these companies who all had similar pitches like:

    "With our new processor, you can rip and burn movies and music faster than before!"
    "With high-speed internet access, you can download thousands of movies and music titles from the internet, at speeds 200 times faster than dialup"
    "Our latest system ships with the fastest CD and DVD burners available. Just call or visit our website today!"

    If the {RI|MP}AA wants to clamp down on the ability to violate copyrights for music and movies, why not start at the source.

Do you know what copyright infringement is? Do you care?

    I was at a wedding in Buffalo on Saturday, and spoke with someone who had literally downloaded over 300 albums of music, never paying a single cent for it. He was proud that his hard drive (employer-supplied computer) was almost full of music he'd never have to buy, and it was "..so easy to download. Just click on one file, and the whole album comes down to your computer, just like that!". The problem is that I honestly don't think he realizes that he's breaking several laws by doing this (ironically, he is considering a law career, to follow in his father's footsteps).

    When people who aren't familiar with copyright, internet law, etc. get their computers and their high-speed internet access, they go right towards the media. It's all about "download" for them.. consume.

    I think we need a new awareness campaign. I'm not trying to stop the RIAA or MPAA from doing their jobs (within their legal limits, most of which they are currently breaking), but there are legitimate reasons to burn a music CD (burn, not redistribute), as well as legally-downloadable music from the web. When manufacturers make it this easy, and fail to inform their customers that most of the "easy" ways to burn and download are probably violating copyright, I think something has to happen.

    Which brings me to my second rant.. car manufacturers. For the same reasons.. in the US, there is no state that allows you to exceed 65mph that I'm aware of, and yet domestic cars are sold with the ability to go 120mph plus. Sure, you can jam your foot on the pedal and go as fast as you want.. but you're breaking the law. I wonder how many unnecessary injuries and deaths could be prevented if cars simply could not exceed the maximum speed limit, unless modified third-party? If you are found to be speeding with a car that was made post-limited, you should get nailed with a huge fine.

    Yes, there are those that say that you should be able to jam on the gas and get an extra boost to pass someone or in a passing lane, but that is still breaking the law. You can't exceed the speed limit, even to pass someone in a legal passing lane. But sure, you could also just add an extra 10mph, so you could get out of "emergency" situations, but that's not the point.

    Update: Zaitcev, you completely missed the point. The point is that the problem was not created by the "consumers", it was created by the manufacturers. This has nothing to do with cars, or music, or the MPAA. Look deeper. Resorting to name-calling clearly shows your level of comprehension with these issues.

    The reason I bring this up, is that people will do what the technology allows, even if it breaks the law. In many cases, the person who is doing it, doesn't even realize that any laws were involved.

Technology Stops Evolution

    Patents are another avenue that I vehemently disagree with, but which fall in the same capacity here. E and I had a long discussion about patents, and that "certain technology and pharmeceutical companies" are pushing hard to increase the number of patents they file. HP recently made an announcement that they were trying to triple the number of patents filed, and pushing hard for each of their employees to submit patent ideas and applications, for an incentive of $175.00 per filing. The reason? "To exclude other companies from intruding on the same technology space."

    How does this help technology grow? This once again validates my theory that I've had for 10 years or more. Technology stops evolution.. Think about it, we have all this wonderful technology, so why do we need to evolve? Gore-tex to keep us warm, no need to evolve better skin or heat transfer. UV protectant glasses and suntan lotion, why evolve our eyes and skin there as well. With companies stifling the growth of technology, simply for profit, we come to a grinding halt.

    The pharmeceutical companies aren't free from guilt either. There's a bill coming across the books that many pharma companies are terrified of, because it reduces the life of a patent by a few years, which means drugs can be turned into generics sooner. Yes, this will probably hurt the pharma companies who rely on a solid 7-10 years of a drug to recoup the costs of R&D, but keeping it locked up in a patent also stops others from producing drugs that use that same or similar formulation to help people in other areas. Patents in this fashion hurt people who are suffering and need medical treatment. All for money. In fact, one company sent out a global notice asking each employee to contact their senator to help repeal this bill to reduce patent lifespan.

    I'm all for reducing the lifespan of patents (ideally down to 0), because it gets the treatment into the hands of others sooner, and it will cause the pharma companies to re-evaluate their practices, so they don't spend so much time on R&D. Make more novel drugs, so they overlap. Relying on one blockbuster for 7 years is just not going to cut it anymore.

    The only reason to patent something is to retain rights to sue someone for violating it. You have a copyright on your creation, which is enforcable. Patenting it only makes that copyright legally and financially lucrative when violated. You don't have to patent something to be able to legally persue someone for using it without your permission or consent.

I should start looking for work as a columnist or satirist or something.

</rant mode="off">

24 Sep 2002 (updated 28 Sep 2002 at 21:49 UTC) »

Refactoring Some Chicken Star Soup

    foreach (@body) {
            chomp $_;
            next if /^#/;
            $line =~ s,<template>,\n<template>,m;
            if (m{(<template>)}) {
                    push @unwrap, undef;
                    $line = '<template>';
                    next;
            }
            if (m{(</template>)}) {
                    push @unwrap, $line;
                    $line = undef;
                    push @unwrap, "\n</template>";
                    last;
            }
            if (@unwrap) {
                    if ( m/^ [^\s=]+ \s+ 
                            =           # an '=' sign, er.
                            \s* /x      # optional whitespace
                                    or
                            m/^ \[.*\]$/x   
                    )
                    {
                            $line =~ s/^#/\n#/m;
                            $line .= "\n";
                            push @unwrap, $line;
                            $line = $_;
                    } else {
                            $line .= $_;
                    }
            }
    }
    push @unwrap, "\n";
    
    

This simple little bit of code I hacked up takes the body of an email message, strips off everything outside the opening <template> tag and after the closing </template> tag, and passes it to Config::General for tokenizing.

The magic part of this is where it "unwraps" lines that would wrap in the user's MUA, such as url=http://www.foo.com/, where the value of 'url' is too long to fit on one line of the user's MUA, and wraps down to the next line.

I'm nearly done with this one, just a few more "junk input" regression tests to go before release time.

pilot-link 0.11.5

    Nearly complete, a few more tests on Irix and BSD before a new one. snprintf() and getopt_long() are proving problematic with AC_LIBOBJ and friends on Irix 6.4.

    Many thanks to tridge for lending me the shell on the Irix box, and for giving me some ideas to look into, and to jpr for doing a bunch of legwork.

Lawyers, Attorneys, and "Goodfellas"

    Personal injury attorneys are useless. The whole justice system is a crock, full of people handing you off to the next person, who doesn't care about your case, only cares whether or not you can feed their pockets.

    So I get a ton of bills for my medical treatment from the caveman who headsmashed me at the beach, and am supposed to hold them until all of my medical treatment is completed, then submit them for reimbursement in one final lump sum.

    Meanwhile, 6 months later, when all treatment is complete after I've been invoiced and had to pay for everything out of pocket, my credit is trashed, and the accused could still flee, and not pay a single cent of my bills. They put the accused (who has already plead guilty) on probation, and give him another year. Meanwhile, I'm out thousands of dollars, my credit is further ruined, and he can still refuse to pay, or flee.

    And according to the attorney I just spoke with moments ago, "..no attorney in the state will take your case, unless he has assets they can sue him for". I don't want his assets, I want my out-of-pocket expenses reimbursed!

    They refuse to do an asset check up-front, and suggested I just hire a private investigator to do it on my own. If I'm going to hire someone to find out if he has assets, I'b be better off making "a few phone calls", and I'll be sure to get my money back, and then some, without ever having to go near the legal system. It would probably be cheaper in the long run..

ObPerl Fu vs. Refactoring

      while (my ($key, $value) = each %{$config{'template'}}) {
         printf "    %s%s: %s", $key, "." x(20 - length($key)), $value . "\n";
      }

    That little snippet reduced about 60 lines of code down to that single printf() in the middle. How lovely

Still no job..

    312 days

168 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!