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

    MPS_9791

    MPS_9795

    MPS_9793

    More Photos
  • Pages

  • All categories

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

    Join 430 other followers

Archive for the ‘*nix’ Category

Debt in IT and Software Development (via: Coding Horror: Paying Down Your Technical Debt)

Posted by jpluimers on 2012/04/04

Debt and flood insurance

Thanks to Randy Glasbergen for the debt image

I love this quote from Jeff Attwood on technical debt in 2009:

periodically pay down your technical debt

and the Computer Weekely article about half a year ago:

Short-term speed may come at the price of long-term delays and cost.

Lately, I find that I need to explain Debt in relation to IT and Software Development more and more often.

We now all know what happens with the financial system when we let debt get out of control.

The same holds for your IT and Software Development.

Debts get introduced by not “playing by the rules”. The quotes are there because you can not always play nicely, and the rules are not always clear or known.

Lets give a few examples of rules that – from experience at clients – are more often than not neglected. The examples are based on Windows, but could just as easily be Mac OS X, Unix, OS/400 or anything else.

  • Make sure you use a recent Windows version
    I often see companies lagging more than one version behind (i.e. still use Windows XP or SQL Server 2000). That’s too far.
  • Don’t run your users with too many privileges (and certainly not as Administrators)
    Especially running as Administrator will get you in trouble with User Account Control (UAC) in Windows Vista and up.
  • Using directories like C:\TEMP is a no-no.
    This should be a no-brainer, but truckloads of in-company software still thinks it can write everywhere.
    I know C:\TEMP used to be the Temporary Folder some 20 years ago.
    But that was then, and this is now: Use the %TEMP% environment variable or GetTempPath function (even better: the GetTempFileName function or the .NET Path.GetTempFileName function).
    More in general for known folders, use CSIDL or KNOWNFOLDERID whenever possible. Your favourite development tool usually has a library functions for that, for instance the .NET System.Environment.GetFolderPath function.

These few were examples ranged from technically very broad to specific. There are more, but these will give you a rough idea how wide the field of debt can be. Even debt outside the realm of Technical Debt can turn out to be really expensive.

Every time you  postpone or skip a Windows version, you collect some debt in the hope (often wrongfully called expectation) that you earn more on the money/resource you just didn’t invest and putting that money/resource to use otherwise. The same holds for any other kind of debt.

The main problem with debt is not the total of the debt, it is the interest rate that makes the accrued debt grows faster than most people and organizations realize.

This is actually one of the main causes of the current world wide financial crisis, the same holds for many IT debts.

And for all kinds of debts, you often don’t know how high the interest rate will be, so the accrued value can be way beyond what you expect.

I’ve regularly seen projects collecting so much debt, that migration costs raised to thousands of hours because of it, resulting into management taking another very bad decision: rewriting the stuff from scratch. Don’t do that: Joel on Software excellently describes what happens when you do that.

What to do about it?

You might say “don’t collect debt”, but you can’t always avoid debt.

So you need to build periods where you pay off accrued debt. And you need to do that regularly, in order to avoid the interest pitfall.

This does not limit itself to software development (though that’s what I normally focus at). It covers a wide range of IT topics.

Sometimes, you can even pay your debt in advance. For instance, I was among the first to switch from Windows XP to the x64 of Windows Vista. I knew it would cause pain, but it immediately payed back by being able to use much more memory, and run more Virtual Machines at the same time. That made me more flexible and productive.

–jeroen

via: Coding Horror: Paying Down Your Technical Debt.

Posted in *nix, .NET, Delphi, Development, Opinions, Power User, Software Development, Windows, Windows 7, Windows 8, Windows Vista, Windows XP | 5 Comments »

version v3.3.4.14431 of Beyond Compare released by Scooter Software

Posted by jpluimers on 2012/03/02

About a week ago, version v3.3.4.14431 of Beyond Compare was release by Scooter Software.

For me, this is the ultimate comparison tool as it runs on Windows and Linux natively or under WINE on Mac OS.

It has a massive change list:

-----------------------------------
v3.3.4.14431      February 24, 2012
-----------------------------------

- Notable Changes
  - Fixed context menus on newer versions of Konqueror, Thunar, and Nautilus.
  - FILE-REPORT (and TEXT-REPORT, etc.) commands will now accept a saved file
    compare session name instead of a pair of files.  E.g., "file-report
    layout:side-by-side output-to:printer MySession".

