MacBook, defective by design banner

title:
Put the knife down and take a green herb, dude.


descrip:

One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com

Using 89% of the same design the blog had in 2001.

FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike, always wear white.

As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green.

x

MarkUpDown is the best Markdown editor for professionals on Windows 10.

It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support.

Features you won't find anywhere else include...

You've wasted more than $15 of your time looking for a great Markdown editor.

Stop looking. MarkUpDown is the app you're looking for.

Learn more or head over to the 'Store now!

Thursday, May 29, 2008

Digital Converter Box Or New TV? An Easy Choice -- -- Courant.com:

Digital Converter Box Or New TV? An Easy Choice

The Electronic Jungle: Kevin Hunt
May 29, 2008

Q: When TV stations change to the new broadcast system next year, will I still be able to use my existing VCR and DVD players? I have not decided between a conversion box or new TV. I also have a TV with a built-in VCR, which also has an attached DVD player. Both TVs are getting broadcast signals from a roof-top antenna โ€” no cable or dish.

โ€” Frank Wall, Downers Grove, Ill.

A: You'll be able to send the signal from the converter box to your VCR or DVR. But I wouldn't be surprised if by next February, when the analog signals disappear, you will have bought an HDTV.


In theory, the converter box program is meant to eliminate the impact on the forced switch in TV broadcast format.

In practice, the switch to DTV is the government's gift to HDTV manufacturers everywhere. It is taxation without representation.

posted by ruffin at 5/29/2008 04:32:00 PM
Tuesday, May 27, 2008

From Chapter 5. of Processing XML with Java, "Reading XML":

The main point is this: most programs you write are going to read documents written in a specific XML vocabulary. They are not going to be designed to handle absolutely any well-formed document that comes down the pipe. Your programs will make assumptions about the content and structure of those documents, just as they now make assumptions about the content and structure of external objects.


That's really an intelligent way of coming at reading XML, and it's the way I argue is the way it should, in about 75% of real world cases where XML is used, be done. That Harold does it, even tongue in cheek, is far more important than my recommendation, of course. His books on Java are top rate stuff, imo. The bottom line here is that you know darn well what the XML file you want to read is going to look like. Why put in any libraries for parsing it all out that you don't absolutely need? KISS.

Here's some of the code where he's reading out the XML from his specific example.

private static BigInteger readFibonacciXMLRPCResponse(
InputStream in) throws IOException, NumberFormatException,
StringIndexOutOfBoundsException {

StringBuffer sb = new StringBuffer();
Reader reader = new InputStreamReader(in, "UTF-8");
int c;
while ((c = in.read()) != -1) sb.append((char) c);

String document = sb.toString();
String startTag = "";
String endTag = "
";
int start = document.indexOf(startTag) + startTag.length();
int end = document.indexOf(endTag);
String result = document.substring(start, end);
return new BigInteger(result);

}


I think you can see what's going on. Honestly, that's the right way to do it in what is a much more common, real-world situation than one might suspect. Now granted, Harold adds...

Straight text parsing is not the appropriate tool with which to navigate an XML document. The structure and semantics of an XML document is encoded in the documentโ€™s markup, its tags and its attributes; and you need a tool that is designed to recognize and understand this structure as well as reporting any possible errors in this structure. This tool is called an XML parser.


But think of how many times you've seen XML used -- essentially as a text file. There's absolutely no reason to learn all the new APIs necessary to parse XML in these cases. You could just as easily have created your own file format, but then I understand why one might use XML instead. There is structure that would take weeks for a typical programming team to put together in conference. Why not lean on an over-engineered structured for your flat files? If you do step past known, easy to consume formats, then you don't have to re-engineer to use XML APIs.

XML's strength is to compose very large batches of structured data for anonymous consumption, but that doesn't mean that's the way it's most commonly used, nor the only way that XML's structure can be used. Let your approach, both for the file and the parsing, match your needs.

Labels: ,


posted by ruffin at 5/27/2008 12:33:00 AM
Monday, May 26, 2008

UPDATE: Okay, marginally I understand what I was doing in the post, below, but I have no idea what problem it fixed. The description is awful. I mean, it must have done something for me, but I now have no idea what. Way to go, self.


