The Wiert Corner – irregular stream of Wiert stuff

Jeroen Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My work

  • My badges

  • Twitter Updates

  • My Flickr Stream

    20120216-Word-Convert-To-Text

    MPS_6399

    MPS_6398

    More Photos
  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 383 other followers

A Programmer’s Life | /* Code lines of a programmer’s life */

Posted by jpluimers on 2012/02/17

Lovely comic for this Friday afternoon:

/* Sent by Muriel Godoi */

Programmer: I developed a new way to generate random strings…

A. P.: How? It’s based on processor’s clock?

Programmer? No… Just let the trainee using the “VI” and asked him to close it…

A. P.: Effective…

–jeroen

via: A Programmer’s Life | /* Code lines of a programmer’s life */

A Programmer's Life | /* Code lines of a programmer's life */

A Programmer's Life | /* Code lines of a programmer's life */

.

Posted in Comics | Leave a Comment »

Remake of Karateka? Prince of Persia creator returns to games with remake of Karateka | VentureBeat

Posted by jpluimers on 2012/02/17

Karateka cover art

Karateka cover art

I remember playing Karateka for ages when I was at high school (yes, I’m 42 and counting <g>). Even with the bad eye-hand coordination I have, it was still fun to play (as was Lode Runner). Now it looks like there is going to be a remake of Karateka:

After a stint in film, Jordan Mechner, a legendary game developer who created The Prince of Persia blockbuster video game series, is coming back into video games to remake his 1980s hit Karateka.

Mechner created Karateka in 1984 on the Apple II computer. He made the game while attending Yale University and won kudos for the title’s realistic animations. The game sold more than 500,000 units, which is outstanding for the early days of video games.

“It is amazing to me how many people still remember Karateka and talk about it after all these years,” Mechner said in an email. “Somehow, the 1980s seem to be in the air again. People ask me about Karateka on my website all the time, and I keep seeing videos and retrospectives of the original game posted online. I was astonished when I was in Moscow at a press conference for the Prince of Persia movie opening in 2010, and Russian journalists asked questions about Karateka.”

–jeroen

via: Prince of Persia creator returns to games with remake of Karateka | VentureBeat.

Posted in About, Personal | Leave a Comment »

Google Mail Spam Filters seem to be a bit too aggressive again

Posted by jpluimers on 2012/02/16

Lately I’m finding more and more false positives in my Google Mail Spam folder.

I’ve manually catched mails from these domains:

  • ns.nl
  • barnsten.com
  • malwarebytes.org
  • apple.com
  • linkedin.com

So: if you are awaiting mail from me, please send me an SMS or tweet me.

Note I am still glad with the Google Mail SPAM filtering, as it catched very authentic looking fake messages from ING Bank, ABN AMRO Bank, xs4all internet, and numerous others.

–jeroen

Posted in About, Personal, Power User | Leave a Comment »

Chrome Google search URLs changed into a webhp redirect; no rootkit; Avast! and eggheadcafe seem involved; reproducible on one machine. What happened?

Posted by jpluimers on 2012/02/16

Somewhere the last couple of days, Google or Google Chrome has changed the default search URL.

I thought I had a webhp rootkit issue, possibly related to Avast, but it wasn’t (I posted at the Avast forums, and later replied the issue had solved itself, but I still wonder about the real cause).

What happened was that some page I had open in Google Chrome (all other web browsers were fine) forced the redirect.

I can only reproduce this on one system (that has both Avast! Antivirus installed, and Chrome open with the page http://www.eggheadcafe.com/searchform.aspx?search=Cross+Join+Excel) but not on other machines.

So far, it took me about a day of work (quarantining the machine, investigating if it was a virus, rootkit or otherwise, trying to verify this is a one off), and I still feel I don’t have the complete answer yet.

I still wonder if others have seen similar issues.

This is how it redirected

The defaults have a truckload of junk around them, but come down to the URLs below (lmgtfy is the search phrase)

It used to be of this form (which now again works, after I closed all Google Chrome pages)

The redirect made it into a longer webhp form:

The fun thing is, that if you enter the form

then you will end at the Google Search home page with the search phrase pre-filled in.
Now that is a pretty nifty “let me Google that for you” :)

–jeroen

via: Google.

Posted in Google, GoogleSearch, Power User | Leave a Comment »

Jason Southwell (from arcana) just published DuckDuckDelphi: a unit to do Duck typing in Delphi XE2 (not XE)

Posted by jpluimers on 2012/02/16

If you haven’t seen Jason announce this in the general Delphi 3rd party newsgroup or his announcement thread on the FaceBook Delphi Developer group yet, this is a definitive must read:

Jason Southwell (from arcana) just published DuckDuckDelphi: a unit to do Duck typing in Delphi XE2 (not XE):

Duck Duck Delphi

DuckDuckDelphi is an Open Source (MIT License) unit for Delphi XE2 which adds duck typing functionality to a normally strongly typed language.

Great stuff that makes a truckload of my code so much easier to maintain.

–jeroen

via arcana – DuckDuckDelphi.

(Edit: 1400 UTC+1 Sorry, wrong boolean; wrote “and” but should be “not” XE).

Posted in Delphi, Delphi XE2, Development, Software Development | 5 Comments »

There is a great Android Design – UI Overview site, but no great UI design tools for Android

Posted by jpluimers on 2012/02/15

Recently the Android Design site was launched with great explanation on how to properly design UIs for Android Apps.

Like Apple’s iOS Human Interface Guidelines and Microsoft’s User Experience Design Guidelines for Windows Phone they are a must for any mobile developer.

Together with sites like Android UI Design Patterns, and mockup stencil tools, more Android UI mockup sketch tools and stencils allow you to give prospective users an impression on how an app might be looking like when developed.

What is lacking is a set of real Android GUI design tools. The kind of tools like the Xcode Interface Builder for iOS, or Expression Blend for Windows Phone that – together with iOS PSD templates or Windows Phone design templates (and more templates) – give you a killer start.

Also note Delphi XE2 that has a great UI designer which has consistently covered Windows UI design for 15+ years, including multi-touch and gesture support, and now covers Mac OS X and iOS for HD and 3D apps (but not yet with multi-touch or gesture support).

The only design tool for Android I could find is DroidDraw that emits the XML needed for Android UIs. It is painfully slow and lacks basic things like a property window to edit properties of UI elements.

