Trends at “No Stuff, Just Fluff”

I had the wonderful opportunity this weekend to attend the Northern Virginia Software Symposium “No Fluff; Just Stuff” Java and OpenSource conference in Reston, VA – a high-content technical conference that doesn’t waste time with marketing glop.

I walked away noticing several trends.

1) In a conference that’s designed around Java, security, and OpenSource technologies, Ruby got a lot of air time! It seems that Ruby on Rails for 80% of web applications can be 5 to 10 times faster than developing in Java, not to mention far more fun!  Combine this with AJAX, the Prototype JavaScript framework, Scriptaculous, Rico, and Behaviour, and it’s possible to get some rich clients out of a web browser.

2) Apple laptops have arrived.  Anyone who’s anyone has them now.  The developers.  The speakers.  The audience.  Not seeing Microsoft machines in a technical conference (remember, these people make the software you use) was an eye opener.  A number of people had the new Macbook Pro, Apple’s Intel based processor, which, using Parallels, lets you run XP.  Slap the desktop Virtue over that, and you can use both operating systems on the same machine concurrently.

3) Internet Explorer is bad. Worse than I ever thought.  And not just from a security hole perspective.  Everything.  We’d learn something really cool and wonderful, and then we’d find out that IE didn’t do it, didn’t do it right, had a memory leak, or was non-standard.  The more you look at web advancements, the more you wonder why people still use IE.  It lacks features, it is problematic, and it renders web pages wrong.  As such, if you use IE, you may be seeing Explorer Destroyer appearing more agressively – it puts FireFox in front of the user.
4)  There seems to be a growing movement away from complexity.  Frameworks and protocols that carry too much intellectual baggage are being replaced with simplier, smaller, less featured alternatives.  I think we’re seeing abstractionism finally starting to collapse under it’s own weight.

5) Convention and consistency is winning out over configuration and flexablity.  Standing back, trends go in circles.  In BASIC, you need a dollar sign to tell the compiler a variable is  string: A$.  But, oh no, how awful, we have to use punctuation to hint to the compiler.  Nay, let me say  string A  instead, and just use the variable I want.  Now I can’t tell one type from the other, so I use prefixes:  strHouseNumber.  But what if my type changes?  I should change my variable names, because  int strHouseNumber is misleading.  Finally, I need all this error handling in the event I do something wrong as a developer.  Now I’ve got complex code and ugly variable names.  The trend is coming full circle: do lots of automated testing, cut back on error handling code, script languages are actually powerful and fast enough, and if I stick a punctuation on a variable, I can read the type easier:  A$

On Your Body

Ah, the things kids say …even when in pain.

We were playing DND at a friends house the other week, and in the middle of the game, we heard a burst of tears come from the basement. The adults went running down to see which child was crying and why.

It was Philip. Our host’s 3 year old son.

Alligator tears were streaming down his face, and his mom asked him: “Philip, where did you hurt yourself?”

Philip stopped crying for a second, looked up at mom, and pointed to the sofa, replying “Over there.”

I suppose as a parent, it’s difficult to employ the proper degree of empathy when your child causes you to burst into laughter.

Where Did Control-A Go?

Did Microsoft stop supporting Control-A in the browser and operating system Run… box?

I remember clear as a bell on old Windows 98 and 2000 systems being able to hit Control-A when I was in a text box and having it select all the text.

The two places I did this most often was Internet Explorer’s url area, and the Start / Run… command entry area.

However, on XP, this short cut seems to have silently disappeared. WHY?

Pick a non-Microsoft application, like FireFox. It works there.

If anyone happens to know how to re-enable Control-A in an input field, I’d really like to know how. If anyone happens to know why it was removed, I’d really like to know that more.

FireFox Bug: Text Disappears when Shift-Double-Clicked

In FireFox, if you shift-double-click while editing, the text vanishes. Bug? Or, is there a deeper story about design and bug reporting that this exposes…

That’s the problem with bug reports in general. Something’s missing — because what you’ll hear back from the developers of FireFox is that it’s not a bug, it’s a feature, and it works by deisgn.

More importantly, …they’re right.

