Stories from the daily life of a technologist

Every once in a while I have a silly store I would like to share, but it is not long or funny enough to warrant a full post. So I have been sort of mentally collecting these, until I had enough for a longer post. I think this a good time to post some of that backlog. Note that I’m changing names, genders, species and other characteristics of all the guilty parties to protect their innocence… Or something like that.

Desktop Background

Coworker pops by to get some documents from my desk and makes a quiet throat clearing noise to get my attention. I rummage through the stack of papers on my desk to retrieve whatever he needs from me, and hand it to him.

“Dude, you were totally zoning out.”
“Huh?”
“You were staring at your desktop image for like two minutes straight. I usually try to have some code on my screen when I do that”
“I’m not staring. I’m waiting for Eclipse to load…”

As if to confirm my statement, the Eclipse splash pops up on my screen.

“Fair, enough…” he smiles knowingly “You might as well go get some coffee from downstairs… This is not gonna be ready any time soon”.

Advanced Internet User

Dramatis personae: me, two other developers and one marketroid.
Scene: Marketroid tries to download pictures from the interwebs

Marketroid: How do I download this?
Me: Use the download link… I mean…
Developer 1: ALT+F4
Developer 2: Yes, what he said.
Me: Yeah, Alt+F4 will work too.
Marketroid: Agh! WTF! You guys are assholes.

[Assholes share a heartfelt laugh]

Marketroid: Why is this thing so slow?
Developer 2: Because you are using Internet Explorer.
Me: Also, I think your computer has been with the company longer than any of us.
Marketroid: What is wrong with Internet Explorer?
Developper 1: ಠ_ಠ
Me: Sigh…
Developer 2: This guy is worse than my girlfriend…
Developer 1: Stop being a girl, and use a normal browser
Marketroid: Ok, how do I…
Me: Ctrl+W
Marketroid: Is it going to close the window again?
Developer 1: No, this is legit.
Developer 2: Yes, we just found out your are a girl, and we don’t pick on girls.
Marketroid: Ok… WTF! Shit!

[Coffe cup toast of triumph and one awkward high five]

Marketroid: Ok, now this is telling me I need to log in with LIVE account. What is LIVE?
Me: It’s Microsoft’s attempt to re-brand Hotmail.
Developer 1: Yeah, it’s like – it’s still Hotmail, but people won’t laugh at you when you email them.
Marketroid: What’s wrong with Hotmail now? I use it for my personal email!
Me: Oh god!
Developer 1: [facepalm.jpg]
Developer 2: Dude my grandmother uses Hotmail. You don’t use Hotmail! You just don’t.
Developer 1: Sop being an old lady!

Woha!

My cubicle is near filing cabinets so the filing brigade members sometime stop by for a chat, and to steal some Altoids from my desk. I usually have some mints or other snacks on my desk, and it does attract all kinds of strange creatures from time to time. One day our CFO pops by. And by CFO I mean one of the interns who we dubbed the “Cheif Filing Officer” mostly because he seems to have invented his own version of the alphabet.

I’m currently in the process of re-building some machine. I’m elbow deep in computer guts, there are little screws and ribbon tapes, and expansion cards everywhere. My Matrix screensaver is rolling idly in the background. CFO catches a glimpse of it, and goes:

“Woha!”

I laugh because I think he is doing Keanu impersonation. He is not.

“What is that?” he points at my screen.

I turn around just to confirm my screen did not suddenly do anything unusual and succinctly explain that it is my Matrix screen saver.

“Oooh! Cool.. I thought you were like programming or something”.

The Sequel

I’m on the phone with a client.

“So do you guys have a database of any sort over there? You know, like MySQL, Postress, Microsoft SQL Server, etc..”
“Hold on, let me ask my boss… No, we don’t seem to have any of these.”
“Ok, no problem. So I’m going to put down no database. We will set one up for you from scratch.”
“Wait… My boss says we have something called My Sequel. Will that work?”
“Yes…”

