Main Page

From Bilbo

Jump to: navigation, search


[edit] Rants And Humor (I guess you might call it a blog)

You must realize that the computer has it in for you. The irrefutable proof of this is that the computer always does what you tell it to do.
{{#if:Unattributed fortune|

—Unattributed fortune{{#if:|, {{{4}}}}}

}}
Know your enemy and know yourself and you can fight a thousand battles without disaster. [...]

One hundred victories in one hundred battles is not the most skillful. Seizing the enemy without fighting is the most skillful. [...]

All warfare is based on deception.

{{#if:Sun Tzu|

—Sun Tzu{{#if:|, {{{4}}}}}

}}

Computers aren't my thing. They're out to get us. I will know myself, know computers (the enemy), redesign (deceive) them, and thus seize victory without working (fighting).

This is where I rant. Everything here is Copyright Me, All Rights Reserved, so don't download any of it (oops too late, now they're out to get you).


[edit] Me

Don't email me or else I won't respond: bilbo@hobbiton.org

Other things I do:

[edit] Chronological Entries

[edit] Sam's Club Entertainment

2008-05-06

I just had a highly entertaining time at Sam's Club this morning. I used to use my parent's membership, which they dropped recently. My membership card finally expired since my last visit. So I got to the checkout and they said I had to get a new membership. That's reasonable enough. I prepaid for the membership at the checkout, then went to the customer service desk to register with Big Brother. They checked my ID, etc. Then they asked for my phone number. {cackle}

Let me pause the story to say that I think it's absurd that so many businesses seem to think there's this requirement that I spend $40/month for the convenience of people I don't want to talk to. My phone is for my convenience, not the convenience of Best Buy or Sam's Club. If it's that important to them, they should pay my phone bill. Also, Wal-Mart doesn't need my phone number, so why would Sam's Club?

I responded by saying I don't have a phone. It's a great way to refuse because it side-steps any need to justify yourself. Their options are to either accept your answer or call you a liar. It's a terrible idea to tell a customer he's a liar. The girl working was nice enough, but had to ask her supervisor what to do. I was polite, since they're really just following corporate procedure, but firm. Her supervisor was really nasty about it, though, as if *I* was the one being unreasonable. (I should've worn my blue-tooth ear piece.) She said, "How about a work number, or school, or a friend?" I said, "Well work is a shared line, not for personal use, and how would you like your friend to give out your phone number?" I can't believe she actually suggested I abuse a friend's phone. I should've asked for her phone number since she was asking for mine; she would've been cute if she were in a good mood.

Uncertain what to do, she looked back at the computer for a minute, then looked at me expectantly, and I gave her my nicest "you gotta be kidding me" gesture. Finally she threatened, "Well I can fudge it, but you'll only be able to use cash.", so I asked "What about Discover Card?" and she said "That's okay too.". I said, "I never use checks anyway, so that's fine.".

So then the first girl tried entering 701-000-0000 in the computer, and {gasp} it needed a supervisor's override because the phone number was already in use! What a shock; I'm not the first one to get a membership without a phone number.

If it came down to it, I would've just accepted a refund and walked away without a membership. I don't need to shop there that badly.

[edit] Dream - Filesystems

2008-01-02

I had this weird dream last night.

I was driving through customs with several people I know well (but the dream didn't identify who they were). We only had one car for our group, which was mine. To get through, we had to help them improve their customs building a little (the building was a rotting wooden shack), since forcing everyone to do a trivial amount makes it "free". We were in the middle of a forest on a two-lane road though. (You know the place; it's where I-29 crosses the river that marks the Canadian border as a curvy two-lane road in the thick forest of hilly north-eastern North Dakota.)

Something started throwing trees at us. We all jumped in the other car even though it made more sense not to leave either of our cars behind. Since we were running out of space in the car because mine was left behind (20 feet away), I unmounted /tmp so we could buckle seatbelts and get going before a tree hit the car. I figured I'd run newfs on the new smaller /tmp after we were well into Canada.

The dream was at least as senseless and disconnected from reality as this description.

[edit] Simple Ideas

2007-03-22

I had a goofy inspiration today:

Of all simple ideas, nearly every one of them which would otherwise be simple must, when expressed as prose, be constructed such that the wording of said idea is arranged in the least simple fashion, notwithstanding a small number of minor exceptions that are less complex than the least simple ideas afore mentioned.

[edit] 1337 5934k

2007-03-20

I always got a chuckle out of 1337 5934}. If you don't know what that is, try piping it through the command below.

In my opinion, a lot of people have cluttered 1337 5934} with bad ideas or ambiguous notation over the years. IMers are the worst. In fact, while I get a chuckle from 1337 5934}, I severely roll my eyes at IM-speak. It's probably because people who use IM-speak are just being sloppy because they're too lazy to press a couple extra keys (something I have little sympathy for since I spend more time using a computer than most people spend sleeping), while people who use 1337 5934} do so with a combination of humor, meticulousness, and pride (however ill-founded the pride might be). 1337 5934} should be an unambiguous translation of one letter to one symbol using symbols that look as close as possible to the original message while leaving as few letters as possible untranslated. I don't really know what IM-speak is besides lazy and unreadable.

