Software, Technology, Business & Life

My stray observations on software, technology, business and life.

Dark Matter is here!

I’d not heard that dark matter is right here with us, but Brent VanDevender says it is: https://pods-of-science.simplecast.com/episodes/how-to-build-a-quantum-computer-that-works 20:52: “Our galaxy is not special; we also live in a halo of this dark matter. It’s everywhere. It’s right here with us.” 21:36: “It’s not just, like, out there in the cosmos, though. It’s right here; it’s in the room with you; it’s everywhere.”

Read more →

January 24, 2022

The "lie-to-children" concept

Here’s an interesting concept: the lie-to-children: “A lie-to-children is a statement that is false, but which nevertheless leads the child’s mind towards a more accurate explanation, one that the child will only be able to appreciate if it has been primed with the lie.” Thinking of a user program being sequential execution of steps seems like this lie-to-children, within the reality of a multi-tasking / multiprocessor / distributed cloud-based world.

Read more →

October 5, 2020

UTF-8 Everywhere

I like the cut of their jib… https://utf8everywhere.org/

Read more →

May 26, 2020

Hats off to the CME Developers

Oil futures went negative on the CME’s exchange this week, and it seems that the exchange software handled it flawlessly. Of course we expect it to, and languages handle that fine, but still I’d say it’s not certain that it would have, unless their people designed for it and tested it. If it wouldn’t have, we’d have a huge mess on our hands. And since it did, we take it for granted.

Read more →

April 23, 2020

Java no longer free

Java will require a commercial license after January, 2019. Except for personal use. Wow. I wonder what this will do to the competition between it an its competitors (like python)? Will it impact the Minecraft community?

Read more →

May 1, 2018

G++ 5.3 Bug

