Badblocks

It took me some time to find out the equivalent of Window’s checkdisk/scandisk/chkdisk on Linux, but trust me, there are several.

For starters I am going to take a look at badblocks, a command that as the name implies, looks for bad blocks.

The basic format of badblocks are:

badblocks [options] device

If you have a fresh drive with no data or data that can be deleted on it you can do:

badblocks -s -w /dev/sdb

Note however, the -w command will erase all existing data on the drive so do not use it for drives with existing file systems on them. You cannot use -w on a mounted drive, unmount it first. The -s flag makes the command show a progress bar. This could come in handy when you are testing larger drives since even the fastest systems will take at least an hour to test an average sized drive (my 400GB took about 2 hours on a SATAII system).

If you want to test the drive without deleting data you can use the -n switch which will use non-destructive write-read mode, however, this switch can, for obvious reasons, not be combined with the -w switch.

badblocks -s -n /dev/sdb

Links:

DoNothing and numerical dyslexia

Small beauties in programming… and not all of them are made up either ;o)

DoNothing:

function DoNothing() {
Nothing();
}

Find one error:

private static final int TWENTYFOUR = 24;
private static final int THIRTYEIGHT = 32;
private static final int FOURTYTWO = 42;

The mystery of the magic file (or how i invented the .rte and .rtg file formats)

I’m just back from a head spinning experience of extreme Windowsism.  A file that refused to be renamed, or deleted… until ten minutes later…

What happened was that I wanted to rename a file.  Like I usually do, I clicked the file, then pressed F2, got the “editable” view of the file name and started typing.

Nothing happened.

I clicked around, trying to see if the computer was just slow or something like that.  Well… the file explorer did not respond at all…

It was frozen.  So I waited for it to unfreeze.  Which it didn’t.  It apparently had crashed.

I force-quitted.  Restarted and retried.  After all, perhaps it was just a fluke?  Right?

Nope.  Same exact problem.

I scratched my head, thought for a bit and rejected a number of alternative ways to go.  I guessed it was time for the daily reboot… again today.  And rebooted the system.

Once back in the catalogue (five minutes later) I found the same problem persisted.  No rename, no file explorer, nothing but kill the program.

I was able to “solve” the problem however, by copying the file.  Once I had it was in fact possible to rename the copy.  All I had to do now was to remove the old file and, although kind of axy (as in trying to carve an inch high wooden statuette with an axe), the problem would be solved.

The file did not want to be deleted.  However, the file explorer did not freeze this time so chalk one up for windows?  Or not.  Shutting down the file explorer and restarting it did not help either.  It was time to harvest the vast experience of the firm.

I asked around in the office landscape trying to find someone that could help, and I got a number of helpful advice like “have you restarted the file explorer?” or “have you rebooted the machine?”  All of which was rather not what I hadn’t already tried.

Finally someone suggested: “put two files in the same folder where the problematic file is placed, name them so they appear just above and just below the file with the problem, put something like ‘erase me’ at the end of them, wait a week and delete the file then.”

After having hyperventilated for a while to get the whole concept into my head and make it stick long enough to do what the guy had suggested I went ahead.

My magic file was named something like “My document 2.rtf” so after some experimenting with names that would place the file exactly where I wanted them I came up with:

My document 2.rte.delete.me.txt
My document 2.rtf
My document 2.rtg.delete.me.txt

Now for the mind blowing finale.

Once I had the files in place my folder looked like:

My document 2.rte.delete.me.txt
My document 2.rtg.delete.me.txt

The magic file had disappeared!  Finally deleted!!  Only about ten minutes after the button was pressed!!!

That was when I noticed the dialogue boxes saying “The file cannot be renamed, it has disappeared.”  They were, in true windows style hidden under the file explorer window…

Aha, was my first thought, problem solved…  Then I felt a chill going down my spine.  Didn’t I try to rename before I deleted?  Or did I try to delete first and rename later?

No! my mind screamed.  I had a file, whose content was important but whose name was wrong.  So deleting before renaming would be stupid.  And renaming after I’d copied the file and renamed the copy would be equally stupid (not to mention impossible… there was already a file with that name…)

Somehow windows had confused the order of the operations?!  BRRRRR!!!