Given the number of Android app developers, there is much room for improvement.

  • Am I missing something here?
  • What kind of tools are you using?

–jeroen

via: Android Design – UI Overview.

Posted in .NET, Android, Delphi, Development, iOS Development, Mobile Development, Software Development, Windows Phone Development | 6 Comments »

What’s new in .NET Framework 4.5? [poster] (via Heikniemi Hardcoded)

Posted by jpluimers on 2012/02/14

What’s new in .NET Framework 4.5? [poster] (via Heikniemi Hardcoded)I love the “Async ja Await equal to C#” in the picture and the copy-paste re-use in this blog entry from msguy.

Jouni Heikniemi originally posted “What’s new in .NET Framework 4.5 [poster]” on 20111029, then updated the poster on 20111116.

His original poster is Finnish, and his English poster contains a small translation glitch ”Async ja Await equal to C#” (“ja” is Finnish for “and”).

Both posters are PNG filess, so msguy Anil made it into a textual document, including the translation glitch.

I love that, as it shows we are all humans :)

–jeroen

via: Bruno Leonardo Michels – Google+.

Posted in .NET, .NET 4.5, C# 2.0, C# 5.0, Software Development | 2 Comments »

Activation code for Philips SimplyShare Android App

Posted by jpluimers on 2012/02/13

From the English Philips HMP7001 User manual page 25:

 Install Philips SimplyShare on the Android device

  1. Make sure that you have connected the Android device to the Internet. EN 25
    [ Consult the user manual of your Android device for information.
  2. On the Android device, install  SimplyShare:
    a  Go to the Android Market;
    b  Search for, download, and install  SimplyShare.

Play media from the Android device

  1. Make sure that you have connected the player to the same Wi-Fi network as your Android device.
  2. On the Android device, go to  SimplyShare from the Home screen:
    SimplyShare, enter the activation code 74963893 as prompted.

Thanks Toengel for this info.

–jeroen

via: Philips HMP7001 User manual

Posted in LifeHacker, Power User | Leave a Comment »

FlightAware > BOE236 787 drawing a Boeing logo on FlightAware

Posted by jpluimers on 2012/02/11

The start of the thread comments:

Karsten Liljegren about 24 hours ago

I was one of the Boeing pilots on this record setting flight. 19 hours and 22 minutes block to block (and 10408 Nautical Miles)… The longest ETOPS endurance test flight ever!

Air Traffic Control was fantastic and very accommodating. – Thank you!

The airplane performed flawlessly. As a matter of fact – we didn’t even top off the fuel tanks.

Karsten
Boeing Test and Evaluation

A few days after it flew from KPAE to KBFI, it took a 19+ hour ETOPS test flight from KBFI to KBFI and adding a new drawing to the list of previous drawings by other aircrafts.

Some links:

–jeroen:

via: FlightAware > BOE236 787 drawing a Boeing logo on FlightAware.

BOE236 787 drawing a Boeing logo on FlightAware

BOE236 787 drawing a Boeing logo on FlightAware

Posted in Opinions, Pingback | Leave a Comment »

Soms kom je online echt oude spullen tegen van jezelf: deze uit een computercollectief nieuwsbrief van september 1997; Tips en commentaar 290997

Posted by jpluimers on 2012/02/10

Helaas is het computercollectief in de oude vorm failliet, maar ik heb wel warme herinneringen aan hun gloriedagen in de jaren ’80 en ’90 van vorige eeuw.

Opgericht in 1979, is er nu alleen nog een door Mensys gerunde webshop  (op dit moment nog steeds in houde stijl, zou dat ooit gaan wijzigen)

Dit is een stukje van me uit hun nieuwsbrief van september 1997, toen het “internet” zoals we nu kennen net een paar jaar begonnen waren en de eerste zoekmachines nog in de kinderschoenen stonden.

Toen was ik al een power user en life hacker, en zaten er meer taalvauwdten in mijn teksten dan nu :)

Even een paar puntjes die ik bij mijn zoektochten op het internet gebruik:

  • zoeken valt vaak tegen; het duurt meestal vrij lang en het is niet eenvoudig te vinden wat je zoekt
  • de ‘traditionele’ zoek-engines (yahoo, alta-vista, etc) zijn goed voor het vinden van bedrijven en dergelijke, maar niet voor het vinden van personen, technische vraagstukken, etc
  • www.dejanews.com is een zoek-engine op (bijna) alle newsgroups. Deze werkt vaak veel beter dan de traditionele zoek engines. Je zoekt hier een paar threads die over je onderwerp gaan. Vaak staan hier al genoeg verwijzingen naar sites/personen/informatie die je zoekt.
  • hou een goede favourites list bij van sites waarvan je weet dat ze voor jou waardevolle informatie hebben. Loop de lijst af en toe door om te kijken of de sites niet verhuisd zijn en zo.
  • neem een abonnement op een paar goede nieuwsbrieven en kijk eens rond op news-sites (ik heb zelf een abonnement op onder meer de nieuwsbrieven comcol, broekhuis update, web-wereld nieuws, dutchmedia, daily planet en news-sites www.webwereld.nl, www.news.com, www.techweb.com, www.pcweek.com).
  • er zijn informatieleveranciers (bijvoorbeeld Encyclopedia Britannica) waar je een abonnement op kunt nemen. Kan erg handig zijn.

De praktijk leert dat het je zo een paar uur tijd kost om iets te vinden wat je zoekt. Vraag je van te voren af of het je die tijd wel waard is en alternatieven niet beter zijn (telefoontje naar iemand waarvan je weet dat ie het weet doet ook vaak wonderen).

Niet alle bovenstaande links bestaan meer, en ook niet alle bedrijven bestaan nog in hun oude vorm. Zo heet PC Week tegenwoordig eWeek, Deja news is tegenwoordig Google Groups, en Alta Vista is van Yahoo.

–jeroen

via: Tips en commentaar 290997.

Posted in About, Personal, Power User | Leave a Comment »

Very odd cause (and solution) for VMware View Client “Connect Desktop Failed”: Event Log could not start because of Access Denied error 5.

Posted by jpluimers on 2012/02/09

Lets start post 800 by mentioning it took quite a bit of time to solve the connection problem to VDI. I hope it will help others, and if I ever run into this again myself: now I know where to look :)

Some clients make heavy use of VMware VDI (Virtual Desktop Infrastructure) which moves the desktop into the VMs in the data center.