So spaces come before letters, either case in our good friend, the American Standard Code for Information Interchange. This is a pain, because it means Java's Collections' binarySearch is going to tell us an entry for "special sauce" should come before "special", which probably isn't what we wanted. So we've got to write our own Comparator to make things pop out the right way.

Here's what I've got so far. Enjoy. Well named, I might add.
(c) 2008 Bailey
package com.rufwork.run;

import java.util.Comparator;

public class JoeComparator implements Comparator {

public int compare(Object arg0, Object arg1) {
int intReturn = 0;
String strFirst = arg0.toString();
String strSecond = arg1.toString();

int intShorter = 0;

if (strFirst.length() < strSecond.length()) {
intShorter = strFirst.length();
} else {
intShorter = strSecond.length();
}

int i = 0;

while (0 == intReturn && i<intShorter) {
int intCharForFirst = strFirst.charAt(i);
int intCharForSecond = strSecond.charAt(i);

// we want "space" to come *after* all chars
// otherwise "special sauce" comes *before*
// "special"
if (32 == intCharForFirst) {
intCharForFirst = 257;
}
if (32 == intCharForSecond) {
intCharForSecond = 257;
}

if (intCharForFirst < intCharForSecond) {
intReturn = -1;
} else if (intCharForFirst > intCharForSecond) {
intReturn = 1;
}

i++;
}

// we only know right now that the strings are the same
// to the length of the shorter string.
if (0 == intReturn) {
if (strFirst.length() < strSecond.length()) {
intReturn = -1; // strFirst comes first
} else if (strFirst.length() > strSecond.length()) {
intReturn = 1;
} // if they are the same length, stay at 0
}


if (false) { // some debugging jive
if (1==intReturn) {
System.out.println(strFirst
+ " is larger than " + strSecond);
} else if (-1==intReturn) {
System.out.println(strSecond
+ " is larger than " + strFirst);
} else if (0 ==intReturn) {
System.out.println("Same strings: "
+ strFirst + " :: " + strSecond);
} else {
System.out.println("Something wack happend: "
+ strFirst + " :: " + strSecond);
}
}

return intReturn;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

Labels: , ,


posted by ruffin at 5/26/2008 11:38:00 PM
Saturday, May 24, 2008

I've been a little neglectful keeping on top of Java 6, but my recent trip to the Java Tutorial, which has in my experience been one of the best "how to" programming sites on the net, shows me that the marketing guys have infiltrated this once idealistically perfect site.

Here's what I saw.

How to Use Text Areas (The Javaโ„ข Tutorials > Creating a GUI with JFC/Swing > Using Swing Components):

The TextAreaDemo example introduces an editable text area with a special feature โ€” a word completion function. As the user types in words, the program suggests hints to complete the word whenever the program's vocabulary contains a word that starts with what has been typed.


That's exactly what I needed. I'd been looking at some solutions with more functionality, where you start typing a word and a number of possibilities appears in some sort of select-list below, including the Netbeans editor and a few examples from weblogs. Each was more overhead than I wanted, and just short of writing some simplistic autocomplete code, I stumbled over this.

So where's the marketing? How about the stuff that's Java 6 only, like the incredible overkill of the Java 6 only GroupLayout? Sure, you can add GroupLayout to your 1.5 and possibly 1.4 application, but why do I need this for a form with a single label and single text area?

Let's look at the code. Here's the layout jive necessary with GroupLayout.

GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);

//Create a parallel group for the horizontal axis
ParallelGroup hGroup =
layout.createParallelGroup(GroupLayout.Alignment.LEADING);
//Create a sequential and a parallel groups
SequentialGroup h1 = layout.createSequentialGroup();
ParallelGroup h2 =
layout.createParallelGroup(GroupLayout.Alignment.TRAILING);
//Add a scroll panel and a label to the parallel group h2
h2.addComponent(jScrollPane1,
GroupLayout.Alignment.LEADING,
GroupLayout.DEFAULT_SIZE, 212,
Short.MAX_VALUE);
h2.addComponent(jLabel1,
GroupLayout.Alignment.LEADING,
GroupLayout.DEFAULT_SIZE, 212,
Short.MAX_VALUE);

//Add a container gap to the sequential group h1
h1.addContainerGap();
// Add the group h2 to the group h1
h1.addGroup(h2);
h1.addContainerGap();
//Add the group h1 to hGroup
hGroup.addGroup(Alignment.TRAILING,h1);
//Create the horizontal group
layout.setHorizontalGroup(hGroup);

//Create a parallel group for the vertical axis
ParallelGroup vGroup =
layout.createParallelGroup(GroupLayout.Alignment.LEADING);
//Create a sequential group
SequentialGroup v1 = layout.createSequentialGroup();
//Add a container gap to the sequential group v1
v1.addContainerGap();
//Add a label to the sequential group v1
v1.addComponent(jLabel1);
v1.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED);
//Add scroll panel to the sequential group v1
v1.addComponent(jScrollPane1,
GroupLayout.DEFAULT_SIZE, 100,
Short.MAX_VALUE);
v1.addContainerGap();
//Add the group v1 to vGroup
vGroup.addGroup(v1);
//Create the vertical group
layout.setVerticalGroup(vGroup);
pack();