Allow me to walk you through the problem: you’re editing using GMail, WordPress, or LiveJournal — when you go to select some text by doing a Shift-Click and drag, your mouse stutters or perhaps by accidental muscle memory habit you end up accidently Shift-Double-Clicking. To your surprise all the text in the input box becomes invisible.

The content is still there, hust invisible. You can move the cursor around. If you submit, it gets sent. What gives?
It’s not an accidental one-time software glitch, it’s repeatable. It doesn’t matter if you’re selecting text, or shift double clicking in one spot: it happens consistently.

So, before filing a bug report, you try it on different browsers.

IE, no problem. Opera, no problem. Safari, no problem.

And there’s a surprising confirmation that FireFox behaves this way both on XP and OS X, so we’re pretty sure it’s a FireFox issue at this point. We try it on the latest build right out of the development tree, and it happens there, too.

Time to report a bug.

If you follow the directions, and many people don’t, you learn that this bug has already been submitted to the FireFox development team many times.

XP – BUG 307612 and BUG 307613,   OS X – BUG 317687.

I personally don’t think people who take the time to research and submit a bug are stupid or lazy, stopping just short of duplicate checking. I think that the keywords used to search for duplciates aren’t expansive enough to do the job well. I search for “Disappear” and get a hit, someone else searches for “Invisible” and gets a miss (so they report a bug).

Another problem, assuming you read all the bug reports to the end: The developers closed it.

The last thing that you want to see on a bug you just verified are the words RESOLVED and/or INVALID, because you know it’s going take some arm twisting to convince the development team otherwise.

One of the fundamental problems being on a development team is that you do get an awful lot of things that aren’t bugs reported as bugs. There’s tons of duplication, and worse, tons of ambiguity. Despite writing detailed directions explaining what information is needed and in what format, most bug reporters don’t do that. It becomes too easy to throw the baby out with the bathwater.
I almost wish there were was a flag attached to one’s bug reporting account that said “I’m either a professional software developer or I have worked in a QA division” that would weight the submissions higher in the developer’s mind. It’s the same problem as when you’re the company IT expert and you call Dell for a support issue and their level one technician wants you to reboot and reinstall the operating system.

The problem is also reversed. And this is a problem that needs fixing: developer responses can also be ambiguous. We’ve all seen cases where a bug is marked as “not a bug” or “works as designed” with no explaination.

But not in this case, luckily. One of the developers has the insight to point out that this is an AdBlock feature, and it’s by design. By design?
This explains a lot, everything to why it only appears to happen to FireFox — since that’s the browser that uses the AdBlock extension. It explains why the FireFox team is wasting time chasing after these, it’s not their problem. It explains why their responses are terse, as, again, it isn’t their problem. Disabling AdBlock itself, not just it’s filters, but the whole extension, solves the problem. Problem is, I like AdBlock. I need AdBlock. I want AdBlock.

Now sometime software works as it was designed to work, but fundamentally the design is wrong.

Joel Spolsky describes it like this: A user interface is well-designed when the program behaves exactly how the user thought it would.

And there is nothing about a text area waiting for input that makes me expect that Shift-Double-Clicking while trying to select text should permanently turn the entire contents of the text box invisible while editing.

That’s about as annoying as the folks who put the “Quit Application With No Save or Confirmation” menu item right next to the “Save” menu item, where a mere slip of the mouse spells disaster.

Further investigation of AdBlock’s development area, shows there’s a nifty feature called Quickblock, which allows you to Shift-Double-Click an element on the screen and make it turn invisible. It’s a great way to zap ads or annoying content!

Problem is, the trigger mechanism is very close to an action commonly used by editing. And, Adblock doesn’t make a distinction whether it’s an input control or not — and why should it, as if it did, advertisers would put ads in controls.

This doesn’t solve our problem as a user, though. It’s a good feature with bad interface design. Luckily, one that can be easily solved.
Either the shift-double-click needs to be changed to something else, or we need the ability to turn it off or lessen it’s sensitivity.

In the thread, “Quickblock makes me sad“, we see that other users are plagued by this problem, and some users have started building their own versions with this feature disabled.

Clever, but this is not something the source code should have to fork over. Nor, is it something the layperson should be expected to have to do just to be able to safely edit text.

Quickblock should remain a feature, but it should be possible to disable it, disable it for a list of specified sites, or have a mode where it’s possible to have it not affect editing controls. In fact, I’d be quite happy if when I Shift-Double-Clicked on an edit control if it then asked me for confirmation, but not on other elements.