I was just thinking to myself recently that I haven’t found a compiler bug in a while. It’s because I’m doing so much in Python, and I’ve never found a bug in Python (the language). But I’ve never worked with a C++ compiler where I didn’t find a bug. And sure enough, just came across one, in GCC 5.3 (Qt 5.8). auto Zip5 = hasFIPS? [&file](size_t row) { return file.Field(row, 6); } : [&file](size_t row) { return file.

Read more →

July 29, 2017

Read the drawings

Repeat it to yourself until you believe it: “We’re engineers. We read the drawings.”

Read more →

July 29, 2017

The Technology Plateau

A great read, and not so much about web design: Web Design, The First 100 Years.

Read more →

August 19, 2015

11th-Hour Surprise

This morning, 10:01AM, our regional electric company sends: Introducing the newly redesigned [redacted] page – an even easier and faster way to refer your friends … This morning, 10:44AM: UPDATE: The launch of the page is currently delayed. We apologize for this inconvenience and will contact you via email when the new page is ready. That sure seems like a late-in-the-game software project surprise.

Read more →

April 7, 2015

Wireshark is going Qt

Wireshark is moving their user interface away from GTK+ to Qt. Making such a large change wasn’t an easy decision. It means rewriting thousands of lines of code and requires a lot of careful design. We might be the largest standalone application to make this transition (feel free to correct me below). However, I think it’s well worth it and that it’s important to the long-term direction of the project. Ultimately it came down to one thing:

Read more →

October 29, 2013

To Know: Hamcrest

From the boost mailing list: Hamcrest is a declarative test-assertion definition style. The word is an anagram of matchers.

Read more →

September 11, 2013

Dropbox? Python.

Love it. Dropbox uses python, scaling to 175 million users. Also interesting: The team also found it was easier to keep log data rather than delete old code – usually there would be a need for it later on for whatever reason. “Delete nothing unless necessary,” said Eranki. A major conclusion of those early days: Be sceptical about adopting new technology.

Read more →

July 30, 2013

Confluence

Just hosted a Join.Me session directly into a VMWare virtual machine on my machine. Didn’t have to clean up (my desktop) for company. Love the confluence of technologies.

Read more →

July 22, 2013

Mini flash crashes caused by humans

Mini flash crashes caused by sloppiness, not a broken market -SEC

Read more →

July 7, 2013

Python is addictive

Been a while since I’ve felt this way, but Python brought it back out. Python programming is pretty addictive. I find myself pondering the next little Python ditty to whip up, and going through withdrawal without it. Gotta get my Python fix! If you’re a developer who can taste a good design, a good implementation, you know what I mean. Of course, there are plenty of things I wouldn’t write in Python.

Read more →

June 11, 2013

Boost Inside

Snooping in the QuickBooks 2013 installation directory, I find a couple boost libraries: boost_regex-vc90-mt-p-1_33.dll boost_serialization-vc90-mt-1_35.dll boost_serialization-vc90-mt-1_33.dll Not a lot of boost, but some. And they’re a few years old, but still fine.

Read more →

May 22, 2013

Downsides of SaaS

Software-as-a-Service has its downsides, as one commenter notes: We’re beginning to see the pitfalls of software-as-a-service in general: loss of control for for the user, increased security risks, and being entirely at the mercy of the providers’ future business strategies. The context is Google discontinuing its RSS Reader. A small outfit has motivation that a big one doesn’t. It matters not just to the provider, but the user. Opportunity abounds.

Read more →

March 17, 2013

Downsides of Collaboration

Here’s an outstanding video on how collaboration can not only kill creativity, but dupe our very perceptions. Steve Wozniak: Most inventors and engineers I have met are like me: they’re shy and they live in their heads. They’re almost like artists. In fact, the very best of them are artists. And artists work best alone where they can control an invention’s design without a lot of other people designing it for marketing or some other committee.

Read more →

March 14, 2013

Phone Virii

They’re smaller, simpler, probably more vulnerable, and the tools to see into them not as well developed. You Should Put Antivirus Software on Your Phone

Read more →

December 22, 2012

"I am a terrible programmer"

That provocative title from Dan Shipper: Part of me is thinking: in some ways, you were a terrible programmer Other part is, well … it’s worked perfectly for the last 20 months and I’ve never had to touch it. … Like most things in life, the answer to what a good coder is, is somewhere in between the guy who wants to get it out fast and the guy who wants to make it beautiful.

Read more →

November 12, 2012

Data Scientists...

Harvard Business Review: Data Scientist: The Sexiest Job of the 21st Century

Read more →

October 17, 2012

Software Runs the World: How Scared Should We Be That So Much of It Is So Bad?

From The Atlantic: The underlying problem here is that most software is not very good. Writing good software is hard. There are thousands of opportunities to make mistakes. More importantly, it’s difficult if not impossible to anticipate all the situations that a software program will be faced with, especially when–as was the case for both UBS and Knight–it is interacting with other software programs that are not under your control. It’s difficult to test software properly if you don’t know all the use cases that it’s going to have to support.

Read more →

August 10, 2012

Berserk Algo: $440M

Knight Capital: Final Berserk Algo Bill To Knight - $440 Million; Stock Implodes Ten million dollars a minute. And it’s almost certainly the case that the software passed all its tests in the lab.

Read more →

August 6, 2012

Dilbert on Big Data

Dilbert on Big Data.

Read more →

July 31, 2012

C++ Middle-Earth Map

A super-cool map of C++, via the Boost mailing list.

Read more →

June 23, 2012

cppreference.com

A cool new (for me) site, cppreference.com. A super-navigable, super-clean C++ reference, including C++11. The only thing missing is a search box, but the search engines give you that.

Read more →

June 22, 2012

Fantasecond response time

Here’s a fascinating in-depth study of one second of market data for a single stock: HFT [High Frequency Trading] Breaks Speed-of-Light Barrier, Sets Trading Speed World Record. Adds a new unit of time measurement to the lexicon: fantasecond. On September 15, 2011, beginning at 12:48:54.600, there was a time warp in the trading of Yahoo! (YHOO) stock. HFT has reached speeds faster than the speed-of-light, allowing time travel into the future.

Read more →

September 22, 2011

Super Cool, Super Divergent

Smart-phone platforms: iPhone, Android, WebOS, Maemo, etc. All are super-cool. But all are also astonishingly divergent in their approach to many of the details. So much so that one has to learn each one separately. My wife (an Android user) picks up my (webOS) phone and gets frustrated with it. I find this particularly surprising since we’ve been making “intuitive” Graphical User Interfaces for a generation now, with standards that have been around nearly that long.

Read more →

August 3, 2011

Insidious Ad Award

Here’s a screen-shot of ClamWin.com’s main page, as of today. Notice the giant Download button on the right. That’s really an ad for who-knows-what. To download ClamWin, you want the much-smaller download menu item on the left. Caveat emptor.

Read more →

June 1, 2011

The Cloud: Availability vs Complexity

Via LinkedIn: Amazon Explains Its Cloud Disaster. As complexity grows, paths (through the software) and combinations of paths not often taken now fire. We spend a lot of time and energy controlling and predicting what will happen, but our best efforts aren’t always up to it. Hats off to Amazon for publishing their detailed finding.

Read more →

May 2, 2011

Then the LAN, Now the Cloud

We use Google Calendar for some things. Who doesn’t? Any Android phone you buy pushes you to use it. And it’s very cool. Your calendar magically sync’s with the web, available wherever you go. What’s not to like? Two decades ago, we touted the LAN. Sit down at any computer in the enterprise, log on and do your work. Super-cool. Then we rely on the LAN, and when it’s down, lots of expensive people are sitting around.

Read more →

April 27, 2011

Conserving Screen Height: Killing "Height Cruft"

With the onset of HD, monitors are now wider than they are tall. Great for video, but not for computing. If you’re a developer, consider screen height a limited, precious resource. Conserve it. Trade width for height. Kill height cruft. (Can I coin that?) Button bars: traditionally horizontal at the top of the app. Can you make it vertical, to the left or right? Even the traditional menu bar (“File Edit View … Tools Window Help”) crowds you down by its height.

Read more →

April 1, 2011

The next make?

Many build systems exist to help people build their projects in a cogent manner and avoid the stupefying (albeit powerful) makefile: CMake, scons, boost.build, bjam, ant, etc. Each has its following, often based on the propensity of the audience (C/C++, python, Java). Here’s another to add to the mix: Cake. And this brief intro on the Boost-interest digest makes the pitch. No makefile at all. You put compiler flags right in the source code, and it walks your source, looking for special comments and using some naming conventions.

Read more →

February 22, 2011

Google Art Project

Google has just introduced its Google Art Project. It’s Google Street View inside the prominent museums of the world, with high-resolution images of each work. What a great concept! Hat’s off to them. I’ve been through Amsterdam three times (stop-overs to other destinations), and never got to see either the Rijksmuseum or the Van Gogh Museum. I look forward to exploring them here. I hope and expect that this will increase museum traffic.

Read more →

February 3, 2011

SourceForge Hacked

The SourceForge site was hacked last week, with the attackers going as far as putting a hacked SSH daemon in place. Since hacking pushes one towards paranoia, let’s go there for a minute. An attacker being able to change source-code in any SourceForge repository, bypassing change-logs and hacking files’ time-stamps, could introduce compromised source-code to a lot of open-source projects that touch on security. The commercial packages that rely on them multiplies that compromise up by who-knows-how-much.

Read more →

January 31, 2011

GCC Warnings

The boost folks just updated their warnings guidelines. A long read, but everything you want to know about dealing with warnings on both MSVC and GCC, all in one place.

Read more →

January 19, 2011

Serial Port Monitor in 20 Lines of Code

Here’s a serial-port monitor in 20 lines of code, thanks to PySerial. It opens the default or first serial port, and works with USB dongles, too. ``` import serial # http://pyserial.sf.net import SerialPortScanWin32 pList = [x for x in SerialPortScanWin32.comports()] port = pList[0][0] - 1 # single/first serial port ser = serial.Serial(port, baudrate=1200, parity='E', timeout=0.2) # opens, too. print "Monitoring serial port " + ser.name data = [] while True: ch = ser.

Read more →

January 12, 2011

LinkedIn broken?

As of right now, a couple LinkedIn connection requests I made, that were accepted, still aren’t showing up in my connections list. I received the e-mail that we’re connected. So it’s half-working, half-broken, even after 30 hours or so. (Surely the electrons can travel from one end of LinkedIn to the other in that time.) The mind boggles at the mess this could potentially be if they’re dealing with a breakage of something that fundamental.

Read more →

January 7, 2011

Avoiding SubInACL.msi

Problem: An app I wrote (some time ago) refuses to run on Windows 7. MFC’s CDialog::DoModal() returns immediately. The web suggests it’s using an unregistered control. Sure enough, the registration for a control fails with: The module “msflxgrd.ocx” was loaded but the call to DllRegisterServer failed with error code 0x8002801c. One person says get and run SubInACL.msi, and use it to make sweeping recursive permissions changes to the registry and system directories.

Read more →

December 28, 2010

MSVC-8: alive and well

Over the weekend I installed the latest Flickr Uploadr for Win32. The install popped up the familiar “Microsoft Visual C++ 2005 Redistributable” installer as part of its installation. Microsoft Visual C++ 8 is still solid and widely used.

Read more →

November 28, 2010

Bye-bye manifests!

Here’s a very interesting development, brought to my attention by a fellow developer: Microsoft is doing away with the manifest scheme in Visual Studio 2010. From Deployment in Visual C++ 2010: Differences between Visual C++ 2008 and Visual C++ 2010 The most significant changes between Visual C++ 2008 and Visual C++ 2010 are: * Visual C++ libraries no longer depend on manifests and are no longer installed in the WinSxS folder.

Read more →

November 6, 2010

Biting Brit Commentary

In this piece from the UK’s Register, Dominic Connor savages British Computer Science Higher Ed: No wonder CompSci grads are unemployed His biting style is a little over the top, but entertaining. I hope not everything he claims is true. A couple gems: Java fanboys tell me that it is “easier” than C++, and seem miffed when I agree in a sneering way. A CompSci grad is supposed to be able to do difficult things that arts grads simply can’t understand.

Read more →

November 2, 2010

Developers in Short Supply

From today’s Chicago Tribune: Software engineers hard to find Shortage of trained IT talent challenges Chicago companies Good to know in these troubled times. And to keep in mind: “One good developer can do the work of three or four guys,” And this… … finding qualified job candidates is “the bane of my existence.”

Read more →

October 18, 2010

Wally Gets It

Wally gets it (in his own Wally way). The art of this job is binding the rare moments of inspiration to knowledge and machines. That’s what I mean when I say, “…good ideas…”. But we can’t afford the moments to be rare.

Read more →

October 16, 2010

XMarks: fare thee well

Received XMarks’ notice that they’re folding, and their story is excellent reading. Here are a few of my observations. First, it’s very well-written and has an excellent tone. I hope never to fold a business, but if I had to, I hope I’d bow out as gracefully as they are. Hats off to them for knowing when to quit, and letting us all know with this much advance notice. We’re not in another dot-com bubble.

Read more →

September 29, 2010

Fixing it in the hardware

I wrote a graphics-intensive application for one client. He reported that when he tried to drag it from one monitor to another it seemed to lock up. Then he reported the fix: adjusting the fan for one of his multi-monitor video cards, to keep it from overheating. When you push bits all day, it’s hard to imagine these kinds of real-world interactions. Or when a multi-threaded, calculation-intensive program kicks the PC’s fan up a couple notches, you realize: hey, I did that.

Read more →

August 23, 2010

Dora Full Circle(s)

Dora the Explorer turns ten. It’s a TV show, but it pretends the TV is a computer. (When Dora asks where something is, you see a mouse go across the screen and click it.) But we watch it off of the Netflix instant queue on our computer. So our computer acts like a TV acting like a computer. And our computer’s monitor is a TV set. So the TV acts as monitor, for a computer acting as a TV acting as a computer.

Read more →

August 11, 2010

C/C++ IDEs

Wikipedia compares C/C++ IDE’s, and Netbeans C/C++ pack looks surprisingly good. But being written in Java, I suspect that it’s as resource-hungry as large Java apps are.

Read more →

April 21, 2010

Too Simple to Fail?

I’m doing some low-level Ethernet work (TCP/IP), with a device connected through two plain vanilla network switches. (I’m testing breaking the connection with neither side detecting the link-lost condition.) I made a change to my software, and suddenly the Ethernet is dead. It seems to send and receive nothing. I back out my change, and it still doesn’t work. I back out a few more: no effect. As it turns out, one of the Ethernet switches got confused and quit routing correctly (even through this simple configuration).

Read more →

March 30, 2010

Global hackers caught

The perpetrators of what sounds like a big zombie-net have been arrested: Three Spaniards arrested in alleged global hacking scheme Apparently, 13 million computers were infected.

Read more →

March 4, 2010

UDP Broadcasts Wrong Source Address

Symptoms: Windows machine with two network interfaces (NIC), 10.x.x.x and 192.168.x.x. I send a UDP broadcast message (to destination address 255.255.255.255), and see the same message go out on both networks. The problem is, the source address that goes out with each packet is the IP address for my first network interface, so it’s sending an unreachable address out my second network. Responding devices start doing ARP requests to try (in vain) to find that unreachable address instead of responding.

Read more →

February 5, 2010

TIOBE Index: The 2009 Programming Language Survey

Tiobe’s 2009 Programming Language Survey is an interesting read. I write in a variety of languages: as it turns out, seven of the top eight. Very interesting that C seems to be such a constant. And far more constant even than its second place suggests, since six of the top eight languages use a syntax based on it (Java, PHP, C++, C#, and JavaScript), not to mention Objective-C. C is the bedrock.

Read more →

January 7, 2010

Scrum

Here’s an interesting read: the Scrum development framework. Methodology, strategy and work-flow all rolled into one rather informal process. Not specifically for software projects, either.

Read more →

January 1, 2010

Gentle Introductions (to Programming)

Here are two applications to help learn the basics of programming: Alice.org (aka, Alice) teaches computer programming by letting you “program” things in an animated virtual world. WizBang is a visual programming tool that lets the learner drop and connect symbols. Both are free to use. Wikipedia keeps a more exhaustive list of visual programming tools, but these two caught my eye: Alice for its entertainment value, and WizBang for its simplicity.

Read more →

December 26, 2009

Data-Oriented Design

Here’s a great discussion of data-oriented design from some gamer programmers: Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP) I believe OOP is the very best way to manage complexity, but isn’t the end-all be-all. It must build on structured programming techniques. That’s not a given. Further, memory organization may make a big difference as well, depending on the application. Even with modern processors and gigabytes of RAM.

Read more →

December 18, 2009

Building OpenSSL via MinGW

OpenSSL is a particularly difficult one to build on MinGW, and it’s not clear even what approach will work. But I got it to build. My MinGW/MSYS configuration is with the full suite of tools, including bash. (Follow these FFmpeg build instructions for setup.) As well, I’m using GCC 4.3.3, from the TDM recent builds (http://www.tdragon.net/recentgcc/) setup. I’m building OpenSSL 0.9.8k. You need ActivePerl. MinGW has a /bin/perl, but it’s not up to the task.

Read more →

April 12, 2009

A Software Testing Yogi-ism

If Yogi Berra thought about software and testing, maybe he’d say: Unless you know it’s right, you don’t know it’s right. To ponder…

Read more →

April 2, 2009

Your most controversial programming opinion?

A very interesting question–with very interesting answers–on StackOverflow.com: What’s your most controversial programming opinion? (Via Gadgetopia.)

Read more →

March 18, 2009

Step Away

Step away from the computer. I get some of my best ideas when I step away from the computer for a few hours and carry on with life (letting the problem mull over in the back of my mind). Maybe you’ve experienced this, too. If software is much more about good ideas than BFI (and I’m convinced that it is), then stepping away from the computer is a wonderful thing all around.

Read more →

March 15, 2009

Ten Whole Megabytes

When I was in college, I rented a friend’s computer for a year. It had an amazing ten megabyte hard drive, and I loved it! I didn’t have to boot it with two single-sided single-density 360KB floppy disks. It was great! And ten whole megabytes! I figured I could type non-stop for decades before I filled it up. How cool was that? Times have changed, haven’t they? Update, 3/18 – Full disclosure, FYI: 105 GB of the disk space you see are consumed by virtual hard disks across 14 VMWare virtual machines.

Read more →

March 10, 2009

Changing the Unchangeable

Now that screens are wide, I find vertical space more precious. So I put my XP task bar on the left side of the screen. It’s interesting how many programs now come up underneath it. Commercial packages with large user bases. I’m sure they mind the task bar when it’s at the bottom of the screen, but not here. While it’s not a big deal (to me at least–just a tiny annoyance), it shows how we make implicit assumptions about our world.

Read more →

February 23, 2009

Third-party Crashes

Twice in the last three weeks I’ve had software I’m developing crash badly before main() even gets control. Though completely separate situations, each had to do with a third-party package. Fortunately we were able to work through each in reasonably short order, still using the package without the problem. One was a proprietary package, and the vendor was willing (and able) to work with us. I wound up iterating to the problem’s source: an issue between Microsoft’s managed and non-managed C++.

Read more →

February 17, 2009

CastleCops: Fare Thee Well

The very useful CastleCops web-site seems to be defunct as of late December, for “an as yet undetermined reason.” Fare thee well. Their databases can now be found on SystemLookup.com.

Read more →

January 26, 2009

Resources aren't garbage

Regarding Microsoft’s .NET OdbcConnection Class: You should always explicitly close any open OdbcConnection objects by calling Close or Dispose before the OdbcConnection object goes out of scope, or by placing the connection within a Using statement. Not doing this leaves the freeing of these native resources to garbage collection. It might not free them immediately. This, in turn, can eventually cause the underlying driver to run out of resources or reach a maximum limit.

Read more →

December 12, 2008

Just how does that feel?

I got a huge kick out of this line from Sunday’s Dilbert:

Read more →

September 22, 2008

A Syntax First

I’ve seen a lot of C and C++ source-code in my career. I’ve never seen anyone write a do while loop without using curly braces. Until now: do cin.ignore(1024); while (cin.gcount() == 1024); It’s one of those unconscious things, I guess. If you asked me if you could write it that way, I would have supposed so. I don’t mean any criticism: it’s fine. It’s clear. Just amused (at myself) that I’ve never seen it.

Read more →

June 21, 2008

Save Windows XP

It seems Windows XP is being phased out: Fans of the six-year-old operating system set to be pulled off store shelves in June have papered the Internet with blog posts, cartoons and petitions recently. They trumpet its superiority to Windows Vista, Microsoft’s latest PC operating system, whose consumer launch last January was greeted with lukewarm reviews. No matter how hard Microsoft works to persuade people to embrace Vista, some just can’t be wowed.

Read more →

April 23, 2008

The Problem With Threads

Multithreaded (concurrent) programming is a valuable tool in my toolbox. I don’t hesitate to use it when I need it. I can’t imagine getting by without it.* So the SQLite project got my attention when they said, “Threads are evil. Avoid them.” They referred me to a very interesting paper by Edward A. Lee of UC Berkeley: The Problem With Threads. From the abstract: Although threads seem to be a small step from sequential computation, in fact, they represent a huge step.

Read more →

March 30, 2008

Rvalue References

Here’s a new C++ feature: rvalue references. An rvalue reference behaves just like an lvalue reference except that it can bind to a temporary (an rvalue), whereas you can not bind a (non const) lvalue reference to an rvalue. A& a_ref3 = A(); // Error! A&& a_ref4 = A(); // Ok Question: Why on Earth would we want to do this?! It turns out that the combination of rvalue references and lvalue references is just what is needed to easily code move semantics.

Read more →

March 11, 2008

NY Subway Office

Despite our best efforts, we can’t always reproduce phenomena we see in the field. So to the field we go. Here are a few shots of my makeshift office in the New York Subway system. Not the most productive or ergonomically correct environment. The chair is a life-saver. Under $6 from Target, it collapses into a bag slung across the shoulder. Here’s a view from the seat. Fifteen feet from the track.

Read more →

February 11, 2008

30 Years from Today

30 years from today–that’s January 19th, 2038–at 3:14am, the 32-bit unsigned clocks of legacy Unix systems will roll over. They’ll read January 1, 1970. I wrote about it here. More serious than Y2K, since all such clocks will roll over. If you recall, with Y2K it was primarily whether the programmer used two-digit years or accounted for the 1999-2000 transition some other way. Similarly to Y2K, only those computers making decisions based on the clock/calendar will be affected.

Read more →

January 18, 2008

Python beats Perl

I like this news: The TIOBE Programming Community Index has declared Python as the Programming Language of 2007 due to a 58% surge in its popularity rating during the year, making it now the sixth most popular programming language and finally surpassing Perl. They also assert that Python has become the “defacto glue language,” being “especially beloved by system administrators and build managers.” One of my goals in life is to never learn Perl.

Read more →

January 10, 2008

Cast in Concrete

From RFC 3551 (RTP Profile for Audio/Video), for G722: Even though the actual sampling rate for G.722 audio is 16,000 Hz, the RTP clock rate for the G722 payload format is 8,000 Hz because that value was erroneously assigned in RFC 1890 and must remain unchanged for backward compatibility. Ouch. Even Internet RFC’s aren’t immune to errors, and backward compatibility will always be with us.

Read more →

January 4, 2008

The Mythical 5%

Bruce Eckel, author of Thinking in C++, relays a commencement address he gave. First, some bad news: The statistics are sobering: 50-80% of programming projects fail. These numbers are so broad because people don’t brag about their failures, so we have to guess. In any event, this makes the world sound pretty unreliable. … Many projects that do somehow “succeed” still resemble sausage: you don’t want to see how it was made, or what’s in it.

Read more →

December 31, 2007

CastleCops Program List

I get a strange message about a program crashing. I don’t recognize its name (swdsvc.exe). Is it legit or not? When I google it, I don’t know if I should trust the web-sites that come up any more than the mysterious executable. What to do? CastleCops keeps very valuable lists of programs and things you’d expect to find on your PC, and those you don’t. XP/NT Services (O23) A CLSID list for every CLSID you’d expect to find.

Read more →

December 20, 2007

Automating Embarrassment

I recently received this memo: …unbeknownst to us as it only affected certain files and only a few [investors] … our data was unexplainably fatally contaminated. We have worked diligently, along with our software vendor, to fully correct the problem. I can’t read that without feeling the sting of being in their shoes. Whose fault was it, the software vendor or the user? Does it matter? This software vendor’s client bears the brunt of this embarrassment with their clients.

Read more →

December 15, 2007

Who Manages the Managed Language?

Managed languages like Java and C# try to help us by tracking and freeing our memory for us. Sounds good, but I don’t like it. Maybe my problem is philosophical. To me, it seems you now have a butler quietly following you around cleaning up after you. When you’re done with something, you drop it and move on (like a kid dropping a toy on the floor when he loses interest): the butler sees it and puts it away.

Read more →

November 21, 2007

Not even Google

From the Google code blog, emphasis mine: In 2005 we launched Google Code to provide a home for our developer and open source programs. Two years, dozens of new products and new programs, and one major redesign later, Google Code is bigger and more dynamic than ever. Two years operating and they’ve redesigned it once already. I don’t point this out to embarrass Google but to show that redesigns are necessary from time to time.

Read more →

November 14, 2007

Lunch 2.0 @ Google Chicago

Hats off to Google Chicago for hosting today’s Lunch 2.0. Having no idea what to expect (except, um, food), I had to check it out. Free lunch and “no time-share pitch to sit through!” I learned (among other things) that Google has a decent-sized presence in Chicago, a lot of it engineering. If I understand it correctly, Google’s summer of code comes out of Chicago. (I also took away a nice Google lunch cooler.

Read more →

November 9, 2007

Trump Tower

My business took me to Trump Tower, under construction. It’s going to be really, really big. I don’t think they’re even half way up yet. Heavy construction is underway on the upper floors. Infrastructure work on the lower. This picture doesn’t do it justice. Here’s the view from the skip – the construction elevator on the outside of the building. There were always two trucks delivering cement, with another standing by.

Read more →

October 27, 2007

Consultant's Swiss-Army Knife (Part 1)

As a consultant, I’m always looking for the perfect Swiss Army knife-type tools related to what I do. Pulling the right adapter or gizmo out of your bag can save the day, avoid embarrassment (yours or your client’s), or make you come off looking like the hero. But you can’t carry a stack of steamer trunks: small and lightweight are crucial. Here are a few things I’ve found helpful related to the software I write:

Read more →

October 20, 2007

Getting your mind around it

Paul Graham gives an excellent inside look at programming. He calls it “Holding a Program in One’s Head”: A good programmer working intensively on his own code can hold it in his mind the way a mathematician holds a problem he’s working on. Mathematicians don’t answer questions by working them out on paper the way schoolchildren are taught to. They do more in their heads: they try to understand a problem space well enough that they can walk around it the way you can walk around the memory of the house you grew up in.

Read more →

October 2, 2007

xcopy vs. rsync

xcopy vs. rsync, rsync vs. xcopy Though rsync has capabilities that Win32’s xcopy only dreams of, how do the two stack up when compared apples to apples? My test: synchronize a large collection of files, between two different local disks. 8.19 GB of data in 11,072 files across 182 directories. My platform: a Dell Optiplex 740, AMD Athlon 64 X2 Dual Core 5200+, 2.61 GHz, 4GB RAM, Windows XP SP 2, latest updates applied.

Read more →

September 23, 2007

Elevator Drives then and Now

My business has been taking me into elevator machine rooms recently. It’s amazing how far the technology has come. These elevator drive motors are circa 1938, and still work fine. These drive motors are new, and a fraction of the others’ size. I couldn’t believe my eyes.

Read more →

September 18, 2007

GNU Haiku

Noble Open Source* Contribute day and long night Landlord, Grocer scoff. * I know I should say Free Software, but it ruined the meter.

Read more →

September 11, 2007

Where are the Good Programmers?

Frank Wiles discusses hiring programmers. Finding good programmers is hard in any language. And that a good programmer can be as effective as 5-10 average programmers. …- You don’t need to hire an expert in language X, you can and should look for expert programmers that are willing to learn language X. An expert can easily cross over from being a novice in any language in a matter of a few weeks.

Read more →

August 8, 2007

Ten Years of Data

I was looking for a years-old appointment and realized I’ve been using a PDA for ten years now. My data goes back to 1997. (I think I’m on my fourth PDA, but I’ve lost count.) It was a strange realization on a few levels. It was pretty cool seeing appointments from ten years ago. What was I doing then? What was I working on? Who was I hanging with? It was strange suddenly looking into my life ten years ago.

Read more →

June 1, 2007

Quote of the Day

Guy Kawasaki, web entrepreneur: During the dot-com bubble, you needed $5 million to do stupid ideas. Now you can do stupid ideas for 12 grand.

Read more →

May 18, 2007

Betting the farm

Doing some exploratory work for a VoIP application, I bought this nifty LinkSYS VoIP adapter. But I find that adapter only knows how to find Vonage. The firmware is programmed that way. Easy for Vonage customers, useless to us. But it seemed to be a reasonable business decision for LinkSys. Sign on with a big player. Or is it? Vonage recently lost a lawsuit from Verizon, so their future is uncertain.

Read more →

May 17, 2007

Hyper-deflation

I threw away a bunch of old software today. I threw away the CD-ROMs but kept the (plain) sleeves. Ironic, that. Reminds me of a story I heard: Post-World War II Germany’s hyper-inflation, where someone stole a wheelbarrow full of cash. They stole the wheelbarrow, but dumped the cash. I’d say this software’s hyper-deflation is about equivalent. (Not to make light of that country’s hardship.) Software has a life.

Read more →

April 2, 2007

Comment Spam

I’m disabling comments on both new posts and old ones. Comment spam is truly pernicious. Please e-mail me if you have a comment! I’m glad to hear from you.

Read more →

March 16, 2007

Unix Man Pages

Not man as in manly/male, but manual. You know, user’s guide. Here are a few on-line “man-page” repositories that are pretty useful. I just came across SoftwarePlug.com now, and it looks like a best-of-breed resource. Man and info pages for a slew of operating systems, and not a gooogle ad in sight. SoftwarePlug.com FreeBSD Man Pages

Read more →

January 8, 2007

Even concrete...

Here’s a picture from my old blog. Even concrete pipe sections have URL’s on them now. Archeologists will find these thousands of years from now.

Read more →

December 2, 2006

New Hosting

Here’s my new business blog. Posts didn’t carry over from the previous blog. (I was too busy to give it attention. No big loss.) Cheers!

Read more →

December 2, 2006