What tools do you use that may be considered rare in that aspect that you have only seen a few people use it? It may be any tool that may be valuable for programmers.
I myself use UPX on occasions.
What tools do you use that may be considered rare in that aspect that you have only seen a few people use it? It may be any tool that may be valuable for programmers.
I myself use UPX on occasions.
Common Lisp.
An elegant weapon. For a more ... civilized age.
Also see:
I often need to implement communication protocols. DockLight is a great tool for testing and debugging communication. It targets serial communication (RS232,RS485), but it's also nice when doing TCP/UDP stuff.
XML Explorer. Lightweight XML file viewer (.NET/Windows only). Includes copying of formatted XML data, evaluation of XPath expressions, and XSD schema validation.
Once upon a time I had to use Avenue, finding later her son, AVPython.
Internet Explorer 6.0
(Ok, it isn't rare, but it should be)
I am using PL/Scheme to write procedures stored in PostgreSQL in Scheme. Most of my project is in Common Lisp, and Scheme allows me to minimize the cost of context switching. Of course, I would prefer to have Common Lisp as the PL, but nothing like that exists (yet, I hope). Curiously, it feels like Guile is a bit faster than PL/Python (though I don't have any real proofs for that).
We have a part of our build script that is written using AWK / SED to generate some static content pages for our application. There is talk of migrating this to Ruby/ERB but it just hasn't happened.
Objconv
I use it to translate object file compiled with GCC to the VS.NET C++ world. Also works great help when porting GCC inline-assembler to VS.NET (It does the ATT style to Intel style).
SETL.
Great for topological sorting and similar algorithms if you want to invoke them from shell scripts.
Example (similar to unix tsort)
tokens := [t in split(getfile(stdin), '[ \t\r\n]+') | t /= ''];
edges := {[tokens(i-1), tokens(i)]: i in {2, 4 .. #tokens}};
nodes := domain edges + range edges;
(while exists x in nodes | x notin range edges)
print(x);
nodes less:= x;
edges lessf:= x;
end;
One rare tool I have used is Ebase Designer and Ebase Application server which is used for building electronic form applications. I have only ever seen it used in UK local government though I know some private sector companies use it.
It's a great tool for chucking together an online form quickly, though you never see any job listings that want this as a skill.
I like to use UnxUtils for some good old Unix command-line tools on Windows. (Some people prefer cygwin, but that never did it for me.)
Code generation with a twist -- I've got my own set of macros (Common Lisp) that generate all of my data access layer (stored procedures, DTOs,) output entirely in C# / VB.NET.
Agent Ransack - for a grep-like tool with a nice UI on Windows - http://www.mythicsoft.com/agentransack/
and
CS-Diff - for a free Diff tool with a nice diff display - http://www.componentsoftware.com/products/CSDiff/index.htm
I use Richard Feynman.
Seriously. He used to advise that until you can explain something to a child, you don't really understand it. Exaggerated, but the principle is true.
If you cannot explain the "why" of your code to another person, you will be kicking yourself 6 months from now when you must maintain it. Or when the maintenance programmer breaks into your home with a knife clenched between his teeth.
AWK - for lots of data processing tasks it is just the right level of abstraction - more powerful than sed, less work (and learning curve) than Perl.
I use Joe's own editor for quick and simple edits. I haven't met anyone else who uses it, although it seems to have a large user base.
I am currently writing an interpreter for a DSL we are using, the parser is written using QLALR a parser generator
graphviz as an aid for visually understanding complex dependencies among modules, classes, packages etc.
Of course, something I think is rare can actually be used by lot of programmers! Stuff I use and don't see my co-workers using:
SQuirreL SQL Client is still my tool of choice to access various databases, even after trying some others.
AutoHotkey isn't a very nice language (although it came from a long way) but it is very convenient to do a quick tool with GUI. I made an uninstall tool with it, a little form to fill a database table (using Oracle's command line tools), etc. Plus its management of hotkeys is just excellent.
Lot of other tools, like the Sysinternals' ones, Wireshark (not so rare, actually), etc.
Screen Ruler is great for any kind of visual development where you want to count how many pixels high or wide something is.
Bare Tail is a 'tail' replacement for Windows that is great for monitoring log files. It's GUI-based and lets you assign filters to colorize log output (E.g. red text for Exceptions, light grey on white for debug output you want to ignore).
I don't feel entirely comfortable calling them 'rare', but I've installed packages from the gnuwin32 toolset as I need them, and as a result have pretty much the whole lot installed now. It seems to be unusual among my coworkers to use command-line tools but they are utterly brilliant for some problems - for example AWK for mass manipulation of text data (which tends to come up frequently in this job).
Brains. They shouldn't be rare, but judging from much of the code I've seen, they are. :-(
I use WinHex and IDA Pro occasionally.
I use SciTE as a lightweight cross-platform text editor. It has one feature that I love very much - changing font size from the keyboard. It's very handy for me to set a small font for huge log files and a big font just by pressing Ctrl+"+", Ctrl+"-".
I use:
Common Lisp/CLOS for programming - I was exposed to Lisp in the 1980's, been through ObjectPascal (MacApp), C/C++, Java, Perl, Python, etc. but I always return to Common Lisp because it's so much more productive.
Allegro Allegroserve/Webactions web server running under screen. I can connect to the running process and compile in new Common Lisp functions at any time.
LaTeX for documentation - I live in Emacs, I write code, mail, browse the web, and write documentation in Emacs.
PostScript for drawings. I used to "draw" pretty hairy illustrations in PostScript. Now I use more PGF/Tikz.
SystemVerilog/VHDL for living...
For printing out arbitrary text files in multicolumn compressed text, I find that PrintFile is useful and flexible. It does PostScript files nicely too.
I use an incremental copy program of my own invention on a daily basis and can't figure out why I'm the only one thinks its essential. (That's why I wrote my own: Nobody else seems to have one that works exactly like I need.)
It's like directory diff program, comparing a source and destination directory and showing me which files are newer /older and of different size. It helps me to incrementally copy files, ignoring unchanged files, and preventing me from unintentionally overwriting newer files with older ones.
I use xfig for diagram drawing, though mostly not for development but for articles preparation.
ZtreeWin file manager too - never could warm up to Norton Commander, even in the old DOS days :)
Plus Araxis Merge - a powerful two- or three-way file (contents) AND directory differ and merger - one of the few I know that can diff an ANSI and a UTF-8/UTF-16 file and even make changes to both - excellent stuff, highly recommended.
Cheers! Marc
http://www.tu-dresden.de/zih/vampirtrace for tracking down performance problems (sequential,threading,MPI)
I use that rarest and most precious of tools - time.
Sadly, one all too often sees developers jumping right in to coding milliseconds after getting an assignment.h
I would guess 70%+ of the time I spend on a program is up front just ruminating, cogitating, and percolating, with an occasional snippet of code to fiddle with something I'm unsure of.
Makes managers real nervous.
It's not until I know EXACTLY how things are going to be laid out, and KNOW it is the way to go, do I start coding in earnest.
010 Editor whenever I'm doing protocol design or working with binary file formats
XSLT. Most people don't realise it's Turing complete. You can do some clever things transforming Ant build files and generating XML configuration files, and that sort of thing. Nicest thing I did was generating GraphML from an XML version control log.
gcov for code coverage of c/c++ code
Some time ago I used the KDE Source Code Checker (http://www.englishbreakfastnetwork.org/krazy/) to validate my own Qt-Code.
Com0Com for creating connected virtual serial ports. I can fire up two VMs and use com0com on the host to connect the VM's serial ports together. Great way to test/debug serial port applications all on my workstation without having to break out any hardware.
I use REALbasic for a lot of stuff. Most developers I talked to have never heard of it, so I guess that qualifies it as rare.
AppMaker (the original Mac programming tool for drawing interfaces and generating code).
I'm pretty sure I"m one of the few people left on the planet still using it, either for porting code I import from Mac resources or working on legacy AppMaker-based GUIs. I'm in the middle of a classic Mac to WPF rewrite at present, using AppMaker on an old Mac to get the UI regenerated into clean XML.
I do code from time to time some snippets in Ada. It's a very nice language.
I use Far Manager (a text mode file manager for Windows) a lot. Perfect for creating prototypes in Ruby and any other language that doesn't need a compiler.
Smalltalk ! (Squeak, GNU Smalltalk, the free edition of Cincom VisualWorks, but mostly Pharo in practice).
Not as old a language as Lisp, but quite fun too :)
Cygwin, Dia, joe - not shocking.
Out of the ordinary: Free Pascal using the (Turbo Pascal-like) textmode IDE for "scripting" (quick throwaway programming).
Unfortunately, my company uses Lotus Notes, and I find myself using Lotus Domino Designer quite a bit.
I used to use "cdecl", a command line tool capable of turning very complex C type declarations into English language descriptions (unsigned char** foo == "A pointer to another pointer which points at unsigned characters"). It could also go the other way, tho I never used that part.
JScript Debug, for tracing JavaScript execution in Internet Explorer.
classdump is a very useful tool, for inspecting closed source objective-c frameworks. You can figure out much of the same information using the builtin otool
utility, but classdump provides a more convenient interface.
hfsdebug a similarly useful tool for exploring HFS+ filesystems.
I use a program transformation engine call the DMS Software Reengineering Toolkit capable of specifying programming langauges, and custom program analysis, and mass program changes. I use DMS daily to define/extend the syntax and semantics of various programming langauges, and to build and test tools based on DMS.
Such tools include test coverage, profiling, code obfuscation, duplicated/dead code detection, lanaguage translation, static analysis, ...
DMS is designed so others can do this too.
[Full disclosure: I'm the architect].
Thought. I've found judicious application of this tool saves me hundreds of hours of work. I wish more of my co-workers had used this tool in the past.
We work quite a lot with VBA, where development interface is really a pity (I guess this is THE reason why most developers stay away from this language). MZ-TOOLS for VBA (there are other version for VBs) saved us hundreds of hours or work, and hundreds of headackes and depressions. It automatically numbers lines, generate error procs, documentation, gives complete search results, etc.
Another most usefull tool, though it is not really a programming tool, is "File Compare Tool", with its command line mode. This allowed us to integrate it in our own source control tool for VBA.