Now here's what I need to get the same form, give or take, with layout code that'll work with every version of Java since Swing was released as an add-on jar. (Why bother? Mac OS X 10.4 has Java 1.5, not 6, and no GroupLayout by default. Sounds like a decent reason to me.)

BorderLayout layout = new BorderLayout();
getContentPane().setLayout(layout);

this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
this.getContentPane().add(jLabel1, BorderLayout.NORTH);
this.pack();


That's right, the code becomes more readable and compatible. Mr Pibb + Red Vines = Crazy Delicious!

Maybe I'm an old-school idealist, but I don't believe in including a single extra line of code, much less a major code concept, in a tutorial than is absolutely necessary. Tutorial code should be designed to be written by hand, and should encourage its users to make small changes to see how those changes influence what happens. With GroupLayout, it's very difficult to add another few GUI widgets, difficult enough that the Tutorial itself tells us so on its page regarding how to use GroupLayout. Don't miss the Netbeans pimp in the following quote.

Note: This lesson covers writing layout code by hand, which can be challenging. If you are not interested in learning all the details of layout management, you might prefer to use the GroupLayout layout manager combined with a builder tool to lay out your GUI. One such builder tool is the NetBeans IDE. Otherwise, if you want to code by hand and do not want to use GroupLayout, then GridBagLayout is recommended as the next most flexible and powerful layout manager.


That last sentence is particularly bad marketing speak. See how they ignore the fact that saying "if you want to code by hand" is a superset of "do not want to use GroupLayout," the latter left in solely to deaden the [admittedly small] shock of what they just told you -- GroupLayout is for IDEs, not text editors. And the pseudo-objective tone of "One such builder tool is the NetBeans IDE," is borderline obnoxious.

For older school programmers, that paragraph would read, "GroupLayout was created to help support GUI RAD in Netbeans, and works best in concert with that IDE. GridBagLayout is the most flexible and powerful layout manager created with hand-coding GUIs in mind." Alternately, for even older school folk, the text would be, "GroupLayout is not for hand-coded GUIs. Use GridBagLayout or BorderLayout instead." And a comment in the TextAreaDemo example saying, "This code intended for use in Netbeans," or something similar explaining why the horribly unwieldy layout manager was used, if it has to be there, would have been nice.

Tutorials should present simplest case information that allow an informed programmer to learn a new trick in a simplest case, clean room environment, and then have the tools to figure out how to best integrate that into his or her work flow and environment. Pimping a specific Java IDE has absolutely nothing -- no, I hear your argument, and trust me. They have nothing to do with one another -- to do with learning to use JTextArea. Learning how to introduce JTextAreas using Netbeans is Netbeans' business. Doing it in Eclipse is Eclipse's business, etc.

I don't care to see the IDE wars inserted into my tutorials. It's painful to see that Sun now prefers the opposite.

Labels: , ,


posted by ruffin at 5/24/2008 10:47:00 PM
Wednesday, May 21, 2008

Written by Smokey Ardisson at CaminoPlanet.org:

The larger problem, though, is that Flash breaks the web and defies established conventions that make the web usable. There are no hyperlinks per se (only clickable spots), no way to determine where clicking will take you, and no way to get back there (that is, no URIs or URLs). Even worseโ€”and one of the reasons Flash is so beloved by certain types of content creatorsโ€”Flash is a black hole; nothing comes out, which makes Flash entirely inaccessible for reuse, collaboration, or whatever the next great idea on the web is.

