Archive for the ‘Uncategorized’ Category

“me” vs “you” in user-interface dialogs

Monday, February 15th, 2010

Computers, if they are addressing the user, should address the user as “you”, not as “me”.

Computers need, from time to time, to address the user, for example “You have updated your setting successfully”.

Some programs use the word “you” to address the user, some use the word “me” on the grounds that the user is reading it, and to them, they are “me”.

However, using “me” to address someone is ridiculous! That’s as logical as a human using the word “I” or “me” to refer to the recipient of a piece of communication, “hey, do I fancy going to the pub?” on the grounds that, to the recipient, they are “I”.

“me” is the source of communication, “you” is the destination of communication; if a computer is communicating, the user is the recipient of the communication so should be called “you”.

Specifically Gmail is the main culprit for this in my life, it lists conversations between “me, Joe”; having “you, Joe” or “Adrian, Joe” would be much better! Gmail even, on the same screen that it lists conversations between “me” and other people, says “You are using 25% of your 7000MB”, so it’s not even consistent!

Learnt two new smileys today

Wednesday, February 10th, 2010

Thanks to Nessus!

\o/ – arms raised in the air – success gesture
<3  – heart

3 changes price from £10 to £1250 then charge me to cancel

Friday, September 18th, 2009

Where do I begin to describe how much I hate three (mobile operator UK) today.

(I had a mobile internet subscription / device from them.)

Firstly – and this is not new – the program they supply with the computer to show you how many MB you’ve used (and thus how much you’ve got left before they charge you) is “inaccurate” (= underestimates the amount you’ve used), some support person from three told me that. But this program has a massive window that comes up, with the 3 logo plastered all over it – I mean it’s not exactly obvious that this program is inaccurate. Why don’t they just put a huge warning up saying “this data is inaccurate”?

The product is something like 1000 MB surfing for £10 a month. The main point, for me, being that you can use it in certain foreign countries, including Austria, and the price is the same as if you used it in the UK. This is why I bought it – so I could use it from both the UK and Austria. This was called “roam like home”.

Well – that’s no longer the case. I noticed a bill (thankfully only £15), called them, tried to cancel, they told me I’d have to pay a cancellation fee as I’m still in the contract period. I mean this is so totally outrageous.

So I spent 45 minutes on the phone, failed to get them to drop the early cancellation fee (which admittedly is only 20 pounds). They say then sent me an SMS informing me of the changes, giving me 30 days in which to cancel. As I hadn’t cancelled within that time, I had to pay the fee.

However a UMTS modem for a computer – which I only use very rarely, simply isn’t switched on when it’s not in use. Normal SMS expire if they aren’t delivered after a certain period of time (10 days?) but they assured me this was a “special” SMS which didn’t expire. And I have often had problems with SMS when roaming, but they assured me this couldn’t have been the case.) Even if that had been the case, if the device is off for those 30 days, I wouldn’t receive the SMS in time. And anyway, I didn’t receive the SMS at all (but they claim I “must have done”)

And they also said they posted it on their website – nice one, as if I surf to three.co.uk every day to hang out – it’s the new Facebook, so much fun to be had there….

They also say they are not obliged to provide this service, it’s not in the terms and conditions. I knew they’d say this. But there were massive advertisements for this feature when I went into the shop and bought it – I mean many huge person-size signs advertising the service. The guy in the shop told me this was the product, he didn’t say “this is the product until further notice”. I even have an email from 3 confirming this is the case, again with no mention of this being something which could expire or change:

Austria is a 3 like home network. If you use data in this country then it’ll be first deducted from your allowance provided you are latched unto 3 network.

Normally out of allowance charges in Austria is £3.00 per MB however, as Austria is a 3 like home country if you exceed your allowance and are roaming to 3 network, you’ll be charged 10 pence per MB.

I mean I understand services can change over their lifetime, and prices can change, etc. But I mean this is no minor service change:

  • Before, when I bought it, I can use 1000 MB in Austria for £10
  • Now, 1 MB in Austria costs £1.25, so 1000 MB would be £1,250