That said, this is my favorite version of 1337 5934}, written as my favorite command for doing the translation:

tr 'a4b8c<d[e3ffg6h#i!jjk}l1mmn~o0p9q@r/s5t7uuv^wwx%yyz2' '4a8b<c[d3eff6g#h!ijj}k1lmm~n0o9p@q/r5s7tuu^vww%xyy2z'

This is subject to change, but probably only if I think of a reasonable translation for the letters fjmuwy.

(Hint: many of these symbols look closer to the capital letter.)

[edit] Qwest, 2007-03-17

{sigh} Friggen Qwest. I'm going to switch to wireless.

Sun Dot Communications is my ISP. They're small, easy to work with, and they have reduandant upstream providers, autonomous IPs, etc. (SDC also serves wireless for a small area including me.) Qwest provides the copper link between SDC and me.

Qwest says that last weekend a "cable got wet". (I guess that means there's a crack or previous repair in the cable's sheath that let water in, but nobody seems to be able to explain what that really means.) 500 people lost phone service, and Qwest got most phone service back online in a few days. I can understand that some of these repairs are kind of rough, and to their credit I saw a crew working 24 hours on that cable.

Here's where Qwest shows their true color. Some idiot lineman that was testing the phones after fixing the cable said "hey this one doesn't have a dial-tone" and disconnected it. Then the idiot dispatch center *repeatedly* sent out phone repairmen that don't know what DSL is. Every time I called, I left my cell as a callback number, but the idiot linemen simply closed the trouble ticket without calling me back. I don't understand why anyone would close a ticket without attempting to figure out why it was issued. So the problem was the idiot lineman that disconnected it, the idiot local dispatch center that sent the wrong repairmen, and the idiot repairmen that would just close the ticket without doing anything. As you can see, this incompetence involves every part of their system.

In hindsight, I should have called a Qwest DSL repairman on his cell phone days ago. There are two that work at this facility, and I had the cell number of one of them. I have both of them now (because of caller ID). These two people are pretty good to work with. They're smarter than the other linemen and they actually fix problems without a hassle. The trouble is getting the reps at the 800 number to dispatch the right repairman! If there is a next time before I dump Qwest, I might not even bother calling the 800 number. Or if I do call it, I'll tell them which repairman to send out.