I’ve proposed the change as a new minor feature, assuming I haven’t missed how to do it already (which is possible). But I have my doubts anything will happen.

Why? I’m a developer. And my natural knee-jerk reaction to an end-user is “if you are doing something that causes a behavior you don’t like then don’t do it anymore.” Problem is, developers don’t use systems the way end users do, and that makes them predisposed to not share the user’s perspective. Afterall, programmers don’t spend their days on the web writing in little edit boxes, and if there’s a problem with one, there are a dozen work arounds, including opening an editor, composing, and pasting. We think other users work like we do and know how to use other tools like we do.
But that’s not how users think or work.

My hope is that if you are also having this problem, you’ll find this article before you bug the guys at FireFox with it, and instead go here and add your voice, in a kind way, so that the great developers of AdBlock know how to improve the product further and to show that you support their tireless efforts.

I Hate Laptops, and Apple Changed That

Just got a MacBook Pro, and I think it’s going to change my life.

Let me start off by saying, I hate laptops. A lot. I despise the cost. I hate the small keyboard. I loath the tiny screens. I can never get the mouse touch pad to work. The processors are slow. The memory is cramped. The drive space is too small. Devices don’t work with them. The graphics drivers have problems. The battery life is limited. They’re fragile. They are uncomfortable. They get too hot. And you end up needing a whole docking station, external screen, external keyboard, and external mouse just to use one. Plus, the way machines advance these days, I couldn’t envision myself having to commit to that upgrade path.

So, when I wanted to do remote computing, have a portable working environment, and be able to give presentations, I scoffed at my wife’s suggestion of getting a laptop. She darn near twisted my arm and enlisted the help of a few friends to eventually convinced me just to reconsider and be open to the idea.

As I write this while sitting on my sofa in our family room using my new MacBook Pro, I have to say that every single one of my fears and concerns has totally been mitigated or removed by Apple. Every. Single. One.

That brings the official count of Mac machines over the machines running XP for me personally.

I justified the purpose by saying I’d at least have an Intel machine, so I could try the new applications. I had to convince myself that a laptop was going to be primarily for portablity and that it was just simply going to lack the power of a desktop. Whoa, was I wrong. What’s even more surprising was that when I opened up the box, I saw what I thought was a free Mini iPod thrown in. It wasn’t. It was a remote control.

“Remote control?” I thought to myself, “What is this? A marketing joke? Why would I need a remote control for a computer?” I pressed Menu on the remote, and my jaw hit the floor.

The OS X operating system’s desktop recessed back into the screen, with reflections, and became shadowed. Spinning icons swept in showing me all the media applications. Pressing the direction buttons on the remote, selected different applications, and pressing select started the application in kind of a multi-media mode. It was breath taking. I had never seen this before, and it floored me. If you’re running Windows, there’s nothing to compare it to. Apple had thought this though amazingly well.

What you are about to see is a live, uncut
screen capture, not an edited movie!

[QUICKTIME http://www.wwco.com/~wls/livejournal/RemoteControl.m4v 320 240]

I simply can not believe how comfortable it is to recline, sit back and type with ease, and be able to see in perfect clarity the project I’m working on. Given that I can now take my computing environment with me, this is going to totally change the way I approach computing. Apple is changing my life the way that TiVo did, allowing me to do more in less time with higher quality where and when I want.

OS X: Batch Rename from GUI

This is the third time I’ve had to go hunting how to enable batch filename manipulations for OS X. Now I’m documenting it so I don’t have to hunt this down again.

I keep forgetting about this trick, so I thought I’d post it in the event I have to ever do it again.

Part of the problem with a graphical GUI is that it’s very difficult to rename files in batches, for instance, prepending some text to a group of files.  This kind of thing is fairly trivial at the command line.

Apple has a facility to do this, but as it’s not something a regular user does often, it’s not enabled by default.  Here’s how to get all kinds of additional functionality out of OS X.

1) Open /Applications/AppleScript

2) Turn on Show Script Menu in menu bar

3) Optional: turn on GUI scripting, show library scripts, and choose where to show them.

You’ll notice up near the time in the menu bar a black scroll has appeared.