You might think, hey he was working with a networked drive and the net was having some kind of problem or the order of the packages got confused.  It’s a good idea, it could really happen, even though I think the Samba protocol (or whatever windows have chosen to call it) should be able to handle packages coming in haphazardly without getting confused like this, and the most probable result of Samba not managing that should be some kind of failure, even total failure demanding the drive to be remounted (or a blue screen or whatever XP uses when the OS-programmers run out of money, time or happiness).

Enough about networked drives… the drive in question was local!  No network, no delays, not even cables (USB/FIREWIRE/eSATA or what have you)… unless you count the system bus.  Does windows use TCP/IP on the system bus?

Well… thank God I have my important files on another OS altogether!  Not to mention on RAID and USB backup…

Computers are scary… Windows computers are terrifying!

Review: Knocked Up (2/5)

“Knocked Up” (IMDB, Amazon) is about Ben (Seth Rogen) and Alison (Katherine Heigl) who gets drunk, has unprotected sex, gets pregnant and decides to keep it (or at least she does…)

This is a sweet movie and all. Some quite good characters, but the main problem here is, I don’t buy it. People just aren’t this cute and cuddly. Sure, she might have jumped into bed with him… if he’d given her roofies… and sure, she might have wanted to keep the child… if she felt jumping off a bridge was the only alternative, but the guy she’s doing all this with…

Don’t get me wrong here. Ben is a pretty cool guy…. in fact I bet most men think he’s really cool… he does his own thing, and … well goof off completely. Checking the IMDB page for this movie I’m not surprised to learn the director is a man (Judd Apatow) he’s also the writer, and four out of five producers are men (unless Clayton Townsend isn’t a male name, but I think it is…)

So, male fantasy coming up: Photo model beautiful woman will want to have your child even if you don’t have a job, smoke pot and are piss poor. Don’t tell me he got his act together in the end…. she didn’t know he was having a work, and apartment etc when she took him back.

Anyway, this story doesn’t have to be logical anyway since it’s just a big poster child for making people have kids (or at least not abort them) so much so they had to put in (definitely SGI’ed) shots of the baby “breaking out” just to scrape some of the sugar coating off.

This movie, ladies and gentlemen is nothing but the product of a frantic society (and I bet the rest of the western world are just as frantic as they are “over there”). The authorities want us to make lots of consumers and tax payers, but we’re not really doing so good in that department, so when they go old nobody will be able to pay for the care of them, at the rate of growth most western countries have today we’d have to import daily buss loads of immigrants or there will be no consumers or tax payers in the end… and that’s why this movie screams… get knocked up, do it regardless of the cost “Just do it already” and it doesn’t matter if the guy is a complete looser or if you brought condoms, just as long as you don’t use em… Wonder if the Catholic church is a sponsor?

This movie gets a 2/5 score for being a good laugh, but it could have gotten more, if it hadn’t been for the propaganda.

Euro English

The European Commission has just announced an agreement that English will be the official language of the EU – rather than German (the other possibility).

As part of the negotiations, Her Majesty’s Government conceded that English spelling had some room for improvement, and has accepted a 5-year phase-in of new rules, which would apply to the language and reclassify it as Euro-English.

The agreed upon plan is as follows:

In year 1, the soft ‘c’ would be replaced by ‘s’. Sertainly,this will make the sivil-servants jump with joy. The hard ‘c’ will be replaced by ‘k’.

This should klear up konfusion and keyboards kan now have one less letter. There will be growing publik enthusiasm in the sekond year, when the troublesome ‘ph’ is replaced by ‘f’. This will reduse ‘fotograf’ by 20%.

In the 3rd year, publik akseptanse of the new spelling kan be expekted to reach the stage where more komplikated changes are possible. Governments will enkourage the removal of double letters, which have always been a deterent to akurate speling. Also, al wil agre that the horible mes of the silent ‘e’s in the language is digrasful and they should eliminat them.

By year 4, peopl wil be reseptiv to lingwistik korektions such as replasing ‘th’ with ‘z’ and ‘w’ with ‘v’ (saving mor keyboard spas).

During ze fifz year, ze unesesary ‘o” kan be dropd from vords Kontaining ‘ou’ and similar changes vud, of kors, be aplid to ozer kombinations of leters (i.e., ‘ea’).

After zis fifz yer, ve vil hav a reli sensibil riten styl. Zer vil be no mor trubls or dificulties and evrivun vil find it ezi to understand ech ozer.

Roger and Elaine