A while ago I spent most of the day tracking down a “Connect Desktop Failed” error with VMware View Client running on a Windows 7 x64 workstation to connect to a VDI VM. It would connect to the VDI server, authenticate, start the Desktop, but could not connect to the Desktop.

The amazing thing is that the VMware view client worked fine on an XP VM workstation (with and without SNX) XP physical machine with SNX, and another Windows 7 x64 VM workstation (also with and without SNX) and Windows 7 x64 physical machine with SNX.

Clearly something was wrong with this particular Windows 7 x64 workstation that is host of most of my development VMs so I didn’t want to do a re-install.

I tried many obvious things on the Windows 7 x64 workstation:

  1. reboot
  2. disable firewall
    (that would have indicated some of the ports required by VMware view were not open: in practice not all ports mentioned in the list are used)
  3. uninstall software from various vendors that might interfere with network activity
  4. disabled virus scanner
  5. step down from VMware View Manager 5 client to VMware View Manager 4.6 client
  6. circumvented SNX (CheckPoint SSL VPN extender) making sure I was on the same WAN and later LAN of the VDI
  7. verified twice I had indeed Windows 7 SP1 applied
  8. laughed about the SSE support required by VMware view client

Since the “Connect desktop failed” does not return many English search results, I started browsing the Russian ones. Read the rest of this entry »

Posted in Power User, View, VMware | Leave a Comment »

Batch file to detect Windows version number

Posted by jpluimers on 2012/02/08

Most Batch files for detecting Windows versions try to parse the either the output from VER or the output from SYSTEMINFO, but forget that there many Windows installations are not English. Some even use WMIC, but WMIC is only available for administrators and not available some flavours like XP Home.

Languages issues are always important to watch for. The Dutch Windows XP returns Microsoft Windows XP [versie 5.1.2600] which is just one word different from the English Microsoft Windows XP [Version 5.1.2600]. Other languages may differ even more.

This batch file tries to circumvent the language differences, uses VER and works at least with Dutch and English Windows versions of XP and 7, most likely with many other languages and versions as well.

On a Windows XP SP3 machine, it lists WindowsVersion=5.1.2600 and on a Windows 7 SP1 machine it lists WindowsVersion=6.1.7601.

One possible addition would be to detect x64 or x86.

The detection assumes that VER will emit the version in [angle] brackets, and uses two batch file for loops to get the text in between them using the tokens and delims for loop parameters in the first for loop right behind the begin label and the second for loop right after the parse1 label.

Then it splits the remaining text using spaces at the parse2 label, and takes the right most portion using the shift command at the parse3 label.

Many thanks to Rob van der Woude for a lot of interesting batch file documentation. Read the rest of this entry »

Posted in Software Development, Power User, Windows 7, Windows XP, Scripting, Batch-Files, Windows | Leave a Comment »

Outlook signature locations

Posted by jpluimers on 2012/02/07

When Google searching, most results for the Outlook 2003 Signature Folder Location AppData give you the wrong folder.

They mix environment keys like UserName, UserProfile, but should use AppData as that has been the base since at least Windows XP.

This is the correct folder for any Outlook version (2003, 2010, etc): %appdata%\Microsoft\Signatures

Making sure you use the right environment variable is very important, especially in large Windows based environments that often use roaming profiles and a mix of Windows environments.

For instance, at a client they have a mixed environment of Windows XP and Windows 7, with separate AppData locations for the two on a LAN:

  • Windows XP:
    \\server\DFS\share\Application Data
  • Windows 7:
    \\server\DFS\share\Application Data.v2

There is a very nice Wikipedia article on the Windows Environment variable that explains this situation in the synopsis.

–jeroen

Posted in Batch-Files, Development, Power User, Scripting, Software Development, Windows, Windows 7, Windows Vista, Windows XP | Leave a Comment »

I really need to take some time check out MediaMonkey, MediaPortal and XBMC for my HTPC

Posted by jpluimers on 2012/02/06

Software updates – MediaMonkey 4.0.2 build 1462 | Electronics | Tweakers.net Meuktracker.

Software updates – MediaPortal 1.2.2 | Electronics | Tweakers.net Meuktracker.

Software updates – XBMC Media Center 11.0 bèta 1 | Electronics | Tweakers.net Meuktracker.

Posted in Power User | Leave a Comment »

Mini-DisplayPort on New Dells: Resolving issues with output to projectors in Windows 7

Posted by jpluimers on 2012/02/03

Interesting observation at IronGeek on using hooking a Dell XPS L502X laptop to a VGA beamer:

After doing some playing around, I figured out it would not connect to a monitor or projector that did not send EDID or DDC2 info.

Lesson learned: if you run a Windows 7 laptop other than a Mac, and the laptop has a Mini DisplayPort adapter (like a Dell XPS L502X) and want it to connect to a VGA monitor, then get the StarTech model MDP2VGA adapter. It just always works, whereas a Mac Mini DisplayPort to VGA adapter won’t work on systems not providing EDID or DDC2 info.

–jeroen

via Mini-DisplayPort on New Dells: Resolving issues with output to projectors in Windows 7.

Posted in LifeHacker, Power User | Leave a Comment »

:: Strip HTML Tags :: Online Tools

Posted by jpluimers on 2012/02/02

Handy when copy-pasting stuff from the Web or Word Processor and your tools keep too much formatting:

HTML Tags Stripper is designed to strip HTML tags from the text. It will also strip embedded JavaScript code, style information (style sheets), as well as code inside php/asp tags ()

Edit:

John Kaster indicated that http://ckeditor.com/demo works nicely too, but I could not get their “paste from word” to emit nice clean un-styled HTML for me.

WordOff does work, and cleans away all the HTML tags (I with it didn’t clean structure tags and anchor tags, which you can keep with HTML Tags Stripper).

–jeroen

via :: Strip HTML Tags :: Online Tools.

Posted in Development, HTML, Power User, Software Development, Web Development | Leave a Comment »

gemak dient de mens, maar niet bij de OV Chipkaart

Posted by jpluimers on 2012/02/01

Net een mail van de NS gehad:

Wij hebben in de nieuwsbrief van 19 januari j.l. aan Jaarkaarthouders en contactpersonen van NS Zakelijk onjuiste informatie vermeld over in- en uitchecken in bus, tram en metro.
Hierdoor is verwarring ontstaan. Onze excuses hiervoor.
U treft in deze nieuwsbrief de correcte informatie aan over in- en uitchecken in bus, tram en metro.
Tevens hebben wij deze juiste informatie op onze site gezet.

