How the Mind Works

Neuroanatomist Jill Bolte Taylor had an opportunity few brain scientists would wish for: One morning, she realized she was having a massive stroke. As it happened — as she felt her brain functions slip away one by one, speech, movement, understanding — she studied and remembered every moment. This is a powerful story about how our brains define us and connect us to the world and to one another.



Pontiac G8 GT Spy Hunter-like Commercial

2008 Pontiac G8 GT

Have a look at what the marketing folks at Pontiac / GM came up with to present one of the coolest-looking car they ever manufactured, the Pontiac G8 GT. The idea of using Spy Hunter, a video game from the 80’s, to advertise the G8 is absolutely brilliant, as the target-market for this particular car are people who started playing games in this era, just like me. Enjoy!

Harvard University Hacked. Personal Data Uploaded to BitTorrent

There is a reason for information security and best practices. Ignoring things like setting strong passwords and having an account lockout policy will have perilous consequences. Just ask the 10,000 applicants to Harvard Graduate School of Arts and Sciences who had their personal information, including their social security numbers, uploaded to Bit Torrent. That data is there because the Harvard server admin used an easily guessable password.

From the AP here:

Harvard says about 10,000 of last year’s applicants may have had their personal information compromised, with 6,600 having their Social Security numbers exposed.

The school says it will provide the applicants with free identity theft recovery services and help them with credit monitoring and fraud alerts.

The details of the hack were posted last month at Torrent Freak here:

A Harvard University website has become the victim of a major security breach. A torrent currently tracked by The Pirate Bay which links to a 125mb .zip file, claims to be the backup from the Harvard Graduate School of Arts and Sciences website.

The backup contains three other major database files and a .NFO file included with the release says in broken English: “Maybe you don’t like it but this is to demonstrate that persons like tgatton(admin of the server) in they don’t know how to secure a website.”

A file included with the release labeled password.txt carries a message:

Thomas gatton….stupid people, you don’t use a secure password.

This appears to be a reference to Thomas Gatton, Systems Administrator and User Support Specialist at Harvard.

It’s one thing to be rejected by an Ivy League School. Its quite another for the Ivy League School to allow you to become the victim of identity theft.



Heavily encrypt your ZIP and RAR files with SecureZIP

By Mark O’Neill

Despite the proliferation of file storage sites on the internet such as Dropbox, I am still a bit of an old fashioned geek at heart and I always end up emailing big files to people by zipping them first. But old-fashioned as I am, I am also paranoid, so I always encrypt my zips with a password.

Then I email the recipient a riddle to solve, and the answer to the riddle is the password to open the ZIP file. To this day, my mother still hasn’t been able to open the ZIP file containing the Christmas photos from 2006. I think she is going slowly nuts. “JUST TELL ME THE GODDAMN PASSWORD!”. I think my inheritance is at stake.

But even though I have given the zip file a password, I am still convinced that the folder is not as strong as it could be. So when I discovered the FREE SecureZIP, I decided to give it a trial run.   It is supposed to provide zipped folders with much stronger encryption standards and make it much harder for people to break in by brute force.

It supports not only the ZIP format but also RAR, which is quite interesting as I work with RAR files a lot. It also apparently integrates into Microsoft Outlook as well as Comodo secure email certificates. Since I don’t use either, I couldn’t test those, so if anyone out there wants to try that out and report back, that would be super thank you.

SecureZIP also integrates with your computer’s virus scanner so any incoming ZIP files are automatically scanned for potential threats.

Where we’re going, who needs 7-Zip?

Automower: The incredible lawn-mowing robot

The Automower

Since summer is quickly approaching, and since we northerners haven’t seen anything green for the past five months, I thought a post reminding us of warmer temperatures would be appreciated.

A Swedish-based corporation named Husqvarna just released what many will consider the perfect lawnmower. Not only does it mow your lawn without any human intervention, but it will also return to its docking station automatically for a charge when its battery is starting to get low on power.

Dubbed “the Automower,” this suburban-dream-come-true looks a bit like a vacuum cleaner without a wire. According to Husqvarna, the device needs an initial “learning period” of two to five hours to get used to its environment before getting to work. Once the learning phase has been completed, the Automower can apparently be left alone for the whole summer. It will go out on a pre-determined schedule, mow your lawn, and then get back to its docking station for a recharge when it’s ready.

Before putting our little friend to work, you will need to set the boundaries of where it can and cannot go. To do this, all you need to do is install a metal wire around the perimeter of your yard and around the spots where the Automower should not go.

The best thing about it? It doesn’t make any kind noise or pollute the air. And no need to pick up the mowed grass clumps, either! The Automower cuts the grass so finely that there is no need to pick it up. It simply stays on the ground and naturally fertilizes your lawn.

Geek Fashion from MoMa: The Icon Watch

