Android and processor on a sim-card

Clock Published on February 19, 2010 in Thoughts, Gadgets comment Comments 0

South Korea's SK Telecom has made it possible to set both Android, a processor and 1GB of flash memory on a SIM card..

The intention of this experiment was, to give users the ability to take easily all their personal data to a new or different device. The SIM card is still a prototype and was presented at the Mobile World Congress in Barcelona. Apart from phones, the card can also be used in netbooks.
Not in production
The card communicates via a USB 2.0 interface, and performed well during the demonstration. The company has no plans for the card on the market but the prototype was used to demonstrate how technology can be caught so close together.

Convincing with Augmented Reality

Clock Published on January 29, 2010 in Thoughts comment Comments 0

Today I read an interesting article on a Dutch usability blog about Persuasion Technology and the use of "Augmented Reality".  Argument Reality is a method to change people their attitude and / or behavior through a simulation on a computer. This is done by giving people insight into cause and effect. The article presented an application from Samsung, in which you can see how a LCD TV would stand in, for example the living room. By printing a particular icon and stick it on the wall in the living room, the LCD TV is projected  on the wall via a Flash application. This technique was not new to me, but the application I found it worth mentioning.

Scroll down while filling a ListBox

Clock Published on December 09, 2008 in C# (sharp) comment Comments 0

Scroll down and show always the last selected. As a result the scrollbar is moving down, as we know from a IRC (chat) client.

int intIndex;
intIndex = ListBox.Items.Add(string);
ListBox.SelectedIndex = intIndex;

Every day a good start

Clock Published on March 18, 2008 in Thoughts comment Comments 0

One of my friends gets away from the office twice a year for what he calls his "think week." He isolates himself from people, phone calls, and e-mail, and he devotes this time to reading. He ponders the state of technology of his company and in the world. He tries to understand what his company and others are working on and how they can move forward in a more strategic manner. He knows the value of pondering and planning.
Each of us can benefit by reserving time every day to simply think and plan—time to formulate ideas, problem solve, prioritize tasks, set goals, and daydream. Try to carry out this exercise at the same time and place each day, and avoid all other interactions during this period. Your most important task is to plan and prioritize what you will do with your day. If you are in a management role, you may actually spend most of your time planning and prioritizing the work of others.
Whether you are managing the corporate network, administering a mission-critical database, or designing and managing the enterprise information systems, there are issues that come up daily that can divert your attention from making progress on the work that really counts. By the end of the day, you can't really tell if you have actually gotten ahead or just fallen further behind.
Your goal should be to become more be preemptive, better organized, and better prepared to respond to IT emergencies. By planning, you can move from being reactive to proactive. In order to make that switch, though, you have to ponder, plan, and prioritize. It helps to maintain a task list—organized under three categories—and to start each day by reviewing this list: In Progress, ASAP, and Wish list. Using these lists, you can make time to create solutions that prevent crises from happening in the first place.
The In Progress list is the one that's critical to get right. It's vital that you make progress on these critical tasks each day. Deliver first on your company's and group's primary goals. Tasks that don't directly affect that priority can move lower down the list. If you are in a management position, put a process in place that helps all employees stay in sync with the top priorities.
The ASAP and Wish lists are usually for those strategic plans that will save your company time and money and thus make it more competitive. Identify these tasks and go after them slowly and methodically, moving them into your In Progress list as they become more of a priority.
Don't forget, though: just because you have these prioritized lists doesn't mean that anything will actually get done. Here are some tips to help you work through your tasks:
  • Get the fast and easy tasks out of the way first.
  • Next, do those things you are not as motivated to do.
  • Finally, get on to the exciting tasks.
  • Avoid context switching. Serialize your work if at all possible.
  • However, if you get blocked on one thing, go on to the next task until you can switch back.
  • Delegate or refuse tasks that don't make sense for you to do, or suggest alternatives.
  • Know when you work best and are most productive. Reserve this time to focus on important tasks.
Knowing how to plan your time wisely will help you do your best work. People who drift through life without a plan are never really happy with where they arrive because they never really knew where they were going in the first place.