Wanneer niet in- en uitchecken maar uw abonnement tonen
Veel vervoerders (bus, tram en metro) hebben het reizen via in- en uitchecken ingevoerd. Het kan echter zijn dat de OV-Chipkaartlezer het aanvullende stad- en streekabonnement bij het Jaartrajectabonnement of het OV-deel bij het OV-Jaarabonnement, niet herkent. Daardoor kan mogelijk onterecht saldo afgeschreven worden.
In dat geval kan de vervoerder het in- en uitchecken niet verplicht stellen en moet het NS-abonnement als zichtkaart worden gebruikt (dus tonen aan de bestuurder of controleur en niet in- en uitchecken via de kaartlezer).
Bij de volgende vervoerders is in- en uitchecken met een Jaartraject-abonnement, OV-Jaarabonnement nog niet mogelijk zonder dat er saldo wordt afgeschreven. U dient hier uw kaart te tonen aan de bestuurder of controleur:

  • Limburg, gehele provincie / Veolia Transport
  • Brabant, gehele provincie / Veolia Transport (Brabantliner)
  • Gelderland “Achterhoek” / Arriva
  • Gelderland “Rivierenland” / Arriva
  • Gelderland “Veluwe” / Syntus
  • Overijssel “Twente” / Syntus
  • Overijssel “Midden Overijssel” / Syntus
  • Zuid-Holland “Drechtsteden en Alblasserwaard” / Arriva
  • Zuid-Holland “Hoekse Waard” / Arriva
  • Stadsregio Amsterdam “Waterland” / EBS

Indien er een negatief saldo ontstaat, kan het NS-abonnement niet gebruikt worden in bus, tram en metro. Reizen met de trein blijft echter wel gewoon mogelijk. Door het saldo aan te vullen tot een positieve geldwaarde wordt een mogelijke blokkade voor reizen in bus, tram en metro weer opgeheven.

Het gamek van de OV Chipkaart wordt weer eens teniet gedaan doordat een aantal use cases van te voren niet bedacht, ontwikkeld en getest zijn.

Dit nog afgezien van het omslachtige bijboeken van een incidentele Fyra toeslag.

Stel je voor dat het leven er met de OV Chipkaart echt makkelijk op was geworden, dan hadden we hier niets meer over te klagen, en dat kan toch niet :)

–jeroen

Posted in LifeHacker, Opinions | Leave a Comment »

Free: German HTML5 Cheat Sheet (via Google Translate)

Posted by jpluimers on 2012/02/01

While speaking at the German BASTA 2011 Fall conference, I noticed a German HTML 5 Cheat Sheet.

I recently found out that a PDF and XPS of that sheet is available.

Here is the English translation of the German download page (I did some editing on the Google Translate result):

Free: HTML5 Cheat Sheet

Know-how | 06/27/2011

MSDN Germany has put on line a cheat sheet with the most important new HTML5 tags and attributes. The handy two-page information informs web developers about how to use the audio, video and canvas element through JavaScript, what CSS3, and geolocation can provide you with and how websites with “Pinned Sites” can become even more useful. Simply download the free PDF (2.17 MB) or XPS file (601 KB), print it, and place it next to your keyboard!

Note that the PDF and XPS are German, but very handy even though your German is not perfect.

–jeroen

via: Google Translate.

Posted in Development, HTML, HTML5, Software Development, Web Development | Leave a Comment »

The calculators that got me into programming (via: calculators : Algorithms for the masses – julian m bucknall)

Posted by jpluimers on 2012/01/31

I hadn’t visited Julian M Bucknall’s blog for a while, so I just found out he is a calculator collector, and posted a few calculator posts.

He’s much better at writing and narrating than I am, but lets give it a try to see how his posts reminded me of my high school days, what calculators I used back then and how it got me into computing.

Back since I learned to count, math related subjects always worked better for me than for instance language related ones.

It might have to do with my dad. He was a financial economist, so in his job he was juggling with numbers. At home there were ledgers for bookkeeping, slide rules (I inherited his old slide rule, which I still have somewhere in our basement), and over time various types of calculators. He used calculators in the 70s, programmable calculators and a HP 12C programmable financial calculator in the early 80s and small handheld computers in the mid 80s. I remember teaching him both Lotus 1-2-3 and Microsoft Excel later on (at work they didn’t have Visicalc, as they had an Exidy Sorcerer at work that didn’t do spreadsheets).

I have a slightly younger brother with an IQ of almost 50, so my dad bought him a Little Professor in the early 80s to see if his counting skills improved. It didn’t work; he still cannot calculate beyond 20 most of the times and rarely beyond 100. But it was a nice experiment. And he has skills other people don’t have.

Back then, my father worked for the Dutch Ministry of Economic Affairs in working on the subject of consumer loans (he was a strong proponent of legislation protecting individuals from getting bad loans, and very much in favour of publishing netto costs for consumer credit; in fact he was among the first to notice that Dirk Scheringa was trying to lure people in way too much debt against way too high interest rates).

In his department, they standardized on Texas Instruments financial calculators. He had a Texas Instruments TI-59. It was programmable, and took him forever to program, but he was very handy at it. The TI-59 had off-line storage through magnetic cards (which was quite unique, the HP 65 - which was also programmable – had it first, but was twice as expensive). One of the cool programmability features was that it could record keystrokes like they were macros. That alone could speed up work a lot. Finally you could fit TI-59 ROM modules, including one with extra math functions. Thad one made his life a lot easier.

I found the TI-59 interesting, but my English wasn’t good enough yet to be able to learn programming with it. Back then in The Netherlands, you didn’t learn English at primary school, so the first time I got taught English was at age 12, and the first time I got German and French was at age 14.

Ever since I was a little kid, we would go to Germany on holidays (it’s a long but and nice story, maybe in a later blog), with almost yearly camping near Almensee, Bad Dürkheim. The result was that – unlike my school mates – I spoke German when going to high school, and learned that super markets – like hit.de – in Germany would sell way outside the range of grocery shops did in The Netherlands: magazines, music on LP/EP/Single/Casette, household tools, etc.

One of the things back then was that technical literature was either German or English. And tech stuff was way cheaper and abundant in Germany than in The Netherlands.