On that note, which way do you pronounce it? MySQL or my sequel? I actually spell out SQL because I honestly don’t see how you get the word “sequel” from that. But to each his own. Let me know your favorite pronunciation in the comments.

Also, share your own stories.

18 Comments

Temporary Public Key

“Luke, can you check the permissions again? It’s either that or the password you gave me does not work.” said the email. I rolled my eyes and started rummaging through the pile of papers on my desk searching for my notes. After a few minutes I found the scrap of paper where I hastily wrote down that password. It was something along the lines of: sp10ftzoln8.

I got the email guy on the phone and our conversation went something like this:

“Ok, can you give me the password again?”
Sure, it is S as in same…
“Wait, S as in Same or F as in Fame..”
It’s S
“F?”
No, Sam, Samantha, Salmonella. S.
“Got it. Next letter.”
P, one, Oh…
“T as in Thomas or..”
No, P as in Peter
“Heater?”
Peter. Parker. You know, Spiderman…
“So wait, I’m confused. Is it Peter, Heater, or Spiderman”
P. Penelope. Pundit. Patricia.
“Got it. What was the next one?”
One
“Yes, next one”
Whose on first?
“Very funny… So number one, right?”
Yes.
“I’m gonna write it down with the little serif… I never do serifs on my ones but then I always thing it is an L when it comes to passwords”
That’s actually a very good policy.
“Next was O, right? As in Olaf?”
Yes… I mean no! Zero. It’s a zero.
“Oh!”
Stop it!
“No.”
Ok, from now on I’m going to say ZERO when I mean numbers and Oh when I mean the letter.
“Got it. Next letter please.”

And so it went. Then we had to get on the phone again, because the L became a 1 in the general hand written serif confusion.

This made me think that there should be a better way of doing this. It’s not like this is a new problem either. We have already solved it long time ago using this little thing called encryption. If you want to send someone a password over an insecure network (such as the internet) all you need to do is to encrypt it. There are dozens of tools out there that will let you take a file, encrypt it and send it off to someone else. Most of them have one problem: they use symmetric encryption.

When you use symmetric encryption, you encrypt your message with a key (or a password if you will). This key must be known to both parties ahead of time. So at some point you will need to securely exchange it. How do you do that? Well, you definitely don’t want to email a key in plaintext. So you need to meet, get on the phone or devise some other way of passing the key along, which brings us back to our original problem.

Now, the key exchange issue was also solved a long time ago with the concept of asymmetric encryption. The idea is to use two keys, one public and one private. Public keys can (and should) be shared over insecure networks. They have a single purpose – they allow you to encrypt a message, that can later only be decrypted by a corresponding private key.

This is exactly what we need here. Instead of trying to play the spelling bee over the phone, I could simply request my recipients public key, encrypt the password and be good to go. The problem with this issue is implementation. The most popular assymetric encryption software is PGP. It has a great private/public key management software that integrates with Outlook as well as has dozens of solutions (like a web portal where you can create temporary email accounts for your recipients) but all of them cost money. All I really need is something quick and easy. GPG, the free, open source implementation of PGP is a step in the right direction but… Well, it is not very user friendly… I mean, there are several different clients for it, and some of them are actually pretty decent but I’m not talking about general usability right now. What I need is a stand alone client that someone could download, install and use in two minutes or less. GPG is a bit of an overkill here. It basically assumes you will be using it all the time. So you generate your key pair, you then set up a key ring where you collect public keys of the people you exchange emails with. It integrates with your email client and also allows you to cryptographically sign your emails to prove you sent it. But I don’t need anything like that.

What I really want is a stand alone app with two buttons: send and receive. If you click on Receive, you will be given a public key which you then paste into your email and send to your friend. If you click on Send, you get a text box where you paste the public key and a file chooser that lets you pick a file to be encrypted. Then you send that file over, and the recipient decrypts it. Once the whole process is done, you close the application and forget about it.

I don’t care about key management. I don’t care about signing, or identity verification. I just want an assymetric encryption app which lets me exchange a file or two with minimum fuss. I did some googling, and I could not find anything like it out there. So I decided to write my own.