Paradox of the filesystem

Clock Published on March 17, 2008 in Thoughts comment Comments 0

If you take a look around your Windows hard drive, you probably have noticed that a good number of operating system files hang out in the root directory of the boot drive. If you take a closer look at those files, you may notice a theme: boot.ini, NTLDR, and NTDETECT.COM are critical boot files, and hiberfil.sys is the hibernation file. These are all files that are involved in the crucial first stages of booting the operating system or, in the case of hiberfil.sys, resuming from hibernation, and they have to go into the root of the boot drive. Why can't you move them somewhere else?
My colleague Adrian Oney explained: in order to read the boot files off the disk, you need the file system driver, but the file system driver is on the disk, which you can't read until you've loaded the file system driver. Oh no, Catch-22!
The vicious cycle is broken by having a miniature file system driver built into the critical boot files. This miniature driver knows just barely enough to locate files in the root directory and load them into memory. Those files can, in turn, get the operating system off the ground, at which point the real file system driver can take over and look for files in much fancier places like subdirectories.

Hibernation follows a similar pattern. Hibernating the operating system means dumping the entire contents of memory into the hibernation file; restoring from hibernation entails sucking that file back into memory and pretending nothing happened. Again, it's another chicken-and-egg problem: to load the hibernation file, you need the file system driver, but the file system driver is in the hibernation file. If you keep the hibernation file in the root directory of the boot drive, the miniature file system driver can be used instead.
Those who have used early versions of MS-DOS® are well aware of this constraint on the location of the operating system boot files. The old SYS command made a boring old floppy disk into a magic bootable floppy disk. However, if you ran it on a floppy disk that already had data on it, there was a good chance the conversion would fail because early versions of MS-DOS required that the boot files occupy specific locations on the floppy disk in order for the boot sector to find them. Later versions of MS-DOS relaxed these requirements by making improvements to the boot loader, but even with the improved version, the system files still must reside in the root directory.
One customer asked, "Can I move the hibernation file into a subdirectory?" After all, why does it matter where the file is? The ACLs on the file would be the same regardless of where you put it. But these folks wanted to put it on a drive different from the boot drive and had been told that can't be done. They didn't really understand the reason for this restriction, so they tried an end run: well, if I can at least move it into a subdirectory, then I can create a directory and make that a junction that points to where I really want the hiberation file. Woo hoo—I relocated the hibernation file!
Of course, the miniature file system driver doesn't understand mount points, because mount points mean talking to the disk management service, and at the time the system is booting, the computer hasn't even loaded the operating system yet, much less some fancy advanced service that knows how to map drive letters back to ARC paths, and even if you somehow got that service running, you still have to find the device drivers for those other hard drives and load the corresponding file system drivers.
It's only a matter of time before somebody asks for a way to put the hibernation file on a DFS junction.

You thought Apple was ripping you off with the price of iTunes songs in the UK? You should see what Sony is doing!

There was heated furor over Apple charging different prices in the UK than elsewhere which got somewhat resolved recently when Apple standardized its iTunes prices across the EU. The whole deal there was because people in the UK were paying at most € 0.17 per song more than their European counterparts. But, because there was a considerable price difference between EU countries, the EU got involved. Unfortunately, no such action will be taken against Sony, who, as we say in the UK, is really taking the piss with their pricing because the EU has no jurisdiction over pricing differences between non-EU and EU countries. So we're used to paying more for stuff in the UK but when does the price difference become ridiculous? Is paying 50% more for something acceptable? OK, how about 100% more? Hmm, how about more than 100% more for the same thing? Case in point: I was browsing the online Playstation store on my PS3 and I thought I'd download Piyotama. At € 4.69, you can't go wrong, right? Well something told me to read a review before buying it. I found a couple from US web sites but one thing struck me immediately. They all listed the game as being available in the US for $2.99. Why's this strange? Because with an almost 2:1 exchange rate, we're not used to seeing the actual price of an item be higher in the UK than in the US. So Sony is selling Piyotama for $2.99 in the US and approximately $6.91 here in the UK. That's more than double the price! For every one copy here, you could buy two copies of it in the US and still have enough left over to buy a double cheese burger at Burger King (though why you would willingly subject yourself to such abuse is beyond me!) :) To cut a long story short, I know it's ridiculous but now I can't bring myself to spending a meager € 4.69 on a game because I feel like I'm getting ripped off. How crazy is that? Geographical pricing works as evidenced by the fact that I was going to buy the game without another thought. But then I found out how much it costs in the US and my opinion was radically altered. To be effective, geographical pricing requires us to be in the dark about how much things cost elsewhere. Otherwise, it can very easily lead to feelings of resentment. No one likes to feel like they're getting ripped off. What will be the long term effect of this resentment on a company's image? How will it affect customer loyalty when a competitor springs up that doesn't employ geographical pricing? What do you think? Can geographical pricing survive the information age? Or is this walled-garden approach eventually doomed to extinction thanks to the Internet?

