Added Remove Paste Capability to Nopaste
By Jacob Cohen | April 17, 2008
Every so often I receive an e-mail from someone who has posted something they didn’t mean to to my Nopaste site, and they want it taken down. Since I don’t check my rafb.net e-mail very often, I usually can’t catch these before they have been deleted by the 24 hour expiration period anyway.
However, as a means of helping these people out, I’ve added the ability to remove pastes that you have created. At the top of the page there is a “Remove this paste” link which will remove all publicly-visible traces of the file from the system, and indeed the content is absolutely gone. I don’t archive the content of pastes.
Topics: General | No Comments »
Word’s Ribbon seems to be missing an important feature
By Jacob Cohen | February 29, 2008
Microsoft’s Office software has been redesigned with a new “Ribbon” instead of the old toolbar. The idea is that the ribbon can give better design based on information architecture to put the give greatest prominence to whatever the most relevant tools are for whatever it is you are doing.
And rather than using obscure menu names like “File” and “View” and “Edit”, the ribbon is categorized based on general categories that more accurately reflect the things you can do from that view of the ribbon, such as “insert” and “page layout”.
This all seems like a pretty neat concept. The operations I use most often are all within easy reach. Or are they? How do I print the document?
Let’s see.. maybe it’s on the Home ribbon:

Or perhaps the Page Layout ribbon:

Hmm.. maybe the References ribbon:

Mailings doesn’t seem likely, but we’ll see:

Ah, Review sounds likely, maybe it is there:

But wait, it wasn’t on any of the ribbons. If you want to print, you have to click on the “Office logo menu” or whatever this thing is supposed to be.

