The Wiert Corner – irregular stream of stuff

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

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

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

    Join 1,854 other subscribers

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, Technical Debt, Windows, Windows 7, Windows 8, Windows Vista, Windows XP | 9 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 [WayBack] is a nice script called trusted-key-exchange.sh that helps you install a private/public keypair for remote SSH login without having to type a remote password.

Edit:

The script uses ssh-copy-id to actually perform the copying of the public key portion to the destination server. So you can also use this command to do that yourself:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@target-host
ssh-copy-id -i ~/.ssh/id_rsa.pub user@target-host

Note that at the time of editing (early 2018), you should not use DSA based keys any more; see [WayBack] Secure Secure Shell.

Note:

–jeroen

via: [WayBack] 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 | 4 Comments »

Exporting Google Chrome cookies for wget usage: cookie.txt export – Google Chrome extension gallery

Posted by jpluimers on 2011/05/30

When using wget for downloading from the command-line, sometimes you need cookies in netscape file format.

There is a Chrome cookie.txt export extension that makes exporting your cookies in that format easy.

It opens a window that contains the cookies relevant to the domain of the currently opened web-page. You copy/paste your cookies in format like this:

# Cookies for domains related to wordpress.com.
# This content may be pasted into a cookies.txt file and used by wget
# Example: wget -x --load-cookies cookies.txt https://wiert.wordpress.com/wp-admin/post.php?post=5767&action=edit
#
en.forums.wordpress.com FALSE / FALSE 1304919940 TESTCOOKIE home
en.support.wordpress.com FALSE / FALSE 1304920249 TESTCOOKIE home
wiert.wordpress.com FALSE / FALSE 1304920561 TESTCOOKIE home
en.wordpress.com FALSE / FALSE 1304920572 TESTCOOKIE home

It even includes the wget command-line example for loading the cookies using the –load-cookies option :)

–jeroen

via: cookie.txt export – Google Chrome extension gallery.

Posted in *nix, Chrome, Power User, Web Browsers, wget | 3 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 | 1 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, Pingback, Power User, RegEx, Scripting, SocialMedia, Software Development, SQL, SQL Server, Stackoverflow, XML/XSD | Leave a Comment »