Are You a Passionate Worker...

Clock Published on January 25, 2008 in Apple comment Comments 0

...or just a passionate worker? Seth Godin explains the difference:In a poignant post, "A workaholic lives on fear. It's fear that drives him to show up all the time. The best defense, apparently, is a good attendance record.

A new class of jobs (and workers) is creating a different sort of worker, though. This is the person who works out of passion and curiosity, not fear.

The passionate worker doesn't show up because she's afraid of getting in trouble, she shows up because it's a hobby that pays. The passionate worker is busy blogging on vacation... because posting that thought and seeing the feedback it generates is actually more fun than sitting on the beach for another hour. The passionate worker tweaks a site design after dinner because, hey, it's a lot more fun than watching TV.

It was hard to imagine someone being passionate about mining coal or scrubbing dishes. But the new face of work, at least for some people, opens up the possibility that work is the thing (much of the time) that you'd most like to do. Designing jobs like that is obviously smart. Finding one is brilliant."
That sounds good and reminds me of the "four-hour work week", as laid out in Tim Ferris' best-selling book: "How to trade a long-haul career for short work bursts and frequent "ini-retirements?" Ferris' book is a manifesto for the mobile lifestyle, and a detailed manual for outsourcing your work and disassembling a cohesive, consistent work life into ultra-flexible and ever-changing roles and tasks. This allows him to live a nomadic and excessive private life in many microverses: "I race motorcycles in Europe", "I ski in the Andes", "I scuba dive in Panama" and "I dance tango in Buenos Aires". A similar phenomenon is the "slash lifestyle", a term to describe the identity concepts of people who are no longer satisfied with just one professional identity and instead mash up professions and hobbies into a hybrid work/life fulfillment that unleashes their true ever-changing self: "Doctor/author", "Mom/consultant", and "Bellydancer/Scientist" are just some of the possible combinations. Yet slash-lifestyle and passionate worker attitude have some ramifications. There is a dark side to all the Kumbaya freedom of the new passionate entrepreneurial self. More and more A-list bloggers (i.e. Steve Rubel and David Armano) are admitting a certain blogging fatigue. "Blogging is an addiction", a friend (and avid blogger) told me the other day, "it is a passion that can kill you". So does passion not equal happiness? And how do you draw the line? In a Fast Company cover story, Mike Rowe of "Dirty Jobs" offers some good advice: "Never follow your passion but by all means bring it with you."

My kind of bug

Clock Published on January 19, 2008 in Gadgets comment Comments 0