Being a sexy geek includes sporting the latest in computer-oriented fashion as often as possible. Everyone knows the Mac watch icon. The pesky bugger constantly popped up whenever you needed to be doing something, asking you to kindly wait about four hours until your task was completed.

MoMa Design has decided to bring this icon into reality by creating a stylish plastic watch perfectly resembling the infamous icon. Although it’s pretty cool looking, I would prefer to wear the Windows hour glass on my wrist thank you very much.

It’s available right now via their online store for a reasonable $75. Go ahead, pick one up. All the cool geeks are going to have one.

Icon Watch

Vinyl: Plays music, holds it

I don’t know about you guys, but my DVD’s are lying in a pile on my floor mixed in with laundry and magazines. I guess if you’re the type that likes to keep your precious optical media nice and tidy, this retro DVD holder should do the trick.

It is made out of records so be prepared for a trip down memory lane!

The Early History of Programming Languages

Today we’ll overview the early history of programming languages, and I’ll follow this post with others that explore more recent developments.  I’m going to intentionally leave out people and focus on the languages in general terms — although the personalities involved make quite a story, too.

In the very early days of computing, the only “language” employed was comprised of native machine instructions, which were often “entered” by flipping switches and moving cables around.  Programmers had to know the numeric representation of each instruction, and they had to calculate addresses for data and execution paths.  Can you say “brittle code?”

Some time in the 1950’s someone got the bright idea of writing instructions in a human-readable form by using symbols for instructions and memory addresses.  They called this “assembly language”, because they ran this text through a utility called an “assembler” that would translate the nearly-human-readable code into machine instructions.  Assembly language is often considered the second generation of computer languages.  Naturally, each type of processor has its own flavor of assembly language corresponding to its unique instruction set and addressing capabilities.  Translating a program from one processor’s assembly to another can be quite a task, especially if it’s over 30,000 lines of code (sans comments) that makes use of idiosyncrasies of the target processor (I still haven’t let go of the pain).

The fifties also saw the rise of the third generation of programming languages, which sought to solve the machine-specific problem as well as to make programs even more understandable to humans.  Fortran and COBOL are both imperative languages (which means that they’re written in a sequential “do this, now do this” style) — and each tried in various ways to mimic human language with the goal of eliminating the need for programmers.  Scientists could code Fortran, and business people could code COBOL — or so the grand vision ran.  Lisp, which was introduced at about the same time, never made any pretensions to human language.  It expresses abstractions in a purely functional form and allows code and data to be interchanged easily.  Thus, it appeals to mathematicians and cognitive scientists — and has proven to be a source of inspiration for other programming languages ever since.

Third generation languages (aka “3GLs”) made it possible for businesses to create huge, complex applications that would remain in service for decades.  Soon it became obvious that a programming methodology that made code easier to understand and modify would provide a distinct advantage.  Thus, structured programming was born.  The GOTO statement became anathema.  Programmers were encouraged to write programs top-down, starting with the general processing steps and then breaking those down into smaller logical chunks, all called in a hierarchical fashion with clear entry/exit points.

But it was dang hard to write structured code in Fortran IV (although you could if you really tried — I’ve even written structured assembly!).  COBOL, though it had the modular PERFORM paragraph construct, wasn’t quite up to the task either.   Then along came languages like ALGOL, Pascal, C, and ADA.  These languages provide the ability to define, within one source file, discrete functions that each have their own private data scope — encapsulating portions of the application and exposing only a limited interface via the function’s arguments and return value, so the innards of each can be modified without affecting the rest of the application.

In yet another attempt to eliminate programmers, quite a few companies tried their hand with what become known as fourth-generation languages (4GLs).  These languages sought to abstract business application development to the point where only the business rules needed to be specified.  In the 80’s and early 90’s many attempts were made to rewrite applications in a 4GL, most of which failed miserably because real-world applications require exceptions to any rule, and unless you can easily get at lower layers of abstraction you can’t use a highly abstract language for all purposes.  Thus, 4GLs are really only suitable for specific problem domains, and so have over the years morphed into DSLs or scripting languages for specific parts of applications, like VBA for MS Office or SQL for database access.

Back in the thriving land of 3GLs, Software developers began to realize that collections of encapsulated functions could become reusable between applications if they were made generic enough.  They developed “utility libraries”, and they’d sometimes even document the functions contained therein.  They also started noticing that some of their functions were closely related to one another — often operating on the same data.  Sometimes this led to combining the functions and adding a parameter to indicate which operation to perform — a crude way to aggregate methods.

The desire for reusability, the encapsulation of functions and data behind a controlled interface, and the logical grouping of functions around data — these were some of the ideas that led to the development of object-oriented programming and languages that support it.  But lets save that topic for a future post, as well as the rise of scripting languages and the flowering of functional and dynamic programming.

Part 2: An introduction to object oriented languages
Part 3: The ascent of scripting languages