So when going to high school, I spoke German, and when entering the second class, I needed an electronic calculator. When I saw what they offered at the school and Dutch shops and the price they asked for calculators, I quickly decided I wanted to buy my own calculator during the next summary holiday in Germany.
Most kids getting their calculator from school either had calculators with VFD displays (which ate batteries like crazy) like the the Casio FX-20 or “simple” scientific LCD calculators like the Texas Instruments TI-30LCD (with an ugly hard plastic enclosure and nasty click type buttons). Both had basic scientific calculations, like Sin, Cos, Tan, Log, Ln (and their inverse), square, square root, one over, y powered by x, one memory and a few other bits. But only 8 displayable digits (which sucks when you loose 2 because of exponential notation). Lots of functionality was lacking of which I didn’t know the details back then, but I saw people in senior years struggling with them like mad working around the limitations.

I wanted something better, which was tough to get, as the best you could buy in The Netherlands were the Casio FX-82 and Casio FX-100, which were at least twice as expensive as the FX-20 and just as cluncky. So only the kids with rich parents had them. On top of the FX-20 they had some compelling features like fractions (only the FX-100), representations (scientific, fixed decimal, engineering, normal), trigonometric functions in degrees and radians, 6 levels of parentheses, statistics functions, polar to rectangular conversion and back, and a bunch more smaller things. They had either 8+2 (FX-82) or 10+2 (FX-100) digits which was neat: finally you could see the precision in which they were operating. In fact they internally operated at 12 digits which you could see by multiplying with 10, then subtracting the integer part.

I recently found out that the successors of these machines (FX-260 at CasioEducation.com) are still being sold, including a manual describing the FX-82Solar, FX-85B, FX-260Solar and FX-280 which basically says there is almost no changed functionality since the FX-82. How’s that for 30 years of progress :)

The next summer holiday, I did a price comparison. Casio calculators in Germany were at least 30 percent cheaper than in The Netherlands, and there were even more choices than the summer before especially in department stores like Karstadt (now Arcandor and in bankruptcy). I was like a kid in a candy store, just the candies were a bit more expensive.

So I used some of the money I earned the summer before (peeling flower bulbs) in Germany during our holiday to buy a Casio FX 550 (on the left), which had 10+2 digits, whereas the Casio FX 350 (on the right) had 8+2. They had almost identical functionality to the FX-82 and FX-100 with one tiny addition: hyperbolic trigonometric functions. Buth they didn’t use AAA batteries, so they were not as clunky. And both had fractions (which the FX-82 hadn’t).

In the mean time, they department where my dad worked had switched from his Texas Instruments TI-59 to a Sharp PC-1210, which was the predecessor of the Sharp PC-1211 and shared the same peripherals (casette interface – which my dad had – and printer – which my dad didn’t have). The  TRS-80 PC1 was in fact a Sharp PC-1211 with a different label. Radio Shack was very popular in the UK and US, whereas Sharp was very popular in the rest of the world. Note that the TRS-80 pocket computer is very different from the TRS-80 Model I micro computer system from 1977.

I was 13 now, and my English was slightly better than non existent, so I could help my dad program his Sharp PC 1210 pocket computer. It was fun, as I learned the BASIC programming language, and how to cram things like a small trinangle calculation program (input 3 properties of a triangle, then calculate the other 3) into 400 bytes of programmable memory.

Since it was my first experience to programming, it was also my first encounter to bugs, both of my own and of the PC-1210 itself. For instance, it could overflow its programmable memory, thereby changing some of the variables (that were somehow overlapping in storage), allowing you to display symbols that could not be entered by keyboard, nor converted by functions.

In the mean time, we were getting more advanced math (with a bit of statistics), and started with economics (both business economics and general economics), chemistry (which I later tried to study at university) and physics. That with my exposure to binary and hexadecimal got me to buy another calculator: a Casio FX-115. Next to decimal, it did binary, octal and hexadecimal including conversions between them and the operators AND, OR, XOR, NOT, XNOR and negation. The big drawback was that it was solar only, and would not work in low light conditions.

At high school we had only a few really good match teachers. One of them taught me that 22/7 and 355/113 are continuous fractions estimating pi, and how to approach problems in a structural approach (analyze, deduce, etc). Another one introduced me into the computer lab (originally meant for the 2 senior years, but they let me in anyway).

There they had Apple ][ Europlus machines: a whopping 10 of them for a school with 1000 students was magnificent in the early 80s. 2 of them had a Z80 They ran Applesoft BASIC and Integer BASIC from ROM so my BASIC knowledge from the Sharp PC-1210 came in handy. Also two of the machines had a Z-80 Softcard in it that not only allowed it to display 80 columns, but also supported 16k of bank switched memory, and a Zilog Z80 processor that ran CP/M. There was a Turbo Pascal 1.0 for it that was way better than the optional Apple Pascal (which was based on UCSD Pascal and much slower than Turbo Pascal). That really got me into programming, on which I will write later (probably much later <g>) and gave me a big Deja Vu when seeing virtual machine based programming environments like the Java VM and .NET CLR that are essentially based on the p-code systems on which UCSD Pascal was based.

After lending the Casio 115M to a school mate, it disappeared (getting the money back through insurance was a difficult thing because you could not get them in The Netherlands, and the hoopla of having them accept a Germany cash receipt in stead of a full written receipt was a pain) led me to my final calculator which I got during the autumn break: a Casio 415M dual power calculator: both solar and a battery. It was almost identical to the Casio 415, I think the only difference was the dual power. As you can see on a more elaborate Casio 415M page, it had extra keys in the cover that added many functions: all kinds of conversions (temperature, volume, weight, pressure, etc), physical constants (gravity, lightspeed, Avogadros number, etc). I only recently disposed of it, as the flat cable between the cover and the machine broke. How’s that for a 25 year old piece of equipment!

Oh while on the Casio topic: high school was also the place where I met a lot of international people that followed International Baccalaureate, and where I read The Hitchhiker’s Guide to the Galaxy just two years after I bought a neat Casio Universal Calendar digital watch. My first and last :)

–jeroen

via: calculators : Algorithms for the masses – julian m bucknall.

calculator research sources:

Posted in About, Development, Personal, Software Development | Leave a Comment »

An expedition camera backpack, the LowePro DZ100 « Stephen’s Stuff

Posted by jpluimers on 2012/01/30