Why is this functionality buried in some obscure menu that doesn’t even look like a menu? Why isn’t it on the ribbon? Surely printing a document is a task of primary importance to the average user of this application.
Then I thought, perhaps the ribbon only represents things you can do to edit the document, and the operations you do with the document, such as saving, opening, printing, and so forth, are found elsewhere. But why can’t this be a category on the ribbon? Why should I have to remember what’s in that unlabeled dropdown menu when the rest of the operations are presented visually?
Topics: General | 9 Comments »
New Car Wish List
By Jacob Cohen | February 14, 2008
Similar to my Mobile Phone Wish List, this is a list of the features I would want on my next car.
- Keyless ignition. After trying out a car that has this, it’s enough of a convenience that I would consider it a requirement on my next car. For one thing, it makes the keyfob a lot smaller when you don’t have to have a huge key embedded in it. Even the fancy flip-out keys on some of today’s cars require a very large keyfob. I want something small that does not add much additional bulk to my keyring.
- All-wheel drive. Specifically, one that actually offers additional performance characteristics, such as Acura’s SH-AWD, or Audi’s Quattro system. After having driven a vehicle with SH-AWD in the rain, this is a must.
- Manual transmission. Not a manually shifted automatic, or an automatically shifted manual, but a good old stick shift with a clutch pedal.
- Power rearview mirror adjustment. It still amazes me that even luxury cars lack this feature. You can adjust your side mirrors, and many cars will even remember various “profiles” for different drivers, but you still have to adjust the center mirror by hand every time. The biggest problem with this is you actually get a much finer level of control using the servo motors. The damping on the swivel mount of a typical rearview mirror makes you have to use enough force that you often overshoot the angle you wanted and have to correct. Additionally, unless you have very long arms, you can’t adjust the mirror while sitting in your normal driving position. A power adjustment system would eliminate these issues. As far as I know, there is no car available that offers this.
Topics: General | 5 Comments »
Can a Hardware Platform be Closed?
By Jacob Cohen | January 29, 2008
In the comments left for Jeff Atwood’s recent post on closed platforms, there is a discussion about his comparison between traditional dongles and the hardware of the Apple Macintosh itself.
A user named Brandon left the comment,
I’m not sure Apple hardware, say PPC and Intel on, counts as much of a dongle. Especially Intel based hardware. You can freely install any OS you want on it, they [Apple] even bundle the Windows drivers for all the proprietary hardware, backlight keyboard, webcam, volume, eject button, etc.. on the Leopard install disc.
He has the meaning of dongle reversed here. The point isn’t that you can’t install other stuff onto the Mac, the point is that the software won’t run on anything else. This is enforced by the license agreement as well as a hardware key (dongle) which is the Mac itself.
In the age of ubiquitous virtualization of computer hardware, however, the hardware dongle is not nearly as hard to copy as it used to be. Consider it like The Matrix for computers. The software only sees the interfaces exposed by the operating system. The operating system only sees the interfaces exposed by the hardware it is running on.
The operating system doesn’t know if it can trust what it is getting from the hardware, or indeed if it is even running on hardware at all. This is probably the issue that causes Apple to disallow running their OS X software product inside a virtualization server. They recently updated their license to allow virtual server instances of OS X Leopard, but only on Apple hardware.
Also, while I am not privy to Microsoft’s motivations behind the Palladium project (now known as the Next-Generation Secure Computing Base, I suspect this issue had something to do with it. Otherwise, what’s to prevent someone from installing 20 copies of Windows XP onto different instances of a virtual PC that emulates the same processor ID and MAC address? What would be unique about any given installation of Windows that the operating system software could trust when trying to determine if it is a legitimate copy?
This leads to the question, can a hardware platform ever truly be as closed as the manufacturer would like? Or will they always have to fall back on licensing restrictions to discourage cloning and manipulation of their product? I don’t think we’ve seen the answer to this yet.
Topics: General | No Comments »
Programming: Engineering, Science, or Art?
By Jacob Cohen | January 29, 2008
When you’re looking to hire programmers, what do you look for in their education? How should the colleges and universities be educating the next round of students who are destined for careers in software development? There seem to be several schools of thought on this.
Programming as a Science
Traditionally, going to school with the intention of becoming a programmer meant getting a degree in computer science, which was typically taught in either the mathematics or engineering school within a university. There was, and still is, in many schools, a lot of emphasis on mathematics, engineering, and science courses as part of the curriculum for earning this degree. Should the future programmers have to care about vector calculus or electronic circuits or fluid dynamics? What about graph theory, logic circuit design, or computer architecture? How much “science” do programmers really need to know?
Programming as an Art
Some believe that programming is less of a science, and more of an art. Joel Spolsky seems to think this way. According to this school of thought, programming is an art, and aspiring artists go to school to learn by doing, and by studying under accomplished artists who can teach them how it supposed to be done.
Programming as Engineering
To others, programming is an engineering discipline. You’re not a programmer, you’re a software engineer. You’re an architect. You’re building and creating with the finest attention to detail. You’ve measured your code twice and it will fit in 64K of memory. As you build more and more software, you begin to establish a set of practices and guidelines to prevent past failures from reoccurring. You have little patience for the new upstart programmers who lack all of the discipline you’ve carefully acquired.
So what should the schools teach?
All of the above! Aspiring software developers need the science, the theory, the engineering principles and the artistic trade aspects in order to be well-rounded.
If you leave out the theory, you might create a batch of programmers who don’t know why a Shlemiel the Painter’s algorithm is bad, or how to avoid it.
If you leave out engineering principles, you might get programmers who don’t know what to do in response to a bug that is found in their code. How do they know that bug is fixed? How do they prevent it from reoccurring?
If you leave out the art of programming, you might find people who know about software, but not how to create it. The software industry might need a few well-trained critics, but this is probably not the best use of a university’s software development curriculum.
Topics: General | 1 Comment »
Ruby on Rails under Windows XP with Cygwin
By Jacob Cohen | January 27, 2008
I like to use Cygwin for development under Windows, as I frequently use standard command line utilities like find and grep, and I find the Windows command line environment to be more painful to use than it is worth.
The first time I tried to get this all running, it was in this sort of hybrid Cygwin/windows mode where running certain applications (such as rails or gem) required using the Windows command prompt, where others (such as running the rails-generated scripts) could be run from within Cygwin.
This proved to be too irritating to manage, so I’ve reinstalled the Cygwin version of Ruby, downloaded RubyGems from source, and rebuilt that using my Cygwin version of Ruby. As a neat gotcha, if the Windows version of Ruby has added “RUBYOPTS=-rubygems” to your environment variables, running “ruby setup.rb” in the RubyGems directory will fail with “ruby: no such file to load — ubygems (LoadError)”. Just unset this environment variable and re-run it, and it should be fine.
Now that I got Ruby and Gem installed under Cygwin, I’ve reinstalled Rails (”gem install rails”). One of the other persistent hiccups I’ve been encountering with my setup is how to get my machine connect to the MySQL database I’m running on a separate machine. I don’t want to install the MySQL server software on this machine just to be able to connect, what I need is just the client libraries. Unfortunately, it appears that the mysql ruby adapter requires bits of the server components of MySQL. It won’t build properly if you build just the client libraries of MySQL.
Now that mysql is installed, Gem can install the ruby/mysql adapter, which will allow my Rails projects to connect to my MySQL database on the other machine.
Essentially, here are the steps in the order needed to get this to work.
- Install Cygwin. Get gcc-core and gcc-cpp (to compiled MySQL), and Ruby.
- Install RubyGems
- Install Rails (gem install rails)
- Download the MySQL source, and build it under Cygwin.
- Install the MySQL Ruby adapter (gem install mysql)
And that’s it. Not as simple as it should be, but not impossible.
Topics: General | 3 Comments »
Mobile Phone Wish List
By Jacob Cohen | January 21, 2008
I’ve been shopping around for new mobile phones recently. Not necessarily because I want to buy one (my current phone is working just fine), but mainly to see what’s out there. It’s been a year or so sinc e I last looked at what sorts of phones are available.
Since I’m not seriously looking to buy a phone right now, the list of features I would “require” in a new phone is a bit unrealistic. However, if they offered a phone with these features right now, I would probably buy it, because it would be my ideal phone.
The features are as follows:
- 3G data connectivity. The main reason I don’t use my phone’s data capability more is that it uses GPRS, which is about as fast as a herd of turtles stampeding through peanut butter.
- Inductive charging. All phones should have this. If a $20 electric toothbrush can have this, a $300+ phone certainly can. Basically this is the sort of charging where you place the device in a cradle, and a coil in the cradle induces a current in a coil inside the device, allowing it to recharge without wires. This should elminate proprietary power connections.
- No proprietary connections. USB and Mini-USB are fine, but none of these proprietary ports that require all sorts of dongles to actually connect to anything else.
- Standard memory card support. SD is probably a good choice. Nothing that requires an adapter or special reader to use.
- OLED external buttons. All the buttons on the exterior of the phone should be remappable, and as such their appearance should be modifiable as well.
- Easily accessible Bluetooth pairing. I can’t believe phone software vendors are still burying the Bluetooth pairing feature behind 4 or more levels of menus. If I get into my car and want to enable the hands free system, it should be a first-tier function on my phone.
- Better yet, automatic Bluetooth pairing. If I drop my phone into a charging cradle, it automatically seeks any Bluetooth devices I’ve previously configured. If they are found, it pairs automatically. That way, if I put the phone in my car, it will automatically pair with the car’s hands-free system. If I drop the phone in my charging cradle at home, it can pair with a Bluetooth-enabled desk handset (which are, unfortunately, still rare and expensive).
- Price under $500
- No service provider fluff. I don’t need any “AT&T Mobile Web” or “T-Mobile T-Zones” or any of that stuff. I’ll just use a regular web browser through my 3G network and access the actual internet.
As it stands, no phone in existence comes close to meeting all of these design requirements. There is nothing out of the realm of possibilities in this list (except perhaps the price point) but it will probably be a while until I see a phone with all this.
Topics: General | 1 Comment »
Logic Circuits and Video Games
By Jacob Cohen | December 7, 2007
In 1984, The Learning Company published a gamed called Robot Odyssey. The basic premise of this game is that you are a human who has fallen into a world full of robots called Robotropolis, and you are trying to make your way back to the human world.
I had a copy of this game for the Apple 2, and spent many hours playing it when I was young. One of the cool things that it let you do was build circuits using a toolkit that contained various logic gates. The toolkit contained basic logic gates such as OR, AND, NOR, NOT, as well as flip flops and a soldering iron that let you connect them all together.
You also pick up a set of robots as you travel through Robotropolis. Your human character can walk into these robots and ride around inside them, which can protect you from the sentries that will prevent your character from passing through certain areas.
One of the first challenges you have to overcome with your robots and logic gate toolkit is to navigate through a maze guarded by a sentry. You can’t just walk through as a human, because the sentry will stop you. You have to ride inside the robot. To accomplish this, you need to create a circuit inside the robot that connects its battery, thrusters, and impact sensors in such a way that it will navigate the maze.
The most basic way to do this is to create a wall-hugger algorithm using the sensors and thrusters. If the right-hand sensor is activated, meaning there is a wall to the right of the robot, then activate the up thruster. If there is a wall to the left, activate the down thruster. If there is a wall above, activate the left thruster, and if there is a wall below, activate the right thruster. This will have a robot follow a wall around the edge of a room, which is enough for simple mazes.
However, a true wall hugger needs to be able to follow an “outside” corner as well as an “inside” corner. To accomplish this, you can add some more logic that lets it follow an outside corner and reconnect with the wall if it finds itself having left the wall and flown out into empty space.
There are some more complex puzzles later on, such as using the grabber arm on the robot to go fetch a key from the middle of a room that is patrolled by a sentry that can see you even if you are in the robot. You have to program the robot to go to the right place, grab the key, then return.
The cool thing about this program is it teaches you all about designing logic circuits. I found my logic design courses in college to be extremely easy because I had spent a good amount of time doing exactly the same thing when I was younger.
Another game in a similar vein was called Rocky’s Boots.
The thing I liked most about these games was that they required very little hand-eye coordination (I was never very good at such games) but involved a lot of problem solving and being able to learn things by trying them and seeing how it works, revising your approach slightly, and trying again.
Topics: General | 3 Comments »
Technology from Movies and TV Shows
By Jacob Cohen | November 1, 2007
The sorts of technology and computer interfaces we see in movies and TV shows are, quite often, sensationalized beyond reason. They are designed to provide visual interest and to look cool, but real-world computer and technology would most likely never be implemented in such a fashion, even if it was possible and easy to do so.
The 1995 movie Hackers is often used as an example of over-dramatic, Hollywood computer interfaces, with the characters navigating through a computer’s files using a 3-d interface that resembles flying through skyscrapers. This is a good example of a computer interface that we probably won’t see implemented, even though the average desktop PC has enough power to have such an interface. The 3-d flying simply isn’t an effective mechanism for locating files on a computer. It provides visual interest, but little real-world practical use.
For contrast, consider shows like “24″ and CSI. It is common to see a character on their cell phone talking to someone back at the home office or police station, and they will then snap a picture of something with their phone and send it to the computer next to whoever they’re talking to. This is something that is actually quite useful, and it is a lot harder to do than they make it look. Phones are becoming powerful to the point that you can easily send photos to other phones, but to send it to a computer (perhaps using an e-mail address) while on a call with that person is not a one-button operation.
This is a technology we should have available. There are various ways we could make this work that don’t involve trying to have the picture phone know where to send the photo so that it appears on that computer screen. Suppose, for example, that there was a Bluetooth profile available that would allow any computer to serve as an external display screen for the mobile phone. Then, “sending it to your screen” is more literal, you just send the photo to the phone as usual, and the phone uses the nearby external screen to display it.
Here are some other things we often see in movies and TV shows that I think would be useful (and possible) to have:
- Keyword-based retrieval of files - If it’s that easy for a villain to find information on your computer, it should be that easy for you as well. We have a lot of this technology starting to gain use on desktop PCs already, such as Google Desktop Search.
- Fast in-the-field lab equipment - In shows like CSI, a field detective can feed a sample of something into a small machine and have results ready almost instantly, saying what the material is. We can’t do it that quickly yet, but I remain hopeful that in ten or fifteen years we will have miniaturized and optimized such laboratory procedures to the point that they can be carried out in the field with similar alacrity.
And here are some technologies and interfaces that are probably only ever going to exist in movies and on TV:
- Externally-accessible Government computers - You know, the kind that someone can access from anywhere, and the only trick to getting inside is guessing the password.
- 3-d flying interfaces - As seen in Hackers, Jurassic Park, and others. While it looks cool, it just isn’t particularly useful.
- Task-aware computer interfaces - Messages that say things like “Uploading virus…” or “Downloading secret plans…”. These are intended to help explain plot points in movies and TV shows, but would not be particularly useful to the person performing the task.
So, while most of the time, Hollywood movies and prime-time TV shows contain computer interfaces and technologies that are mostly designed to add visual interest or explanation to the subject matter, there are occasionally some ideas that could give rise to very useful technology for the real world.
Topics: General | 11 Comments »
Metaphors That Outlive Their Origins
By Jacob Cohen | October 31, 2007
It sometimes happens. We create a metaphor to make something easier to understand, only to find that the new idea replaces the old, and as the old technology fades from use, the metaphor becomes almost unhooked from its original meaning.
Take, for example, the “carriage return” and “line feed” characters that are found in many computer character sets. These come from operations that were performed on a typewriter, and are often used within text files to indicate when the text should start on the next line (differences in convention between different operating systems has caused headaches for people to move text files between PCs running Windows, MacOS, and other operating systems).
Do most people even think of a typewriter anymore when they work with a computer? People no longer need to know or care what a carriage return or a line feed even is. The programming language Visual Basic has a keyword used to represent the character you use to get to the next line. Would the keyword vbCrLf mean anything unless you knew that a carriage return and line feed are how you get to the next line of a file?
There are plenty of other examples to be found, such as referring to a phone being “off the hook” (or to “hang up” a phone), or the “rewind” feature of audio and video players that use media other than tapes. We learn to accept the meanings of these words and phrases based on how we use them, but we lose the origin of the meaning.
Topics: General | No Comments »


