Archive for September, 2006

More Links To Numbers Stations

Monday, September 25th, 2006

Here are some more links to recordings from Numbers Station. Creepy and fascinating at the same time. I do not recommend playing lottery with these numbers, unless you want to suffer the Hurley Curse P

I found these on some Japanise site:

981 - supposedly by CIA
Another CIA Recording
Mossad Recording
Another English Recording

HF Underground has bundles of them. Here is a sample:

Transmission from Warrenton Training Center in Virgina (whatever that is).

This must be my favorite - it creeps the shit out of me every time I listen to it. It is a Russian Polytone station which uses high and low tones to encode the message. The effect sounds like some weird, slow playing bizarre midi tune that seems to have a mysterious rythm and logic of its own:

Russian Polytone Station

I dare you to listen to the whole polytone recording. It is just to creepy!

Can you be too User Friendly?

Monday, September 25th, 2006
User Friendly Software

I was reading some slashdot discussions today, and one of the comments got me thinking. At some point someone said something among the lines of:

Back in the day, most computer users could actually program their machines. Now most users can barely figure out how to click an icon without getting lost.

Of course back in the day most drivers were also car mechanics, and most pilots were aviation engineers. They had to be, to properly operate and service their machines. But each technology that enters mainstream, has to gradually become easier to use for an ordinary Joe. This is the natural order of things.

As the time passes, our devices become more convenient and easier to operate, and by extension they become more accessible to dumber and dumber end users. The question is, when do we stop? Is dumbing down the user interface in order to satisfy the lowest common denominator is really the best possible design choice?

Let me put this another way. In the past most of the user-space programs were simple CLI applications. You would accomplish complicated tasks by stringing them together into long command sequences. Users had to remember commands, and know how to combine them and mix them up in innovative ways.

In fact they could easily write their own little scripts simply by listing their commands in a text file. Once you know how to write simple scripts, you can easily make the the leap into programming. After all, a hello world program in Perl is almost exactly the same as in bash and the C version is only a tad more complicated. As it is, a proficient CLI user is only a few steps from being a developer.

GUI user on the other hand is most often a brain-dead mouse clicker. He needs shiny buttons, flashing lights and amusing animations to keep him occupied. And if there are more than 4 buttons on the screen at the same time his brain simply shuts down and refuses to cooperate.

I submit that it is perfectly possible to teach an average Joe to use CLI proficiently in about the same time it would take to train him to use a fairly complex GUI. It is just a matter of memorization and repetition. The learning curve may be a little steeper at the beginning but the overall learning process should should only be marginally longer.

What is the difference? CLI requires the user to understand what he is doing, an combine the effects small command line applications in an intelligent way to achieve desired results. It teaches him how to think like a programmer, and develops their problem solving skills.

GUI on the other hand requires nothing from the user. Most GUI’s are composed of sets of fairly static interface elements - each tailored to very specific tasks. Unlike CLI, these elements cannot be easily combined or chained together. User must manually navigate from one to another, clicking through multiple screens in order to accomplish something complicated.

For example, lets assume that both our hypothetical users are assigned a task of sorting files into separate directories based on creation date. CLI user will most likely sit down and spend few minutes hacking up a relatively simple script to accomplish this. A GUI user will first try searching for an appropriate tool in all kinds of utility menus, and then will give up and start dragging and dropping files to appropriate folders.

While CLI user is trained to avoid tedious tasks by automating them, GUI user is trained to expect the automation to be a built in feature. If it’s not then they blame UI designers but do nothing to solve the problem themselves. One type of user is trained to solve problems, the other is trained to have problems solved for them.

Each time we design a new GUI interface we are in fact constraining the end user to a specific set of options and actions he can perform. We are in fact dumbing them down ourselves.

Sad part is that current mantra in software engineering world is usability. Everything must be simplified, have a shiny GUI and be intuitive. Otherwise the product won’t sell. But is this really the best way to design software? Some applications obviously greatly benefit from a GUI interface. But I doubt that every possible piece of software out there just has to have it.

Lost and Numbers Stations

Monday, September 25th, 2006

I’m still in process of catching up on Lost. I’m 9 episodes into the second season now, and I just successfully managed to hook my brother on the show. I think the clincher was when I told him that Michelle Rodriguez joins the cast in S2. He is now watching it from episode one. mrgreen

Then of course I had to stumble onto this weird recording. It is a female voice reading a list of numbers in Spanish. Now, these are not the Lost Numbers but it still is eerie as hell.

Apparently this is a recording of a Numbers Station. These are mysterious shortwave communications that are allegedly used to transmit encoded messages by various spy agencies (although no country in the world acknowledges using such techniques). Speculation is that these messages are one-time-pad encoded but your guess is as good as mine.

Numbers Stations were much more common in the past but shortwave radio enthusiasts often catch their transmissions even today. Who transmits these things? Who is the intended recipient? What do these messages mean? Weird shit all around…

Command Line SCP for Windows

Saturday, September 23rd, 2006

I do not use FTP, and you shouldn’t use it either. Sending your password and files over the tubes in plaintext form might have been ok in the 80’s but nowadays it’s just asking for trouble. I use scp for all my file transfer operations.

Now, as every self respecting geek I have cygwin installed on every windows box I use. But sometimes going through cygwin is an overkill. For example if I simply want to process and upload 1 small file to a remote machine I really shouldn’t have to install cygwin environment just to get access to command line scp version. I should be able to do this from an ordinary batch script.

This is where PuTTY comes into play. But wait, you say, PuTTY is a graphical SSH client for windows. What does it have to do with SCP? To that, I answer: “Very good question, voice in my head. Let me explain…”

If you go to to the official PuTTY download page and scroll down you will see a link to pscp.exe. What is that? It is exactly what I’m talking about here. A command line scp client for windows.

Just download it, rename it to scp.exe, stick it somewhere in your path and you are ready to go. It works almost the same like the real thing with few little exceptions. But it is great tool for automated upload scripts.

MySQL: find week start/end given week number

Friday, September 22nd, 2006

I have a table with some dated records. I wanted to do some weekly reports on this data. MySQL has a nifty function dubbed WEEK() which will return a week number. It allows you to break your data into week long intervals very easily. For example, the following query will tell me how many records came in each week:

SELECT COUNT(*), WEEK(mydate)
FROM mytable
GROUP BY WEEK(mydate)

The problem here is, that the output is totally meaningless to me as I do not have a clue what does week 36 mean. What I really want is to have on the screen is a nice, human readable date interval - the beginning and ending date of any given week.

Surprisingly, this turns out the be a major pain in the ass. There is no simple function that will yield a week interval (or start/end date of a week) given a week number. You have to find these dates manually. Here is how I did it:

SELECT
    COUNT(*) AS reports_in_week,
    DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY),
    DATE_ADD(mydate, INTERVAL(7-DAYOFWEEK(mydate)) DAY)
FROM
    mytable
GROUP BY
    WEEK(mydate)

How does it work? The DAYOFWEEK() function returns an integer ranging from 1 (Sunday) to 7 (Saturday). So if mydate happens to be Tuesday we get the following statements:

DATE_ADD(mydate, INTERVAL -2 DAY)

which essentially means “subtract 2 days from mydate (which is that week’s Sunday) and also:

DATE_ADD(mydate, INTERVAL 4 DAY)

which yields the date of that week’s Friday.

One would think that there would be a function to accomplish this automatically, but alas there is none. I think this is as simple as it gets. I hope this helps someone, because it took me quite a while to figure this out.