Not long before our Antarctic trip about 10 weeks ago, I bought myself a waterproof expedition grade backpack: the LowePro DryZone 100 through the Kamera Express Super Store in Rotterdam.

It is a great bag, and the DryZone works really well, provided you lubricated the TIZIP watertight zipper before you use the bag a couple of times, and keep doing that regularly.

The little piece of paper that guides you through it is not that well written, but luckily there are a few on-line guides how to do this properly.

Make sure you always close the TIZIP zipper to the end, that is the only way it will be completely watertight.

There are many reviews of this bag (for instance here and here), so I will keep it short:

  • It is watertight
  • Carrying it by hand and on your back for a full day is a breeze, even when it is completely full
  • Grabbing your stuff is a bit time consuming: opening the TIZIP takes a while
  • It fits an awful lot of equipment
  • It won’t tip over when you put on the ground in the upright position

My recommendation is to buy the yellow/black color combination, not the grey/black color combination.
Yellow is easier to find when you drop it in the water.
Though on our antarctic trip, anything other than white was easy to find :)

This is what Nikon stuff I took to the Antarctic in this bag:

(Thanks Ken Rockwell for all the nice reviews of all these bodies and lenses.
Yes I know there are better lenses and better bodies, and an easier Easytag bluetooth GPS module that pairs with receivers on multiple cameras, but this is what I wanted to afford when I bought them piece by piece).

At the time I bought the DZ100 backpack, you could not get the DZ200 in The Netherlands. The DZ200 is about 30% bigger (volume wise).

–jeroen

via: An expedition camera backpack, the LowePro DZ100 « Stephen’s Stuff.

Posted in About, LifeHacker, Personal, Power User | Leave a Comment »

automatic logon in Windows 2003

Posted by jpluimers on 2012/01/27

At a client that still runs Windows Server 2003 (despite the fact that it is in the extended support phase now), I needed to enable automatic logon (one of the tools they run sometimes fails when nobody is logged on).

This was a bit more tricky than just reading How to turn on automatic logon in Windows and following these steps:

To use Registry Editor (Regedt32.exe) to turn on automatic lsogon, follow these steps:

  1. Click Start, and then click Run.
  2. In the Open box, type Regedt32.exe, and then press ENTER.
  3. Locate the following subkey in the registry:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  4. Double-click the DefaultUserName entry, type your user name, and then click OK.
  5. Double-click the DefaultPassword entry, type your password, and then click OK.NOTE: If the DefaultPasswordvalue does not exist, it must be added. To add the value, follow these steps:
    1. On the Edit menu, click New, and then point to String Value.
    2. Type DefaultPassword, and then press ENTER.
    3. Double-click DefaultPassword.
    4. In the Edit String dialog, type your password and then click OK.

    NOTE: If no DefaultPassword string is specified, Windows automatically changes the value of the AutoAdminLogon key from 1 (true) to 0 (false), disabling the AutoAdminLogon feature.

  6. On the Edit menu, click New, and then point to String Value.
  7. Type AutoAdminLogon, and then press ENTER.
  8. Double-click AutoAdminLogon.
  9. In the Edit String dialog box, type 1 and then click OK.
  10. Quit Registry Editor.
  11. Click Start, click Shutdown, and then type a reason in the Comment text box.
  12. Click OK to turn off your computer.
  13. Restart your computer. You can now log on automatically.

Since this depends on some registry settings, you need to make sure they are actually set.
And logging on as someone else will reset the DefaultUserName registry setting.

The article points to another article on “AutoAdminLogon looses DefaultUserName” to solve this using REGINI (and optionally REGDMP which can provide sample output for REGINI), but there is a much easier solution using RegEdit which – as Rob van der Woude points out – can be used unattended as well (besides: REGDMP cannot be downloaded any more, and REGINI requires an additional download).

This is how to do force the DefaultUserName to be reset after logon using RegEdit:

  1. Open an explorer Window in “%ALLUSERSPROFILE%\Start Menu\Programs\Startup”
  2. Create a batch file “run-RegEdit-DefaultUserName.bat” there with this content:
    regedit /s Administrator-DefaultUserName.bat
  3. Create a text file “Administrator-DefaultUserName.reg” in the same directory with content like this:
    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
    "DefaultUserName"="Administrator"

Replace “Administrator” with the username you are acutally using.

–jeroen

Via: How to turn on automatic logon in Windows.

Posted in Power User | 2 Comments »

.NET/C#: Using IDisposable to restore temporary settrings example: TemporaryCursor class

Posted by jpluimers on 2012/01/26

This is WinForms code from a long time ago, but the concept of using an IDisposable interface to do resource cleanup and restore a temporary setting is very valid.

You use the code below like this:

        private void myMethod()
        {
            // set busy cursor
            using (IDisposable waitCursor = new TemporaryCursor(this, System.Windows.Forms.Cursors.WaitCursor))
            {
                // logic that takes a long while
            }
        }

The code below implements the TemporaryCursor class; you can assign any System.Windows.Forms.Cursors item you want.

It restores the cursor upon these three “events”:

Most often the IDispose pattern is being used to make sure that resources get cleaned up. If you think of a wait cursor as a temporary resource, this example becomes much easier to remember.

Of course this is not limited to the System.Windows.Forms realm, you can just as well use this for non-visual temporaries, and other kinds of UIs like ASP.NET, WPF or SilverLight.

using System.Windows.Forms;

namespace bo.Windows.Forms
{
    public class TemporaryCursor : IDisposable
    {
        private Control targetControl;
        private Cursor savedCursor;
        private Cursor temporaryCursor;
        private bool disposed = false;

        public TemporaryCursor(Control targetControl, Cursor temporaryCursor)
        {
            if (null == targetControl)
                throw new ArgumentNullException("targetControl");
            if (null == temporaryCursor)
                throw new ArgumentNullException("temporaryCursor");
            this.targetControl = targetControl;
            this.temporaryCursor = temporaryCursor;
            savedCursor = targetControl.Cursor;
            targetControl.Cursor = temporaryCursor;
            targetControl.HandleDestroyed += new EventHandler(targetControl_HandleDestroyed);
        }

        void targetControl_HandleDestroyed(object sender, EventArgs e)
        {
            if (null != targetControl)
                if (!targetControl.RecreatingHandle)
                    targetControl = null;
        }