So I spoke to them, to all their “managers” etc, on the phone, and they told me there’s nothing they can do. I didn’t cancel it in time; they understand my frustration but their hands are tied.

They’ve fundamentally changed the service – making it useless to me – and now charge me for cancelling it

Thankfully it didn’t cost me much - £15 in extra MB used, and £20 cancellation fee. But that’s mainly due to the wisdom I acquired by being charged €2500 by another mobile operator. This guy got charged £500 due to this change by 3, for example.

I hate mobile operators. Three is now added to my list of companies I’ll buy anything from again, the other being T-Mobile.

I mean this is capitalism – the operators are happy when they can charge people a few thousand Euros because they didn’t understand they were roaming, or didn’t understand the T&C had changed. As a consumer one is powerless. Capitalism shouldn’t have come to this.

ssh to easyname account

Thursday, September 3rd, 2009

We have just released a feature on www.easyname.eu where I work – it’s an automated domain-registration and web-hosting service – that you can “ssh” (log in) to your easyname filespace account. I think that’s cool – I don’t know of many web hosting companies where that feature is offered!

(I didn’t program the feature – neither the front-end nor the back-end – but I just released it, so I would have been responsible for any problems – although there weren’t any….)

Wasted 3 hours of my life

Thursday, August 20th, 2009

Working at Easyname, I heard from our support department that strange things were happening with PayPal payments – either they seemed not to be appearing on our site, or there were errors in the logfiles, and the users were complaining.

This is obviously a “drop everything” kind of bug – no matter the fact I was deep in the middle of doing some other software development (or even if I’d been working at another customer), if stuff to do with money doesn’t work, everything else must be stopped and that must be looked at with the highest priority.

What I did:

  • Look at the logfiles, there was an “unknown error” there (not very helpful!)
  • Set up a developer account for Paypal, get our software on my dev system to work with it
  • Test the PayPal IDN protocol using their tools and my newly set-up development environment
  • Change the software to produce more logging (rather than “unknown error” – although to my knowledge, that log had never been printed before, in the year or so the system was online)
  • Release the version with more debugging online
  • Communicate with various people I’m working with (management, support, ops, ..)
  • Test the new version by making a payment
  • See that it still didn’t work

What I should have done:

  • Do a search using twitter.
bluecrowbar I’m seeing problems with PayPal IPN (Instant Payment Notification). The notification is currently not instant. 13 minutes ago from Twitterrific
mystore Paypal IPN payments recived, they were just 4 hours late ;) 27 minutes ago from web
mystore @staleedstrom Check @chomasia ’s This page has details of the IPN issue with PayPal http://bit.ly/3yJ1w about 3 hours ago from web
tonydalian2009 Paypal IPN doesnt work by now. sigh~~~about 4 hours ago from web
travelfish What part of the word “Instant” in IPN doesn’t payPal understand? about 4 hours ago from TwitterFox

What can I say? Looking at logfiles is such a legacy approach to bug solving.

Optical device

Saturday, May 16th, 2009

I saw a cool device today. One of my customers manages data centers and they have a new data center and need to connect it to their old ones, so they’ve bought/rented some “dark fiber” between their data centers and have fiber multiplexers at each end so that lots of fiber-optical devices at each end can all talk to one another over this single dark fiber. (Or something like that – I don’t know too much about networking equipment!)

So basically this multiplexer looks like any other switch thing, a long horizontal device with a bunch of identical ports on the back, each with a number etc, and one “master” port which connects to the dark fiber. (only the optical sockets look slightly different from e.g. RJ45 sockets..)

But then i noticed, this device only had the identical data ports/master port on the back. I couldn’t find a power socket, I looked at all of its sides, and was confused for a while. Until i worked out the reason why I couldn’t see the power socket – the device was purely optical and didn’t need power!

Imagine that, data center, a bunch of hard-core networking and computing equipment, the last thing one expects is devices that don’t need power!

