MacBook, defective by design banner

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

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

FOR ENTERTAINMENT PURPOSES ONLY!!! Back-up your data and always wear white.
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
* that hardware vendor review site I forget about is here * Javascript 1.5 ref
* 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)
email if ya gotta, RSS if ya wanna RSS, ¢ if you're keypadless
Monday, February 23, 2015

In theory, yes, there are people who won’t buy your book if it’s not in the ideal format for their preferred reader. But that’s theoretical money you might make if everything is perfect. 

But if you don’t ship, NOBODY buys. NOBODY gets your fix. You get no money.

Compare those two options: fewer sales (hypothetically) vs. no sales at all (proven fact).

Unicorn Free is an interesting, if often exceptionally scattered, website. It's often feels like a sort of imperfect copy of those incredibly long websites that end with a sign-up form where you can get and/or order some eBook about success. The crazy random italics and all caps sometimes makes all those sites appear one step away from the insane ramblings of a borderline schziophrenic genius, though often perhaps without the genius. I can't think of a great example off-hand, though there seem to be a disproportionate number of folks trying this with World of Warcraft gold selling guides. But I've seen then for starting your own business with some regularity too. Unicorn Free seems much more authentic than "real" members of this "bowl them over with words" sites, but the comparison isn't wholly un-apt (?).

That said, it's the quick nuggets of obvious common-sensical wisdom that this site offers like the one above that makes it worth adding to your RSS amalgamator. I often wonder how many features are necessary in an app before you could ship. I'm playing around with a desktop email client in my spare time -- my proverbial white whale -- and wonder what's absolutely necessary before you could start making money. Is full IMAP support absolutely necessary to reinvent the way folks search for email? Is IMAP support really part of the table stakes for a client that accesses and Gmail? I've toyed with adding just enough IMAP support that I can grab the user's sent mail (something POP doesn't usually leave laying around), but otherwise concentrating on presenting messages outside of the crazy folder structure folks might use, replacing it with something I find more useful.

That is, is full IMAP support the same as providing a mobi format for your eBook, or is it so crucial a part of your app table stakes that you never quite recover from missing that support in version 1? Obviously, idk, but it's interesting to consider.

Labels: , ,

posted by ruffin at 2/23/2015 12:02:00 AM
Friday, February 20, 2015

From the Tim Cook talk at the Goldman Sachs Conference, as transcribed by iMore:

And y'know, for everyone at Apple, we're all there to make great products, and really enrich peoples' lives, and we believe in leaving the world better than we found it. And so, along those lines, our greatest contribution to society will always be through our products, because we can empower people to do some incredible things there, but we also put our energy into a program called ConnectEd, and are working with the administration on bringing our technology to kids in very underserved schools that desperately need technology.

We partnered with the Global Fund, with a focus on eliminating the transmission of AIDS from mother to child, made a huge — we're up over a hundred million dollars in donations here, and this saves millions of lives.


And just today, we're announcing our biggest, boldest, and most ambitious project ever: We are building — we're partnering with First Solar — to build a solar farm in Monterey County, so not too far from here. It's 1300 acres. It's enough power for almost 60,000 California homes. ...

And I think, just to make this point, because I know this is a financial conference, and I'm sure some of you are interested in, well, "Is that a good use of funds or not," and, y'know: quite frankly, we are doing this because it is right to do, but you may also be interested to know that it's good financially to do it. We expect to have a very significant savings because we have a fixed-price for the renewable energy, and there's quite a difference between that [renewable energy] price and the price of the brown energy. And so we're thrilled to continue on this course of doing things that really leave the world better than we found it.

Emphasis mine, of course.

Let's not beat around the bush -- Tim Cook sees himself (via Apple) as much more than a CEO of a successful company. He sees being CEO of Apple as the chance to be a corporate savior. He wants to solve the world's problems, and, bless his heart, make a buck while doing it.

And you know what? Good for him. If you're sitting atop the company with the largest market cap in the world (ironically and tellingly beating out Exxon/Mobil for the crown), the only one whose culture's really not worried about answering to shareholders worried about tomorrow's profits, and you're driven to push that money for real, significant change, good heavens, kudos for you. It worries me that the Jobsian reality distortion field crops up a little -- has Apple really saved millions of lives with a hundred million dollars of AIDS donations? No. No, you haven't. To even imply that you have is, at best, horrendous marketing bluster. But let's stipulate Cook wants to find the overlap between profit and the ability to do good.

