I'm a fairly steady person emotionally; happy and calm. I only cry very rarely these days, and when I do it is usually during a movie!
Here are some movie moments which make me cry:
Shakespeare In Love, the scene where Viola (Gwyneth Paltrow) and Will say goodbye.
Lord of the Rings - The Return of the King, the scene where King Théoden (Bernard Hill) dies with Éowyn (Miranda Otto) by his side.
The Shawshank Redemption, as Red (Morgan Freeman) narrates the final scenes.
50 First Dates, the last scene on the boat in Alaska, as Lucy (Drew Barrymore) embraces her daughter and Israel Kamakawiwo'ole sings Somewhere Over the Rainbow with his ukulele.
More to come as I remember them ...
My Location
Feb 7, 2011
Sep 10, 2010
iPhone 4
So the boss showed up with an iPhone 4 the other day, and said "here you go"! So that rather made my day.
And now having had it for a couple of weeks, I feel like I've died and gone to heaven. My previous phone was the iPhone 3G, over which the iPhone 4 is a huge improvement, for three primary reasons:
3. Multitasking. It was such a pain having to exit out of my navigation software to make a call or fiddle with the iPod, then having to go back in and tell it where to go again. All that is behind.
2. Pixels! The display on the iPhone 4 is 960x640, which means FOUR times as may pixels than the previous model. Everything looks fantastically crisp and sharp. I can't wait for desktop displays to approach the same pixel density.
1. Speed, speed, speed! Everything now works quickly and smoothly. The phone can keep up with me! The 3G was terribly slow and jerky at times.
It certainly feels different in the hand as well. Heavier than the 3G, which makes it feel solid, and narrower which is great, but otherwise I must say I preferred the feel of the rounded plastic back of the old model to the edgy steel and glass of the new model.
And now having had it for a couple of weeks, I feel like I've died and gone to heaven. My previous phone was the iPhone 3G, over which the iPhone 4 is a huge improvement, for three primary reasons:
3. Multitasking. It was such a pain having to exit out of my navigation software to make a call or fiddle with the iPod, then having to go back in and tell it where to go again. All that is behind.
2. Pixels! The display on the iPhone 4 is 960x640, which means FOUR times as may pixels than the previous model. Everything looks fantastically crisp and sharp. I can't wait for desktop displays to approach the same pixel density.
1. Speed, speed, speed! Everything now works quickly and smoothly. The phone can keep up with me! The 3G was terribly slow and jerky at times.
It certainly feels different in the hand as well. Heavier than the 3G, which makes it feel solid, and narrower which is great, but otherwise I must say I preferred the feel of the rounded plastic back of the old model to the edgy steel and glass of the new model.
May 19, 2010
Targus, where are your 64-bit drivers?
I own a Targus PA088U Serial to USB adapter, which I use to connect to devices such as switches and routers. I've had it for a couple of years now, but it is still a current product.
Having recently moved to 64-bit Windows 7, I've discovered that the drivers for it don't work on 64-bit Windows, and when I rang Targus they couldn't give me an ETA or even confirm that they are working on 64-bit drivers.
Come on, Targus, that's pretty poor. 64-bit versions of Windows have been around for about five years now! Rant, rant, rant ...
I've ordered a Tripp Lite U209-000-R which claims to support 64-bit Windows 7, as a replacement. I'll let you know how it goes.
Having recently moved to 64-bit Windows 7, I've discovered that the drivers for it don't work on 64-bit Windows, and when I rang Targus they couldn't give me an ETA or even confirm that they are working on 64-bit drivers.
Come on, Targus, that's pretty poor. 64-bit versions of Windows have been around for about five years now! Rant, rant, rant ...
I've ordered a Tripp Lite U209-000-R which claims to support 64-bit Windows 7, as a replacement. I'll let you know how it goes.
Apr 16, 2010
Now I can't live without my iPhone
It's funny how this Apple technology really does grow on you after a while. It's three months now since I posted about my top iPhone annoyances, but now I feel like posting about what I really love about the thing.
7. I can VPN to the network at work, so it would be possible to do remote support. I've not actually needed to do this, but it's nice to know it's there.
6. I can tether to either Windows or Mac using Bluetooth! Yay, remote connectivity for the PC! My previous phone had all sorts of software issues which affected tethering, but with the iPhone it just works. Now, if we could just do it using WiFi ...
5. It took me a while to get used to the Messages application, but now I really like the way it displays the conversation, like a chat session.
4. I've never had my email always with me before, but it's actually really handy to have.
3. I take the web with me everywhere, what a drug that is! The news, the weather, Facebook, mobile banking. For casual web surfing on a small screen, it works perfectly. And there's no getting around it, Telstra's NextG network is superb.
2. The iPod application is just such a pleasure to use, so polished. It's a combination of great looks and attention to details like the way it automatically pauses the music when you unplug the headphones. My previous phone couldn't play video, and was a bit unreliable with the Bluetooth headphones. The iPhone just works.
1. Games, games, games! There are some absolute crackers out there, including Flight Control, Angry Birds, Parking Mania and Electric Box. I've spent more time playing computer games in the last three months than at any time since being at university.
7. I can VPN to the network at work, so it would be possible to do remote support. I've not actually needed to do this, but it's nice to know it's there.
6. I can tether to either Windows or Mac using Bluetooth! Yay, remote connectivity for the PC! My previous phone had all sorts of software issues which affected tethering, but with the iPhone it just works. Now, if we could just do it using WiFi ...
5. It took me a while to get used to the Messages application, but now I really like the way it displays the conversation, like a chat session.
4. I've never had my email always with me before, but it's actually really handy to have.
3. I take the web with me everywhere, what a drug that is! The news, the weather, Facebook, mobile banking. For casual web surfing on a small screen, it works perfectly. And there's no getting around it, Telstra's NextG network is superb.
2. The iPod application is just such a pleasure to use, so polished. It's a combination of great looks and attention to details like the way it automatically pauses the music when you unplug the headphones. My previous phone couldn't play video, and was a bit unreliable with the Bluetooth headphones. The iPhone just works.
1. Games, games, games! There are some absolute crackers out there, including Flight Control, Angry Birds, Parking Mania and Electric Box. I've spent more time playing computer games in the last three months than at any time since being at university.
Jan 18, 2010
iPhone annoyances
There's a lot to like about the Apple iPhone, but just as much to dislike. Here are my top iPhone annoyances:
11. No AM/FM radio. Of course internet radio is great but in Australia we pay through the nose for bandwidth.
10. No FM transmitter. Some of us have old cars (like 8 years old) with no auxiliary audio inputs or Bluetooth.
9. No camera on the front, so no two-way video calls.
8. The camera is crap. OK, so probably all phone cameras are.
7. USB cables cost $30! Come on! It's a short piece of wire between two plugs!
6. You can't sort by rating in the App Store, which means you can't easily find the "cream of the crop" applications -- those which people really like.
5. You can't use the device as a 3G WiFi router (or MiFi as people are calling them these days).
4. Battery life stinks. OK, so because you can do so much with the iPhone, you do use it a lot. But when one charge doesn't even last 24 hours, things are grim.
3. Complexity of programming. Microsoft's developer tools are streets ahead. When I hop into Objective-C I feel like I'm in a twenty-year time warp.
2. No access to the file system. It won't function as a mass storage device, so getting photos off it is a pain, and you can't use it to port random files around.
1. Applications can only be installed from the official App Store, and they have to be approved by Apple first. We paid for the device, we should therefore be free to install any software we like onto it.
11. No AM/FM radio. Of course internet radio is great but in Australia we pay through the nose for bandwidth.
10. No FM transmitter. Some of us have old cars (like 8 years old) with no auxiliary audio inputs or Bluetooth.
9. No camera on the front, so no two-way video calls.
8. The camera is crap. OK, so probably all phone cameras are.
7. USB cables cost $30! Come on! It's a short piece of wire between two plugs!
6. You can't sort by rating in the App Store, which means you can't easily find the "cream of the crop" applications -- those which people really like.
5. You can't use the device as a 3G WiFi router (or MiFi as people are calling them these days).
4. Battery life stinks. OK, so because you can do so much with the iPhone, you do use it a lot. But when one charge doesn't even last 24 hours, things are grim.
3. Complexity of programming. Microsoft's developer tools are streets ahead. When I hop into Objective-C I feel like I'm in a twenty-year time warp.
2. No access to the file system. It won't function as a mass storage device, so getting photos off it is a pain, and you can't use it to port random files around.
1. Applications can only be installed from the official App Store, and they have to be approved by Apple first. We paid for the device, we should therefore be free to install any software we like onto it.
Dec 21, 2009
iPhone VPN to Nortel
I am a long-time fan of the Nortel VPN Gateway, which we have at work, and which several of our clients have as well. SSL-VPN technology is just so convenient, you just need a browser and Java, and away you go. The device also supports IPSec connectivity, making it a complete VPN solution.
Until the iPhone came along, with no Java, and support only for Cisco IPSec. So, no VPN to work :(
But what Nortel have done in code release 8.0 for NVG, just released, is include support for L2TP-over-IPSec, which the iPhone does support. And I've just tried it, and it works! Thankyou, Nortel! xoxoxoxoxoxox
I assume that L2TP/IPSec will soon appear in the software for the Contivity series (Nortel VPN Router), if it hasn't already.
Until the iPhone came along, with no Java, and support only for Cisco IPSec. So, no VPN to work :(
But what Nortel have done in code release 8.0 for NVG, just released, is include support for L2TP-over-IPSec, which the iPhone does support. And I've just tried it, and it works! Thankyou, Nortel! xoxoxoxoxoxox
I assume that L2TP/IPSec will soon appear in the software for the Contivity series (Nortel VPN Router), if it hasn't already.
Apr 15, 2009
Firing script with an anchor
Quite often I want an anchor (link) to execute a script, and usually I fall into the trap of trying to use onclick and set href to an empty string or leave it out entirely. However, href is a required attribute and empty string is a valid value which means "link to self", so the correct solution is to put the script into the href attribute, prefixed by "javascript:".
For example, here is an anchor which does the same thing as pressing the browser's Back button:
<a href="javascript:history.back();">Back</a>
Thanks JWhittaker for setting me straight.
For example, here is an anchor which does the same thing as pressing the browser's Back button:
<a href="javascript:history.back();">Back</a>
Thanks JWhittaker for setting me straight.
Apr 9, 2009
Always show a vertical scroll bar
IE always shows a vertical scroll bar for a web page, regardless of whether or not the page is long enough to require one. This is nice for sites with a fixed-width centred layout and a combination of short and long pages, because it means the horizontal position stays exactly the same on every page. Other browsers (Firefox and Chrome at least) don't do this by default.
Finally I've looked up how do this in these other browsers, and discovered that it's actually quite easy. It's not even a hack! Just a CSS rule ...
html {overflow-y: scroll;}
Finally I've looked up how do this in these other browsers, and discovered that it's actually quite easy. It's not even a hack! Just a CSS rule ...
html {overflow-y: scroll;}
Apr 8, 2009
Styling table columns
It seems so natural to want to set colour and alignment on columns of a table. But CSS2.1 does not allow it, it only allows you to set width, visibility, border and background. Hixie explains why. Internet Explorer supports it, but no-one else does.
The workaround is to use CSS selectors as follows:
#table55 td:first-child { text-align:left; } /* col 1 */
#table55 td:first-child+td { text-align:center; } /* col 2 */
#table55 td:first-child+td+td { text-align:right; } /* col 3 */
This works in CSS-compliant browsers including IE7 and above. Thanks to Simon Pieters for this one.
The workaround is to use CSS selectors as follows:
#table55 td:first-child { text-align:left; } /* col 1 */
#table55 td:first-child+td { text-align:center; } /* col 2 */
#table55 td:first-child+td+td { text-align:right; } /* col 3 */
This works in CSS-compliant browsers including IE7 and above. Thanks to Simon Pieters for this one.
Mar 23, 2009
Select border styling in IE
OK, so you can’t directly style the border of the SELECT element in IE, but if you’re using absolute positioning you can wrap it in a DIV, do the positioning and border on the DIV, then set a negative margin on the SELECT itself. I found that negative 1 pixel is right for drop-down selects, and negative 3 pixels is right for selects with a non-default size. Sample code below.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<style type="text/css">
#select1,#select2 {position:absolute;left:100px;border:1px solid #666;}
#select1 {top:100px;}
#select2 {top:150px;}
.drop {margin:-1px;}
.nodrop {margin:-3px;}
</style>
</head>
<body>
<div id="select1">
<select class="drop">
<option>One Hundred</option>
<option>Two Hundred</option>
<option>Three Hundred</option>
</select>
</div>
<div id="select2">
<select class="nodrop" size="3">
<option>One Hundred</option>
<option>Two Hundred</option>
<option>Three Hundred</option>
</select>
</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<style type="text/css">
#select1,#select2 {position:absolute;left:100px;border:1px solid #666;}
#select1 {top:100px;}
#select2 {top:150px;}
.drop {margin:-1px;}
.nodrop {margin:-3px;}
</style>
</head>
<body>
<div id="select1">
<select class="drop">
<option>One Hundred</option>
<option>Two Hundred</option>
<option>Three Hundred</option>
</select>
</div>
<div id="select2">
<select class="nodrop" size="3">
<option>One Hundred</option>
<option>Two Hundred</option>
<option>Three Hundred</option>
</select>
</div>
</body>
</html>
Mar 19, 2009
JavaScript to convert HTML character entity references
To convert all numerical character entities in a string to their character equivalents you can do this:
str.replace(/(\d+);/g, function (m, n) { return String.fromCharCode(n); })
str.replace(/(\d+);/g, function (m, n) { return String.fromCharCode(n); })
Mar 2, 2009
innerHTML and tables in IE
I have been doing some work on the performance of dynamically-created tables in our web application framework (which only works in IE). I used this QuirksMode performance comparison of innerHTML and the DOM as the basis for my work. Our framework was building the table using DOM methods inside loops, and I rewrote it using the array push/innerHTML method.
Rather than build an HTML string for the entire table, I attempted initially to build a string containing the <TR>s and set table.tBodies[0].innerHTML. This led me to discover that innerHTML is read-only on table elements in IE. How bloody typical. So I had no choice but to do the entire table.
UPDATE: This work turned out to be extremely successful and has made a huge improvement in the performance of our application.
Rather than build an HTML string for the entire table, I attempted initially to build a string containing the <TR>s and set table.tBodies[0].innerHTML. This led me to discover that innerHTML is read-only on table elements in IE. How bloody typical. So I had no choice but to do the entire table.
UPDATE: This work turned out to be extremely successful and has made a huge improvement in the performance of our application.
Password Management
I decided recently that I really needed to improve my password management. Using the same password in all sorts of places just isn't smart. The problem is finding a secure solution which is just as convenient. I tried KeePass for a month or so without really getting excited, but I've just stumbled across LastPass and the penny has dropped. My search is over. And at least one other person agrees with me.
Feb 27, 2009
Google Chrome
The more I use Google Chrome, the more I like it! The main thing is the speed, it absolutely screams compared to IE7 on script-heavy sites like Gmail. I also really like that each tab is a separate process; my machine has limited memory so having these processes means I can see which tabs consume the most memory, and if I close that tab I immediately get the memory back. The combined address/search bar works a treat as well.
When it first came out there were some noticeable bugs, so I kept using Firefox. But now, several updates later, it seems rock solid and I'm doing all my browsing with it.
It will be interesting to see how the market shares pan out. I predict we'll see slow but steady growth, unlike Opera which has never taken off. But it has no chance of overtaking Firefox unless it becomes cross-platform and contains an equivalent extension mechanism.
When it first came out there were some noticeable bugs, so I kept using Firefox. But now, several updates later, it seems rock solid and I'm doing all my browsing with it.
It will be interesting to see how the market shares pan out. I predict we'll see slow but steady growth, unlike Opera which has never taken off. But it has no chance of overtaking Firefox unless it becomes cross-platform and contains an equivalent extension mechanism.
Feb 13, 2009
List margins and padding
I had some trouble today getting my <ul> unordered list to position correctly across browsers. The problem turned out to be simply that the default style sheet in IE is different from the other browsers I tested in its settings for left margin and left padding.
The solution is simply to set values for both left margin AND left padding (use zero if you like) to get your list to position correctly across browsers.
The solution is simply to set values for both left margin AND left padding (use zero if you like) to get your list to position correctly across browsers.
Feb 5, 2009
Jan 7, 2009
IE6 absolute positioning attaching all four sides
By my own and other's observations, the following CSS does not work in IE6.
#div1 {
position: absolute;
left: 50px;
top: 50px;
right: 50px;
bottom: 50px;
}
The only alternative I can think of is to position left and top only, and set width and height in a script which handles an onResize event. Can anyone suggest a less ugly alternative?
#div1 {
position: absolute;
left: 50px;
top: 50px;
right: 50px;
bottom: 50px;
}
The only alternative I can think of is to position left and top only, and set width and height in a script which handles an onResize event. Can anyone suggest a less ugly alternative?
Jan 4, 2009
IE8 support for CSS3
I’m disappointed that IE8 will have almost no CSS3 support, but I can’t say I’m surprised. Still, full CSS2.1 support will be worth having, assuming that Microsoft delivers on its promise.
Dec 16, 2008
IE Painting
Our in-house web application framework has a grid "control" composed of two HTML tables, one for the header and one for the body, each inside its own DIV, with a wrapper DIV around the lot which controls the overall sizing and scrolling.
I started having painting problems after absolutely positioning the wrapper DIV using left, top, right and bottom. These problems did not occur with the wrapper DIV positioned using left, top, right and height. The problems were frequent but unpredictable. Sometimes the grid would refuse to paint, sometimes it would paint initially, but then disappear following certain operations within the grid.
However, I then found that if the grid was not properly painted, resizing the browser window would cause it to repaint correctly. So I tried resizing the window in script using window.resizeBy(0,1), which worked up to a point. However, it a pretty ugly hack because (a) it's visible to the user, and (b) it has the unfortunate side-effect of partially disconnecting the sizing of the frame from the window.
I went searching for a better workaround, and finally found this post by Kir Maximov. Bingo! If you simply add an empty CSS class to one of the inside DIVs, it triggers IE to re-render the element. I put a toggle in the script to add the empty class and remove it on alternate invocations of the script. Works like a dream!
Okay, it's not that good. I found that in some cases it would only work if I used setTimeout(). Presumably this causes the operation to be processed by a different thread .... who cares, as long as it bloody works! Joel has convinced me, let's forget our idealism.
I started having painting problems after absolutely positioning the wrapper DIV using left, top, right and bottom. These problems did not occur with the wrapper DIV positioned using left, top, right and height. The problems were frequent but unpredictable. Sometimes the grid would refuse to paint, sometimes it would paint initially, but then disappear following certain operations within the grid.
However, I then found that if the grid was not properly painted, resizing the browser window would cause it to repaint correctly. So I tried resizing the window in script using window.resizeBy(0,1), which worked up to a point. However, it a pretty ugly hack because (a) it's visible to the user, and (b) it has the unfortunate side-effect of partially disconnecting the sizing of the frame from the window.
I went searching for a better workaround, and finally found this post by Kir Maximov. Bingo! If you simply add an empty CSS class to one of the inside DIVs, it triggers IE to re-render the element. I put a toggle in the script to add the empty class and remove it on alternate invocations of the script. Works like a dream!
Okay, it's not that good. I found that in some cases it would only work if I used setTimeout(). Presumably this causes the operation to be processed by a different thread .... who cares, as long as it bloody works! Joel has convinced me, let's forget our idealism.
Subscribe to:
Posts (Atom)