File that under "Well said".

posted by ruffin at 5/21/2008 09:36:00 AM
Monday, May 19, 2008

From the NTIA: Digital TV Transition and Public Safety FAQ:

18. Will I receive High-Definition TV with the aid of a converter?
No. Analog televisions are not capable of displaying high-definition resolution, but the picture will generally be better with a converter.


Generally better my big ole fat butt. Here's the problem -- if the DTV signal comes in well 80% of the time, it's UNVIEWABLE the other 20%. UNVIEWABLE. With analog, if you've got 20% trash, it's generally viewable and hearable throughout.

I'd rather have snow and color loss 100% of the time than 20% absolute trash.

posted by ruffin at 5/19/2008 10:12:00 PM

Charles Moore recently commented on Alexis Kayhill's top 10 freeware apps on OS X. Of his, I found PTHPasteboard interesting enough to check out:

How often have you copied something only to find that you need it a few minutes later but you've already copied another item over it on the Mac Clipboard? PTHPasteboard watches you while you work and keeps a copy of any items that you have copied to your Clipboard (you can specify how many entries are cached) and also saves the clipboard through restarts. I keep it configured as a default startup item.

Honestly, that happens to me all the freakin' time. This is worth a look.

So here are the two lists, now with my idiotic commentary. First, Kayhill's.

* NeoOffice:
* Flip4Mac: (Windows Media Player alternative)
* TextWrangler (serious text editor)
* Firefox & Thunderbird
* CyberDuck (FTP and SFTP client)
* Adium: (multi-service chat client)
* ImageTricks (sue with OS X Tiger's Core Image filters)
* MAMP (server software)
* iBackup (free backup software)
* Vienna (RSS and Atom reader)

And a few more Moore adds, though he doesn't exactly say what to remove.

* ToyViewer Image Viewer/Editor
* PTHPasteboard Multiple Clipboard Utility
* SpotInside Spotlight Search Enhancer
* OnyX System Maintenance and Cleaning Utility
* TigerLaunch Application Launcher
* Seashore Cocoa Open Source Graphics Program for OS X

The bottom line seems to be you can't pick a top 10 without a bit more requirements stated beforehand. That is, I tend to program a bit on the Mac, so MacVIm, Netbeans, and Eclipse are all very high on my list.

I can't say much for SeaShore (a neat idea not yet ready for prime time) or Cyberduck (bad enough I re-registered Transmit). Adium's okay, Thunderbird's okay, Firefox is okay, but v3 RC 1 does awfully on my iBook. Very buggy. None of these are good enough to get rid of their commercial counterparts, including those that come with OS X, on a permanent basis. Firefox comes closest, especially b/c of its ability to navigate pages by typing. Still, occasionally in my experience it's buggy and I go back to using Safari for a week or two before trying another build.

Instead of going through all I can think of, here's the freeware that currently lives on my Dock.

* Eclipse
* iTerm
* TextWrangler
* Stella (an Atari 2600 emulator)
* AbiWord (a decent, smallish Word replacement that translates Word and WordPerfect fairly well)
* vMac (68k MacOS emu)
* MacVIm

Add to that WhatSize, which was free at one point, and which I use for spring cleaning the hard drive. You might as well add GraphicConverter, which, as I've said recently, isn't smart enough to force you to register and, in fact, encourages you to treat it as free software. I'll spare you the gushing recommendations for each.

Labels: , , , , ,


posted by ruffin at 5/19/2008 03:23:00 PM
Sunday, May 18, 2008

What a pain. We had some footage taken by a widescreen DVcorder, and I went to DVD-ify it. My iBook's iMovie 4 couldn't handle it, and would squish it all up to a 4:3 ratio. The Mac Mini has iMovie 5, which did great if you told it to use widescreen when you create the project -- done by clicking a small arrow on the new file [naming] dialog and selecting widescreen.

But then, even though iDVD 5 would preview in widescreen, the DVD I burned squished things to 4:3 again. Feeeee-uhn.

Luckily I Googled up a page called Anamorphic Widescreen in iDVD 5. Apparently iDVD is writing a bit to the DVD that tells players to "Prohibit letterbox". I suppose it might work on a widescreen TV, but apparently Apple didn't do a very good job real-world testing. Does it work as the software specification doc said it should, specifically to play video recorded in widescreen formats on widescreen TVs? I bet it does. Less good in the wild with a combination of hardware the specifications doc didn't catch.

Anyhow, how to fix widescreen on iDVD 5? From the site linked to, above:

Daniel Rogers was having problems with widescreen DVDs and apparently stumbled on this page and got these techniques to work. He then got ambitious and created a new perl script which automatically fixes DVD images. It's a pretty cool script: it copies the IFO files from a mounted DVD image, determines which ones are encoded as widescreen, repairs the appropriate bits of those files, and creates a new, burnable DVD image. He doesn't have a web page up at the moment, but you can get the script from his server at www.phasevelocity.org/idvd-ws-fix. I haven't had an opportunity to try it yet, but the script looks reasonable enough (although I don't speak perl).