The second time I called on Thursday (second time that day not second time that week), the rep mentioned that they'd been sending out phone repairmen, not DSL repairmen. Several times in a row they had sent out someone who wasn't qualified to work on my service! (And by the way, they only repair stuff between 1pm and 5pm. Apparently individual repairs aren't important to Qwest.)

However, now it was snowing (not badly, but the roads were hard to drive on), so the dispatch center refused to send anyone out. It really wasn't that bad in town. I went to work that day and even worked on the roof for an hour or two fixing the cooling unit for our machine room. Repairs can't wait for weather. However, the dispatch center refused to send anyone out because (in their words) it was "blizzarding and flooding". It definitely wasn't flooding. There's absolutely no reasonable way to say it was flooding!

I called the 800 number again but they said 4:30 was too late in the day to send out a repairman. Wow, repairs really aren't important. After twisting the rep's arm a bit and explaining how much they'd run me around, I got her to prioritize the issue so I was second in line Friday morning instead of waiting until the afternoon. (I knew that if it wasn't fixed Friday it wouldn't be fixed before Monday. If they screwed up in the afternoon there was no way they'd have it fixed for the weekend, but if they screwed it up in the morning, I was so mad I probably would have called a repairman's cell number directly that afternoon.) I had to leave town at 10am that day, and the DSL repairman didn't get there until after 11. Fortunately, I had left a key with a friend, so I called him and he met the repairman and got the line fixed.

They didn't even have to go in the house. I got an automatic page that the line was working again before they'd even gone in the house. The repair literally took 5 minutes to reconnect a jumper in the phone box outside, and another 5 minutes to go inside to test that the line quality was good enough.

Spirit of Service indeed.

PS. My DSL was down from Mon 2007-03-12 20:10:00 -0500 to Fri 2007-03-16 11:36:00 -0500. Also it was down earlier on Monday several time for less than 10 minutes each time.

[edit] Spamming Congress

2007-01-19

Many people seem to think that having as many people as possible tell congress what they think of legislation just irritates them like spam irritates us, and therefore it doesn't do any good. I don't think it's true, for a number of reasons I don't have time to explain right now. I think it's vital that we voice our opinions to our representatives loudly when important issues are at stake. Here's some evidence that it works at least some of the time: http://www.gunowners.org/a121406.htm

[edit] Dreaming

2007-01-04

When focusing on a problem, I often don't see a possible solution because I haven't relaxed and reconsidered the big picture. When I take a break and stop thinking about the details of a problem, often thoughts about the problem linger in my mind, and as I forget about the details, I'll think more about the big picture than I did while trying to solve the problem. This leads to what I call a "shower moment" (because it often happens when I take a shower). This is common for most people, particularly software developers.

There's more to it though, than simply looking at the big picture. As I'm relaxing and just letting my mind wander, I skip from topic to topic, sometimes thinking about the problem, sometimes about other software, and sometimes about my dogs, family, music, sports, news, etc. Skipping around like this causes me to associate parts of unrelated thoughts with each other. This free association rearranges old ideas in new ways, often taking a pattern observed in one idea and applying it to another idea, sometimes leading to a new perspective on the original problem. (As an aside, one bad thing that TV is responsible for is preventing these free associations. TV is a distraction from this, and forces me to associate ideas in the ways dictated by the show I'm watching. This is okay sometimes, but I need time when I'm neither watching TV nor doing strenuous mental exercises to allow free associations to happen. Some activities, like chores or cooking, are trivial enough that they don't distract.)

Dreaming actually seems quite similar to this free association, except it's more extreme. How often do you have a dream containing actions or situations that seem to be perfectly reasonable, but then after you might wake up you say, "Wtf was that!?" While dreaming, I believe I'm generally doing the same thing; I make random associations between ideas, things, and actions that often are complete nonsense. However nonsensical, they represent associations that my brain has created that could be useful later on, although I'll never know when I'm using them. This may be what causes you to think of something seemingly unrelated to what you're thinking about, and what causes you to think of a new unusual solution to an old problem.

I think dreaming may be very important for our creative abilities. These associations help us think of new solutions for problems, new designs for projects, new art, new music, etc. The more we dream the more creative we are.

[edit] Personal Ad

Follow the link to see this one.

[edit] Public School

2006-12-19

If you do not think public schools are a terrible thing, you need to read The Seven-Lesson Schoolteacher, by John Taylor Gatto (1991 New York State Teacher of the Year)

[edit] Stuck Into a Trouble

2006-12-09

I love crap like this. When you install Openoffice.org (at least from FreeBSD ports), it displays this message:

3 If you stuck into a trouble
--------------------------------------------------
Somehow you can stuck into a trouble. 
To solve this issue, please remove the already installed
"OpenOffice.org1.1.5" dir in your homedir and remove the
appropriate entry from ".sversionrc". After you have done
this, redo the user installation and the problem will
go away.

[edit] Polyphasic Sleep Discovery

2006-11-14

I've officially decided I'm going to try polyphasic sleep. What a cool thing, to only lose 2-3 hours a day to sleep. It's like living 50% longer, and having more fun doing it (because you proportionally decrease the amount of time that you have to work at your job)! Steve explained the details a lot better than I ever will, so just go visit his site to read about it. Actually, he has tons of worthwhile articles, so read some others too.

I want to try it now, but unfortunately, I have to wait until this semester is over, so I don't screw up my studies. I scheduled a week off of work between this coming Christmas and New Year's (which is are on Mondays so I get both weekends :) ), and I'm going to use it to switch to polyphasic sleep. If it works, I'll try to sustain it for the spring semester. If that goes well, I might never go back. I'm stoked!

Updates here

[edit] Network Mania

2006-10-09

Everyone seems to be wondering how I ran out of network ports when I have two 8-port switches and why I had to buy a 16-port switch. *chuckle* Here's the breakdown:

Private net:

  • Elrond (my FreeBSD workstation)
  • Gandalf (my Windows workstation)
  • Legolas (my laptop)
  • Strider (my old laptop)
  • Radagast (Kristi's Windows workstation)
  • Bombadil (gaming machine connected to my projector)
  • Gimli (TiVo in the living room)
  • Gloin (TiVo in the exercise room)
  • Delving (headless apps: backups, serial consoles, mp3 player, etc)

DMZ:

  • Smaug (server for me and friends, mostly shells, email, and web sites)
  • Ivybush (server for web apps that store sensitive data in world-readable files)
  • 5 Hosted computers

Plus Cirdan (my FreeBSD firewall) is connected to both, of course. Also, I always forget Ancalagon, my off-site backup DNS.

[edit] Googlebombing Failure

2006-09-15

Haha, look what the first link is when googling for failure. Of course, I'm not helping the situation by posting the link that way.  ;) Here's Google's explanation.

[edit] Unfortunate Users

2006-09-15

I honestly feel badly for people who have to deal with computers, just want the damn thing to work, and end up getting obtuse error messages like "awf98awe: This application is not responding. Click End Now to terminate it or Cancel not to." How are they supposed to know what to do? It isn't their fault some part of an application got wedged and won't respond when Windows tries to shut down.

To make matters worse, these people have been told by "experts" that doing this or that is bad or good etc etc, so now they're trying to remember "hmm, did someone ever say what I'm supposed to do here? I really don't want to break it." because these "experts" that are bold and just guess and see what works tell people to be very careful with their computer so they don't get mal-ware.

So then such a user asks the "experts", who respond "well duh just restart windows". And the user thinks (or sometimes says), "Well I was trying, but you guys tell me to shut down 'nicely' and not to just turn it off so I don't lose my data."

It's really windows shell design more than anything. It should be smart enough to know it's shutting down, so send everything the term signal, give stuff up to 30 seconds to exit, then just sync disks and ax it. So then the "expert" tries to explain that sometimes you have to because <insert complex explanation about processes and software bugs>, and the user goes, "uh, ... in English please?"

While mostly a rant, I have a point (other than "Why is windows so terrible?"). Please try to be helpful in your error messages. Besides explaining the problem, give some useful courses of action. We could all do better at this.

[edit] GCC Bug

2006-09-09

I come up with some obscure bugs fairly often. Other software authors must hate me. I would if I were them.  ;)

This time, it's GCC "3.4.4 [FreeBSD] 20050518" on x86-64, compiling with -O3.

int main(long long a, long long b) {
        return (long long)&a + (long long)&b;
}

And before you ask, no, I really don't have a good reason to do this. I was just kinda goofing around.

a.c: In function `main':
a.c:1: error: unrecognizable insn:
(insn 33 14 16 0 (set (reg:SI 0 ax [66])
        (subreg:SI (plus:DI (subreg:DI (reg:SI 7 sp) 0)
                (const_int -16 [0xfffffffffffffff0])) 0)) -1 (nil)
    (nil))
a.c:1: internal compiler error: in extract_insn, at recog.c:2083
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

[edit] Repeating Our Mistakes

2006-09-02

[Editorial note: This post is a rant. Nothing here is a professional or academic opinion. It's supposed to be somewhat funny too, so read it accordingly.]

Why must we repeat our mistakes?

Our industry has an abysmal track record of repeating the same stupid mistakes over and over.

[edit] Example: Peripherals

We started out with lots of different connectors for peripherals. I can understand that. Some connectors, such as serial and parallel were general purpose, and some were special because it was our first attempt. Live and learn. But we didn't learn, did we?

We had this cool new technology called "ethernet", which allows us to create arbetrary networks out of devices with RJ-45 plugs. Sweet! So, as the joke goes, I could have a toaster on this network, right? Read on when you're done laughing because you know as well as I do that we'll never be able to agree on a standard that a toaster could do anything useful with...

To solve the problem alluded to earlier (too many protocols for peripherals), our poster-child is USB, and look how cool it is that you don't need serial and parallel and ps/2 mice and ps/2 or AT keyboards and external SCSI and special sound plugs and hey we can even power trivial trinkets like led desk lights and small massagers (wtf?) off of it! But, alas, we hadn't actually learned anything, even if we had agreed on whether USB or Firewire is better instead of arguing over it for the next (so far) 10 years or so.

We already had this cool not-so-new-anymore technology for making networks (which is really what USB and Firewire are all about), called "ethernet". I know you're all probably too young to remember the "ethernet", but it was this neat generalized protocol where any device can send packets with arbetrary data to any other device (or all devices) on what was called a "local area network". Why couldn't this work for peripherals too? Sure IP might not be the best protocol to run on top of it (or maybe it would be), but why can't we reuse the tools that already fit the job?

Meanwhile, we're out making a complunderful (complex and wonderful) standard called USB that runs at a whopping 11mbps. (At the time, this obscure "ethernet" thing did 100mbps, and today it's still faster than both USB and Firewire.) In fact, this protocol is so complunderful, we STILL haven't figured out how to support it in boot loaders so you can fully support something as trivial as a keyboard. I mean, wow. It's only been 10 years or so, guys. Why can't all the major OSs and BIOS makers support it yet?! (In all fairness, the only BIOSs I've tried are 5 years old, but FreeBSD 6.1's boot loader still can't figure out a USB keyboard on all computers, which means USB keyboards are totally worthless to me.)

[edit] Example: SATA

Oh ya we have USB, Firewire, and ethernet to choose from, but none of those were really ever designed to handle something as specific as a hard disk. The awesome complexity of a hard disk clearly requires extremely specialized interfaces and hardware and software to do anything or it'll be nothing more than a USB Mass Storage Device. As I said, I can't even hope to comprehend the minute details of a hard disk interface so how could I possibly know anything about what SATA really does that ethernet can't.

Which brings me to plugs. Haven't we learned a damn thing from the idiots that designed the USB plug? Isn't anyone who designs this junk actually using it? Haven't they been irritated by USB devices coming unplugged or older ports that have become loose from being used over and over? (*cough*RJ-45 sure didn't seem to have these problems.) Or is it all a big conspiracy to prevent us from crimping our own cables so Best Buy can rip us off on 3-foot cables for $19.99? Plugs should be secured into place! And they should not be flimsy! SATA didn't really improve anything in terms of cabling; it just changed to problem from "bulky" to "flimsy", and I'd rather have "bulky".

[edit] Example: Power

Why do we have so damn many internal power connectors?! (AT motherboard (actually 2 of these), ATX motherboard, 2 or 3 extensions to that, two legacy connectors for disks, and SATA power.) How about one power connector that supplies ground, 3.3v, 5v, and 12v on a 4-conductor plug that isn't so hard to (dis)connect. If you need more amps, use more of the same connector. A motherboard might have 5 power cables going to it, but at least it'd be scalable, instead of having 4 or 5 types that don't scale. And make these power connectors available externally as well. Duh!

I can understand the first version being ad-hoc, but when ATX came out, why didn't we learn anything from our history?

[edit] New concept: Component reuse.

I think I may have heard of this concept in really advanced new-fangled software engineering classes targeted at making software so complunderful that the "merest operational parameters I am not worthy to calculate". In any case, while it's far too high-level to be of any real usefulness, the basic premise is that if you already have something that will do the job, use it, and if you don't, make something you can reuse on something unrelated sometime down the road. I know it's silly to even mention it for hardware, because obviously the experts designing this complunderful stuff have wayyyy more experience than I do and again I couldn't possibly hope to comprehend the intricate interplay between all the electrical signals of a computer.

But is it too much to ask that my devices interoperate seemlessly?! Or that new hardware use existing interfaces so we don't have to completely reengineer all our software?

[edit] Conclusion

GET A CLUE! We're wasting billions of dollars and years of time that could be spent on new development instead of poorly reinventing stuff we already have that works well. Computers would be twice as fast if hardware makers had just paid attention in software engineering class. Software would be light-years ahead if it wasn't bogged down in supporting all this extra crap we keep inventing.

I'm starting to calm down now. It really feels good to rant sometimes. Maybe I'll revise this or add to it if I get fired up again while I finish fixing my broken computers. If you actually read this far, I'm sorry because I probably wasted your time.

[edit] PS

2006-10-16

Later I found this List of device bandwidths on Wikipedia. At the time of this writing, 10 gigabit copper ethernet outperforms everything except memory buses, fiber networking, PCI, and AGP. Even SCSI only performs at about half that speed, at distances far shorter than 100 meters. Admittedly, 10GbE is in its infancy, but that won't last long.

Interestingly, iSCSI is doing exactly what I'm talking about above, but I didn't know about it at the time I wrote the rant above. I have to say don't see the need to use TCP/IP; that seems like unnecessary overhead because the data is basically atomic commands and atomic blocks tagged with addresses, so out of order data shouldn't be a concern. It seems like TCP's slow-start would be a big problem. It seems that UDP would be sufficient. The retry capability of TCP/IP may be good, but at a glance it doesn't seem worth the overhead compared to simply retrying commands at the protocol level after a time out period. However, I'm not informed at the design level. At least someone is considering the possibility of using ethernet for more than just host-to-host networking.

In any case, the specifics are beyond the scope of my rant. People who know a lot more than I do about this domain are designing the specific hardware. My commentary is on what I see in the industry as a whole, and I think I'm qualified enough to make some informal judgements on that level. I just want people to stop making this rat's nest of standards and cabling worse than it already is for no good reason; it is just making things harder for users and software people.

[edit] Perl Gem, Simple Math Error

2006-08-30

This one is a doozy. I have no idea wtf is going on here. I do know a couple things:

  • Without "use bignum;" the code works.
  • perl -v says: This is perl, v5.8.8 built for i386-freebsd-64int
  • The surrounding foreach loop does make a difference. Substituting a simple assignment does not reveal the bug.
  • I want my 3 wasted hours of my life back, dammit (plus my rant time here).
#!/usr/bin/perl
use strict;
use warnings;
use bignum;

foreach my $char ('A') {
        print "IN: $char\n";

        $char = ord($char) - ord('A') + 10;
# The line above does NOT work, but the two lines below DO.
#       my $tmp = ord($char) - ord('A') + 10;
#       $char = $tmp;

        print STDERR "OUT: $char  <-- should not be 'A'!\n";
}

This came up while I was working on Pit, when I added "use bignum;". This came from my code to convert non-decimal integers to decimal. It's stripped down as slim as I could make it while still revealing the error.

[edit] Perl Gem, Filehandle Quoting

2006-07-21

This Perl code actually does not emit any warnings or errors!

#!/usr/bin/perl
use strict;
use warnings;
</table>

On further investigation, this code ...

#!/usr/bin/perl

use strict;
use warnings;

my @q = </table asdf>;

print "Length:  ", scalar(@q), "\n";
print "$_\n" foreach @q;

... generates this output ...

Length:  2
/table
asdf

Go figure.

While the notation <table> would emit an error (because the filehandle named "table" isn't open and thus can't be read from), if the junk inside the brackets is not a single bareword, Perl treats it more like qw-quoting, where it separates the inside on spaces and returns it as a list of strings.

[edit] Programmers Building Houses

2006-07-13

<RichardNixon> If builders built buildings the way programmers write program and average shack would consist of thousands of custom designed moving parts.

<bilbo> Well ya, obviously it needs to keep its balance somehow.

<rexlunae> Plus, it has to check to make sure the construction technologies are properly licensed.

<bilbo> And that they're auto-updated.

<kzarns> It hadn't occured to me that balance would be an issue when stacking shacks on top of each other. somewhat like a cardhouse I guess

<orcrist> What about back doors for the NSA? Shouldn't they be incorporated?

<bilbo> oh definitely, and auto-update has to be able to change their locks.

<RichardNixon> And it has to be properly modular so that 3 years after it's built somebody can decide it has to be accessible in an entirely different way from how it was designed. For instance, it should now be accessible via the web.

<rexlunae> The smoke detector would have to use a user-friendly alarm explaining that it is bad when it is going off.

<RichardNixon> It would also be required to come with extensive documentation that noone would be expected to read. And it would have to be built on at least an acre of land, because 3 years from now when they want something totally different it's going to balloon in size.

<Eric[0]> and it needs to have memory leaks

<Eric[0]> LOTS of them

<Eric[0]> It's not properly designed if it doesn't consume every resource available.

<bilbo> In other words, it must grow to fill the land available.

<rexlunae> The EULA would require that you only install Microsoft brand carpet, but that's ok since it comes in the nicest shade of orange.

<RichardNixon> Oh yeah, I forgot it would have to be able to dynamically resize itself to to meet all possible conditions, expected and unexpected.

<Eric[0]> It needs to have an error message for any critical problem, for instance the blue screen saying "the roof has collapsed and needs to fall down".

<bilbo> ya, like what if you try to park your car in the kitchen? It has to be able to issue an error, then expand the kitchen (in that order rather than expanding without error -- like windows swap space).

<RichardNixon> Appliances would explode at random time intervals, but if the house was unable to cope with this it would be deemed "junk". Ditto for being unable to keep out swarms of constantly mutating wildlife and teenagers with crowbars.

<bilbo> You have to buy a new one every year (auto-update can only do so much, after all).

<rexlunae> It would have a bathroom, but since you only purchased the standard version instead of the professional version, it would be behind a locked door. In order to use the bathroom, you have to rebuild the structure entirely.

<kzarns> Of course you would have to hire some people to test it for a couple years.

<bilbo> You'll have to buy a new one every year, even though the design is only updated every 8 years.

<rexlunae> It would also include a reminder to install a security system, which would pop up every time you enter.

<kzarns> would need to have a firewall of course

<RichardNixon> If you added on to the house and installed crappy locks in the addition, when a burgler broke in and stole your stuff it would somehow be the architects fault.

<RichardNixon> And instead of installing better locks you would be expected to buy an series of increasingly expensive and complex hunter-killer drones to patrol your house. These drones would take up a larger amount of your living space with each iteration and would occasionally shoot your guests and family members.

<langseth> And they would also cause the house to lock everyone out after an update.

<rexlunae> And the purchase agreement would include a statement that prevents the builder from being held liable for anything ever.

<RichardNixon> Even after you got better locks, you'd probably still need the drones because your children and other family members would keep letting random theives, bums and serial killers into your home because they "looked cute".

<langseth> And some of the Entertainment appliances would install their own drones directly into the foundation without notifying you.

<Eric[0]> Every 3 months or so you'd have to reinstall it to get rid of cruft-creep.

[edit] Cool Flag!

2006-07-10

___
\_/
 |._
 |'."-._.-""--.-"-.__.-'/
 |  \       -.        (
 |   |     (@.@)        )
 |   |   '=.|m|.='     /
 |  /    ='`"``=.    /
 |.'                 (
 |.-"-.__.-""-.__.-"-.)
 |
 |
 |