A guy named Roger is attracted to a woman named Elaine. He asks her out to a movie; she accepts; they have a pretty good time. A few nights later he asks her out to dinner, and again they enjoy themselves.

They continue to see each other regularly, and after a while neither one of them is seeing anybody else. And then, one evening when they’re driving home, a thought occurs to Elaine, and, without really thinking, she says it aloud:

“Do you realize that, as of tonight, we’ve been seeing each other for exactly six months?”

And then there is silence in the car.

To Elaine, it seems like a very loud silence. She thinks to herself: Geez, I wonder if it bothers him that I said that. Maybe he’s been feeling confined by our relationship; maybe he thinks I’m trying to push him into some kind of obligation that he doesn’t want, or isn’t sure of.

And Roger is thinking: Gosh. Six months.

And Elaine is thinking: But, hey, I’m not so sure I want this kind of relationship, either. Sometimes I wish I had a little more space, so I’d have time to think about whether I really want us to keep going the way we are, moving steadily toward… I mean, where are we going? Are we just going to keep seeing each other at this level of intimacy? Are we heading toward marriage? Toward children? Toward a lifetime together? Am I ready for that level of commitment? Do I really even know this person?

And Roger is thinking: So, that means it was… let’s see… February when we started going out, which was right after I had the car at the dealer’s, which means…let me check the odometer… Whoa! I am way overdue for an oil change here.

And Elaine is thinking: He’s upset. I can see it on his face. Maybe I’m reading this completely wrong. Maybe he wants more from our relationship, more intimacy, more commitment; maybe he has sensed, even before I sensed it, that I was feeling some reservations. Yes, I bet that’s it. That’s why he’s so reluctant to say anything about his own feelings. He’s afraid of being rejected.

And Roger is thinking: And I’m going to have them look at the transmission again. I don’t care what those morons say, it’s still not shifting right.

And they better not try to blame it on the cold weather this time. What cold weather? It’s 87 degrees and this thing is shifting like a garbage truck, and I paid those incompetent thieves $600.

And Elaine is thinking: He’s angry. And I don’t blame him. I’d be angry, too. I feel so guilty, putting him through this, but I can’t help the way I feel. I’m just not sure.

And Roger is thinking: They’ll probably say it’s only a 90-day warranty… scumballs.

And Elaine is thinking: Maybe I’m just too idealistic, waiting for a knight to come riding up on his white horse, when I’m sitting right next to a perfectly good person, a person I enjoy being with, a person I truly do care about, a person who seems to truly care about me. A person who is in pain because of my self-centered, schoolgirl romantic fantasy.

And Roger is thinking: Warranty? They want a warranty? I’ll give them a warranty. I’ll take their warranty and stick it right up their…

“Roger,” Elaine says aloud.

“What?” says Roger, startled.

“Please don’t torture yourself like this,” she says, her eyes beginning to brim with tears. “Maybe I should never have… Oh God, I feel so…” (She breaks down, sobbing.)

“What?” says Roger.

“I’m such a fool,” Elaine sobs. “I mean, I know there’s no knight. I really know that. It’s silly. There’s no knight, and there’s no horse.”

“There’s no horse?” says Roger.

“You think I’m a fool, don’t you?” Elaine says.

“No!” says Roger, glad to finally know the correct answer.

“It’s just that…it’s that I…I need some time,” Elaine says.

There is a 15-second pause while Roger, thinking as fast as he can, tries to come up with a safe response. Finally he comes up with one that he thinks might work. “Yes,” he says.

Elaine, deeply moved, touches his hand. “Oh, Roger, do you really feel that way? ” she says.

“What way?” says Roger.

“That way about time,” says Elaine.

“Oh,” says Roger. “Yes.”

Elaine turns to face him and gazes deeply into his eyes, causing him to become very nervous about what she might say next, especially if it involves a horse. At last she speaks.

“Thank you, Roger,” she says.

“Thank you,” says Roger.

Then he takes her home, and she lies on her bed, a conflicted, tortured soul, and weeps until dawn.

When Roger gets back to his place, he opens a bag of Doritos, turns on the TV, and immediately becomes deeply involved in a rerun of a tennis match between two Czechoslovakians he never heard of. A tiny voice in the far recesses of his mind tells him that something major was going on back there in the car, but he is pretty sure there is no way he would ever understand what, and so he figures it’s better if he doesn’t think about it.