www.aaa-plus.com

Tuesday, April 28th, 2009

Thanks the the internet archive I found one of the first (or one of the only?) websites I designed i.e. I did the graphics, did the “implementation” using a tool which produced HTML, etc. (Although the company logo etc already existed, I didn’t write the texts..)

This was for AAA+ which was the first company I worked for in my life, which was also the company I worked for just after coming to Vienna, so has a lot of associations of newness in my life.

And I think it doesn’t look too bad :) www.aaa-plus.com (Internet Archive)

Google Chrome UI niceties

Monday, September 15th, 2008

So everyone in the “blogosphere” is going on about Google Chrome. From one day to the next, a bunch of personal blogs written by random people I don’t know which I for some reason subscribed to all suddenly had 1 new entry – subject “I like Chrome”. A bit like a few days before when Mozilla released some new feature and exactly the same thing happened. And now if I write about Chrome I am one of them as well….

I don’t intend to repeat all that has already been written. But here are a few UI niceties which, as ever, shows Google’s attention to detail.

  • If the Chrome window is maximized, one can throw the mouse with wild abandon to the top of the screen to click the tabs, and move the mouse to the absolute right of the screen to access the scroll bars. The tabs and scroll bars are “mile-high” controls. (“Joel on Software” famously asserted Microsoft “snatched defeat from the jaws of victory” by placing the start menu at the edge of the screen, but then adding a one-pixel border so one has to, after one has moved the mouse to the edge of the screen, slowly move it back again 1 pixel to click the control.)
  • If one downloads a file, an icon representing the downloaded file appears. This icon is draggable (e.g. to Windows Explorer in order to save the file). In Windows one can normally either drag a file from a directory to an app, or from an app to a directory, but not from an app straight to an app. But the icon in Chrome which one drags away actually already references a (temporary) file, one can drag the file directly from the Chrome app into another one e.g. an FTP program showing a remote directory, and the right thing will happen.
  • If there are lots of tabs open, the tabs get smaller. If you close a tab, the tabs get bigger again. This much is standard in all tabbed browsers: but in Chrome the tabs don’t get bigger until you move the mouse out of the tab area. This way, if you want to close multiple tabs, you can look at all the close buttons, then move your mouse over each one and click the buttons. Otherwise (as in other browsers), you have to close one tab, then look at where the tabs have rearranged themselves to, find the close button on the next tab, click it, look at where the tabs have rearranged themselves to, find the next close button—repeat.
  • If you double-click a word in the URL bar (e.g. www.mysite.com) then the portion including the separating dot or slash is selected (e.g. “www.”). This means if you press the delete key, then you are left with the syntactically valid “mysite.com”. If, however, you type, it replaces just the “www” so if you type “ftp” you are left with the syntactically valid “ftp.mysite.com”
  • The “loading site…” status information at the bottom of the screen overlays the content. This saves space in comparison to having a status bar always displayed, taking up screen space. But, if you want to see the content hidden by this overlaid status bar, simply move the mouse to where the content would be, and the status bar automatically moves away to reveal the content.

Not Invented Here Syndrome

Thursday, September 11th, 2008

Sometimes I am accused of suffering from the “Not Invented Here Syndrome”. It has been suggested I would rather program something myself than take an already existing e.g. open source solution to the problem and integrate it with the product being developed.

I mean that’s clearly a blanket statement. The right solution differs from project to project. (But, for sure, when making such a decision, one must not forget about the cost of integrating external software, especially down the line for maintenance, if the number of technologies and languages have increased by the new software’s addition, hindering code reuse.)

Joel on Software has an article about the benefits of developing things yourself.

So to pay respect to others in our industry who have also developed ridiculously complex things to support a quite different initial aim, here are the “Database & Life Not Invented Here Syndrome Awards”, presented in reverse order.

4th Place – The Corel corporation