- Archives
  - Fixed extracting files where a single deflate block contains more than 1MB
    of data.
  - Fixed zips showing non-existent files if a zip contained another zip and
    the outer one had additional data after the archive comment.
  - Attempting to extract a file from a zip using an unsupported compression
    algorithm now shows that as an error.
  - Split up zip error messages for "Error during extraction" and "Unsupported
    compression algorithm".

- Data Compare
  - Fixed "Extract HTML table(s)" handling of UTF-16 files.

- File Formats
  - OpenOffice default character encoding is now UTF-8.
  - Fixed "COBOL Source" format to include "Identifier" definition.
  - "Picture Files" format added CUT, GED, MSK, PFR, and TUB to mask, removed
    PAL.

- File Views
  - Fixed saving files with paths between 247-259 characters long.
  - Fixed foreground selection coloring when using white on blue system colors.
  - Added key accelerators to "Save changes" dialog.

- Folder Compare
  - Long file operations will now keep Windows from going to sleep due to
    inactivity.
  - Using "Compare to" to open a file view and then using "Next/Previous
    Difference Files" now closes the file view.

- FTP
  - Fixed support for FTP listings with filenames containing Chinese
    month/year characters.
  - Fixed parsing Comau C5G FTP listings.

- Home View
  - When editing a session, dropped files/folders are ignored unless they're
    on a path edit.
  - Expand All and Collapse All commands now affect the shared and auto-saved
    sessions nodes.
  - Fixed behavior when using "Collapse All" hides the currently selected
    session.

- Linux
  - Fixed context menus on newer versions of Konqueror, Thunar, and Nautilus.
  - Fixed Folder Compare crash when performing rules-based comparisons.
  - Fixed clicking the "Next Difference Files" link on the message panel when
    using "Next Difference" at the end of a comparison.
  - Fixed various comboboxes incorrectly allowing editing.

- Misc
  - Fixed menu checkboxes not showing on Vista and Windows 7 when using the
    Classic Theme.
  - Dropping files/folders onto a path edit no longer changes the edit if the
    drop results in a new view.
  - Added "RE Examples" buttons to Grammar Item dialog.
  - Improved Open/Save dialog handling of file type options.

- Options
  - "Customize Commands" dialog's "Default" command now checks to see if
    shortcut is already in use.

- Picture Compare
  - "Difference Offset", "Flip", and "Rotate" are now persistent session
    settings.
  - Fixed handling of DIB, MSK, and RLE bitmap files.

- Registry Compare
  - Fixed loading .reg files with a '\' before hex data.
  - Fixed loading .reg files with a ']' in a key name.

- Scripting
  - FILE-REPORT (and TEXT-REPORT, etc.) commands will now accept a saved file
    compare session name instead of a pair of files.  E.g., "file-report
    layout:side-by-side output-to:printer MySession".
  - LOG command will now create the target folder if it doesn't exist.
  - Fixed support for STRIKEOUT-RIGHT-ORPHANS in TEXT-REPORT command.

–jeroen

via: Beyond Compare ChangeLog

Posted in *nix, Power User, Windows, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008, Windows Vista, Windows XP | 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 »

Javascript PC Emulator – Technical Notes

Posted by jpluimers on 2011/08/08

Fabrice Bellard wrote a brilliant piece of code: a PC x86 Emulator running in JavaScript.

It can run JSLinux inside your (FireFox 4.x, Chrome 11+, Opera 11.11 and Internet Explorer 9) browser :)

Some links: News, FAQ, Notes and JSLinux.

–jeroen

via: Javascript PC Emulator – Technical Notes.

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

Synchronize your NTP time using pool.ntp.org: the internet cluster of ntp servers

Posted by jpluimers on 2011/07/15

If you use NTP for syncing your time, then choose pool.ntp.org as your time server:

The pool.ntp.org project is a big virtual cluster of timeservers providing reliable easy to use NTP service for millions of clients.

I use it for instance to synchronize the time on my ESXi servers.

Note: when you run Windows VMs as ESXi guests; let ESXi time-sync them through the VMware tools, and disable Windows’ own time syncing. I didn’t disable it, and my Windows VMs were consistently off by over 30 minutes.

–jeroen

via pool.ntp.org: the internet cluster of ntp servers.

Posted in *nix, ESXi4, Power User, VMware, Windows, Windows 7, Windows Vista, Windows XP | 2 Comments »

alias to have Unix list command ‘ls’ output numerical chmod permissions (via Stack Overflow)

Posted by jpluimers on 2011/04/25

Though I use Linux and Cygwin often, the discrepancy between permissions in chmod and ls still strikes me.

I mean: after all these years, does the *nix world still want newbies to learn the octal notation of file permissions and do the math themselves? Come on!