I can add that it works very well, whether one can speak Perl or not. I might hack up a GUI if I bump into 4 spare hours. The best part here is that the script creates a .dmg file you can burn in Disk Utility, so the fix is free and Free.

Labels: , ,


posted by ruffin at 5/18/2008 12:52:00 PM
Wednesday, May 14, 2008

Daring Fireball: Why Apple Won't Buy Adobe:

And so if Apple, under Jobs, is tightly focused, what is it that they're focused on? It's not the pro market. It's mobility โ€” iPhone, iPod, MacBook Air. Adobe is a good company with good products, but they don't fit into Apple's focus at all.

posted by ruffin at 5/14/2008 03:20:00 PM

From Microsoft's press release about Office for Mac:

The group also is providing a glimpse at the road map of Office for Mac by announcing the return of Visual Basic for Applications (VBA) in the next version.


You've got to be kidding me. After all the crap that went up on the MacBU blog about how vba was dead and the requisite flaming from the Littles that vba was make or break, it's the MacBU that caves. I'm so confused.

* Why take the PR hit by saying vba was gone?
* Why bother with replacing vba with AppleScript in the most recently released version of Office for Mac?
* Why not just have updated the old Office for Mac with new Office formats and saved the brand new AWESOMEO 3000 engine for when vba was ready?

(You know, I never really understood why it was so impossible to port vba to this new Office for Mac. Isn't the whole point of .NET that it's easily deployable on new platforms? .NET is, in many ways, Java for Windows, with interpreted code running in a sort of Virtual Machine. And if M$ is eating their dog food, shouldn't much of the vba engine for Windows be written in .NET? Borrow the Mono project's compiler and off you go... It should be easier to port a vba engine from scratch now than ever before, right?)

Right choice or no, this is a cluster. I'd argue this seems emblematic of Microsoft in general since they decided to go Vista. They're chasing cash now more often than making smart decisions.

Labels: , , , ,


posted by ruffin at 5/14/2008 11:27:00 AM
Sunday, May 11, 2008


VueScan Scanning Software:

VueScan is a powerful, easy to use program that:
* works with 750 flatbed and film scanners
* runs on Mac OS X, Windows and Linux
* has been downloaded more than 5 million times


Well, I've got a Canon CanoScan FB 620U scanner, which, as far as I'm aware, has never had Mac OS X drivers. It was given to me as a gift by someone who knew I, at that point, used Macs almost exclusively at home. Yes, I got the message. Thuh-ainks, buddy.

Recently, I noticed that my Mac compatible scanner went to storage and never made it back out. Nor could I find it easily when I rolled back the door to the storage garage. *sigh* We were able to put a finger on the CanoScan, and I've been happily using it with my Vista Vostro, even though the scanner didn't, I don't believe, have Vista-specific drivers.

Of course I recently left my laptop when returning from an out of town trip. *sigh again* Having seen the VueScan site before and Googling it up again, I finally bit.

That's a long intro to say that not only is VueScan a fine, functional piece of software that made my scanner work, no problem, with my Macs, it's also precisely the kind of software I'd like to write. That is, this guy has a niche market covered, at times, better than the hardware's own manufacturers. Other similar niche-happy applications are GraphicConverter, Transmit, and Ultra-Edit, all three of which I really enjoy and two of which I've registered (more on that later).