I'm definitely not a hardware hacker. Pulling apart the innards of a Chumby does not excite me. I don't read Make. But BUG by Bug Labs looks like something I'd love to get my hands on. CNET sums up the BUG perfectly as "The Lego of Gadgets". You have a base BUG (called -- surprise, surprise -- BUGbase) that is essentially a tiny ARM-based computer. To this, you plug in hardware modules. The modules plug in like Lego bricks. There's no soldering or messing with wires (i.e., all that stuff that hardware hackers love and I don't get!) Available modules include GPS, Digital Camera/Video, a touch-sensitive color LCD screen (what, no multi-touch? Apple you have truly spoiled me!) There's also an accelerometer and motion sensor module. The BUGbase and available modules are currently on sale for early adopters. The early-adopter BUGbase differs from the version that will ship later in the year in that it does not have WiFi and its UI features a joystick-based navigation scheme as opposed to a panel-based button system. You program the BUG using Java and the software stack is completely open source. How cool would it be to have Flash on this thing? Very, very cool. Can you imagine creating your own device and then creating the UI via Flash? And having it interface with the various modules natively (e.g., camera/video support, GPS/motion sensor/accelerometer access via a socket server, etc.) Now that would truly rock! Via Mashable.

Apple MacBook Air: Are you getting one?

Clock Published on January 15, 2008 in Gadgets comment Comments 0

OK, so the cat's out of the bag: there's a new MacBook in town. The MacBook Air is light, it's got a multi-touch trackpad and a full-size backlit keyboard. The US price for the base config (1.6GHz) is $1,799. And the 1.8GHz model with 64GB SSD will set you back a whopping $3,098. In the UK, we're going to have to pay € 1,699 ($2,503.47) for the 1.6GHz config and € 2.868 ($4,227.71) for the 1.8GHz model (thanks, Apple! Well, I guess we should thank our lucky stars that we're not paying double!) The MacBook Air looks like a beauty and weighs 3lbs. And, according to Apple, it's the thinnest notebook ever. So, what do you guys think of this baby? The Apple Store has reopened... are you going to splurge? Is it too expensive? Are you happy with the specs? Leave a comment and share your thoughts! Update: WTF? It doesn't have a user-replaceable battery? Were they high when they designed this? I mean, I don't care how good it looks or how long the battery is purported to last, I definitely wouldn't buy a laptop where I can't have a spare battery. The way batteries lose their charge these days (no doubt thanks to how hot Macs run), that 5 hours will start to taper off after the first few months. And sending your laptop in to have the battery replaced and not being without it for several days? No way! I guess Apple expects people to have this as a second laptop or a companion to a desktop. There's no way I'd make it my workhorse. As much as I'd love to, the lack of replaceable battery is a deal-breaker.

OEM 2 ANSI in PHP

Clock Published on March 29, 2007 in PHP comment Comments 1

function oem2ansi ($str) {
for ($i = 0; $i
            $ch = ord($str{$i});
            switch($ch){
                case 128: $out .= chr(199);break;
                case 129: $out .= chr(252);break;
                case 130: $out .= chr(233);break;
                case 131: $out .= chr(226);break;
                case 132: $out .= chr(228);break;
                case 133: $out .= chr(224);break;
                case 134: $out .= chr(229);break;
                case 135: $out .= chr(231);break;
                case 136: $out .= chr(234);break;
                case 137: $out .= chr(235);break;
                case 138: $out .= chr(232);break;
                case 139: $out .= chr(239);break;
                case 140: $out .= chr(238);break;
                case 141: $out .= chr(236);break;
                case 142: $out .= chr(196);break;
                case 143: $out .= chr(197);break;
                case 144: $out .= chr(201);break;
                case 145: $out .= chr(230);break;
                case 146: $out .= chr(198);break;
                case 147: $out .= chr(244);break;
                case 148: $out .= chr(246);break;
                case 149: $out .= chr(242);break;
                case 150: $out .= chr(251);break;
                case 151: $out .= chr(249);break;
                case 152: $out .= chr(255);break;
                case 153: $out .= chr(214);break;
                case 154: $out .= chr(220);break;
                case 155: $out .= chr(248);break;
                case 156: $out .= chr(163);break;
                case 157: $out .= chr(216);break;
                case 158: $out .= chr(215);break;
                case 159: $out .= chr(131);break;
                case 160: $out .= chr(225);break;
                case 161: $out .= chr(237);break;
                case 162: $out .= chr(243);break;
                case 163: $out .= chr(250);break;
                case 164: $out .= chr(241);break;
                case 165: $out .= chr(209);break;
                case 166: $out .= chr(170);break;
                case 167: $out .= chr(186);break;
                case 168: $out .= chr(191);break;
                case 169: $out .= chr(174);break;
                case 170: $out .= chr(172);break;
                case 171: $out .= chr(189);break;
                case 172: $out .= chr(188);break;
                case 173: $out .= chr(161);break;
                case 174: $out .= chr(171);break;
                case 175: $out .= chr(187);break;
                case 176: $out .= chr(166);break;
                case 177: $out .= chr(166);break;
                case 178: $out .= chr(166);break;
                case 179: $out .= chr(166);break;
                case 180: $out .= chr(166);break;
                case 181: $out .= chr(193);break;
                case 182: $out .= chr(194);break;
                case 183: $out .= chr(192);break;
                case 184: $out .= chr(169);break;
                case 185: $out .= chr(166);break;
                case 186: $out .= chr(166);break;
                case 187: $out .= chr(43);break;
                case 188: $out .= chr(43);break;
                case 189: $out .= chr(162);break;
                case 190: $out .= chr(165);break;
                case 191: $out .= chr(43);break;
                case 192: $out .= chr(43);break;
                case 193: $out .= chr(45);break;
                case 194: $out .= chr(45);break;
                case 195: $out .= chr(43);break;
                case 196: $out .= chr(45);break;
                case 197: $out .= chr(43);break;
                case 198: $out .= chr(227);break;
                case 199: $out .= chr(195);break;
                case 200: $out .= chr(43);break;
                case 201: $out .= chr(43);break;
                case 202: $out .= chr(45);break;
                case 203: $out .= chr(45);break;
                case 204: $out .= chr(166);break;
                case 205: $out .= chr(45);break;
                case 206: $out .= chr(43);break;
                case 207: $out .= chr(164);break;
                case 208: $out .= chr(240);break;
                case 209: $out .= chr(208);break;
                case 210: $out .= chr(202);break;
                case 211: $out .= chr(203);break;
                case 212: $out .= chr(200);break;
                case 213: $out .= chr(105);break;
                case 214: $out .= chr(205);break;
                case 215: $out .= chr(206);break;
                case 216: $out .= chr(207);break;
                case 217: $out .= chr(43);break;
                case 218: $out .= chr(43);break;
                case 219: $out .= chr(166);break;
                case 220: $out .= chr(95);break;
                case 221: $out .= chr(166);break;
                case 222: $out .= chr(204);break;
                case 223: $out .= chr(175);break;
                case 224: $out .= chr(211);break;
                case 225: $out .= chr(223);break;
                case 226: $out .= chr(212);break;
                case 227: $out .= chr(210);break;
                case 228: $out .= chr(245);break;
                case 229: $out .= chr(213);break;
                case 230: $out .= chr(181);break;
                case 231: $out .= chr(254);break;
                case 232: $out .= chr(222);break;
                case 233: $out .= chr(218);break;
                case 234: $out .= chr(219);break;
                case 235: $out .= chr(217);break;
                case 236: $out .= chr(253);break;
                case 237: $out .= chr(221);break;
                case 238: $out .= chr(175);break;
                case 239: $out .= chr(180);break;
                case 240: $out .= chr(173);break;
                case 241: $out .= chr(177);break;
                case 242: $out .= chr(61);break;
                case 243: $out .= chr(190);break;
                case 244: $out .= chr(182);break;
                case 245: $out .= chr(167);break;
                case 246: $out .= chr(247);break;
                case 247: $out .= chr(184);break;
                case 248: $out .= chr(176);break;
                case 249: $out .= chr(168);break;
                case 250: $out .= chr(183);break;
                case 251: $out .= chr(185);break;
                case 252: $out .= chr(179);break;
                case 253: $out .= chr(178);break;
                case 254: $out .= chr(166);break;
                case 255: $out .= chr(160);break;
                default : $out .= chr($ch);
            }
        }
        return $out;    
    }