        // public so you can call it on the class instance as well as through IDisposable
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (null != targetControl)
                {
                    targetControl.HandleDestroyed -= new EventHandler(targetControl_HandleDestroyed);
                    if (temporaryCursor == targetControl.Cursor)
                        targetControl.Cursor = savedCursor;
                    targetControl = null;
                }
                disposed = true;
            }
        }

        // Finalizer
        ~TemporaryCursor()
        {
            Dispose(false);
        }
    }
}

–jeroen

Posted in .NET, C#, C# 2.0, C# 3.0, C# 4.0, Development, Software Development, Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio and tools, WinForms | 2 Comments »

C# text file deduping based on trimmed lines (via: Stack Overflow)

Posted by jpluimers on 2012/01/25

A while ago, I needed to analyze a bunch of files based on the unique trimmed lines in them.

I based my code on the C# Tee filter and the StackOverflow example of C# deduping based on split.

It is a bit more extensive than strictly needed, as it has a few more commandline arguments that come in handy when processing files on the console:

DeDupe - Dedupes a file into unique lines (only the first occurance of a line is kept) standard output
Lines are terminated by CRLF sequences
C# implementation januari 5th, 2012 by Jeroen Wiert Pluimers (http://wiert.wordpress.com),

DeDupe [-i | --ignore] [-t | --trim] [-f | --flush] [-l | --literal] [-? | --h | --help | /?] [file0] [...]
   Example:
 DeDupe --trim file0.txt file1.txt
   Dedupes the appended content of file0.txt and file1.txt into standard output

-t | --trim                  Will trim the lines before considering duplicates
-f | --flush                 Flushes files every CRLF
                               (setting is per tee instance)
-i | --ignore                Ignore cancel Ctrl+C keypress: see UnixUtils tee
-l | --literal               Stop recognizing flags, force all following filenames literally
-? | --h  | /? | --help      Displays this message and immediately quits

Duplicate filenames are quietly ignored.
If no input filenames are specified, then standard input is used
Press Ctrl+Z (End of File character) then Enter to abort.

Here is the source code:

using System;
using System.IO;
using System.Collections.Generic;

namespace DeDupe
{
    class Program
    {
        static void help()
        {
            Console.Error.WriteLine("DeDupe - Dedupes a file into unique lines (only the first occurance of a line is kept) standard output");
            Console.Error.WriteLine("Lines are terminated by CRLF sequences");
            Console.Error.WriteLine("C# implementation januari 5th, 2012 by Jeroen Wiert Pluimers (http://wiert.wordpress.com),");
            Console.Error.WriteLine("");
            Console.Error.WriteLine("DeDupe [-i | --ignore] [-t | --trim] [-f | --flush] [-l | --literal] [-? | --h | --help | /?] [file0] [...]");
            Console.Error.WriteLine("   Example:");
            Console.Error.WriteLine(" DeDupe --trim file0.txt file1.txt");
            Console.Error.WriteLine("   Dedupes the appended content of file0.txt and file1.txt into standard output");
            Console.Error.WriteLine("");
            Console.Error.WriteLine("-t | --trim                  Will trim the lines before considering duplicates");
            Console.Error.WriteLine("-f | --flush                 Flushes files every CRLF");
            Console.Error.WriteLine("                               (setting is per tee instance)");
            Console.Error.WriteLine("-i | --ignore                Ignore cancel Ctrl+C keypress: see UnixUtils tee");
            Console.Error.WriteLine("-l | --literal               Stop recognizing flags, force all following filenames literally");
            Console.Error.WriteLine("-? | --h  | /? | --help      Displays this message and immediately quits");
            Console.Error.WriteLine("");
            Console.Error.WriteLine("Duplicate filenames are quietly ignored.");
            Console.Error.WriteLine("If no input filenames are specified, then standard input is used");
            Console.Error.WriteLine("Press Ctrl+Z (End of File character) then Enter to abort.");
        }

        static void OnCancelKeyPressed(Object sender, ConsoleCancelEventArgs args)
        {
            // Set the Cancel property to true to prevent the process from
            // terminating.
            args.Cancel = true;
        }

        static List<String> filenames = new List<String>();

        static void addFilename(string value)
        {
            if (-1 == filenames.IndexOf(value))
                filenames.Add(value);
        }

        static bool trimLines = false;
        static bool flushFiles = false;
        static bool stopInterpretingFlags = false;
        static bool ignoreCtrlC = false;

        static int Main(string[] args)
        {
            try
            {

                foreach (string arg in args)
                {
                    //Since we're already parsing.... might as well check for flags:
                    if (stopInterpretingFlags)  //Stop interpreting flags, assume is filename
                    {
                        addFilename(arg);
                    }
                    else if (arg.Equals("/?") || arg.Equals("-?") || arg.Equals("-h") || arg.Equals("--help"))
                    {
                        help();
                        return 1; //Quit immediately
                    }
                    else if (arg.Equals("-t") || arg.Equals("--trim"))
                    {
                        trimLines = true;
                    }
                    else if (arg.Equals("-f") || arg.Equals("--flush"))
                    {
                        flushFiles = true;
                    }
                    else if (arg.Equals("-i") || arg.Equals("--ignore"))
                    {
                        ignoreCtrlC = true;
                    }
                    else if (arg.Equals("-l") || arg.Equals("--literal"))
                    {
                        stopInterpretingFlags = true;
                    }
                    else
                    {	//If it isn't any of the above, it's a filename
                        addFilename(arg);
                    }
                    //Add more flags as necessary, just remember to SKIP adding them to the file processing stream!
                }

                if (ignoreCtrlC) //Implement the Ctrl+C fix selectively (mirror UnixUtils tee behavior)
                    Console.CancelKeyPress += OnCancelKeyPressed;

                HashSet<string> keys = new HashSet<string>();
                Int64 index = 0;

                using (StreamWriter writer = new StreamWriter(Console.OpenStandardOutput()))
                {
                    if (filenames.Count == 0)
                        using (StreamReader reader = new StreamReader(Console.OpenStandardInput()))
                        {
                            processInputFileReader(keys, writer, reader, ref index);
                        }
                    else
                        foreach (String filename in filenames)
                        {
                            using (StreamReader reader = new StreamReader(filename))
                            {
                                processInputFileReader(keys, writer, reader, ref index);
                            }
                        }
                    writer.Flush();
                }

            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(String.Concat("DeDupe: ", ex.Message));  // Send error messages to stderr
            }

            return 0;
        }

