NODSW is a collection of technical references, programming notes, open source code, resources, tools, and information which we (as in YOU and everyone one else who comes here) may find useful with no overall theme other then being about programming. This is a place to explore what can be done with modern programming techniques and modern languages like Java, Python, Jython, Powershell, and shell scripting. The usefulness or even originality is a bit hit and miss (but that's not a bad thing).
Of course it is more interesting if more people toss in their ideas and occasionally stand on soap boxes (of various sizes). So please don't hesitate to join up (its free and no spam) use the site and of course discuss, comment, question and/or criticize (politely of course) without hesitation.

Coming from Unix/Linux programming trying to get stuff done on Windows is sometimes worse than getting teeth pulled. Powershell has definitely improved things, however, Powershell can be a bit obtuse. For example about 70% of the time there is already a command-let to do just what I want. But, just finding if there is a command-let has been painful. Today is no exception. (For those in a hurry the answer is Get-Command, for everyone else read on.)

I love it when I run over a simple solution to what seemed like a difficult (or at least convoluted) problem. Today I needed to generate some patch files to create a Crucible code review PRIOR to checking in the code. To do this is actually a little difficult by hand as the steps are:
p4 unshelve –s 123456
p4 diff –du100000 ./... >123456.patch (for files that contains less than 100000 lines it would be okay)
I was reading one of my weekly computer news letters and was surprised to learn that over four million computers world wide with roughly 500,000 in the US are still infected with an old DNS hack/virus called DNSChanger which USE to take you off to very interesting snake salesmen sites. It is not difficult to fix, the US Government took down the people doing it (which is a shocker but a nice one), took over their internet servers (which is another shocker), and made it so infected systems actually work correctly (which is really the surprising bit).

I am curious why companies are no longer negotiating over position details?

Sometimes the simplest things get overlooked. There are many times where I need to do something a little cross system languages. For example dynamically deciding on the right arguments to feed to a Java tool or service JVM. Or when I need to do some undirected graph manipulations of data from PowerShell or bash. There is no reason to not step up to the higher level language to get the job done.

It is interesting to consider that the thoughts of one person who lived in a society which seems familiar yet alien 2400 years before I was born are not only still available to be inspected in their near original state but are communicated to me in a device purchased by my Father when I was born over 4 decades ago. Even more interesting is the thoughts of my father (and countless others) on the thoughts of that 2400 year dead man regardless of age are also available. If you haven’t figured it out yet, I am speaking of books.

Cyber warfare HAS cause real world damage on purpose. The Stuxnet computer virus was designed and used to purposefully damage a specific Iranian nuclear facility. It got there by typical computer virus means of infecting computer after computer until it got where it wanted to be. What is really interesting is that it was designed to attack only one specific computer and to do real world damage.
In case you missed it 60 Minutes did a pretty interesting story just this week on cyber war and how it isn't just a theory any more.

Imagine logging into a box after a nice long three day weekend and asking yourself "self, what was I doing last Thursday?" or "what did I do on this server when I was here nearly a month ago?" What if you could answer that in such detail as what you did, where you were when you did it and you could get back there with only a few key strokes? Check this out (opening a new ssh session to my production box I haven't been on for weeks):
Using username "a-lartra". Authenticating with public key "imported-openssh-key" from agent

David Ungar gave a Talks on Computing Systems (TOCS) at Carnegie Mellon University called "Everything You Know (About Parallel Programming) Is Wrong!: A Wild Screed About the Future." (http://www.cmu.edu/silicon-valley/news-events/seminars/2011/ungar-talk.html). It’s just over an hour long and I am so excited to have the natural model being looked at. The imposition of artificial constraints to force computations to occur in a specific ordering has always rubbed me the wrong way.

Today a friend asked me which was a better backup solution Dropbox (http://dropbox.com/ if your going to sign up please use this referral URL http://db.tt/74rAyEsm) or Carbonite (http://carbonite.com). I can see the confusion of Dropbox as a backup solution, it does kind of look like one to most folks. As long as I answered it for my friend I might as well put it out for others too. Plus I might get some nice feedback on other options.
To the serious techies (geeks/nerds) Dropbox and Carbonite are not the same solutions.

You might note from the large number of references to virtual machines (VMs) on this site I am a BIG fan of virtual machines. I build whole production network copies in private virtual spaces on my laptop for development, testing, troubleshooting, and of course presentations. I also love the snapshot ability to give me rollback from large sweeping changes. So as you can imagine I have a large dry-dock of virtual machines and I have number with me on a USB stick. I also have an extra full boat license for VMWare for my laptop.

The last terminal to exit wins the "who's history is saved" game. Unless you pull a cute Linux stunt or three.
Update: A better solution is now available All bash history revisited: Load time solved PLUS directory history

After a couple days of open VMware, click box, click start, click next box, click start, click next box, click start, ...., ahhhhh!!! Today I got fed up with my "get to code" process.

Programming requires the use of a fixed width (monospaced or fixed-proportional font) screen font so that all characters occupy the same width when displayed on screen. This is because some languages (Python, Scala, Java, C, etc.) depend on indention to block code together or to align up rectangular columnar blocks for code clarity.

In Ubuntu there are a number of ways to get upgrades. There is the update manager which is configured to run automatically. There is using the command line approach with apt-get ('sudo apt-get update && sudo apt-get upgrade'). Finally there is the GUI utility called Synaptic ('sudo synaptic').
So what happens when something gets updated and introduces a bug, or breaks another applications behavior?