Arr, matey.

[edit] Gzip Or Bzip2?

This isn't included because it's too long. Follow the link to read it.

[edit] Jiggers per Jiffy

2006-06-19

Neato. Jigger is a measurement of volume equal to 44ml or about 1.5 fluid ounces -- a shot.

Jiffy is a measurement of time equal to .01 seconds, according to the data file included in the UDUNITS library. (Actually it has other meanings as well -- see http://en.wikipedia.org/wiki/Jiffy_(time) . However, this is probably the most general definition.)

So now we can measure flow in jiggers per jiffy.

Also, we could say that 1 Hz is equal to 100 jiggles per jiffy, where a jiggle is simply a cycle of the measured event. Yes, I made up the part about jiggles, but I think it sounds way more sophisticated to say "240 gigajiggles per jiffy" than "2.4 gigahertz".

[edit] Unix will not replace Windows any time soon

2006-06-17

Inspired by Linux has some growing up to do

This is an old article, so much has changed, but the underlying rant is still true, and it applies to other Unixes too. Unix will never replace Windows as an end-user desktop OS until everything just works out of the box at least 95% of the time.

I'm not saying Windows is stable, scalable, flexable, extensible, or anything else we all love about Unix. I'll never run a server on Windows or even attempt to create an automated system on it. In fact, I'll probably never use it without a Unix file server mounted as a network drive. To me, Windows is strictly a sandbox for running software that has crappy or no alternatives in Unix.

However, it's true that it's simply easier to use, and I don't think this is a coincidence. I think free software is unlikely to produce something as polished. Hear me out before you jump on me.

Workers need motivation, whether for writing software or doing other jobs. This is simply how the world works. Commercial software developers have strong motivation to write software that is easy to use; otherwise it won't sell. Free software developers usually don't have this motivation, so each developer that writes free software finds personal motivation for his endevours. For me, this motivation is that I simply need this software for my own use. This is much like why you would improve your house; you directly benefit from your own work, but even if you expect to profit from it financially, that isn't the reason you did it. Because I don't see a significant profit in selling a particular bit of software I wrote, I let others have it. Often this could represent substantial benefit to me if other developers improve what I wrote and I can use their improvements. If I can't benefit by keeping it secret, why should I prevent others from doing useful things with it, especially when they might help me make it better? Other people may have other motives, but I think this may be the most common factor in choosing whether to write program A or program B. The reasons you don't see open source developers making, for example, software for stop lights is they will never be able to use it or benefit from it. They make software they can use; kernels, windowing systems, server software, etc.

The greater the commercial motivation for a piece of software, the greater the gap will be between the free software and the commercial software. Stuff that's easy to write doesn't have a large potential for profit, since someone could easily write something cheaper. I'm not sure whether there is an office suite better (in functionality) than MS Office yet, but MS Office was way ahead for at least a decade. The reason is it's a ton of work, so it's difficult for someone to write a replacement, and there's a huge profit, so it's hard not to find a corporation willing to invest in it. Games are a perfect example of the extreme. They're very difficult to write, and they have very little generalizable value (meaning it's difficult to find a developer that has non-monetary motivation for writing a game), but they have a huge potential for profit.

The thing is, I'm okay with this. I wish there was an OS to replace Windows that wasn't so crappy, but on the other hand I prefer using an OS that isn't bogged down with hiding what really happens under a lot of glitter. I think it may be possible to have one OS that fills both niches, but I'm okay with using FreeBSD unless that happens.

I might polish this up later or write more about it, if I have motivation.  ;)

[edit] Aleph One, Smashing The Stack For Fun And Profit

2006-05-13

[2006-05-13.00:46:11] <bilbo> Okay so I'm reading these research papers ... formal papers published in journals etc
[2006-05-13.00:46:30] <bilbo> Many of them cite, "Smashing The Stack For Fun And Profit", by Aleph One
[2006-05-13.00:46:49] <bilbo> And I'm thinking, "wtf, ... that's his name?  Man, that'd be an awesome name, but that just seems too strange."
[2006-05-13.00:46:58] <bilbo> it's a friggen alias
[2006-05-13.00:47:21] <bilbo> So apparently it's okay to cite articles by people using online aliases in formal papers now.  hahaha
[2006-05-13.00:47:31] <bilbo> There are LOTS of papers citing this too
[2006-05-13.00:47:36] <bilbo> it's here http://www.insecure.org/stf/smashstack.txt
[2006-05-13.00:48:12] <bilbo> granted it's a pretty good article
[2006-05-13.00:52:02] <bilbo> Of course, if all the important articles are citing it, mine should too, because it's important too.  ;)
[2006-05-13.00:55:37] <bilbo> gawd, the citations even mention Phrack.  It's quite a coup in a way :)

[edit] Dumb Languages

2006-04-30

In particular, I like this: "C++ is dumb, and you can't write smart systems in a dumb language. Languages shape the world. Dumb languages make for dumb worlds." (If this sounds superficial, read the article -- he backs it up well.) It seems so true though -- language shapes (or at least, expresses) the way we think and therefore has an impact on everything we think about, and when you create something, the first thing you need is a language to describe it in.

http://www.cabochon.com/~stevey/blog-rants/tour-de-babel.html

Some of Stevey's other articles are good too, see http://www.cabochon.com/~stevey/blog-rants/

[edit] Class Schedule, Fall 2005

2005-08-22

This semester's class schedule:

I have CS465 from 1124906400 to 1124909400, at the interval of +172800, +259200, +172800. I have CS500 from 1124917200 to 1124920200, at the interval of +604800. Both subtract 3600 on the cycle following 1130659200 and skip several arbetrary intervals.

Oh fine, I'll be nice. ;) CS465 1-2pm MWF, and CS500 4pm W

[edit] I Must Be Geeky

2005-08-12

Occasionally, I have these rather shocking reminders of just how geeky I really am.  :) Last night I had this dream. As you'll see, it gets progressively geekier.