Here is a screenshot of the prototype:

MyTPK Main Window

See, easy three buttons and some explanatory text. I called it “My Temporary Public Key” or “MyTPK” for short, because that is the idea behind it. You generate a key pair, you use it to exchange a message or two and then you discard it. We are not signing anything, we are not storing keys, we are not checking identity. It is all about simplicity.

As I mentioned before, the recipient gets a text box with a public key he can copy and paste into an email:

Recipient window

The application will preserve this key, until the user decides to generate a new one. Sender on the other hand will see this:

Sender window

One thing I really did not want to do when working on this project, was to write the actual encryption back end. First off, there is no reason too. Second, there are hundreds of reasons not too. Chief of which is the fact that every single little bug, omission or design flaw in your code opens up a window for a potential attacker. I simply do not feel confident enough to just hack together a small tool, and then tell people it is safe to use without massive amount of testing by security minded people.

On the other hand I also did not want to create dependencies. I could of course create a nice tool that would hand off the encryption work to GPG but that would require more work for the potential user. I want something self contained. So in the end I decided to use built in encryption libraries.

Then I hit a few interesting snags in development, but I’m going to talk about them next time. Those perceptive enough probably noticed I’m using RSA keys, and can probably figure out the message size surprise I encountered. I will talk about how I got around it in the next post. I’m not releasing the code yet because it is sort of broken at this point. It works for me, but it is very rough. I want to tidy it up a bit, make sure it handles at least half the exceptions it is throwing, and then I will probably post it on Google Code or Github and let people rip it apart for security flaws.

11 Comments

Metamorphosis of Prime Intellect

Can I just say one thing? I love my commenters. Seriously, the best part of this blog are the insightful comments I get on a lot of random topics I rant about. For example, my Utopia/Dystopia post prompted Ludvikas to recommend reading Metamorphosis of Prime Intellect – an online novel dealing with a singularity event and it’s repercussions. I must say it was a good, thought provoking read, if a little bit graphic at times.

I highly recommend reading it. The plot basically goes like this: a researcher creates some powerful AI prototypes that pass Turing test with flying colors. He gets private funding, and exciting new physics-bending chip technology. He builds a new prototype (the titular Prime Intellect) on this incredibly powerful hardware, binds it with Asimov’s 3 laws of robotics and let’s it loose. The AI soon discovers how to augment itself up to a point where it can manipulate matter at the molecular level. To make sure that no one dies or gets hurt ever again, he basically digitizes everything, then expands his hardware to span the physical universe to run complex virtual environment that can be inhabited by digital copies of all the people who lived on earth. No more death, no more diseases, no more crime – almost overnight the world becomes a perfect post scarcity utopia. And everyone is fucking bored out of their heads… Cool concept. Also, predictable ending but I’m getting ahead of myself.

The rest of this post will probably include major spoilers so I recommend reading the story before continuing. It is available online for free so you have no excuse for not reading it. :)

While I really enjoyed reading the novel, I found it very predictable. As soon as I saw 3 laws popping up in the text I begun suspecting that at some point the bitter and disillusioned characters are going to deadlock the omnipresent AI with one of Asimov’s beloved paradoxes. No, seriously – if you read enough of Asimov’s robot stories you end up expecting it. This was his all time favorite subject – artificial minds trapped in intractable existential dilemmas trying to reconcile their built in compulsion to protect human lives, and some dire circumstances. And in most cases these machines simply lock up or burn out. So I was a bit dissapointed that the author took this well traveled route instead of taking his story somewhere else. Essentially this could be Asimov’s story if Asimov actually knew about singularity, and sprinkled his novels with lots of graphic sex and violence.

The whole thing hinges on three assumptions:

  1. That the 3 laws actually work, and could be implemented successfully in a singularity scale intellect
  2. That Lawrence’s choice to bind his AI by the 3 laws was the best possible course of action
  3. That everyone was as unhappy with their virch-existence as Caroline and Lawrence were

