Why WYSIWYG doesn’t work II

7. December, 2009

In my old post “The Space Between Two Characters“, I wrote about some flaws of WYSIWYG. Since then, I got some feedback.

The real issue behind the issues with WYSIWYG is that it doesn’t work while you edit the document. The concept is flawed, not the implementation. It is flawed because it omits some vital information that you need for editing. The information is omitted because it doesn’t make sense anymore as soon as you print the document on paper. And WYSIWYG means “if you don’t see it, you won’t get it.”

So it makes sense to omit feedback on where ranges start and end, what kind of break follows after a line, there the handles for a table are. But most WYSIWYG editors today have a “show invisible” option. Word can show you all those invisible characters so you can see “oh, this is a tab and not a space”.

For this to work, we need a tight integration between the editor model, the renderer and the view. The problem here is, as usual, performance. If you add all the hooks you need to be able to show nice visual feedback in the view, printing to a printer will be slower.

How much? Well, not much. Anymore. You’re quadcore will be 95% bored. It will need memory. How much? Well, to remember the bounding boxes for all letters rendered on the screen takes at most 4’608’000 bytes (“i”, 8px font, 30″ display with 3840×1200). That might seem like a lot but almost no PC sold next year will have less then 4GB of RAM, not even the Netbooks. My mobile phone comes with 32GB!

For printing, the values are usually much smaller. A normal page of text has around 1’500 to 2’500 characters per page and for printing, you just need to remember the current and maybe the next page (unless you need a page count but with todays CPUs, you can layout the pages twice).

So the final obstacles is code complexity. OO has helped a lot to cut down complexity in algorithms but there are problems which you can’t solve nicely with OO, for example “run this algorithm but replace line 5 with …” or “before … run …”.

AOP has come to solve this but it has failed to deliver so far. Maybe this is because point-cuts are too complicated to formulate, maybe because the debuggers can’t handle this case well, maybe because the setup is too complex or the resulting code is too fragile. Or because people are afraid of the leap of faith it takes to use it.


Forcing users to use insecure passwords

30. November, 2009

Q: What’s the most efficient way to force your users to use insecure passwords?
A: Try to force them to use secure ones.

What’s a secure password? It’s complicated, unguessable, easy to remember, contains several strange characters, different per site, changed often.

But how much security can you buy with that?

Changing your password helps to lock out people who have cracked your password. But unless they are in for long time surveillance, crackers will abuse your account within five seconds of cracking it. In the usual scenario, (i.e. when the crackers is not your better half), changing your password buys you nothing. It’s enough to wait for a mail which says that you account has been cracked and change the password then.

Different passwords for sites looks like a good idea but this only has an effect when a cracker manages to crack your password in one place and has list of other accounts. Usually, they crack your account for a specific purpose, not to compete in a find-them-all contest. So that doesn’t buy us much, either.

Strange characters look like a good idea until you travel and sit in front of a foreign keyboard in an Internet café. Yay, hide and seek! And if you’re using a complex algorithm to build your password which includes strange characters, you’ll encounter the odd site which expects you to either have more or less strange characters in your passwords. Also, unless you’re a software developer, you’re not used to all the strange symbols which your computer can produce.

Easy to remember is at odds with hard to guess and complicated.

Lastly, good passwords don’t protect you against the most common forms of attack: Phishing and keyloggers.

Links: “So Long, And No Thanks for the Externalities: The Rational Rejection of Security Advice by Users” (Cormac Herley, Microsoft Research)


Adopt a line of code!

24. November, 2009

Why spend all your hard earned money on on-line porn when you can have an offspring by adopting a line of code?

Here are the three latest additions to my family:

Dobalina Digulla:

Oliver Digulla:

Maurizio Digulla:


Why You Should Be Rabid About Your Tools

19. November, 2009

Rands writes:

The lesson: the correct tool is exponentially more productive.[…]As an engineer, there is a short list of tools that you must be rabid about. Rabid. Foaming at the mouth crazy.

Wise words. If your tools don’t make you exponentially more productive, you must change them. Every engineer can write an application using Notepad. But if you care about quality, timeliness or sanity, then find the right tool and use it.


no symbol version for module_layout

15. November, 2009

This one drove me nuts. After upgrading to openSUSE 11.2, I couldn’t compile the NVIDIA (warning: Big flash welcome) or the VirtualBox drivers. Well, the compilation was working but loading failed with:

no symbol version for module_layout

This post finally pointed me in the right direction. To fix the issue, just run zypper in kernel-default-devel as root (or kernel-desktop-devel if you use the desktop kernel).


Goodbye Fallout 3

11. November, 2009

I made a mistake. A big mistake. I admit it. I shouldn’t have. I still did. I bought the game officially in a store. Sorry. Won’t happen again. Bethesda is now on my “Don’t Buy” list and Sony is close.