The next day Elaine will call her closest friend, or perhaps two of them, and they will talk about this situation for six straight hours. In painstaking detail, they will analyze everything she said and everything he said, going over it time and time again, exploring every word, expression, and gesture for nuances of meaning, considering every possible ramification. They will continue to discuss this subject, off and on, for weeks, maybe months, never reaching any definite conclusions, but never getting bored with it, either.

Meanwhile, Roger, while playing racquetball one day with a mutual friend of his and Elaine’s, will pause just before serving, frown, and say, “Norm, did Elaine ever own a horse?”

And that’s the difference between men and women.

/Author Unknown

Iterating a list, and deleting from it, Java vs .NET

Or how I came to realize I could live a life time without .NET and be just as happy.

I’m just fresh from having tried to iterate a list… and delete items from it while iterating.  In .NET with C#.

It turns out a statement like:

void deleteFromList(IList<X> list) {
     foreach (X x in list) {
        if (x.DeleteMe) {
            list.Remove(x);
        }
    }
}

Will throw an InvalidOperationException stating you cannot perform a foreach and delete at the same time.  This is actually not that big of a surprise, or it shouldn’t be…  the same happens in Java if you delete and iterate at the same time.

This is how I would have done this in Java:

void deleteFromList(List<X> list) {
     Iterator<X> itr = list.iterator();
     while (itr.hasNext()) {
	X x = itr.next();
        if (x.DeleteMe) {
            itr.remove();
        }
    }
}

It’s simple, clean and it does not throw exceptions. If you believe the code may be run asynchronously, slap on a “synchronized” and you’re home safe.

So, how to do this with .NET?  Well, you can’t use Enumerators (which are the .NET “equivalent” of iterators), they don’t have a remove method.  Further worse, if you are unlucky enough to run version 1.1 your only option seems to be some unholy concoction like:

void deleteFromList(IList<X> list) {
    IList<X> toBeDeleted = new List<X>();

    foreach (X x in list) {
        if (x.DeleteMe) {
            toBeDeleted.Add(x);
        }
    }

    foreach (X x in toBeDeleted) {
        list.Remove(x);
    }
}

Don’t even start a conversation on synchronization with this mixup.  Anyway, those who are “lucky” enough to code .NET 2.0 can do something like:

myList.RemoveAll(delegate(X x) { return x.DeleteMe; });

Now, if you’d like to base the “DeleteMe” calculation on some external paramter like input to the deleteFromList method or if you’d like to do more than just delete x you’ll have to experiment, it’s probably possible… with a solution like the double lists above perhaps?

Regardless.  Someone said it was old news to be a Java programmer, I can only guess because of the lower hour wastage when you program Java systems, which in turn means lower bills to the clients and finally lower wages to the programmers.

It costs to be on top…

Moblock traffic blocker

Moblock (moblock-deb) is a so called traffic blocker. It prevents connections from certain IP numbers (defined in block lists) to gain access to your computer. The whole purpose is that the blocked IP numbers usually belongs to this or that organization that wishes to find out more about your Internet habits and other information they have no reason to get their noses into.

Moblock has a big brother called Peerguardian by Phoenixlabs but development on this program seems to have been discontinued, and unfortunately at a stage where the program doesn’t work (at least for me it doesn’t). I am also sure there are some Windows variants of an IP-blocker (I’m guessing Bluetack is the right place to go).

Installing Moblock on Ubuntu turns out to be a very simple affair. Mainly do two things: Add moblock’s repository to your repository list, and run an apt-get command. (Here’s an even better instruction for installing Moblock on Ubuntu).

The installation takes care of setting up cron-jobs to update your block lists every day, installs moblock as a service started every time the machine is started, and makes the first download, after which the program (or in fact, demon) is started and you are safe.

The above link is a very good instruction on installing moblock, and it even have instructions on how to perform some simple troubleshooting.

If you run linux I suggest you take a look at moblock’s home page, or you can check out it’s project page on sourceforge.

BasKet Note Pads – note-taking application

BasKet is a very nice application I just stumbled across. It is a kind of OneNote for Linux.  In Ubuntu (probably Debian and others as well) it can be managed as a regular package.

I’m using it mostly when writing and ordering ideas and the like, but I can see myself doing much more with it…. once I’ve made sure it’s stable enough. Let me get back on that with a more proper review later.