One large difference for VueScan is how well it pushes you towards registration. Instead of a self-promoting watermark on the scans' output, for my 8.5"x11" scan, it put four rows of 2-3 dollar signs ($) in a decently large font on the page, a snippet I've included, above (Note: This image was created by downsampling a cutting from VueScan in GraphicCoverter). Imagining what my recipients might think when I send a copy of my bill along with my payment but with giant dollar signs all over it, I went ahead and registered. If the watermark said, "Please register VueScan" or "This was created with an unregistered version of VueScan" or the like, I couldn't care less. I'm cheap enough I would have lived with that. But why did I put dollar signs all over a copy of my bill? That causes too many questions for me to feel comfortable. And from Hamrick's point of view, what's the real advantage? How many people who read scans are serious customers? Better to force someone who is already trying the app to fork over dough than to get three more nonpaying customers. At least I'm over the edge and my $40 (dang!) is on the way.

Another thing that these four apps have in common is that they all cost a heck of a lot in fields where there are cheap or F/free alternatives performing the same functions. $40 for a scanner driver is nearly enough to be half of the way to purchasing a Mac compatible new scanner. Filezilla is a decent, cross-platform ftp client. Still, the shareware apps are all written well, and VueScan in particular worked for me without a single hitch, no installation needed past copying an application into my Applications folder. I enjoy supporting something so well written -- not fancy, not beautifully intuitive like iLife, but perfectly solid at what it does. These four shareware applications, in the end, are solid enough to be worth the cash. It's as simple as that; as much as I might want to resist, the apps are enough better than their cheaper or free competition that they're worth their prices.

So one final comment before closing: Why haven't I registered one of these apps, namely GraphicCoverter? It's the one I've used the longest, and I've used it for years. Two reasons: First, there's nothing about an unregistered version of GraphicConverter that's annoying enough to make me register, not even a watermark on the files it creates or a feature I need that's disabled, ever. Secondly, it begs me not to register, with a quote from what's ostensibly a user on its site saying that she liked GraphicConverter because she didn't register for years, iirc. I'm getting close to breaking down and finally paying Mr. Lemke for his fine work, work good enough I find that I've never quite made the switch to The Gimp. But he makes it just a touch too easy not to, and that should be a lesson for programmers. I'm of the opinion that the nearly complete lack of registration motivation might have helped GraphicConverter be so ubiquitous on Macs that its sheer popularity has created some registrations (think WinZip in the 90s), but not sure that that necessarily produced more profit.

Labels: , ,


posted by ruffin at 5/11/2008 05:42:00 PM
Wednesday, May 07, 2008



I'm not sure what to say about the image beyond its uncanny ability to make what I've heard for months much easier to comprehend -- that one candidate is doing pretty well in urban areas and the other in rural. I mean, wow, is that a difference.

The picture (from cnn.com) also displays another measurement of victory, that of geography. Here, it's interesting to me to see how little the land counts and how much it's about people. No surprise, but I catch myself wondering how the US can ensure it does right by the land. The recent hike in food prices comes to mind, as an example. Why are we subsidizing ethanol again, Iowa primary excepted for now? How do we vote our land?

Labels:


posted by ruffin at 5/07/2008 10:47:00 AM

<< Older | Newer >>


Support freedom
All posts can be accessed here:


Just the last year o' posts:

URLs I want to remember:
* Atari 2600 programming on your Mac
* joel on software (tip pt)
* Professional links: resume, github, paltry StackOverflow * Regular Expression Introduction (copy)
* The hex editor whose name I forget
* JSONLint to pretty-ify JSON
* Using CommonDialog in VB 6 * Free zip utils
* git repo mapped drive setup * Regex Tester
* Read the bits about the zone * Find column in sql server db by name
* Giant ASCII Textifier in Stick Figures (in Ivrit) * Quick intro to Javascript
* Don't [over-]sweat "micro-optimization" * Parsing str's in VB6
* .ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); (src) * Break on a Lenovo T430: Fn+Alt+B
email if ya gotta, RSS if ya wanna RSS, (?_?), ยข, & ? if you're keypadless


Powered by Blogger etree.org Curmudgeon Gamer badge
The postings on this site are [usually] my own and do not necessarily reflect the views of any employer, past or present, or other entity.