And man, to think about a company looking to do good with "first world problems" blows my mind. Gates didn't start doing Good with a capital G until he cashed out, didn't he? (If he started earlier, I'm not giving him enough credit. Looks like he did, but look at how Gates' Good work is separate from profit -- this really is Cook's trick.) And for Gates to start with issues like malaria, where a few bucks really can save a life, is brilliant. I've taken a few bucks of Fansidar and had the malaria beasties go away.

But malaria and water and some of the Gates' Foundation's other initiatives aren't where you can get a company to do the most good. If malaria was a profit-making enterprise, pharmaceuticals would've already jumped in and treated it. (This is far from a condemnation of Gates! Selfish sacrifice is A Good Thing, but that has to come from somewhere. Profit-driven Good is simply another, sustainable way to get a different sort of Good done.)

So, in a fairly Deleuzian move, Cook is going to find the intersection of capital and Good. It can happen with energy. More importantly, it can happen, as Tesla shows us, with cars.

Short of electric cars powered by coal plants, I can't think of anything much worse for the environment, once you multiply pollution by population, than cars powered by internal combustion engines burning gasoline. Can you imagine how much cleaner the world would be if just the cars in the US went to clean power? If just the commuter cars?

Think about this. I remember reading a few years back when interest rates on new cars were about zero that just getting new cars onto the road and the old ones off helped make us significantly cleaner. We weren't even buying cars with better MPG, just ones that burned more cleanly.

The pollution caused by gasoline powered commutes is mind-boggling, and the technology for replacing them is finally here. And so is profit. And that makes this not just the right thing to do, but the Right Thing for Tim Cook's Apple to do with its capital.

As many have already noted, Apple knows a thing or two about batteries. It knows something about software. And it certainly knows about designing something end users want. If you can combine these skills with a new proficiency for creating car-sized hardware, well, maybe the "BMW of computers and smartphones" can become the BMW of battery-powered cars too.

Labels: , , , ,

posted by ruffin at 2/20/2015 02:55:00 PM

The relationship with Superfish is not financially significant; our goal was to enhance the experience for users.  We recognize that the software did not meet that goal and have acted quickly and decisively.

Well, I think Lenovo's relationship with Superfish is financially significant *now*... 

I'm almost to the point that I'd only buy a Windows laptop from the Microsoft Store, which (afaict) doesn't include any third party cruft. I realize this Superfish boondoggle didn't include Thinkpads, but Lenovo can't put the genie back into the bottle. Huge loss of trust that anyone could pretend this was a good idea. 

Their statement to NextWeb doesn't make me feel any better. They thought a system wide self-signed cert with an insecure password (not that a better pwd would've really been better) was a good idea? Are there no engineers signing off on the final disk images there? Wow. 

Labels: , ,

posted by ruffin at 2/20/2015 07:56:00 AM
Wednesday, February 11, 2015

So let's have fun with Perl variable scoping.

sub spam {
    my $mySpam = "my spam";
    our $ourSpam = "our spam";
    local $localSpam = "local spam";

    print "mySpam: " . $mySpam;
    print "ourSpam: " . $ourSpam;
    print "localSpam: " . $localSpam;


sub spam2 {
    print "mySpam: " . $mySpam;
    print "ourSpam: " . $ourSpam;
    print "localSpam: " . $localSpam;

print "mySpam: " . $mySpam;
print "ourSpam: " . $ourSpam;
print "localSpam: " . $localSpam;


mySpam: my spam
ourSpam: our spam
localSpam: local spam
ourSpam: our spam
localSpam: local spam
ourSpam: our spam

*** WARNINGS ***
Use of uninitialized value $mySpam in concatenation (.) or string at C:\tmp\ line 14.
Use of uninitialized value $mySpam in concatenation (.) or string at C:\tmp\ line 20.
Use of uninitialized value $localSpam in concatenation (.) or string at C:\tmp\ line 22.

What's not to like about Perl scoping? Weird, weird language.

Pretty good summary at this SO answer that boils down to...

  • my is the most restrictive. Exists only between the nearest containing brackets.
  • local additionally gets shared with anything called within the nearest containing brackets.
  • our gets pushed everywhere within the script or module context (including things that import your module).

Mostly I'm just happy how well, relatively speaking, PerlRunner is working as a Perl !IDE. I really should take the time to integrate the syntax aware textbox from the CodeProject rather than continuing to hack away to get code editing behaviors in this one (like autoindent, faux tab deletion, and block tabbing). Honestly, his text box has everything, it appears: code folding, export to HTML, lazy-loading, column selection, even autocomplete if you set it up.

But sometimes it's fun to teach yourself to fish a little.

Labels: ,

posted by ruffin at 2/11/2015 10:57:00 AM
Wednesday, February 04, 2015

If you use Remote Desktop Protocol (RDP) on Windows at all, you'll want to take a look at this page, if you haven't already:

What shortcut keys can I use in Remote Desktop Connection?

I feel pretty stupid that I only learned Ctrl-Alt-End in the last few months, and Alt-Home for the Windows key *today*. That's sad. You can even access the tiny menu that belongs to each window through Alt-Delete. For a guy who hits Alt-Space, E, K as many times as I do (to start copying from a cmd.exe window), you'd think I would've been to this party a little earlier.

Labels: ,

posted by ruffin at 2/04/2015 01:28:00 PM

I hate hitting page down and getting breaks in the middle of the view, you know, like what's pictured, above

It's a common trope in pdf viewers to offer two sorts of page viewing. One is to show the pages "continuously", even though your doc is still displayed as independent pages. I've never really understood this. It's the worst of two worlds. You have pages you can't really flip, and they're presented in a scrolled format with giant, distracting breaks between them. Either scroll as a scroll (iOS iBooks has this as an option, which I like -- on those rare occasions that I'm reading via iBooks) or show discrete pages, you know? No, "online" viewing mode doesn't count. What the heck kind of formatting is that? I'm writing a document, not a web page, man! ;^) Even worse is when you view a "continuous" style document, hit page down, and find yourself with a shifting blank spot between your pages which keeps moving as you keep paging down, sort of like when your vertical hold was broken on your TV years back.

