I just figured out that the Scroll Lock key actually does something on Windows! Made me want to scream and burn Excel to the ground, but hey—I learned something new today!
Every time you use encryption, you’re protecting someone who needs to use it to stay alive.
This is the clearest statement I’ve seen of the case for ubiquitous, on-by-default encryption.
This saved me a bunch of time—thanks, Waheed!
Sometimes while in the data flow you need to apply the same function on all the columns in the data flow or all columns have a specific data type, for example:
- Remove all commas and new lines from text columns before exporting them to a CSV file.
- Replace text “Null” with Null value when loading data from an excel file that has nulls as text in it.
- Check for each column if has a null value and replace it with a default value based on the data type.
- Convert all strings to upper or lower case. etc…
The easiest way to do this is to add a script component then use the approach below, here i’m converting all strings to upper case.
few notes about the code above:
- i’m skipping all columns with name ends with “_isnull” as these columns just to indicate if the original column has a null…
View original post 46 more words
I’ve been working with a software vendor on the same support case for 15 days now, and it’s driving me crazy. It would be unprofessional to rag on the vendor here, but I will share a few thoughts on what I want from tech support that I consistently don’t get. Continue reading “What I Want From Tech Support”
I just had a terrible thought: what if WordPress lets you post in Markdown but converts it immediately to HTML and doesn’t preserve the original Markdown source. That would be a terrible shame. I’ll find out in a minute…
Oh, good—it does preserve the Markdown source. What a relief!
I’m so happy they finally added Markdown to wordpress.com!!! Now we need it (natively) in the self-hosted (.org) version…
Markdown has arrived on WordPress.com! Some of you may respond with “Finally!” Others might be asking, “what’s that?” Markdown is a quick way to add formatted text without writing out any HTML.
Let’s take a closer look. Here is an example of how Markdown looks while editing a post:
This is how that same example looks in the Reddle theme after it’s converted to HTML:
Writing with Markdown
Markdown lets you compose links, lists, and other styles using regular characters and punctuation marks. If you want a quick, easy way to write and edit rich text without having to take your hands off the keyboard or learn a lot of complicated codes and shortcuts, then Markdown might be right for you.
For example, to emphasize a word, you just wrap it with an asterisk on both ends, like this: *emphasized*. When your writing is published, it will instead look like this:
View original post 285 more words
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.
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 “SSIS Conditional Expressions (Lightbulb:On)”
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?
Fix the ecosystem…
Of course, vendors need to continue to do their best to write secure code in the first place, and release timely updates to fix errors that do make it into the wild. We also need to work on the ecosystem to make it easy for users to stay current—figure out what Apple is doing right, what Android is doing wrong, and how to apply those lessons to the browser plugin market. (I’m not just picking on Java—I’m thinking of Adobe Flash and Reader, too.) I’m not sure how to get end users to care about keeping these plugins up-to-date, but the problem deserves attention. Obviously, the major plugins now auto-update, which will help, but it’s not foolproof (I’m envisioning malware that intercepts update checks to keep vulnerable plugins in-the-wild longer).
…and build in a time limit
What I’m proposing is that vendors build in an expiration date as a safety net, so if a user tries to run a 12-month-old plugin (which won’t happen if auto-update is working and the vendor is still maintaining the product), it displays an expiration message and instructions for how to get a new version. Obviously this doesn’t solve our current problems, but it should be part of a strategy to make sure we’re not still in the same boat a few years from now.
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.
I’m still learning this stuff and am certainly no expert, but I’m happy to share what I’ve learned.
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.9.1.
Today’s lesson in bug hunting: don’t assume you’re not an idiot. I spent hours yesterday and this morning trying to get Mousetrap.js working. I triple-checked my code against Craig’s documentation, verified the library was loading in the browser, etc. It should have worked. But I set a breakpoint on the line that was throwing the error and there was simply no Mousetrap in the global namespace. Having ruled out an error on my part, in desparation I opened mousetrap.js, hoping to find the bug in there. Instead I found… nothing. Yep, something had gone wrong when I downloaded it, and the file was completely empty.
Bottom line: keep in mind that everyone makes mistakes.
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!
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
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.
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.
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
at the top of header.php.
UPDATE 3/13/2014: I have now verified the IIS method linked above.
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.
The epiphany I just had is that it wouldn’t be WordPress connecting to SharePoint, it would be PHP, which already knows who the user is, thanks to the Kerberos authentication I already have set up. I don’t need to tackle the WordPress part before I can build the SharePoint part.
Transparent SSO to WordPress is a benefit mainly for content creators, editors, and admins—those are a small percentage of my total user base, and managing their accounts is relatively easy.
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.)
If you have a LinkedIn account, stop what you’re doing and change your LinkedIn password immediately. I’m not kidding–just do it. Once you’re logged in, click on your name near the upper-right corner, click Settings from the menu, click the Account tab near the lower-left corner, and click Change password.
Now that you’ve changed your LinkedIn password, think about all of the other web sites where you have accounts–did you use the same (now-probably-hacked) password on any of those? If so, go change those, too (and don’t use the same password this time). If you use the same credentials across multiple sites, all an attacker needs is to crack one of them, and then (in principle) they own any other account with the same username and password.
Done? Great! So here’s what’s going on:
The social networking website LinkedIn is investigating claims that more than 6 million passwords were stolen and uploaded to a Russian-language web forum today.
That was yesterday, June 6. To be clear, it was actually cryptographic hashes of the passwords that were stolen–not the plain-text passwords themselves–but LinkedIn was using an insecure technique to generate the hashes (unsalted SHA-1). I won’t write here about why that’s so easy to crack–Steve Gibson had a good discussion about this in his Security Now! podcast, episode 356 (the transcript is not up on that page yet as of this writing, but he should have it posted soon). For some good guidance on choosing passwords that are resistant to the kind of attacks (“rainbow tables“) that are effective against unsalted hashing schemes, see Steve’s Password Haystacks page.