        private static void processInputFileReader(HashSet<string> keys, StreamWriter writer, StreamReader reader, ref Int64 index)
        {
            string line = readLine(reader);
            while (!string.IsNullOrEmpty(line))
            {
                string candidate = line;
                if (keys.Add(candidate))
                {
                    writer.WriteLine(line);
                    index += line.Length + Environment.NewLine.Length;
                    if (flushFiles)
                        writer.Flush();
                }

                line = readLine(reader);
            }
        }

        private static string readLine(StreamReader reader)
        {
            string line = reader.ReadLine();
            if (null != line)
                if (trimLines)
                    line = line.Trim();
            return line;
        }
    }
}

–jeroen

via: C# text file deduping based on split – Stack Overflow.

Posted in .NET, C#, C# 2.0, C# 3.0, C# 4.0, Development, Software Development | Leave a Comment »

Upgrading a Windows XP machine with Visual Studio 2005: KB2251481 Security Update for Microsoft Visual Studio 2005 Service – Microsoft Answers

Posted by jpluimers on 2012/01/24

Every once in a while you need to maintain really old stuff, and start update an old VM.

In case of Visual Studio 2005, the Windows Update and Microsoft Update will get you into a condition where it cannot install ”Security Update for Microsoft Visual Studio 2005 Service Pack 1 XML Editor (KB2251481)“. Not even the direct download will install.

The search for ”some updates were not installed” “Security Update for Microsoft Visual Studio 2005 Service Pack 1 XML Editor (KB2251481)” pointed me to the solution:

There are two versions of KB2251481 June and August. When the June version is installed, the August version refuses to install.

Uninstall the original KB2251481 from the Control Panel. Then reinstall the August version.

The KB2251481 article mentions this only for the “Microsoft Visual Studio 2005 Premier Partner Edition SP1″, but it happens with other Visual Studio 2005 editions as well.

–jeroen

via: KB2251481 Security Update for Microsoft Visual Studio 2005 Service – Microsoft Answers.

Posted in .NET, Development, Software Development, Visual Studio 2005, Visual Studio and tools | Leave a Comment »

the series “Dogbert’s Tech Support: How May I Abuse You” #dilbert #fun

Posted by jpluimers on 2012/01/23

Last weekend the series “Dogberts Tech Support: How May I Abuse You“, got a new episode:

Dilbert comic 2011-01-22: Dogbert's Tech Support: How may I abuse you

Dilbert comic 2011-01-22: Dogbert's Tech Support: How may I abuse you (Image courtesey of Dilbert.com)

It is great to see that since 1998, not much has changed :)

–jeroen

via: Dilbert comic of 2011-01-22: Dogbert’s Tech Support

Posted in Comics | Leave a Comment »

ssh-keygen: password-less SSH login script (via Novell User Communities)

Posted by jpluimers on 2012/01/20

I usually get at least one step wrong when doing ssh-keygen and transferring they public key by hand, so here is a nice script that helps you install a private/public keypair for remote SSH login without having to type a remote password.

Note: it is always a good idea to have a local passphrase for protecting the private key.

–jeroen

ssh-keygen: password-less SSH login script | Novell User Communities.

Posted in *nix, Power User | Leave a Comment »

Batch file examples – Wait using CHOICE (via: RobVanDerWoude.com)

Posted by jpluimers on 2012/01/19

Most batchfile wait examples require a functioning network connection.

Just in case you haven’t, Rob van der Woude has a nice example on his batch file Wait page using the Choice command.

The bummer is: choice is available on almost all Windows versions (actually since DOS 6.x), but not on Windows XP, and not on Windows 2000, but it is there in Windows Vista and up where you can use the timeout command :(

Alternatives can be found in the other examples on Rob’s wait page.

CHOICE – Wait.bat: Uses CHOICE to wait for a specified number of seconds.

By using REM | before the CHOICE command, the standard input to CHOICE is blocked, so the only “way out” for CHOICE is the time-out specified by the /T parameter.

The idea was borrowed from Laurence Soucy, I added the /C parameter to make it language independent.

@ECHO OFF
IF "%1"=="" GOTO Syntax
ECHO.
ECHO Waiting %1 seconds
ECHO.
REM | CHOICE /C:AB /T:A,%1 &gt; NUL
IF ERRORLEVEL 255 ECHO Invalid parameter
IF ERRORLEVEL 255 GOTO Syntax
GOTO End
:Syntax
ECHO.
ECHO WAIT for a specified number of seconds
ECHO.
ECHO Usage: WAIT n
ECHO.
ECHO Where: n = the number of seconds to wait (1 to 99)
ECHO.
:End

–jeroen

via: Batch file examples – Wait.

Posted in Batch-Files, Development, Scripting, Software Development | Leave a Comment »

TFS 2010 login: prefix “snd\”, suffix “_cp” (via Ahmed Al-Asaad’s Blog)

Posted by jpluimers on 2012/01/18

I keep forgetting this:

When logging in to CodePlex using TFS, then you need to prefix your username with “snd\” and suffix it with “_cp“.

So if your CodePlex username is wiert, then your login becomes snd\wiert_cp.

Somehow, this used to be more prominently on the codeplex site, but it isn’t any more.

–jeroen

via: TFS2010 « Ahmed Al-Asaad’s Blog.

Posted in CodePlex, Development, Source Code Management, TFS (Team Foundation System) | Leave a Comment »

Dear Mister Jones » How to insert a carriage return with batch

Posted by jpluimers on 2012/01/17

When appending multiple text files to a big one (for instance to post-processing on the total: dedupe, sort, gather statistics, etc) you often will find one or more of the source files missing a CRLF.

So you will have to insert those carriage return line feed combo’s manually.

Well, mr Jones points out that:

there’s actually an easy way to simply echo a carriage return and line feed instead, by just issuing an echo command followed immediately by a period (no space in between), like this:

echo. >> somefile.txt

Thanks Jared!

–jeroen

via: Dear Mister Jones » How to insert a carriage return with batch.

Posted in Batch-Files, Development, Scripting | Leave a Comment »

Is #Trello #GTD on Steroids?

Posted by jpluimers on 2012/01/16

Will start playing with Trello checking if it is indeed GTD on steroids.

–jeroen

Via: Organize anything, together. | Trello.

Posted in LifeHacker, Power User | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 383 other followers