I like, obviously enough, "Single Page" viewing in pdf readers. But how do I get that in Word?

Googling for a "single page" setting in Word would be a mistake, I've found. What you're really looking to do, in Word's parlance, is zoom to the whole page. If you have a little less or more than a whole page on your screen, it'll start getting creative when you hit page up and page down, which stinks. But if you zoom to exact page size, it'll behave as if you were viewing as a single page in your favorite pdf viewer, even if you resize the window.

On most Words I've used, from the 90s on up, you can get to this setting by hitting `Alt-V` then `Z`, the selecting "Whole page".

Labels: ,

posted by ruffin at 2/04/2015 09:04:00 AM
Tuesday, February 03, 2015

From StatCounter as recounted by Gruber:

Interesting results from Yahoo’s deal to serve as the default web search for Firefox:

StatCounter has also run a special report on US search engine usage by Firefox users only. Yahoo-on-Firefox usage in the US increased from 9.9% in November 2014 to 28.3% in January. Over the same period Google-on-Firefox usage in the US fell from 81.9% to 63.9%.

There's no way that lasts. I wonder what percentage is permanent.

Firefox hijacked my search bar at some point in the recent past, and after trying a single search, I was setting Google as the default search engine, peeved at the audacity of the sinking Mozilla ship to change my setting without asking. Maybe on that box I'd never swapped from Google as my default, but I certainly have played around with Bing on other Firefox installs and quickly gone back to Google.

Other folks will probably go more than a single search before getting upset enough to learn how to swap their engine, but eventually they'll notice Yahoo ain't as good as what they had before, and ask their tech-savvy friends to swap them back.

I hope. Man, can you believe it if 19% of Firefox users, already probably a slightly above-the-mean group of techies, just don't care, and figure the default search engine is always good enough?

More telling is probably, if Firefox hijacked everyone like they did me, that over 70% of Firefox users immediately swapped back to Google.

Labels: , ,

posted by ruffin at 2/03/2015 07:01:00 PM
Monday, February 02, 2015

From a Digital Ocean article on editing sudoers:

>Traditionally, visudo opens the /etc/sudoers file with the "vi" text editor. Ubuntu, however, has configured visudo to use the "nano" text editor instead.

I know `vi` isn't particularly accessible, and there were more than a few times `vi` popped up when I was writing a usenet post or composing an email *years* ago and I had to ask how to write and quit, but isn't making nano the default for a command named `visudo` taking things a little too far? I mean, if you can't google `:wq!` and you're editing sudoers, well, I think your box is in trouble.


posted by ruffin at 2/02/2015 05:22:00 PM
Friday, January 30, 2015

Some details: February: worked on Dash 2.0 May: mostly played Hearthstone :( August: 3-week holiday September-October: worked on Dash for iOS November: 2-week holiday December: mostly played Hearthstone :(

Wow. For all but one month, the Dash coder is working less than eight hours a day. And he's still pulling in $271,500 in 2014. That's some serious dinky.

Labels: , ,

posted by ruffin at 1/30/2015 08:17:00 PM

It's funny.

13. I would tell you a UDP joke, but you might not get it.

As you might have guessed, there are more.

posted by ruffin at 1/30/2015 07:43:00 PM

Support freedom
All posts can be accessed here:

Just the last year o' posts:

Powered by Blogger