Friday, July 26, 2013

Tools

Sometimes I am amazed that not all IT professionals have a set of tools that they know how to install and use. The tools I list below are all free. Some are open source. Many of these are portable (or have a portable version) as well.

My current Windows-based toolset includes (but is not limited to):

Eclipse - Not my favorite Java IDE, but *the* standard Java IDE.

Swiss File Knife (sfk) - a command line tool that does all kinds of file search/grep tasks and much more.

SynWrite - a free text editor that provides all the basics (syntax highlighting, code folding, code navigation, etc)

MDB Viewer Plus - lets you manipulate MS Access database files w/o having MS Access installed.

dbeaver - Java based "universal database manager". Download the JDBC drivers you need, create a connection in dbeaver and query away. Import and export data as well.

TreeSheets - structured information manager that I use for organizing my thoughts and tasks.

Console2 - better command line interface for windows. Much better cut & paste, buffering, etc.

FreeCommander - Great fast file manager for windows.

Kitty - ssh client based on Putty but stores encrypted passwords if you chose for it to do so.

Komodo Edit - Heavier weight code editor that has great support for Perl and Python as well as snippets, extensions, source browsing, projects and more.

CSVedit - nice CSV file viewer/editor - quicker than importing CSV data into Excel, supports different delimiters, fielded searches.

7zip - good zip file manager/unzipper.

Source Gear Diff Merge - good source code diff/merge utility.

KeePassX - cross platform password manager.

MremoteNG - Remote Desktop client that nicely supports RDP, VNC, SSH and a tree structure of remote hosts (unlike Putty).

There are many other tools I have used. My current projects determine what tools I need or look for. What tools do you use?

Thursday, July 25, 2013

Equality in programming languages

Something as simple as comparing two values in a programming language can get you in trouble.

For example, in Perl:

my $name1 = "dennis";
my $name2 = "fred";

print "The names are the same" if ($name1 == $name2);  ## danger Will Robinson!!

Guess what prints out? The == is numeric comparison in Perl. If you want to compare strings you need to use the eq operator.

This is why you should always put:

use strict;
use warnings;

In the beginning of your Perl program. These will warn you about such problems.

In Java, you have to be careful when you check string equality:

if (string1 == string2) {
   // do something
}

The == operator may not work as expected depending on the source of the strings, as == does not compare the values of the two strings. You really want to use the .equals method:

if (string1.equals(string2)) {
   // do something
}

The .equals method will actually compare the values of the two strings.



Data organizers, outliners, etc.

It is useful to have a place to organize information that you need to refer to.

For years I used WikidPad. It is a cool Python based standalone wiki.

I wanted to mention a few I've tried recently and my thoughts about them.

The Guide is a native win32 C++ application. It is small, stable, can be portable. It seems rock solid.

KeepNote is cross platform (implemented in Python), has multiple layout options, tabs, stores notes in HTML/XML.

TreeSheets is the latest program I've been using for certain types of information. It is a pretty cool way of organizing information. You can also view your information in different ways - in grid form, as bubbles, and with lines ala "mind mapping" format.

It's website calls TreeSheets a "free form data organizer" and "The ultimate replacement for spreadsheets, mind mappers, outliners, PIMs, text editors and small databases".



Wednesday, July 24, 2013

A little note about text editors

As a developer, I am always looking for useful tools. Text editors are one of those things that developers can talk your ear off about.

One of my new favorite "fast and dirty" text editors is SynWrite. SynWrite starts fast, has the basics that you want in a text editor (syntax highlighting, code folding, search and replace, etc). Plus it has a sidebar with 'tree structure view' of your code or HTML, which is a nice feature for a free, lightweight editor. My only complaint so far about SynWrite is its search and replace - it is dog slow on larger files.

There are a TON of free editors floating around. They can come and go as far as support and new development goes. Over the years I've used editors like:

MicroEmacs (back when you couldn't get real GNU Emacs for PCs)
ME2 - Mutt Editor - Emacs-y customizable by a lispish language called Mutt.
GNU Emacs (of course)
Vi/vim (because of its ubiquity on Linux and Unix)
ConText
Programmers Notepad 2
Notepad++
Scite (and other Scintilla based editors - such as TextAdept)

If you have an interest in text editors like me - check out texteditors.org. It attempts to be a fairly comprehensive collection of text editor information including grouping editors into families like platform, operating system, implementation language, content edited, ancestor and type. TECO anyone?

Welcome to .... Bionic Earlobe?

Yep, Bionic Earlobe. Kind of weird, right?

Check out this interesting read from Michael Lazerow: Why Weirdos Outperform Normals

Where did I come up with the name "Bionic Earlobe"? I saw a news story about someone losing an earlobe due to an accident - and the idea of a bionic earlobe popped into my head. Why? I don't know.

Who needs a bionic earlobe anyway? If you lost an earlobe, you might want a replacement - purely for visual purposes. You certainly don't need a technology-based earlobe, do you? It seems superfluous. What would it do, anyway?