What happened. A year ago, I bought Fallout 3 in a shop. It’s a German uncut version. I’d actually preferred the cut version; the splatter effect is probably some nice piece of FX code but blood doesn’t give me much. Can’t have that. I’m in Switzerland and I can’t do as I please. On top of that, it seems my shop sold me the Austrian version. It’s German, too, but different. Somehow. I don’t know. I’m just a stupid gamer. The main difference is that when I buy the addons in Sony’s PSN, then I get something that doesn’t work with my game. Because I must have the Swiss version. Since I’m in Switzerland. And I bought the game in Switzerland. And I have a Swiss PSN account. I think. I don’t know. I’m just a stupid gamer.

So what happens is that I have an illegal copy of the game. Illegal as in “if you’re in Switzerland”. Why Bethesda decided to produce three German versions? I don’t know. I’m just a stupid gamer. I don’t need to know such things. Why were the DLCs available for months for Xbox but not for PS3? I don’t know. Why did everyone say that the DLCs would never come to the PS3? I don’t know. Maybe it was because Bethesda knew what would happen. Or maybe Sony treats them like their customers. I don’t know.

The net result is that I have a game which I can’t upgrade (at least not without illegally creating an Austrian account on PSN). I probably can’t buy the GOTY Editition without loosing my save games. I don’t know for sure. I’m not sure I care anymore. My blood pressure raises when I only see the game box. I buy games to relax, not to heap more problems on my plate. I don’t care who is responsible for this crap. I don’t understand why it’s more cheap for Sony to put some text in the game description (“Don’t buy this unless you have BLES-00399”) instead of checking the list of installed games. It’s also sad that Switzerland doesn’t have any laws to protect customers who buy over the Internet. Sony can put anything in the rules of the PSN and I can only weep. I can’t even sell or ebay things I buy on PSN.

Makes me wonder what happens should I ever have to move back to Germany. Will I have to buy all my games again? Or will Sony be nice and allow me to keep my Swiss PSN account even though I’ll lose my Swiss credit card? Maybe they’ll expect me to live close to the border, so I can still buy games. Or carry the PS3 over, hook it up to PSN via my mobile phone, so I can update the games I bought.

Some more frustration: Fallout 3 has left about 600 save games on my harddisk. It would take me approx. 24 hours to delete them (it’s a process that involves pressing eight buttons in the correct sequence).

Or how about this: I bought a Sony LCD TV because the PS3 can talk to my media server. I was naively assuming that the TV would work just like the console. Well, it doesn’t. I can watch photos and videos on my PS3 but not directly on the TV.

Well done. For some reason, Xbox and Wii sell better than the PS3. I wonder why. The PS3 looks so much better!


Software Design With Modern Languages

6. November, 2009

There is a nice series of articles on IBM’s developerworks by Neal Ford which talks about software design and how modern languages help to come up with a clear and cost-efficient design. To get a grasp why this is important, I like this quote:

Building software isn’t like digging a ditch. If you make compromises when you dig a ditch, you just get uneven width or unequal depth. Today’s flawed ditch doesn’t prevent you from digging a good ditch tomorrow. But the software you build today is the foundation for what you build tomorrow. Compromises made now for the sake of expediency cause entropy to build up in your software. In the book The Pragmatic Programmer, Andy Hunt and Dave Thomas talk about entropy in software and why it has such a detrimental effect (…). Entropy is a measure of complexity, and if you add complexity now because of a just-in-time solution to a problem, you must pay some price for that for the remaining life of the project.

Any software developer should be familiar with the concept of entropy and how it affects their lives.

In a later installment, Neal shows some reasons how modern languages allow to implement many of the design patterns by the GoF much more naturally with Groovy.


What’s Your Mission?

2. November, 2009

There is another nice article from Joel Spolsky: Figuring out what your company is all about. It’s all about

“We help $TYPE_OF_PERSON be awesome at $THING”

So what do you work on and how does it help your customers to be awesome with something? If you can’t answer this simple question, then you should sit down and ponder why not. It will help you to achieve your goals.

There is one point about the article, though. Joel says: “We help the world’s best developers make better software.” Uh … only the best? How about the vast majority, the good ones?


If You Ever Need To Design a Standard

2. November, 2009

… then keep it simple.

If you need a reason for this (other than plain old common sense), see this blog post.


Google Translate Just Got Better

16. October, 2009

You remember the old Google Translate? You know, the one which was really good for a moment of fun when you were bored: Just give it some text and laugh at the result. You could try to translate some text back and forth several times.

Well, it just got better. A lot better. Here is an example:

Der Hobby-Baumarkt war wie leer gefegt. Einkaufswagen an den Kassen, wild durcheinander, die Panik deutlich spürbar, in der Zeit eingefroren. Einkäufe, nur gesammelt oder schon bezahlt, lagen verstreut auf dem Boden. Werbebildschirme an der Decke blinkten rot, forderten alle Besucher zum sofortigen Verlassen des Gebäudes auf. Der modern geschwungene Informationsstand war verlassen, die Kassen eingeschaltet aber geschlossen. Hier war niemand mehr.

When I run this through GT, I now get something that is very readable, almost correct:

The Hobby-DIY was as completely empty. Shopping Cart at the tills, in wild confusion, the panic palpable, frozen in time. Purchases, only collected or already paid, lay scattered on the floor. Advertising screens on the ceiling flashed red, urged all attendees to immediately leave the building. The modern, curved level of information was left switched on but the cash is closed. There was no one.