All the batch renaming and filename twiddling stuff is under the Finder Scripts.

UPDATE 19-Dec-2009: Upgrading to Snow Leopards deletes some useful scripts, specifically the Finder Scripts.

UPDATE 31-Aug-2010: The scripts live in “/Library/Scripts/Finger Scripts” and are

  • Add to File Names.scpt
    md5 4b0cd899acb19b5fc62ef2049d81a933 – 18114 bytes
  • Change Case of Item Names.scpt
    md5 af7429228be4d0e1a096092af5341c52 – 17808 bytes
  • Replace Text in Item Names.scpt
    md5 716493cab1c569953a7f40d76ed9a1f7 – 24328 bytes

Upgrading G5 Storage

The default Macintosh configuration my PowerPC G5 came in included 250GB of disk space, far less than I need. Additionally, within the last year I’ve have my bacon saved by RAID systems no less than three times. Consequently, I wanted more storage with RAID’s reliability.

This led me to purchase two 500GB SATA drives from Tiger Direct, and two external 500GB OneTouch II Firewire 800/400/USB drives from AxentMicro for backup purposes.

As an amusing aside, I ordered both orders the same day at about 3:30pm. AxentMicro surprised the pants off me, because for $7 in shipping, the order was sitting at my home at 3:00pm the next day — that’s less than 24 hour turn around time, and I paid for cheap ground delivery.

My dad happened to be over and eyeing the drives, so I ordered another online, and again AxentMicro had ultra fast deliver. They win on speed and price! New loyal customer here.

Meanwhile, I checked my TigerDirect order. They still had not processed it. It took two days of phone calls, redirection to an authorization department, and finally when I called a different number to cancel my order, they told me they had a server down and would ship immediately with second day delivery. It arrived three days later, but more importantly they never asked for any proof that I was who I said I was in order to authorize the purchase. Scarey. Next time I’m going to go with another dealer, even if it is slightly more expensive.

That said, the 500GB internal drives arrived just fine. There were no mounting brackets, no screws, no SATA cables, and no instructions — something that would be problematic for a PC install.

I connected an external Firewire drive up, booted, and ran Carbon Copy Cloner to “ghost” the drive; this is uncrippled shareware that makes an exact duplicate of your drive, which means it’s bootable. And unlike XP and it’s System ID (SID) problems, Apple doesn’t make you jump through hoops to clone your environment.

Curious, I opened the G5 case and saw two bays. Holding the existing drive in place was a large, well constructed tab that was simple to flip up.

I was also pleased to see that Apple had the power and data connectors already provided, already connected to the motherboard, and already threaded through the case. Sweet!

Getting the power cable off the drive was a little more problematic and required more force than I felt comfortable doing, but there were no problems.

The drive bay is clever design. The illusion is that you have two drives that slide in, one above the other. You don’t seem to have clearance to get the top one out, and there’s no way to take the case apart. But trust Apple, there’s magic.

Pulling the drive forward causes something interesting to happen. It descends. Those “parallel” tracks are actually kind of S-shaped. The drive came out without a hitch.

As for the special rubber rounded screws for the drive, I took the first set off the drive that came out. And the second set was built into the case right by the drive bay. Clever!

So, the drives slid back in, top one first, which magically lifted into place, followed by the bottom one. The cables connected with ease, and I put the cover back on.

The system booted from my external firewire drive without incident. Using Disk Utility, I built a RAID configuration from the two new drives. (OS X Extended, Journaled — do not use case sensitive, as some applications not used to true Unix don’t get things quite right.)
Then I ran Carbon Copy Clone to move things back.
Rebooting back onto internal drives, it just worked. Ya gotta love Apple!

(If applications don’t work, check the log files — most likely you’ll see “missing” files. Unlike Unix, you do not want case-sensitive filenames with OS X for historical reasons. For instance, Adobe checks for a directory called “version” in one place and “Version” in another, they should be the same, but Windows and default OS X installs don’t make this distinction, so it’d be a legacy artifact. These simple kinds of inconsistency problems suggest Adobe products won’t port to Linux for quite a while, which is a shame.)

Marcus Solves Alienware Problem

Marcus figures out how to make his Alienware laptop stop overheating. It’s a hack, but it works.

