Windows Batch Gotcha: Use REM Inside IF Blocks

Normally I comment out lines in a Windows batch script by prefixing them with “::"—it just looks better to me than “REM”. But today I found out the hard way (of course) that you can’t do that inside an IF block, or the script dies with… The syntax of the command is incorrect. http://www.petri.co.il/forums/showthread.php?t=43604

SSIS Conditional Expressions (Lightbulb:On)

I’ve often been confused and frustrated by conditionals ( … ? … : … ) in SSIS expressions. The concept is straightforward enough, but the syntax made it really hard for me to keep track in nontrivial cases. Then yesterday I had an epiphany: it’s much easier to keep them straight if you write them on multiple lines.

Continue reading →

I just ran across this great bit of advice I got back in 1995 from Larry Wall, creator of Perl:

Don't get brainwashed by your education into thinking that all the answers have to come from teachers.

Connection: Wiretap Laws

Ed Felten, yesterday: CALEA II: Risks of wiretap modifications to endpoints Today I joined a group of twenty computer scientists in issuing a report criticizing an FBI plan to require makers of secure communication tools to redesign their systems to make wiretapping easy. We argue that the plan would endanger the security of U.S. users and the competitiveness of U.S. companies, without making it much harder for criminals to evade wiretaps.

Continue reading →

A Haiku

I have had a thought. This is the content thereof. Disappointed yet?

Better Questions

Organizational culture emerges from the process of answering questions. The answers aren’t necessarily articulated explicitly, but they’re expressed in the decisions people make, the way people treat each other, and in so many other ways. Organizational leaders may be unconsciously undermining the very culture they’re trying to create, but they can’t change it until they start asking the right questions.

Continue reading →

Time Limits on Browser Plugins?

When Steve Gibson talked on Security Now 398 about how few users' Java plugins are actually up-to-date, this question hit me:

Should browser plug-ins have built-in expiration dates?

The problem with having all of these old Java versions running around is that attacks always get better. How much more sophisticated are the attacks of today than the attacks of just one year ago? Why, then, should anyone think a free browser plugin released today—even if it's secure by today's standards—will stand up to the attacks of one year from now?

Continue reading →

New Project: Backbone Reference App

Today I released a JavaScript reference application, built on Backbone, Marionette, and RequireJS. I've learned a lot over the past several weeks, and at times the learning curve was steep, partly because I couldn't find a good reference application that I could learn from. To-Do apps are the classic example, but they're too trivial to demonstrate how to architect a larger application. I'm hoping this resource will help fill that gap.

Continue reading →

Lessons in Bug Hunting

Yesterday's lesson in bug hunting: don't assume you're an idiot. I spent a few days trying to figure out why my success callback wasn't being called. It had been working before I updated to jQuery 1.9.0, and I didn't think I had changed anything. After much head scratching I found out that jQuery 1.9.0 introduced an Ajax() bug where HTTP status 204 is considered an error. A fix is in the jQuery master branch and will be in jQuery 1.

Continue reading →

/time

I wanted to GET a lot done today: /coding, /writing, &more; but try as I might, I got 302, and /time returned 404.

Shipped!

I launched a new intranet application today. Nothing fancy, just a simple app to address a real need in my organization. Initial feedback has been very positive. Feels good to ship!

Gun Control and Strong Encryption

In light of recent events, I wondered if anyone was making a connection between gun control and the regulation of strong encryption. So I googled it and found that someone had: me, two years ago. Related: why do so many news reports use the term “gunman” (emphasizing the noun; Google News has 2.49 million results in the past week) instead of “shooter” (emphasizing the verb; 216,000 results in the same week)?

Continue reading →

Recipe: Tuna Salad

I recently made a salad that everyone in my family loved so much we made another batch the next day. I don’t have precise measurements, but this will get you started: 12 ounce can white tuna, drained A decent squirt of ranch dressing (enough to bind the tuna together, but not enough to make it runny, maybe ~ 1/4 cup) ~1/2 cup shredded cheddar cheese 4 Chopped green onions Chopped basil Chopped parsley Chopped mint Combine the above ingredients, then toss with: Chopped tomato Chopped Granny Smith apple Mandarin orange sections (canned or fresh) 1 bag salad mix (whatever floats your boat--I used this kind) Tip: chop the tomato and scoot it onto a folded paper towel and let it sit while prepping the other ingredients---the paper towel will soak up a lot of the juice so it doesn't make the salad all soggy.

Continue reading →

Day-of-Week Differences in MySQL and MS SQL Server

Heads-up! In MySQL, WEEKDAY(‘2012-11-09’) = 4 (0-6 starting on Monday), but in SQL Server, DATEPART(dw,‘11/09/2012’) = 6 (1-7 starting on Sunday). If you’re extracting data from MySQL to load into SQL Server, the correct translation is ((WEEKDAY(date)+1)%7)+1.

Merlin Mann in Back To Work #41:

If you're not asking the right question, then there is no correct answer.

Washingsoft UAnix

Here’s another product parody Lars and I did in college: Washingsoft UAnix. This was born out of our frustration with the way the University of Washington had—shall we say—embraced and extended standard Unix functionality.

Microsoft Orifice

Aaahhh, the joys of Photoshop and free time. I just stumbled on this little trip down memory lane—a parody of a Microsoft Office box that my roommate (Lars Blacken) and I did in college.

How to Override IE's Compatibility View Behavior On Intranet Sites

To force IE to edge mode (even on intranet sites, where IE would otherwise use compatibility mode), the server needs to send X-UA-Compatible as an HTTP header. Using a meta element in the document head doesn’t work reliably. I found the answer buried in this Stack Overflow thread. In my case, I was working on a WordPress theme, so I added header(“X-UA-Compatible: IE=Edge”); at the top of header.php. You can also do it at the web server level with Apache or IIS (I haven’t tested either of those methods).

Continue reading →

Single Sign-On Epiphany

When I wrote about my experience setting up AD Single Sign-On for Linux, I said the next step was to extend the transparent SSO experience into WordPress. The biggest reason for that—I thought—was so that the WordPress server could then impersonate the logged-in user to pull resources from our SharePoint server (using SharePoint Web Services) and include them on WP pages. Basically a WordPress front-end with SharePoint doing some Digital Asset Management duties on the back-end.

Continue reading →

Something Old, Something New

Digging into a web portal application. It uses Ajax … and frames. 17 years of Web history, all on one page. (I didn’t know browsers still supported frames.)