Last night I had this dream. Somehow, this virus ended up on my network. Strangely, it originated on my network, and I was trying to contain it. (I don't know how; the dream just started with that situation.) Before I realized the risk, the virus got out to the internet.

Soon I realized it was an intelligent virus. As in, it was learning from the content available on the internet. This made it extremely dangerous, because it would read source code and find security holes that hadn't been discovered yet.

Global catastrophe was imminent, except that it didn't seem particularly malicious. It seemed to be having fun, in an odd way. It would screw up Windows computers by showing silly things on the screen, for example. Or change orders at fast-food restaurants. Or simply converse with people through computer consoles.

It became more intelligent as it compromised more computers and digested more information. Finally, it became intelligent enough to communicate verbally and pass a Turing test, and actually called me on the phone. It sounded like a regular person, not like a machine or a criminal or a muffled voice or anything. Just some guy, but I knew it was the virus calling (as you often just know things in dreams). It now became smarter than the everyone in the world, as it gained more and more concurrent processing power and indexed everything anyone has ever studied.

As if this wasn't geeky enough, we talked about the things it had learned. Apparently, it had figured out the proof for "P != NP". Unfortunately, it didn't tell me what it is before I woke up.

[edit] Perl Gem, Ambiguous Curlies

2005-08-03

This is quite a perl gem. These statements should do exactly the same thing. Thanks to the multiple meanings of {}, their interpretations are wildly different.

print Dumper(eval '{1 => 2}');
print Dumper(eval '{"1" => 2}');

Generates:

$VAR1 = 1;
$VAR2 = 2;
$VAR1 = {
          1 => 2
        };

2006-09-26 Update: A year later, this doesn't happen anymore. I should've recorded which version of Perl it was. I know I wasn't crazy; I spent a very long time debugging this in a program, and finally extracted these lines to demonstrate to myself that I was not, in fact, crazy. In any case, the point is still valid: It's a terrible idea to overload symbols with too many meanings. Perl uses {} to represent both a statement block and a ref to an anonymous hash, and the grammar does not fully disambiguate them.

Personal tools
Toolbox