Bsaically, you can use the stat command to show the octal permissions next to the filename (so you can apply them with chmod), but sometimes it is handy to have both the chmod and ls versions next to each other.

For showing both, this awk script comes in handy.

I slightly modified it to use ls -al instead of ls -l, and condense it on one line:

ls -al|awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr($1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr($1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf("%0o%0o ",s,k);};print;}'

If you want to have it in your .bashrc or .bash_aliases, then you need to escape the double quotes and dollar signs:

alias "lsmod=ls -al|awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"

It shows me a listing like this:
$ lsmod
0200 total 47
0755 drwxr-xr-x+ 1 jeroenp None 0 Apr 11 14:00 .
1777 drwxrwxrwt+ 1 jeroenp root 0 Apr 11 09:21 ..
0700 -rwx------ 1 jeroenp None 207 Apr 11 13:50 .bash_aliases
0600 -rw------- 1 jeroenp None 4869 Apr 11 14:00 .bash_history
0755 -rwxr-xr-x 1 jeroenp None 1103 Apr 11 09:08 .bash_profile
0755 -rwxr-xr-x 1 jeroenp None 5657 Apr 11 14:00 .bashrc
0755 -rwxr-xr-x 1 jeroenp None 5663 Apr 11 09:08 .bashrc~
0755 -rwxr-xr-x 1 jeroenp None 1461 Apr 11 09:08 .inputrc
0600 -rw------- 1 jeroenp None 564 Apr 11 14:00 .joe_state
0600 -rw------- 1 jeroenp None 99 Apr 11 13:58 .lesshst
0755 -rwxr-xr-x 1 jeroenp None 792 Apr 11 09:08 .profile
0700 drwx------+ 1 jeroenp None 0 Apr 11 13:07 .ssh
0755 drwxr-xr-x+ 1 jeroenp None 0 Apr 11 13:32 install

–jeroen

via: Can the Unix list command ‘ls’ output numerical chmod permissions? – Stack Overflow.

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

NTFS-3G: NTFS driver for non-Windows stack (Linux, Mac, Android, etc)

Posted by jpluimers on 2011/02/25

After not having taken a look at NTFS for Linux for a while, I recently found out that NTFS-3G supports many platforms: Linux, Mac OS X, Android, etc.

Oh: and it supports Compressed Files too.

–jeroen

Posted in *nix, Power User | 2 Comments »

Increasing your Windows XP NTFS disk size under VMware Workstation 7

Posted by jpluimers on 2011/02/11

Searching how to increase your Windows XP NTFS partitions of Virtual Machines running under VMware Workstation 7 gets you a truckload of links trying to get you to do all sorts of  command-line like vmware-vdiskmanager and such.
That was indeed the case up till VMware Workstation 6.5, but from version 7 on, it has become much easier.
But the links with difficult steps keep appearing at the top of the search queries.

Hence this blog entry: increasing the NTFS partition size in a Windows VM is easy!

The increase is a two step process:

  1. In VMware Workstation,  increase the size of the physical disk
  2. Increase the NTFS partion on that physical disk

Step 1 has become much easier since VMware Workstation version 7, you can do it from within VMware Workstation now.
Dinesh describes this small process very well in his Expand Disk in VMware Workstation 7 blog postRead the rest of this entry »

Posted in *nix, Power User, VMware, Windows, Windows 7, Windows Vista, Windows XP | Leave a Comment »

Stack Overflow ebooks

Posted by jpluimers on 2011/02/10

Greg Hewgill published a bunch Stack Overflow ebooks and StackExchange stats.
His readme explains a bit more on the books.
The blog he maintains makes up for some nice reading too.
Be sure to read the blog entry on the ebooks.

–jeroen

via Stack Overflow ebooks.

Posted in *nix, .NET, ASP.NET, C#, C# 2.0, C# 3.0, C# 4.0, Database Development, Delphi, Delphi for PHP, Development, HTML, HTML5, Java, JavaScript, Pingback, Power User, RegEx, Scripting, SocialMedia, Software Development, SQL, SQL Server, Stackoverflow, XML/XSD | Leave a Comment »

Updating your Endian FireWall Community Edition appliance

Posted by jpluimers on 2010/11/08

When updating one of my Endian FireWall Community Edition VMs, I found out that one of my test VMs was still at version 2.2rc3.

Two important points: The update site (which you can use if you registered) tells you to follow 5 steps to keep your Endian Firewall Community up to date, but forgets to:

  1. point you to the Endian documentation on enabling SSH
  2. mention that one of the steps is conditional, and the condition is phrased “If your Endian Firewall Community is older than version 2.2“.
    Note that all the 2.2 rc versions are considered older than version 2.2, so in those cases, you also need to perform this:

Read the rest of this entry »

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

Endian –  Register EFW Community: watch your email addresses

Posted by jpluimers on 2010/10/08

Endian is a nice *nix based open source firewall appliance which has a free Community Edition (which always is a virtual appliance) and paid (either virtual or physical) edition.

It does a lot of things, including spam filtering, http caching, proxying, VPN, DHCP, routing, et cetera.
Those things are done very well, in a reasonably small footprint:

Registering for their community edition is meant to enable the on-line update mechanism for it.
It is supposed to work like this:

  1. You enter your email address
  2. They dispatch a mail to you with a verification link
  3. Clicking the verification link confirms that email address, and flags it in their database as valid for Endian Community updates
  4. You enter the same email on your Endian appliance to get updates

But using that registration is hard: their registration mechanism has at least two flaws: Read the rest of this entry »

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

Performed an VMware ESXi 4.0 to 4.1 Update: 5 minutes of work

Posted by jpluimers on 2010/10/06

Thanks to an excellent post by Peter Sebastian from Jargon Technology, it was a breeze to upgrade.

I did the upgrade using Using the vMA virtual appliance, the statements are these:

After bringing the ESXi 4.0 box into maintenance mode, I performed these steps on an SSH connection to the vMA virtual appliance: Read the rest of this entry »

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

Moving my VMs from ESX 3.5 to ESXi 4.1

Posted by jpluimers on 2010/09/23

After doing quite a bit of research and testing, these are the steps I used to move my VMs from an ESX 3.5 box to an ESXi 4.1 box. Read the rest of this entry »

Posted in Endian, ESXi4, Power User, Veeam | Leave a Comment »

Flusing the DNS cache

Posted by jpluimers on 2010/09/10

DNS is the fundament for resolving names to IP-adreesses.
Without it, no internet browsing or other connections to the outside world.

Like a lot of communication optimizations, caching improves the speed of DNS too (All programming is an exercise in caching -Terje Mathisen).

Sometimes, bad or unwanted DNS entries end up in your cache.
Those prohibit some of the communication.

Luckily, How to Flush DNS explains this for 3 platforms: Windows, Mac OSX and Linux:

  • Windows:
    ipconfig /flushdns
  • Mac OSX:
    10.5 and up: dscacheutil -flushcache
    pre 10.5: lookupd -flushcache
  • Linux:
    /etc/init.d/nscd restart

–jeroen – now happy he flushed an unwanted DNS entry from the cache

via: How to Flush DNS – Top Bits

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

Control the VMware VMs from the commandline: vmrun – the successor of vmware-cmd

Posted by jpluimers on 2010/05/19

In the process of upgrading from VMware server 1.0 to 2.0, I found out that vmware-cmd.bat has been replaced by vmrun.exe.

The command-line options are different, and this link explains the vmrun command-line options in detail (well, much better than the vmrun.exe built-in help). The official documentation is available as a PDF.

One of the changes I had to make was from: Read the rest of this entry »

Posted in *nix, Power User, VMware | 2 Comments »

TeamViewer beta for Linux is available

Posted by jpluimers on 2010/04/29

The TeamViewer team announced they have a beta version available for Linux.
The current beta is version v5.0.8252, so it has newer version 5 features.

There are installers for:

  • Red Hat, Fedora, Suse, Mandriva (32/64-Bit)
  • Debian, Ubuntu (32-Bit)
  • Debian, Ubuntu (64-Bit)

And there is a generic .tar.gz file.

You can find them their Linux download page.

With the new beta, they now cover Windows, Mac OS, Linux and the iPhone.
Very convenient indeed!

–jeroen

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

*nix – Mastering the VI editor

Posted by jpluimers on 2010/04/13

Every once in a while I need to do some text editing in a *nix environment that has a minimum toolset installed.

Which means: use VI.

VI is a versatile text editor from the early *nix days, but it is not straight forward to use.
Since I don’t use VI often enough, I tend to forget some of the commands.

Time to share my favourite VI link: Mastering the VI editor.
The link points to the basic stuff, but the page contains most of what you ever want to know about VI.

–jeroen

PS:
If possible, I install the JOE text editor on systems where I am admin.
JOE uses WordStar like key bindings, and supports UTF-8. Talking about “something old, something new” :-)

Posted in *nix, CommandLine, Development, Encoding, Power User, Software Development, Unicode, UTF-8, UTF8 | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 430 other followers