My friend Marcus is an amazing computer technician, and has found a way to prevent his Alienware Laptop from over heating.

I came home yesterday and started working on the laptop. After finding that their image uses a Japanese version of Direct X, I wiped the HDD and started over with my own build. I installed all the most up to date drivers, so on. I started with the most basic issue I have had, game crashes. The Event Viewer didn’t have anything to report.

Usually when that happens it’s a hardware to software write fault and it happens to fast for the Event Viewer to get a record. Games appeared to be crashing therefore from an unknown device. Based on my past experience with the laptop and known issues with the NVIDIA 6800 Ultra, I started there. The drivers are from 9/28/05, not that old, but not very up to date compared to Dell’s site. Sadly, the drivers are proprietary in design for laptops so I can’t use the Dell 6800 driver. Since I couldn’t go any further in that direction, I decided to look at any other video settings. The driver itself appears to be a basic default of options, nothing remarkable.

Then I decided to look at the laptop case and all of it’s physical options. There is a button on the keyboard for external video. It allows 3 settings for an additional external monitor. The first setting allows for a mirror image to be displayed on both the laptop screen and the external. Both run the same resolution which is based on the max res of the laptop’s screen. Next setting allows for one desktop to be expanded to both screens. The last setting turns off the laptop screen and puts the image only on the external monitor. This unassuming switch happens to be the root of all my laptop’s evil. If the 3rd option is used and video signal is sent only to the external monitor games crash and for that matter, IE crashes. I found that any time the video card reads a monitor that can go beyond the max res of the laptop’s own screen, the laptop overheats shuts off, crashes..so on.

This means that my laptop will now run as a standalone and only if the external monitor is set to mirror. Oh, it also means that it won’t run using the image they sent and that the video card driver needs a major update. I could send the laptop back using the RMA they gave me, but I [doubt] they will never figure out that their own HDD image is one of the problems. … My laptop has been operational with incredible performance the last 2 evenings without a single error.

Network Solutions: Down

Network Solutions is down, and why this is a good thing. If, for example, you consider a wake up call to be a good thing.

I came in to work today and discovered that our corporate DNS, hosted by Network Solutions, is down today, meaning people can’t get to our site, nor can we access our mail servers. This appears to be the result of an attack on Verisign/Network Solutions that started somewhere around March 27th and seems to have escalated, according to articles at ComputerWorld. Calling Network Solutions’s support line directly yields a recorded message that they have technicians working on the problem and that it’s their top priority. Even www.networksolutions.com doesn’t respond.

This severe outage is a good thing.

Well, that is if you consider getting a rude wake-up call a good thing.

As end users, we tend to care more if our software and networks give the appearance of working, rather than being reliable and resilient.

Take spam, for instance. There’s no need that you should have to be plagued with it, but because no one wants to adopt to solutions that correct the problem because it will break existing backwards compatability with software, we just deal with it.

Take Windows, for instance. There’s no need that an operating system should crash or degrade in performance over time, but because no one wants to adopt to solutions that correct the problem because it will break existing backwards compatability with software, we just deal with it. I can still use Internet Explorer, right…?

Well now, take DNS for instance. There’s no need that it has to be susceptible to these kinds of attacks, but because no one wants to… wait, I can’t get my email? What happened? You mean we can’t go on ignoring problematic protocols and the crypto guys were right all this time?

Yes.

One of two things will happen. Either the bad guys will stop, or get caught, and we’ll go back to the way things were, being just as vunerable for the next time around.

Or, this will be the eye-opening event that declares that in order to combat against cyber terrorism and evil doers, we must take the next step forward and start using next generation protocols with our software that address the lessons learned of our past.

Yes, it’s painful now. I understand that. I don’t like it either. But I’d rather have it happen now, when we can do something about it, than later when it is really inconvenient.

UPDATE (10:10am): Network Solutions’s web page is now responding again.

Blue Pencils with Photoshop

Someone asked me today how to take a pencil sketch that was scanned into Photoshop and turn it into a blue pencil sketch, suitable for inking. So, I made a simple movie of the process:

[QUICKTIME http://www.wwco.com/~wls/livejournal/BluePencils.m4v 320 240]

Select the blue color, make a new layer, flood fill it, and set the blue layer to Overlay. Quite simple!