Corel was a company producing and marketing desktop publishing computers. But what software should it run? When they couldn’t find any, they decided the only logical course of action was to create their own graphics package. Creating a graphics package like Corel Draw is non-trivial! But it was the right action to take, as Corel Draw became much more successful than any Corel workstation.

(I actually can’t find any evidence on the web that the above information is correct—I remember reading it in a computer magazine a long time ago. But neither can I find any evidence that it’s not correct.)

3rd Place - Stephen Wolfram

The Oxford-educated British mathematician Stephen Wolfram was interested in researching Cellular Automata. In order to do this, he needed mathematical software to conduct his research. Finding no software available to suit his needs, he created Mathematica. Creating a mathematical research project with the capabilities of Mathematica is non-trivial! (Stephen Wolfram about himself.)

2nd Place – Linus Torvalds

There are a myriad of source version control systems available. Take a look at the list of version control systems on Wikipedia! (No system is more suited to the creation of lists than Wikipedia!)

Linus Torvalds is well known for creating and managing the open-source operating system Linux. Finding no version control system which had both the features and licensing he desired, he created his own, “git”. Creating a version control system, especially a distributed one, is non-trivial!

For sure he didn’t write all the software himself, but his name does appear on the man pages, and even the conceptual work required in designing a distributed version control system is non-trivial.

1st Place – Donald Knuth

Wanting to write his book(s) “The Art of Computer Programming”, he considered the first layouts produced electronically to be ugly. The only course of action was to create the computer program TeX, capable of laying out such mathematical, and other, documents.

The input to this program is a custom macro language.

A layout program needs to write characters, and these characters need to be in a font, and fonts require description. So to enable the creation of the layout program, he also created the METAFONT program to describe font characters via lines and Bezier curves.

Needless to say, the creation of page layout programs, font specification and rendering algorithms, are definitely non-trivial!

Geometric vs supersampling polygon rendering

Tuesday, July 29th, 2008

A reader wrote to me with the following question. It’s a topic I used to wonder about a lot too.

I’m trying to write a 2D fillAntiAliasedTriangle() method in Java and trying to understand why everyone is using supersampling (that is, rendering at a higher resolution and then scaling down a grid of NxN subpixels into one pixel) rather than computing everything geometrically? (Say, your line cuts a triangle off a pixel to half its area, then have that pixel be colored at 50% the color intensity)

I think the answer is that although taking a geometric approach sounds like it would be more accurate and simpler, in fact it is more complicated. The shape could have many nodes within a single pixel, for example a line could enter a pixel, change direction at a node, continue within the pixel to a second node within the pixel, then change direction again, and leave the pixel. To calculate the overlap between the shape and the pixel, i.e. how illuminated the pixel should be, would be a complicated affair. And this would need to be repeated for every pixel. Therefore the algorithm would be very slow.

Calculating the set of pixels covered by a polygon, on the other hand, is relatively straightforward – you simply iterate over all rows of pixels, and work out the current intersection between the shape and that row of pixels. You then look at the next set of pixels, and assuming no nodes have been encountered, the intersection points are the same as the previous set of pixels, plus the gradient of the line. And the cases for a node being encountered are not too complex. This is a simple, and therefore fast, computation.

As it is simple to calculate the set of pixels covered by a polygon, it is also simple to calculate the set of subpixels covered by a polygon, in a supersampling algorithm. If one has n subpixels per pixel, the supersampling algorithm does of course take longer than a simple coverage algorithm: but not necessary n times longer, and certainly not n². By extending the simple coverage algorithm, one quickly has an algorithm to determine n set of intersection points for the n rows of subpixels. The algorithm then plots every whole pixel on that pixel row, taking into account these n intersection sets on the n rows of subpixels. Most of the pixels will be either fully covered by the polygon being plotted, or not covered at all. Only the pixels which are partially covered require further complexity. And therefore the extra complexity introduced, and thus the extra time penalty introduced, is minimal.

A supersampling coverage algorithm is simple to program, runs fast, and can cover all strange polygon special cases. That is the reason why it is used.