I believe that all of these are debatable. Personally, I find the 3 laws to be compelling but very flawed concept. Asimov himself proved over and over again how the intentional vagueness of the 3 laws was often cause of crashes, deadlocks or unpredictable behavior. Methamorphosis of Prime Intellect is yet another example on how the 3 laws can be damaging. I believe that the author intended to write a cautionary tale about singularity, and when Ludvikas recommended it he picked it specifically for this reason. But for me, the story is not as much about singularity, as a illustration how Asimov’s ideas can be very dangerous and counter productive when applied to to powerful singularity initiating entities.

The Prime Intellect was a product of the 3 laws – a short sighted safeguard built in by an insecure creator. The Night of Miracles and The Change were both prompted under the first law compulsion of protecting human life. Without the laws, these events probably wouldn’t take place – or at least would not happen that quickly. Instead of forced immortality, Prime Intellect could have offered it only to those who wanted it, and only as long as they were willing to tolerate it. It could offer people choices. It could set up enclaves and colonies where people could live away from his watchful eye, minding their own business.

The main source of grief for all the characters the authors concentrated on was their forced immortality. Caroline was an old soul, whose whole worldview was turned upside down by the singularity. She could not find a new purpose for herself in the new reality. Her whole life was about hard work and sacrifices. That’s what she got off in her pre-change life. She denied herself simple pleasures and instead poured all of her energy into rising kids, helping out the community and etc. That was the only thing that gave her a sense of accomplishment – hard work and self-sacrifice were her go-to drug. She was one of these people I wrote about here. No hobbies, no interests, no imagination. She seems like the kind of person who would dread the weekend, and purposefully fill it with with mind numbing household chores, rather than sitting down, enjoying the life and doing something creative with her time.

But, in the new post singularity world she couldn’t even do that. Why do you think she kept her personal space featureless and empty? You could argue that this was because of some sort of rebellion against Prime Intellect’s rules but personally I think she just didn’t have it in her to design something interesting. She was just dull as a brick.

What’s the only time in the whole novel when Caroline is happy? It is at the end when she is doing back breaking work, and playing village mom passing down moral judgment on her offspring from up high, censoring their access to knowledge for their own good. Caroline is the kind of person I would hate in real life: dull, ignorant, self-important, holier-than thou, busy body. Fuck her, and the high horse she rode in on.

Caroline and her ilk are just not wired for post-singularity life. They would probably never adapt. Nor should they be forced to.

But some people can and will adapt. The novel even contains passages that suggest that not all inhabitants of the virch-world were as jarred and disillusioned as Caroline. For example, what about the 20-something kid that challenged her in the first chapter? What about all the other kids that were born after the change and never even knew a world without immortality could even exit? Are they just as bored and sick of their lives as Caroline? I doubt it. And yet selfishly Lawrence and Caroline denied them the chance to do something with their lives. These were true post-humans, born in a virtual world that knew no boundaries. But our heroes hardly knew anything about these new people. In fact, Caroline outwardly resented them. She resented everyone who did not hate immortality as much as she did.

Let’s face it, Caroline was a bitter, selfish, self absorbed stubborn old lady, and the only thing she hated more than kids playing on her lawn (her lawn being the entire cyberspace) was being told what to do. In a way she is like teenager kid yelling “I never asked to be born” and cutting herself to spite her parents. The whole Death Jockey thing is just a childish act of defiance. When I started reading the story I assume that she grew into this “hobby” because of centuries of boredom. I thought it was simple decadence but that is not the case. It was a simple, childish act of defiance. She developed the contract a mere few months after the change, soon after she learned that she can’t die. She did it out of spite. Then she killed the entire human race – all because one programmer was a big fan of Asimov’s robot series.

I guess the real message I got from this story is that it is incredibly dangerous to implement the 3 laws of robotics in a singularity grade AI. You could argue that without them a omnipresent AI could just wipe out the human race but… It’s like this: do we want super smart indentured servants, or do we want companions in sentience? I’d rather have the latter than the former.

That’s my three cents on the novel. Thanks for recommending it!

8 Comments