Emil Lerch

Husband, Father, Technologist, Cloud Architect

Neomutt setup

Neomutt In my last post I mentioned I am using neomutt for email. This seems completely archaic…how can one do this in modern times? Wasn’t this built for pre-world wide web times, before HTML was even invented? Well, yes, but it can still handle all the modern crazy, and for those not afraid of a terminal and keyboard, it has several advantages: “Modern” mail clients don’t work in the terminal “Modern” mail clients need to be driven by using the mouse.

SMTP and email notes

SMTP and email notes This is a general post to document what I’ve been learning while setting up my own email server. It’s been a long time since working with SMTP directly, especially with things like SPF, DMARC, and DKIM. A few general feelings of this process: It’s not terrible! Running your own server is something that general Internet advice says DO NOT DO. But that advice, at least so far, seems wrong.

Zig build, and how I created a "universal lambda" function

zig build overview for zig 0.11.0, and how I created a “universal lambda” function Having worked with zig starting in 0.9.0, the language, compiler, and build system have come a long way. While still lacking documentation and stability, it feels productive, and with the 0.11.0 release, I have stopped reaching for the latest master branch builds. One of the properties of Zig, for both good and bad, is that it contains everything needed for development.

Wrapping up our exploration: A mini shell

Wrapping up our exploration: A mini shell This is part of an ongoing series: Part 1: Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Part 2: Getting to hello world with Sipeed m0s (BL616) Part 3: Simplifying the tool chain: First steps Part 4: Simplifying the tool chain: Wrap up Part 5: Learning the SDK and USB protocol Part 6: Wrapping up our exploration: A mini shell Through previous efforts, I now have two USB devices.

Learning the SDK and USB protocol

Learning the SDK and USB protocol This is part of an ongoing series: Part 1: Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Part 2: Getting to hello world with Sipeed m0s (BL616) Part 3: Simplifying the tool chain: First steps Part 4: Simplifying the tool chain: Wrap up Part 5: Learning the SDK and USB protocol Part 6: Wrapping up our exploration: A mini shell With our toolchain in place, it’s now time to actually do something real.

Simplifying our tool chain: Wrap up

Simplifying our tool chain: Wrap up This is part of an ongoing series: Part 1: Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Part 2: Getting to hello world with Sipeed m0s (BL616) Part 3: Simplifying the tool chain: First steps Part 4: Simplifying the tool chain: Wrap up Part 5: Learning the SDK and USB protocol Part 6: Wrapping up our exploration: A mini shell “The next step should be comparatively easy.

Simplifying our tool chain: First steps

Simplifying our tool chain: First steps This is part of an ongoing series: Part 1: Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Part 2: Getting to hello world with Sipeed m0s (BL616) Part 3: Simplifying the tool chain: First steps Part 4: Simplifying the tool chain: Wrap up Part 5: Learning the SDK and USB protocol Part 6: Wrapping up our exploration: A mini shell Before going any further, the fact that I now have a bunch of random binaries downloaded from the Internet on my machine, and 2GB of downloaded SDKs, I really want to deal with that issue.

Getting to hello world with Sipeed m0s (BL616)

Getting to hello world with Sipeed m0s (BL616) This post is part of a series. Part 1: Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Part 2: Getting to hello world with Sipeed m0s (BL616) Part 3: Simplifying our tool chain: First steps Part 4: Simplifying the tool chain: Wrap up Part 5: Learning the SDK and USB protocol Part 6: Wrapping up our exploration: A mini shell If you’ve been following along, we have 3 to do’s left after getting to blinky with this device.

Exploring embedded programming with Sipeed m0s (BL616)

Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Note: I do not use Amazon affiliate links. The Amazon links below do NOT kick anything back to me. This is part of an ongoing series: Part 1: Exploring embedded programming with the Sipeed M0S with the BL616 microprocessor Part 2: Getting to hello world with Sipeed m0s (BL616) Part 3: Simplifying our tool chain: First steps Part 4: Simplifying the tool chain: Wrap up Part 5: Learning the SDK and USB protocol Part 6: Wrapping up our exploration: A mini shell I have been dabbling in low level programming lately.

Gitea actions and build badges

Gitea actions and build badges Gitea actions, at the time of this writing, are new. A feature preview blog post was released in December 2022, and as I write this, Gitea 1.19 RC0 was only published a few days ago in late February 2023. There is much work to be done to make the feature complete, but I am excited to adopt it as quickly as possible. I have been interested in simplifying my self-hosted setup and removing Drone.

First thoughts on Zig

First thoughts on Zig I encountered Zig a while ago and it intrigued me. It’s intrigued me enough to write a small utility program for personal use and now an SDK for AWS, with some contributions to upstream projects along the way. All told I’ve written more than 10k lines of code in the language (current net code count is just shy, but I’ve done a lot of refactoring!). My current opinion is that zig, for me is a great blend of high level/low level with a focus on efficiency.

Multi-architecture docker builds: notes on ARM

Multi-architecture docker builds: notes on ARM There are significant dragons in trying to support a wide variety of ARM chips. There are also a significant number of dragons in multi-architecture Docker builds. This post gathers some of my experiences working with multi-architecture docker builds. ARM has emerged as an important processor architecture. Combining the ARM Architecture/ISA, for which a license can be purchased, with custom silicon, several companies have had a lot of success in the market:

PKCS 11, OpenPGP, Yubikeys/Solokeys, and Windows AMIs

Using single key for both PKCS#11 (PIV app on Yubikey) and OpenPGP/GnuPG I was looking at creating a Windows instance on AWS EC2 over the weekend, and I started thinking about the administrator password. In AWS on Linux and likely other Unix-like OS’s on EC2, you can provide a public SSH key and through the magic of cloud-init, the public key is placed in the .ssh directory of the user, which varies based on the AMI chosen.

COULD_NOT_CREATE_SYNC_ACCOUNT Amazon Prime Video, and why root access is important

Early this year, an automatic upgrade to my Amazon Prime Video application was installed. I was happily enjoying Mission Impossible, Season 1, downloaded to the device for use on planes, but the next time I opened the application, I was greeted with “COULD_NOT_CREATE_SYNC_ACCOUNT”, and the Prime Video app refused to load. Well, so be it…I moved on to other, likely more productive, usage of my airplane time. However, this error message bugged me, and a 50-ish minute show is pretty good for taxi+takeoff+climbout to 10k ft (also, 10k feet descend to final approach and landing).

Year of Linux on the Desktop

I have used Linux under one form or another since Slackware around 1994. Not sure when exactly, but the kernel was definitely pre-1.0 and ELF was not yet a thing. Since as long as I can remember, people have said “xxxx is the year of Linux on the deskop”. I haven’t found any good citations for this, but there is a reddit thread on the subject. Linux is all around us, most predominately in servers, but also in IoT devices, our infomatics systems in our cars, our watches, our streaming devices (Roku, Chromecast, Fire sticks and the like), Amazon Echos, light switches, printers, etc.

Minimal Golang System

I’ve been doing some experimentation with creating bare bones systems. These come with a minimal of operational issues - fewer moving parts requires less upkeep, have less code for security issues, etc. Golang is a fantastic language for this, as it is easy in Go to produce a statically linked binary (outside of Windows). Due to the nature of Windows some dynamic linking is necessary. A static binary (admittedly lacking C support) can be generated with a command similar to this:

First Thoughts on Rust

I’ve read the Rust book a year ago but never actually programmed Rust in anger until this past week. I intend to do more with Rust, but wanted to document my initial thoughts on the language as a consumer, partly for posterity, partly to avoid stockholm syndrome, and partly I think it might be useful to anyone on the Rust team interested in the out of box experience with the language.

Rasperry Pi Headless Bootstrap

Recently I picked up a new Rasberry Pi Zero W and was excited but also lamenting the fact that I’d have to dig out a keyboard and mouse. Being lazy, and being willing to work really hard to remain lazy, I was determined to find a way around this. I grabbed a MicroSD card and put Raspian Jessie Lite on it. I then extended the root partition which I found easier to do before first boot since a) it was a virgin distro install and b) since I wasn’t doing it from the running system there were no reboots involved - I could simply eject the card and plug it back in to refresh the block device listing.

Terraform vs CloudFormation

Recently there have been discussions about the advantages and disadvantegs of using Hashicorp’s Terraform vs AWS CloudFormation for infrastructure as code on AWS. While these products change continuously, here’s a snapshot summarization of the advantages of each system. AWS Cloudformation Tighter integration with AWS Services: In my opinion, this is the biggest draw to using CloudFormation. You simply can’t use Terraform for things like AWS Service Catalog. Service Catalog in particular is a huge benefit to acheiving agility with control, and to avoid using it simply because your processes are Terraform-based would be a shame.

Moving AWS images into Govcloud

If you have worked with AWS GovCloud, you know it is a very different region from most other AWS regions. It requires a seperate account, linked to a standard AWS account, and uses IAM users only - root users are not allowed at all. This has always been a best practice, but in GovCloud, you have no choice. GovCloud also has fewer services than other regions. At the time of this writing, AWS Marketplace is one of the services that is missing.

Installation of Arch Linux on a USB stick with UEFI and legacy BIOS Support

I tend to move around machines quite a bit, especially when traveling. As such, I thought it would be useful to have a portable environment on a USB stick. Since I don’t know what type of machine I would be walking up to, this needed to support UEFI and BIOS. I wanted an actual install on a USB stick, not simply a live environment. I chose Arch linux because I like the lightweight do-it-yourself philosophy and had heard good things about the pacman package manager.

Running Windows 10 on AWS EC2

Getting Windows 10 on EC2 isn’t difficult, but perusing the documentation can lead to confusion. You can’t mount an ISO to an empty VM the way you might do in VirtualBox, so this process requires a local copy of the VM to be created, then using the aws ec2 import-image command to create the AMI. When done, not only will the image be ready for EC2, but it will be detected as Windows by AWS and be configured such that it has many of the same AWS-specific features as other Windows AMIs provided by Amazon.

Consider a single container per virtual machine in production

Containers are a great unit of deployment. They’re a great way to isolate code, reduce attack areas, and, well, contain a service. When it comes to deployment in production, operational attributes of containers must be considered. Container technology can enable significant density (described in terms of containers per vm) while retaining isolation between services. However, is this something we want to take advantage of operationally? Two significant issues with pushing for >1 container per vm come to mind.

Xen on AWS EC2

Since I’m working for AWS, I want to understand fundamentally the workings of the open source Xen Hypervisor. I also want to dig more deeply into the emerging Unikernel ecosystem. Of course, I want to do this on Amazon EC2, because generally I prefer to assume my laptop is ephemeral and could be lost, stolen, dropped, etc. However, Xen doesn’t nest well, so putting Xen in a virtual machine on top of Xen is a little bit crazy-talk.

index.html behavior with S3 and Cloudfront

index.html is an interesting beast in S3. S3 is an object store. It is often mistaken for a filesystem, but it is not. It is also not a web server, though it can pretend to be. CloudFront is a CDN, and as such, it is also not a web server, though it does serve web content to users. All this makes for a strange situation for our friend, index.html. index.html is generally used as a default document in web servers.

Static Site Deployment with 'git push' to GitHub

The process I’ve put together for publishing this blog allows for automatic publish to the web as soon as I git commit/git push. This post describes how this is done. As background, this blog is hosted on Amazon Web Services’ S3 service with CDN capabilities and SSL termination provided by CloudFront and Amazon Certificate Manager. This last service is extremely new, to the point that I obtained and assigned the certificate to CloudFront the very day CloudFront integration was available.

blog comments

I’ve decided to add Disqus comments to the site. Having a blog without comments is just…not a blog. That said, I’m not particularly happy with the amount of overhead it adds to the page. My base configuration (no images, no comments) involves a total of two requests to the site for full rendering (three if you count favicon business, which I don’t). The blog is delivered via AWS S3 and CloudFront, which gives me CDN capabilities.

Moving to new site

I’ll be continuing my site off the blogger platform, but retaining this site for historical purposes. Please follow me to my new home at https://emil.lerch.org/. My first post goes into more detail about the move.

Home Backup Strategy

I’ve been meaning to document my home backup strategy for quite some time. In the process of evolving the design, I’ve tried to address the following concerns: Rapid restoration of data in the event of an outage (RTO) Minimal data loss from an incident (RPO) Recovery from accidental deletes Recovery from malicious deletes, such as ransomware Recovery from cosmic ray damage on hard drive platters Recovery from total destruction of the house Recovery from a failed hard drive Nice, but not too expensive.

New Blog

I am transitioning to a new blog host and new, well, everything regarding my blog. I had the following goals when creating this new blog site: Remove dependence on blogger.com Change the url. It’s now more common to not have “blog” in the url Reduce the page size/number of requests Improve the speed of the site (see above, plus CDN) SSL everywhere This is still a work in progress and the styling will be updated moving forward, but I’m a fan of dark themes, so this is roughly where I’m going.

Probing support for architecture-specific native DLLs in .NET

Or…How I’ve tamed the Oracle beast Over the last couple decades, very little has changed with regards to Oracle client software. Install hundreds of MB of code, update network/admin/tnsnames.ora, and finally you can make a database connection. With a little (well, a lot) of elbow grease, I’ve made it possible for .NET applications to run as “AnyCPU” and work in 32 or 64 bit process space on either a 32 or 64 bit OS.

Visual Studio unit testing slow when NetBIOS over TCP/IP is enabled

According to MS Connect, this doesn’t happen. People have reported it, however, in VS 2010, 2012, and I’ve experienced the problems in VS 2013. It’s also listed at this StackOverflow question: http://connect.microsoft.com/VisualStudio/feedback/details/768230/slow-running-in-test-runner I’ve now added this handy PowerShell command to my “initialize a new machine” setup PowerShell script: # Disable NetBios over TCP/IP on all interfaces # to prevent weird Visual Studio slowdowns during unit tests Get-ChildItem hklm:system/currentcontrolset/services/netbt/parameters/interfaces | foreach{ $item = $_; Set-ItemProperty -Path ($item.

REST Basics

I’ve created a video on the basic use of REST from a consuming developer’s perspective. It covers the following: Normal HTTP Methods: POST GET PUT DELETE PATCH I cover the use of PATCH to replace special-purpose functions in MVC, singular vs plural urls and search apis. I also demonstrate the use of the methods at a browser console (w/jQuery). Length - 19:23.

AngularJS and broken http options

Complicating the HTML5 routing and IE9 issue was the fact that AngularJS looks fundamentally broken regarding behavior around http settings. Our server offers content negotiation, so an application url for /widgets requesting a content Accept header of text/html will result in the server sending HTML for the set of widgets it knows about. If, however, the Accept type header is set to application/json, the server will respond with a json object with an array property containing widget data.

AngularJs HTML5 routing and IE9

We seem to be pushing the limits of AngularJS, and we’ve only started using it. The framework is very promising but definitely very new and a little rough in some areas. We’d like to avoid hash urls in our solutions. The backend can respond to our routes just fine, and our backend framework is able to serve up the correct content (not necessarily the same content) for any area of the application.

Enabling Quartz jobs in ASP.NET applications that will run despite restart

With IIS 7.5, you can now auto-start applications and have them continuously run. However, implementing System.Web.Hosting.IProcessHostPreloadClient means having a Process method with some significant restrictions. In a Spring.Net environment, the IOC Container’s context is not yet started, and it will fail in rather spectacular ways if you try to crank it up with a hack. Even if you manage to do this, Quartz does not start up, so your jobs still will fail to run.

Installing Cyanogenmod 7.2 on Verizon Droid 2 Running 2.3.4

They said it couldn’t be done. If you install 2.3.4 OTA update from Verizon, you were stuck with a version that was un-rootable. And rooting is the first step in getting a custom Android build on a phone. Specifically: There is currently (as of May 2012) no way to root a Droid 2 with this system version. As a word of warning, the procedures for getting Cyanodenmod are as scary as the link above, and with 2.

The constraint for route parameter 'httpMethod' on the route with URL '{controller}/{id}' must have a string value in order to use an HttpMethodConstraint.

Wow…what did that mean? Here I am, just using @Url.Action (and BeginForm and any other method that walks the route table backwards). My application is RESTful, so most routes have an HttpMethodConstraint so they only match if the method is correct. I could not wrap my head around this message and ended up using JustDecompile to pull open System.Web.Routing and had a look at the HttpMethodConstraint Match method. You’ll note that the routeDirection parameter tells the object whether to match based on an incoming request (the normal case) or for Url Generation (used for Url.

EduSpring Part 6: Crazy Error Messages and What to do about them

Because Spring will create most of your objects up front, a simple error in the configuration Xml can have disastrous effects. This, in my opinion, is the #1 reason people fear Spring. Here are a few error messages I’ve seen, and their corresponding solutions: The virtual path ‘/currentcontext.dummy’ maps to another application, which is not allowed: This error message usually means you’ve deployed the application to a server, but forgotten to make the virtual directory an application in IIS.

EduSpring Part 5: Spring.Net in an ASP.NET environment (including MVC)

This post is part of a series on Spring.NET. I recommend starting at the beginning if you haven’t already. Also, I am walking through code in the accompanying GitHub project. By now, you should have the basics of DI, IoC, and the benefits and drawbacks of the approach. Now, I’ll introduce you to the architecture of Spring.NET in an ASP.NET environment. I’m sure a lot of other IoC frameworks operate in a similar manner.

EduSpring Part 4: What is so terribly broken with Dependency Injection?

Move all the CS BS to the side. This stuff doesn’t work in the real world. And it’s because of things that could have (and probably should have) been fixed by uber-geeks 10+ years ago with fancy CompSci PhDs. And I’m talking about .Net specifically here, although I can throw the same stones at Java. Most (but not all) other languages have the same problems I’ll get on my soapbox about here.

EduSpring Part 3: What do we need an IoC for?

This post is part of a series on Spring.NET. I recommend starting at the beginning if you haven’t already. Also, I am walking through code in the accompanying GitHub project. Last time, I walked through why we might want to use dependency integration. Outside the authentication example, here are a few other examples: Authentication Authorization SMTP settings Payment gateways Business rules (rule engine style) Branding This time, I’d like to explore how an IoC container actually does its job.

EduSpring Part 2: Simplifying dependencies

Last time, I introduced you to Spring, IoC, and Dependency Injection. If you haven’t read that post, please do. This time, I’ll start walking through some of the code in the accompanying GitHub project. The code is organized by project in order of these posts. Some conventions (specifically 1 class/file) have been ignored specifically to let the reader go through in a linear manner. All projects are setup as console applications.

EduSpring Part 1: Introduction

I get quite a few questions about Spring.Net, so I thought I’d put together a VS Solution, presentation, and set of blog posts to provide some background and details about what it is, why/when to consider using it, and how to configure and debug the framework. A lot of this material will not be specific to Spring.Net, but rather Dependency Injection generally. To understand Spring.Net, you must be familiar with Inversion of Control and Dependency Injection.

Total application design: circa 2011

Working with a few recent projects I’m getting pretty close to a nice boilerplate for a “standard” web application built with the latest technologies. Subject to client restraints, here’s the stack: UI and middle tier: ASP.NET MVC3 (using VS2010 SP1). Note that this requires .NET 4, which has some nice features (I love Tuples) but I don’t think is completely necessary otherwise. SP1 is important, which I’ll mention later. For smaller-ish applications I’ve been moving away from multiple projects in a solution, mainly because I haven’t been seeing a ton of real business logic besides authorization, and I’ve been able to productize many ancillary functions into separate DLLs.

Supporting Multiple Databases in Applications

In general, having a persistence-ignorant application provides a lot of flexibility. Allowing us to easily port between various RDBMS’s, NoSQL data stores, text files, the cloud, or simply storing our data on papyrus managed and maintain by a group of beer-making monks provides us with tangible opportunities to cross-sell our (non-hosted) application to multiple clients. As any write once, run anywhere scheme, support for multiple databases can be notoriously difficult. Consider the following SQL Server T-SQL code:

Batch uploading RDL files to SQL Server Reporting Services 2005

There doesn’t seem to be a tool to mass-upload all RDL files in a directory, so I created one. It’s available on BitBucket here: http://bitbucket.org/emil/bulk-rdl-uploader-for-ssrs-reports/overview/ The executable is available here: http://bitbucket.org/emil/bulk-rdl-uploader-for-ssrs-reports/downloads/ReportingServicesBatchUpload.exe This is a console application with no dependencies (it calls a web service). Call without parameters for usage information. One known bug is that the “create a folder if it doesn’t already exist” logic seems to be broken for some servers, so for best results create the reporting services folder prior to running the program.

Working with a feature branch in Subversion (TortoiseSVN on Windows)

Branching and merging is one of the most nerve-racking activities for people working with Subversion. Unlike Mercurial and other DVCS where branching and merging is commonplace, typical workflows in Subversion do not include this activity. As a result, the terminology is typically confusing, the massive number of changes can be scary, and a lot of people are so concerned about “getting it right” that they typically just avoid the practice altogether and work completely outside of source control.

Spring.Net-enabled WCF Services available from Microsoft Ajax

Implementing Spring.NET WCF services is fairly straightforward. Implementing MS Ajax WCF services is also straightforward, if you pick the right New Item to add from Visual Studio. The complication comes in when you want a Spring.NET WCF service that handles calls from Microsoft Ajax controls. This method will let you add them. Step 1. Add new “Ajax-Enabled WCF Service” Step 2. Create your methods, test and make sure all base functionality is working.

Intermittent Operation Aborted Errors in IE when using MS Ajax

This issue has been plaguing our project: operation aborted errors, intermittent in nature, occurring sometimes as little as once/week. Even in IE 8 there were issues, although thankfully not the crazy dialog box we see in IE 6 and 7. It turns out that the problem is due to a bug in Ajax itself. I won’t go into all the details, since they’re covered very well in these two blog posts:

Javascript Hacks: Using XHR to load binary data

I recently needed to get image data from a server using Javascript, base64 encode it, and post that data back to an application. While the details of why I needed to do this are a bit complex, I believe that getting image data through an XMLHttpRequest object and base 64 enconding it will become more valuable in terms of client-side image manipulation using the data URI scheme for image tags.

One more technical analysis link

I bumped across Stoxline during my recent foray into the technical analysis world. It provides a good quick summary of some key price points.

Excercising INTC stock options

So I’ve excercised the remaining stock options from Intel that remain above water. There are still a large number of options that will die worthless (my original options were priced at $67 back in 2001, current stock price is $23.52, and there were no splits in between). The next set of options that even have a shot at becoming in the money are priced around $26, and with 3 weeks out, it would be surprising if they became valuable.

It could have been so much more effective with a little B&E

A couple days ago I got a flyer on my door advertising a security system and monitoring package. I’m not sure how many people actually respond to a blanket flyer like that, but it got me thinking…wouldn’t the flyer have been more effective had they managed to leave it somewhere inside the house while we weren’t home? Illegal - yes. Effective: definitely.

Check for valid stored procedures

I just posted a small utility on CodeProject to check for valid stored procedures, views, and functions (in SQL Server). It’s actually a polish of some work someone else had done earlier, but if you have a large number of objects and are doing significant database refactoring, you may want to check it out.

Street signs

When crossing the street and seeing one of the standard walk signs (such as the one to the left), I have a habit of imitating the sign and saying “white man walking”. Well, Sweden is now crossing the gender barrier with their new signs. Where this will lead, I’m not sure. Non-caucasians? Dogs? Cats? It does make me wonder, if the signs are specific, is Sweden now implying that where this sign is posted, only women are allowed to walk?

Google Maps update

I just noticed that Google Maps introduced the ability to show historical “average traffic” for any given time on particular day of the week. I just used it to confirm my commuting schedule, and it seems to correlate well with my experiences and validate that the times I drive are pretty reasonable. There are definitely some systemic traffic slowdowns in the Portland area. For example, 26 west bound between Murray and Bethany is nearly always a problem from 4PM-7PM, probably stemming from the fact that the road moves from 3 lanes down to 2 just after the Bethany exit.

Calendar sync bliss (finally)

Finally, a calendar sync solution that works. After my experiment with gSyncIT, I just couldn’t quite get past some of its limitations. Once multiple calendars get involved, things get a bit ugly. A coworker recommended SyncMyCal as a way past those issues, and I’m pretty happy. You’ll see my calendaring setup to the right. Google Calendar is pretty much my primary calendar, and I have several calendars loaded. Some calendars, like US, UK, Indian Holidays and the Winterhawks game schedule are information only.

C# Covariant Generics

Sorry for the highly technical posts…lighter stuff to come! This has really been bugging me on my current project. In an object oriented system, if one class inherits from another (e.g. “Cat” inherits from “Animal”), and a method expects to receive the base class as a parameter, it is safe to send in a subtype. In my example, a method operating on “Animal” can take “Cat” safely. This is sometimes called “downcasting”.

Yet more SQL 2005 fun: Developing search procs

A common pattern in applications is to have a search stored procedure work as the backend for a search screen. If a term has not been passed by the user, the intent is that there is no filter on the results for that parameter. Here’s a great article discussing the ways that this can be acheived. I’m a personal fan of the COALESCE statement talked about in the static discussion.

More SQL 2005: SqlDependency update

While SQL Server data update notifications through the SqlDependency object seemed like a great idea, I now believe the architecture is fundamentally flawed…I’m looking forward to changes in this area to make the feature more robust in the next release(s) of SQL Server and/or the .NET Framework. Here are some of the problems I’ve run into: Massive amounts of required permissions in the default run mode Query types available are incredibly restrictive Ineffective tear down of resources, again, in default run mode, with no programatic workaround.

Database permissions for SQLDependency

While I like the idea of SQL 2005 Query notifications, the setup restrictions and instructions are fairly opaque. Blah! I did manage to get it working after noting all the restrictions on the query in this MSDN article, but then I made the mistake of removing dbo permissions from the user, and was thrown into the mix again for another hour of churning. This blog post was pretty useful, but didn’t go quite all the way.

Windsor Solutions

After 7 years at Intel, I’ve have now joined Windsor Solutions, a 35 employee company focused on systems to manage environmental reporting and compliance at various state and local governments. It’s energizing to be part of such a vibrant, growing organization, with the ability to wear many hats!

Javascript/PHP annoyances

I ran across a problem the other day in a PHP script, where a variable wasn’t getting populated. It turned out that I misspelled the variable name - clearly my fault. However, it got me thinking about the language itself, and how it is actually somewhat hypocriful. On one hand, PHP (and Javascript for that matter), is relaxed when it comes to variables. There is no strong typing, and in PHP, you don’t even need to declare a variable before using it.

Add-in manager not disabling add-ins in Visual Studio?

I stumbled across this problem today, and found an interesting feedback page to Microsoft regarding the issue: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=105560 Workaround: Regedit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\AddIns Go into the add-in key you’re interested in disabling Manually set the LoadBehavior entry to 0x0

Google Calendar Sync

Looks like Google just released a tool to synchronize Google Calendars with Outlook. Woo hoo! Unfortunately, it will only sync with your primary calendar, so in the meantime, I’m still using gsyncit.

Tip of the day using 7-Zip

I just stumbled across some interesting behavior in 7-Zip. Not sure why this is how it works, but if you drag and drop a file from 7-Zip into a directory to extract, the extract will first go to the temporary directory and then be copied over into the destination file. If you click the “Extract” button and select the directory, the file is extracted directly in the destination directory.

Uniball 207

I had a little pen issue - a few of my good pens were wearing out. Bad pens kind of bother me. I’m too cheap to spend a lot of money on pens. I did a quick search on the Internet, came across this review, and was sold. Costco carries a pack of 12 for $15.68 online (I thought they were 11.59 in the store, though). Done deal - after about a month, I’m still very happy with the choice.

...And, we're back!

What a crazy few months - more on that later. Just wanted to mention that I do intend to pick up the blog again (roughly daily as I did last year). Future topics: Work-related stuff Javascript/PHP hypocrisy Consumer electronics (FIOS TV service, Logitech MX 5000 for BT, Jabra BT8010, etc.) Work done to the house Other stuff on my mind that no one probably cares about Also wanted to quickly mention a big CONGRATULATIONS to Doug and Lisa Downey on the birth of their daughter Greta Marie!

Standards...or lack thereof

I was just typing up an email, and noticed that I looked down at the keyboard to find the delete key. I asked myself why, and then looked at the keyboards around me. Home, End, Delete, Insert, page up and page down are all grouped together, but on every keyboard I use, they’re in a different configuration. My Dell keyboard at work is: Home PgUp End PgDn Delete Insert My Thinkpad:

Determining internal vs. external email

I’ve been trying to get a good Outlook filter to determine internal from external mail. You’d almost think this is a standard request, but it’s actually pretty difficult, especially at a large organization like Intel. After some time trying to figure it out and following some bad advice from Microsoft, I ran across Ray Jezek’s Blog : Outlook Rules with Exchange. The idea is fairly sound, but alas, does not work at Intel, where we have many Exchange servers.

Slowdown in Visual Studio

The other day I had a sudden and mysterious slowdown in compile times within Visual Studio. When I didn’t see an associated CPU spike during the compile, I increased the verbosity of the compiler and checked the output, only to see it pausing at a file copy. Here I had added my project’s SQL Express database to a library directory rather than the web site, so studio dutifully copied the database over.

Google reader

So I’m now giving Google Reader a try, for the following reasons: I am going on an extended, paid leave from Intel shortly, and will likely not be using my notebook much As a result of #1, I want to be able to read my feeds anywhere I believe Outlook RSS is contributing heavily to random slowdowns Outlook RSS is certainly helping Outlook slam my hard disk (this is a problem in Outlook 2003, seems to have gotten worse in 2007, and is even crazier with several RSS feeds) I don’t see duplicate posts in Google reader the way I was in Outlook.

Software I install

I’ve been working on this list for some time, and now I think it’s finally near comprehensive. This is the full list of software I install. Software is organized by category, where: Basic software gets installed on any machine Home software gets installed at home Development software gets installed on any machine whenever I need it Business software gets installed on my work laptop Server software is installed on my home server (expected to be up 24x7) Portable software runs directly from my USB key Portable - Development software is used for development from my USB key Make sure to check out the other sheets in the spreadsheet.

The things you learn about yourself

I can’t believe it took this long to find out this little factoid about myself. I was on the phone today with a customer service agent, and I announced my name as I always do: “Hi, this is Emil Lerch. I’m calling because…”. In this case, however, after I described the issue I was having, the customer service agent said, “I’m sorry, did you say you were with Merrill Lynch?”. Thinking about it, I can totally see how under a bit of distortion, my name does sound a bit like a giant brokerage firm.

Really, really cool web site

Lately I’ve been questioning the value of Quicken, since the integration with financial institutions is finicky and getting everything updated appropriately takes a really long time. Typically, I use Quicken for 3 purposes: See our net worth See how we spend our money Seed tax software with donations and such A distant 4th is to see how our investments are allocated and determine if any rebalancing needs to be done, but the last time I did that, we just put everything into a spreadsheet.

Good (and cheap) computer

So I’ve been running this machine now for the past few weeks, and so far, it seems great. Most parts were purchased from newegg, and here’s the final list of parts purchased. In all cases, I went for maximizing price/performance ratio. The case in particular was a great win…I was amazed how good it was for the price. Here’s the bill of materials (note that the CPU was purchased from Intel rather than newegg, and parts that no longer are sold by newegg don’t show up on the wishlist anymore): http://secure.

How many popups does it take to get your health benefits?

I find that internal sites and “logistics” sites (e.g. travel) tend to have a crazy number of popups for no reason. Seriously, don’t the people at these companies use the Internet? There is a place an time for a popup, but these guys go nuts. Here’s the popup count for a typical “view my claim status” on Intel’s (outsourced) health benefits site: Go to the home page. Browser reports that a popup was blocked.

Tip for central air conditioning

A little bit of randomness. We had an air conditioning tune up yesterday. Basically, they just checked everything out…no actual maintenance was required). During the check-out, they asked if I had a bunch of vents closed. I had been closing the downstairs vents to force the cold air upstairs in the summer. However, the idea backfired somewhat, as this just created back pressure that kept the cold air sitting in the vents rather than coming through the house.

When bad decisions collide

Sometimes this stuff drives me nuts…I get an email with a link, but the URL itself is attached to a graphical button, and Outlook doesn’t let me copy the hyperlink off an image. I click the button, which launches my default browser (firefox), which the site doesn’t support, so they redirect me to URL/unsupportedbrowser.aspx in a way that doesn’t allow me to hit the back button to see the original URL.

D-Link DIR-655 gets certified 802.11n draft status

I do like this router, and it’s good to see it come through certification. It seems like we’ve been waiting forever for 802.11n finalization, but things are moving slowly. Review: http://www.smallnetbuilder.com/content/view/30087/96/ Product Page: http://www.dlink.com/products/?pid=530&sec=0 Certification press release: http://www.dlink.com/press/pr/?prid=341

NIH Syndrome: symptom or cause?

I was listening to a podcast this morning and the person was talking about NIH Syndrome. This is one of those things that consistently rubs me the wrong way, primarily because I believe that managers’ actions and managers’ talk diverge significantly in this area. Many things that are not invented here cost money. Because, as a coworker once put it, “man-hours are free”, the tendency for a lot of managers is to use their people to re-invent the wheel rather than putting together whatever justification the organizational bureaucracy needs to cut a PO.

Why, oh why

Do I get this page, telling me that I can’t get FiOS, when not only is it possible for me to get FiOS, but I’m connecting to the web site over a FiOS connection! You’d think they would have fixed this in the past 18 months, but I guess they’re not interested in new customers. (I go to the site periodically to find out if I can add TV to my existing FiOS, but I’m not sure why I bother…I apparently need to call to find out.

Smartphone application update

I had some time the other day so I actually looked at the stats for the 2 smartphone applications I wrote a while ago. I was shocked to find that Notepad had 558 downloads and Stopwatch had 275 downloads. I don’t know how many people are actually installing and using these applications, but I’m glad I could help make their lives a bit easier.

Excellent illustration of a common business problem

Even one presentation like this video is too much. Tell me how you plan to achieve actual business results, and give me some realistic numbers. The hockey stick doesn’t cut it without significant justification. What really bothers me is when I’m told (especially by my own management), “the numbers are just too hard to get, but there is absolutely a positive ROI to this”. Nine times out of 10 it’s a cop out, and the translation is that you’re just too lazy to do the analysis you should be doing.

Home network

In addition to all the recent house changes, I’ve been reconfiguring the home network to improve a couple things, and it’s been quite the saga. Here’s what I wanted to fix: Move off of WEP security in favor of WPA2. This is not just for better security, but because, at least for my router, you cannot use WEP if you want to support 802.11n clients. I don’t have any yet, but don’t want to be prevented from the faster speeds, either.

Aaaahhhhh....

Kelly and I have been on a tear lately (as much of a tear as us analytical/methodical people can be) getting the house the way we want it. We’ve been selling some stuff on craigslist and making a ton of purchases. Here’s a quick list of what I can remember doing over the last 6 months: Had house interior painted (this is huge, considering our two-story formal living room) Created a “photo wall” Purchased three bookcases, gave one bookcase to goodwill Moved some picture frames to a new wall Got an entertainment center to replace our old one (known as “Pac Man” after we stuck our new plasma TV into the space designed for a regular CRT) Sold floor standing Infinity speakers, center speaker, and rear speakers, purchasing a full set of Polk speakers (in process) Selling coffee table and end table, with the intension of purchasing “cubes” for the family room Well, today I got a hidden IR system, which so far is making me very happy.

Password safe and folder share

I recently installed both password safe and foldershare, with the intention of using them together to: Maintain my passwords in a more secure way (password safe) Have a copy of the passwords synced on the computers I use (foldershare) The solution works great, and is highly recommended. Foldershare is blocked at work, but my password file doesn’t get changed too frequently, so I’m ok with it. Prior to finding foldershare, I actually started coding my own solution - this was a great find, and I can’t wait to see what Microsoft does with it post-acquisition.

Cookies and affirmative action

Yesterday I heard a very strange analogy. There is some political unrest right now in northern India, and it seems as though the cause of the unrest boils down to a certain class of citizens that want to be included into the country’s version of affirmative action. The affirmative action system was established when the country was founded in order to end the caste system, and was originally intended to be ended 10 years.

4AM in India again...

I don’t know what it is about my body clock, but very consistently, when I travel to India from the west coast, I get crazy awake at 4AM for probably the first week. I arrived in India Sunday around midnight (that’s about noon west coast time). Now it’s Tuesday morning at 4AM (Monday afternoon about 4PM west coast time) and I’m wide awake. My strategy here usually involves allowing myself some awake time…usually about an hour, and then going back to sleep.

Coolest tip of the day - for Gmail

I read this piece on lifehack.org today, and saw this killer tip: Send spam to trash. Instead of having Gmail-filtered spam go into your Spam folder (and have the annoying count of unread spam by the folder’s name), set up a filter with “is:spam” in the “has the words” field (just click “OK” on Gmail’s warning dialog box when you click next step) and “Delete it” as the action. Now all spam messages will go in your trash.

How to write a question that answers itself

Just ask a yes/no question in a FAQ about whether or not a feature exists. The answer to that question is clearly “Yes”. For instance, this question from Google calendar’s FAQ: Can I check my calendar information via SMS? Clearly I can check my calendar information via SMS. I don’t see another question saying “Can I check my calendar information via carrier pigeon?”. The reason I don’t see this question, is that I can not check my calendar information that way, and Google isn’t typically going to put a FAQ item out there to tell people what they won’t do…FAQs are as much of a marketing tool as a way to disseminate information.

Popular baby names

According to popular baby names from around the world, my name has ranked #7 in Finland this year and #10 in Sweden. As my name is definitely not known very well in the US, it’s good to see this kind of news from time to time.

Spam

I’ve had now 3 different fraud attempts in the last week (we need your help to claim x million dollars…) appear in my inbox, both at work and at my personal address, making it past all spam filters. I have another 2 in my junk email at work, where I hardly get any spam at all. It’s odd to me that this has happened so suddenly. Maybe these people are in the US and have more time over memorial day.

Quick tip on google calculator

I noticed a while ago that google toolbar in both firefox and IE has a very nice feature. As you type a search, it will do an autocomplete based on popular searches. However, if you put in google calculator terms, it will also provide the calculator answer in the dropdown, so you don’t even have to hit enter to see the answer. I used this yesterday, for instance, to determine how many teaspoons it takes to make 1/2 a tablespoon (1/2 tblsp in tsp).

For the love of god, just do it...

Sometimes it’s the little things that just drive you nuts. Like all the meeting requests I get from people with location “TBD”. At Intel it takes about 1 minute to schedule a conference room or phone meeting. You’re already spending at least 2 or 3 minutes finding the right attendees and putting together an agenda for the meeting, why postpone this minor inconvenience? Inevitably this “TBD” gets sent in another update about 15 minutes before the meeting.

Getting around lousy software

I like HP’s printers, but absolutely hate their software. Here’s a list of problems I’ve had with them off the top of my head: Software assumes you can connect to the printer at all times - if you’re not, periodic episodes of 100% CPU utilization occurs. Disabling WIA (Image Acquisition Service) cured that problem. Software periodically crashes for no particular reason, and when not using the software actively. I believe this is related to the “always connected” issue above.

Not all Wal-Marts are created equal

I recently used Wal-Mart’s Site to Store (not a bad service!) to buy an entertainment center for our house. The particular store I had it delivered to, however, was ickier than most Wal-Marts. Allow me to illustrate this store’s placement on a standard statistical bell-curve of Icky-ness:

Picopad - seems cool so far

I just got my Picopad in the mail and slipped it into my wallet. Everything seems as advertised so far, but I have yet to try it out in a live environment. I’ve loved my Signature knife for a long time, but I’ve had a problem with using it while traveling. I don’t like to take it off my keyring and check the knife, so I’m stuck leaving it at home, and it’s when I travel that I seem to need it most.

Very nice trend

I like the idea of being able to quickly have a full OS and environment available for use through the distribution of files for a virtual machine. Especially with the cost of VM software driving down quickly (for personal use without support this is now usually free), this is especially useful for development and testing. A couple quick links on this: rBuilder Online - Release: LAMP appliance (I found the latest release to be broken, but this one works - your results may vary) Orcas Community Technology Preview.

Dual monitor setup

I just changed offices and so I’ve taken the opportunity to try out a new monitor setup. My primary machine is a laptop and I have a external monitor, so I’ve always enjoyed the extra real estate of an extended desktop, at least when I’m in the office. However, I was finding the setup of limited use the way I had it, with my monitor above the laptop. After moving to the new office, I put the monitor to the (left) side of the notebook, and now on day 2 I’m finding it to be very comfortable and useful.

Back from Mexico - that's a big fish!

Here is the head of the fish I caught in Mexico. It’s a Roosterfish. We had a great time hanging out and pretty much lounging, but on Tuesday we went fishing and I taught the locals a thing or two. This fish is 63" long and 96lbs. The world record Roosterfish is 66" long and 114lbs. The fish my brother-in-law caught was no slacker either. We hooked into these fish within a few seconds of each other, and his fish was 54" long and 83lbs.

Blogger and Outlook 2007

I noticed that atom feeds from blogger in Outlook 2007 appear to be broken. All posts (at least on my machine) show up with a date of 12/31/2006. This help file shows you how to get to an RSS feed, which works correctly in Outlook. Note that the trick does not work with the old style blog URL (http://example.blogspot.com/atom.xml), but only with the new style URL available only with the new blogger (http://example.

Passport saga

We are taking a family vacation to Casa Manana in Bucerias, Mexico, just north of Puerto Vallarta. We originally applied for Kathryn’s passport back on January 18th, and were given March 15th as the date for the passport to get here in the mail. Due to the recent changes in travel regulations, we expected it would take longer, but we decided 3 months (12 weeks) was plenty of time, and we did not need expedited service.

Calendaring events way in the future

So after receiving Kathryn’s passport, I had to deal with the fact that it will expire, and that I have to remember to renew the passport when it does. I believe that software definitely has a half-life, so I had to question the use of Google calendar, which for our family is at calendar.lerch.org through the Google apps for your domain service. While I like the service, will it still be what I’m using when my passport expires in 2014?

Mappy Hour

I was just forwarded a link to the cool site of the day. It’s a mashup combining happy hour information with Google maps. Awesome.

Blog URL change

The current URL will still work, but I’ve set the blog up so it can now be accessed via emilsblog.lerch.org. Our family blog is at blog.lerch.org.

Coolest thing I've seen all day

Google maps launched a way to annotate and save your own custom maps. I’ve started a map of my overall travels, and one specifically focused on places I’ve been in India. I see this being a big project, but it would be nice to have URLs to pictures, etc. at each site. More tangible value for this can be seen in the map I’ve done to show where to park and how to get to Bethany Community Network meetings.

Holy crap that's a good router

So my router problems came back mysteriously, and disappeared just as mysteriously several days later. I’m still not sure what the problem was, but in the meantime I decided I had spent enough of my time trying to diagnose the problem and bought a DLink DIR-655. The router still requires a lot of reboots during configuration, but not nearly as much as my original one. However, this is rock solid, and fast.

Membership and Role providers for MySQL

Stumbled on this the other day while looking for a way to use MySQL with ASP.NET and thought I’d share. Membership and Role providers for MySQL - The Code Project - ASP.NET

Is all press good press?

I just noticed this post, and it’s interesting to me that a company’s internal OS upgrade schedule would be taken so seriously, but this is Intel, and that, I guess, makes things a little different.

New Role

So, I’m all set…getting settled into a new role as a capability manager at Intel, working on non-Direct customer applications and data. If that’s clear to you, let me know because I have some questions myself. ;-) It’s been quite the start - this is actually a very high priority in our group right now due to the variety of systems that contain unique sets of customer data. Everything is coming to a head right now due to a desire to converge onto a single platform, so my first program and project will be on the critical path to at least 5 other programs.

Role changes

It appears as though my time in my current position (as a product manager for systems supporting our customer support processes) at Intel is about to end. The new adventure is still to be determined, but I’m rapidly closing in on 3 alternatives. I should have more information, but not necessarily a final answer, sometime next week.

It depends

I’ve heard the expression that the answer is almost always, “it depends”. Whether or not the answer is “it depends”, of course, depends on certain factors. ;-) Math problems usually have a concrete answer, for instance, at least until you get into more advanced subjects. One thing I try to keep in mind, however, is that an expert in the field can always tell you what the answer to your question depends on.

Virtualization bad for hardware sales?

I just read this blog, which points to this article, and I disagree. Virtualization is good for hardware sales, because it shortens the hardware refresh cycle. It will certainly cause a shift toward a fewer number of larger, more expensive servers, but it also means that replacing those servers with faster ones will be a lot simpler, and companies will be much more likely to throw more hardware at performance problems than they were in the past.

What good is a phone call if you can't speak?

So having a daughter is fantastic, but it’s been interesting to see how logistics work when you can’t sign your name…here are two recent logistics issues and how they needed to be handled: Obtaining a passport: Kathryn had to get a picture taken, and show up with both Kelly and I at the passport office with photos in hand, a birth certificate showing Kathryn was born in the US and naming Kelly and I as parents, and our drivers licenses to prove we actually are the parents Once we get her passport, it is not valid until signed.

Light reading

On the way back from India I read an article (PDF) on tax diversification when working on retirement savings planning. I thought it was an exceptional article…absolutely recommended.

Driving in India

Unless you’re native, don’t do it. I just uploaded a few short videos of the driving experience this past weekend in Delhi and in Agra. I’ve been staying in Bangalore, but the driving experience is pretty much the same. I also have a very short (but boring - buildings don’t do a lot of stuff) video of visiting the Taj Mahal.

Trip to the Taj Mahal/Fatehpur Sikri

So I just finished uploading pictures of my trip to the Taj Mahal and Fatehpur Sikri. Fatehpur Sikri was very impressive, partly because I had no idea what to expect when I got there (by contrast, most people have an idea of what the Taj looks like and what it’s about). The wikipedia entry gives some background on the site, but doesn’t mention a very important fact: I’m told that Akbar had 3 wives, one Christian, one Hindu, and one Muslim.

Yikes - long time

So I’ve totally gone dark. Short summary of what I’ve been up to: Crazy work stuff (December) Christmas with wife/daughter in Chicago Crazy work stuff (January) Business trip to India I’m India right now. Will try to post more…

Interesting conclusion...where did that come from?

I was surprised to see a stock I own (INPC) on this list today: Russell 3000’s Best and Worst Performing Stocks: Financial News - Yahoo! Finance It says YTD performance for INPC is 279%. I’m not sure how they get that…the closest that I find is a 140% gain if you bought at the 52 week low (5.02) and sold at the 52 week high (12.07). I don’t want to call them a liar or anything, but if YTD is defined as Jan 1 (8.

IE7 Failed Experiment

With the recent production release of Internet Explorer 7, I thought it was time to revisit my default browser decision. I’ve been fairly happy with Firefox, but have had a few annoyances: Copy/paste of HTML tables into applications (Microsoft Word and Excel) doesn’t work nearly as well as with IE Proxy changes don’t happen without at least an extra trip to the options. To be fair, IE 6 didn’t handle it at all, but since the browser lacked tabs, starting a new instance wasn’t a difficulty Some internal web sites designed the authentication in a manner that required another click to get in When printing, some pages arrive with parts chopped off from the right Some web sites (e.

Not sure why I need this, but it's freakin' cool

So I went to my usual yearly eye exam the other day, and they had a new piece of equipment to help make sure that my retinas were healthy. It takes a picture of your retinas. Anyway, after the deal was done, the technician asked me if I wanted the photos emailed to me. Do I need that? Absolutely not. Is it cool? Yes. My response? Totally email it! Without further ado…

Election results

Interesting day. Looks like the results are in, and democrats are taking control of at least the house. Call me cynical, but having different parties in control of different branches is my best case scenario. Gridlock is great…do we really want government messing things up more? In Oregon, it looks like everything is going to the democrats, so I don’t get my gridlock. I guess you win some and lose some.

SQL Server Hosting Toolkit

Just stumbled across this in my travels, and it looks pretty cool. This SQL Server Hosting Toolkit will generate database scripts from one database to deploy to another database, in an environment where full access is not available, say at GoDaddy.

Faking the soda machine

Quick tip to keep the amount of change in your pocket to a minimum. Suppose you only have a large bill in your pocket, and you want a soda (which of course is the only appropriate term for the substance). The soda machine will always stop accepting money after you’ve met or exceeded the amount of the highest price item. The solution? Put in the change followed by your large bill.

Small decisions that signal big ones

The other day I was visited by someone with a stack of manuals for a technology/product that we’re using in our group. I was asked whether we should throw those manuals out of keep them. I told them to go ahead and throw it out. This is a technology/product that is currently in use. We’re moving to a new technology/product, and that small decision to throw out the manuals felt to me more like a massive strategic decision that yes, we’re committed to the new direction.

Bush keeps Rumsfeld, Cheney

Here’s something interesting I heard yesterday. Bush came out and announced he will hold onto Rusmfeld and Cheney until the end of his administration. Despite what you may think of the administration, it says a lot that Bush has to come out and make that kind of statement.

Sometimes you need to think through the ramifications

I’m currently on hold with my pediatrician and was amused by the phone announcement. After the usual “if this is an emergency please hang up and call 911” yada yada, it mentioned that “if you are a non-english speaker, please call us at xxx-xxx-xxxx”. Well, if I were a non-english speaker, would I really understand that request? The note was never repeated in Spanish (or any other language).

My Firefox tweaks

For speed, I’ve enabled pipelining. Here’s how: about:config in the address bar type “pipelining” in the filter set “network.http.pipelining” to true set “network.http.pipelining.maxrequests” to 8 set “network.http.proxy.pipelining” to true For access at Intel, I also turned on http authentication: set “network.automatic-ntlm-auth.trusted-uris” to “intel.com”

Optimizing Page Load Time

Stumbled across this page today…interesting discussion of how to bring down page load times. Optimizing Page Load Time

When good ideas go horribly wrong

I just signed up for a service to connect me to Intel’s network while out of town. I got 3 emails to confirm my service was active: Email with my username Email with my password Email to state that my order was approved Good idea…seperate the username email from the password email (although a better idea would be to allow me to choose username and password). However, email #3 included both my username and my password, so a) what’s the point of the other 2 emails, and b) the security advantage has been completely defeated.

Tracking tool mashup

Here’s a neat little utility for tracking packages. I like the touch of adding RSS feeds. One small enhancement request…at least with UPS you get an expected delivery date. I assume many other companies provide that information, yet this site doesn’t give that information.

Couple security things

I found a cool post from Scott Hanselmann the other day regarding encrypted flash drives and password lists. I’m definitely using truecrypt, and I’m taking a look at password minder.

PDF files

Couple cool pieces of free sofware to do PDF stuff: Foxit reader. If you’re tired of Adobe Reader’s slow load times, splash screens, intrusive update process and desire to install a bunch of other crap on your system, this is for you. My favorite feature (besides 1.5MB install and super-fast load time) is the ability to annotate PDF documents (highlight sections, strikeout, type onto forms that weren’t designed for forms, etc.

Source code and search

It was only yesterday I ran across a search engine for source code. Today, I find that Google is entering the same market. Cool. Oh, and here’s the link to the actual Google search engine.

A few quick job links

Over the past few months I have thought quite a bit about resumes and jobs outside Intel. A few quickie links for those that are looking: Seven deadly sins of resume design (lifehack.org, which is a pretty neat resource itself) Software Association of Oregon…includes link to OregonWorks for Jobs 10 Ways to tweak your tech resume, also on lifehack.org, but referencing eWeek. However, I disagree with the “lose the one page only rule” tip.

Intel update, part deux

Well, I remain gainfully employed, although I will be doing something different. What exactly, I’m not yet sure. What I do know is that every manager from my formerly 3rd level manager down has been affected. One layoff, 2 redeployments, one transition to non-manager employee, and one move to another organization. So far, there are 28 people that I know that have been “redeployed”. It doesn’t feel like I know 300 people at Intel to really make that a 10% cut, but any way you cut it this is a difficult time.

Seriously?

I just went to find the phone number for a local Indian resteraunt called the Curry Leaf. I found the phone number on their web page, but also noticed that they have a blog. Not sure what a resteraunt needs with one…I can see a chef, maybe, but just the resteraunt? Also enjoyed their contact us page, which tells us what their website URL is. Of course if I’m on their web site, wouldn’t I already know that?

Odd marketing move

I came home today to find a UPS 2nd day air envelope at my front door. Not expecting anything, I went ahead and opened it up to find a letter from Verizon trying to get me to sign up for their FIOS service. Well, I already have FIOS, it works pretty well now that I think I have the kinks out of it, and so I’m not sure it was worth the crazy amount it probably cost to do a direct mail solicitation using UPS 2nd day air.

21 hours and counting

That’s how long it’s been since: A router reboot An IP address change on Verizon I found out the other day that the reason my IP address kept changing (and subsequently knocking me off the phone), was that I didn’t have Verizon’s VDI-624 router as the first router in my setup. The VDI-624 is the same as a DI-624 router from DLink but has specialized firmware for Verizon. The interface looks the same, but they must truly have done something different to it.

Intel update

I usually try to refrain from posting work-related stuff since you quickly start riding a fine line for what content is acceptable, but today I’ll go ahead. We are (still) in the middle of our “restructuring” (a.k.a. 10% downsizing). Quick update from my seat of visibility: April - first “efficiency” announcement internally and to wall street. Announced to complete in 90 days (August). June/July timeframe: Number of “redeployments” affected several groups.

That's a bold move...wonder how that'll work out?

So I’ve just finished making the switch for my default browser on my work system. I wanted something other than Internet Explorer primarily for tabbed browsing purposes, but secondarily to help reduce the amount of memory that IE takes up. My first switch was to Maxthon, which internally runs IE but handles tabbed browsing and mouse gestures. I now pretty much expect my browser to handle mouse gestures and get frustrated if holding the right mouse button and moving down and then right doesn’t close the tab.

On the topic of flash

So smaller files are better off on flash memory? Small files: Source code Most web stuff (HTML, CSS, JS, etc., etc.) Lots of miscellaneous docs (word, powerpoint, exel) Sounds to me like the best way to work on these things is to use flash memory as your primary work area and copy the files to hard disk only as backup. At least until Hybrid hard drives solve the problem…

Back in a flash

There’s a new performance feature in Windows Vista that has piqued my curiosity. The feature is based on pre-fetching (where programs are loaded into memory or in an area on your disk before you run it, because the system knows you usually run the program). There are some other enhancements to the pre-fetch feature, but the interesting one to me has been coined as ReadyBoost. This feature uses flash memory (like a USB drive or compact flash card), and loads the pre-fetch information on the memory.

Your data...available and protected

So I made the plunge and purchased a NAS. I got a Buffalo Technology product, but not the one that I previously mentioned. The difference between the Linkstation Home Server and the Gigabit Linkstation is DLNA certification for media streaming to a very few certified players, which seems to add about $75 to the cost. In 5 years I may regret it, but right now, I’m pretty happy with the HD-HG300LAN.

It's been bugging me

I had seen a website that contained a list of login credentials for many of the “free but registration required” web sites. After more googling than I really would care for, I found it. www.bugmenot.com

dotnetnuke on GoDaddy

In my last post I mentioned bethanycommunity.net web site. In getting it working, I had to get dotnetnuke installed and running on the root directory of the site. Doing this on godaddy was quite an interesting feat and required some changes to the dotnetnuke source code. I hope their latest version helps fix that problem. There are some instructions on doing this here. I found they got me close, but the installer was still a problem, and hence the (temporary) source code changes to skip over some of DNN’s more dangerous install behavior.

Local issues

I’ve volunteered some time to get a website up and running for a local organization. The Bethany Coalition was renamed to the Bethany Community Network, and was originally formed to help out with planning to accomodate more people moving into the area. Portland has an urban growth boundary that helps to confine population and prevent urban sprawl. In our area, the boundary was expanded to enable more people, but that means new infrastructure needs to be in place.

Windows annoyances

Why is it that after roughly 18 years of work on the Windows NT family of operating systems, Windows XP still forgets my desktop background picture? As I had deleted the original file, I had to go spelunking today to figure out that it’s copied to C:\Documents and Settings\[username]\Local Settings\Application Data\Microsoft\Wallpaper 1.bmp. The most frustrating part is that I could see the picture, but only when logging out/shutting down.

Ruby on Rails?

I got a chance to check out Ruby on Rails the other day. That basically explains it. Rails is a set of libraries that use the programming language Ruby to make web programming very, very productive. I’ve heard of defections to RoR from .NET and Java. I’m sure there are some, but the stories appear to be anecdotal. Anyway, it looks promising, and I hope the competition helps improve the productivity of all languages…

ObjectDataSource limitations

One of the more exciting things in Visual Studio 2005 for me was the idea of an object data source for grids. Well, I’m not doing a lot of hands on programming right now, and I finally got around to using it. I’m not that thrilled. Here’s a snippet from a help file that is my current source of frustration: The ObjectDataSource control will create an instance of the source object, call the specified method, and dispose of the object instance all within the scope of a single request, if your object has instance methods instead of static methods (Shared in Visual Basic).

Efficient Markets?

I don’t think so. The theory/hypothesis is full of crap. We learned this in our finance classes in our MBA, but I don’t buy it. There are several versions of it, but even the most weak of the arguments claims that technical analysis won’t work. From what I’ve studied of technical analysis, it’s trying to use numbers and history to predict aggregate investor psychology. A simple form would be that if a stock is at it’s 52 week high, more investors think it’s time to take profits than investors think it’s time to get into the stock, so the price will probably go down.

Mad money?

I’ve found Mad Money to be an interesting and entertaining show. I am watching more regularly now that my daughter has arrived and I need something to do while she sleeps in my arms, and with the summer here, this is not bad. Anyway, I don’t always agree with Cramer (the host), but where I have agreed and taken action on his recommendations, it’s worked out well. The latest trade is Valero Energy (VLO), bought before Q2 earnings announcement yesterday.

Sometimes, it's not what you know...

Jeff told me he was going to blog about this, but it doesn’t look like he’s done it yet, so I will. Jeff has been looking for a notebook recently, and since I work for Intel I’m pretty close to that particular market. I’m also working on the Verified By Intel® program, which deals directly with the notebook market, so I’m pretty clued in. So Jeff emails me on July 3rd to ask me what the T2050 processor is.

Long blog posts

I generally dislike really long blog posts. I think my last two were too long. So this one won’t be.

Software Update annoyances

My last post also reminded me that I’ve been meaning to post on another subject - that of software updates. These are (sometimes) necessary and usually desirable functionality, as long as they don’t get in the way of the user trying to do their job. As mentioned previously, I think Adobe does a great job showing how not to do this (modal dialog box, even when viewing in a browser, usually asks to install a bunch of unneeded crap, etc.

Programming that screws things up

As I am waiting to respond to a friend of mine today because my browser won’t respond, I’m reminded of a few really stupid things that hopefully will become less common in software in the future. The specific incident today was that I wanted to click on a link (Outback Steakhouse Menu), but the browser stopped responding. Was my computer slow? No. Was it doing something else to the point where it couldn’t handle my command?

IPOs - not hard to call?

Maybe this is just a recent phenominon, but I’ve been watching and/or participating in IPO investing (sometimes trading) for the last year or so, and have a 100% success rate in making decent money. We’ve been selective, but made investments in Under Armour (UARM), Master Card (MA), and thought really hard about Sealy (ZZ) and Burger King (BKC). Here’s the formula I’ve (we’ve) been using: Absolutely must be a well-known company.

When technology and consumers work well

Now that I have a fantastic reason to use the new camcorder, I have been making some recordings and otherwise playing with the features. I recently posted two videos to Youtube.com, and the front-to-back process was really straight-forward…technology should continue to put consumers at the center of their world like this: Plug camcorder into computer, turn it on Load Windows Movie Maker Tell WMM to import video from the camcorder WMM detects the clips on the camcorder Take each clip you want to save, save the file as a seperate WMV Upload WMV file to YouTube While the above process is really cool, here’s how I could see it optimized even further:

When technology and consumers collide

So I ran into a really weird situation with the camcorder I recently purchased. The camcorder has two data ports, one is Firewire, and one is USB. The camera itself can do three data-related things: Transfer recorded video to the computer Transfer pictures to the computer Use camcorder as a web cam In order to do #1, you need to use the Firewire port. This seems logical but a bit antiquated.

Bookmark nirvana

I’m finally getting bookmarks under control, and I can’t believe how much better life is. When you use Internet Explorer for stuff that doesn’t like Firefox (and for most things work-related), and Firefox for normal browsing, and you have multiple computers, things get pretty unweildy. Now, thanks to Google, my problem is mostly solved. There are several bookmark managers out there, but only Google Bookmarks seems to have solved my main problem and has support for both Internet Explorer and Firefox.

Questions and Answers are like footnotes in annual reports

I was watching a webcast the other day (topic irrelevant) and it occurred to me that what I really like about webcasts and earnings conference calls is the Q&A section at the end. All the pre-canned stuff in the beginning can be so filled with political spin it’s hard to get a handle on what’s really going on. Q&A (either participating in or listening to) provides the opportunity to cut through some of that and get the real information.

Outlook 12 goodness

I haven’t actually used Outlook 12, but I just read a short list of Omar Shahine’s favorite features. I look forward to the new features (there is also a document auto-preview that looks cool but I really look forward to figuring out how it’s breaking my system). I find the color categories feature strangely familiar from gmail…maybe they’ll incorporate that feature into Windows Live and really copy Gmail. ;-) In MS’s defense, at least they’re not too proud to copy features (or buy companies) when they’re out-innovated.

Camcorder purchase

I just purchased a Sony HC36 and documented the experience for a couple friends, so I thought I’d share it here. Here’s the lowdown on the process (skip to step 9 if you want to skip how I figured out what camcorder to buy). Consumerreports.org led me to a JVC camcorder, and any one of several Sony camcorders. Sony is the best overall brand, while a couple individual JVC, Panasonic, and Cannon camcorders rate well.

Is it really that much to ask for?

So I’ve been keeping my eyes open for a cheap but somewhat flexible NAS solution. Quick rundown of my requirements: Stores data Allows always ready backup (usually this translates to RAID 1 mirroring) Allows connection via SMB, so I don’t have to install software from a hardware manufacturer (this is my best known method for not getting weird errors) Plugs into wired Ethernet Expandable Free (or at least cheap) The other day I ran across what appears to be such a device, from a company called SimpleTech.

Gas prices

One of my soapbox items for the press is their failure to report historical prices/costs on a real basis. This is a disservice and misleads people. Over the last year there’s been a lot of discussion about oil prices. Today I searched/found a good/short article on gasoline and oil prices from the American Petrolium Institute that reports on a real basis. The bad news? On a real basis, we are indeed near (but not quite at) historical record highs for gas at the pump…

The goodness of lots of bandwidth

So FIOS appears to be fairly stable now with the exception of random router reboots about once/wk. I won’t rant on that right now, but I would like to quickly brag. Last Friday, Kelly and I were working from home, and for an hour, we: Both used the phone (her on Vonage, me on Skype using SkypeOut, which is free until the end of the year to US/Canada phone numbers) She used VPN and Netmeeting I used a form of VPN and ran reports/data extracts during the meeting The service worked fine the whole time (with the exception of a random router reboot…grr).

Verizon FIOS Update

Ugh…so some mixed results in the really high speed world. Got FIOS installed cinco de Mayo and all was great - for a day and a half. On Sunday we started having problems (no access at all), and to make things worse, the phone number that was given on literally every page of our welcome guide and used in the “Need Help? We’re on call for you 24x7” section of our welcome letter got us nowhere.

Connected, or not?

I constantly struggle with the concept of connected vs. unconnected operation. One thing I hate when traveling is that I don’t have access to many common applications (the system I am responsible for at work, our bug tracking system, many, many random web sites, etc.). However, I also do not like the idea of installing all kinds of applications on my notebook and syncronizing all the time. For applications, I’m starting to come down on the side of building interfaces based on the client.

Got FIOS?

Well, the trucks have rolled through the neighborhood laying down fiber optic cable through the streets. While I don’t have FIOS yet, it will be installed May 5th. For the uninitiated, the service is high speed brodband Internet access provided by Fiber Optic cable directly to the house. Instead of a cable or DSL modem, what gets installed in your house is an ethernet jack. I like the service for the following reasons:

Gas prices and irresponsible reporting

There’s been much ado about gas prices lately. I’ve seen a lot of irresponsible (or just plain ignorant) reporting on the matter. Headlines like “Chevron Earnings Soar 49 Percent to $4B” and “Exxon Mobil 1Q Profit Up 7 Pct. to $8.4B” provides very little context, and if you actually read the report, you’ll notice a lot of dollar figures. I have not seen (or heard on the news) a single non-financial report of gas industry profit that even mentions margin.

Smartphone Applications

Hmm…so Smartphone 2003 (a.k.a. Windows Mobile 2003 a.k.a. Windows CE 4.21) doesn’t come with a version of notepad for short notes. Problem now solved. I wrote a quick notepad application. Curiously, Smartphone 2003 doesn’t have a standard control for navigating the file system. The guys at OpenNetCF have some great extensions, and although I can’t find it right now, there is are File Dialogs to help you open and save documents.

Yahoo! Mail Issue Resolved

As mentioned in a previous post, I had some significant issues getting Yahoo! Mail up and running. The issue is now resolved. For the record, I believe that the issue stemmed from the fact that I established my Yahoo! ID back in 1995 (or thereabouts) and did not sign up for mail service on the ID at the time. I did not really want to establish a new ID for the test.

April Fools Day comes early@Intel

We had a fantastically well done April Fools joke played on the 100k or so Intel employees today. Everyone in the company received an email stating that there was a major new deal between Apple and Intel, and that executives would host a webcast to announce it today at 8:30AM Pacific. The webcast has been replaying every half hour since then. Very little details have been posted about the content of the announcement, and the article on our internal web site states that the announcement will be made public to the stock market tomorrow (Friday March 31st).

Live Custom Domains vs. GMail Hosted

OK, so this is a bit bleeding edge, but very, very cool. Please take this mini-review with a very large grain of salt because both services are evolving fast. Both Windows Live Custom Domains and Gmail For Your Domain provide the same basic functionality, which is the ability to use the corresponding company’s mail service (either Live Mail/Hotmail or GMail), to host the users in your own domain. I’ve been doing something similar to this for my own email at my domain, by setting up my accounts to forward messages to Windows Live Mail or Gmail (depending on the account).

Slow day

This is one of those very rare events for me - a slow day. This day has been brought to me by a a series of events that have all coincided at once: India has a holiday, so development and QA teams are not working Most of my projects are in QA right now A major event is going to occur next Monday at work, and in order for me to finish preparing I need to get information from some coworkers All systems are running fairly well Projects have been completing, but fewer new projects have been created over the last 3-4 weeks, so overall workload has been light the last 2 weeks, allowing me time to catch up Weird - I don’t know what to do with myself.

Gmail vs. Windows Live Mail vs. Yahoo Mail

So I’ve been working in several email systems comparing and contrasting the features. Here’s my take: Yahoo! Mail: I have a Yahoo! id, but did not set up an email account originally. I tried to sign up to test things out for this blog entry, but I get an error message. I dutifully reported the issue to Yahoo support (issue # KMM58274977V28957L0KM), but have not had any updates in the past month.

Why I love STX

Seagate = Hard Drives Hard Drives…needed for 1st Gen PVRs (e.g. Tivo, Windows Media Center) and future (High Def) generations Hard Drives…needed for personal music players that have lots of storage (or who add video) Hard Drives…needed for advanced gaming machines Hard Drives…needed for all the music and/or videos you’re downloading Hard Drives…needed for all those 5MP digital pictures you’re taking Advanced gaming machines, personal music players, digital photography, peer-to-peer downloading, PVRs…all are examples of technologies that are expanding rapidly and are at various (leading) points of the technology adoption curve.

Continuous Integration

I’m a big fan of the concept of continuous integration, which is the concept that code is built and tested as early and as often as possible. As soon as a change is completed/checked in, the code is built and tested. Usually this is done automatically (as an aside, I wonder how this approach can work well with enterprise software). Anyway, I saw this article and I found it pretty amusing.

Travel tip

Just got back from Taiwan a few hours ago, and I’m refining my theory about flying business class. Here are the two rules that I have now: If flying for business and the flight is >6 hours, your company should pick up business class (Intel does not, and I think the policy is ridiculous - the difference in how rested you are at the end of a long flight between business and economy is crazy) If you’re going to upgrade yourself due to poor company policy, try to get upgraded on the way back, rather than on the way out.

Quick bit about Apple and Sony

I feel much the same way about Sony’s products as I do about Apple. I will never, for instance, buy any product that takes a memory stick. However, there’s a big difference in my mind between the two companies. First, Sony appears to be (slowly) realizing the error of it’s proprietary ways. Second, as an investor, Sony is a huge conglomerate with revenue sources from many areas. While the second fact actually slows down adoption of open standards, it does smooth out the revenue stream.

Word to the wise on blogspot.com

Umm…apparently it’s bad news to use the < character flippantly on Blogger. My last post talked about AAPL P/S being &lt4, and when used in compose mode, it had the effect of mangling my last paragraph. I’ve actually been generally underwhelmed by Blogger’s inability to properly format without forcing me to use HTML. Users should not have to necessarily understand and manipulate the underlying technology. Don’t confuse that statement by thinking it means systems should hide the underlying technology completely - power users should have access.

Much Ado about Apple

Working for Intel, I’ve been hearing even more than the average person about Apple and how great it is. There are a lot of great things about Apple - here’s a few: Great product design: I don’t know anyone who doubts or questions Apple’s product design prowess. This involves both hardware (iPod, iMac) and software (OSX). Steve Jobs: Steve definitely has a way about him. He is a great leader; however, in my mind not necessarily a good manager.

Wow - last post in 2004

So, with energies poured into other things, it’s been a very, very long time. My intention from here out is to be a little more regular (I’m shooting for at least once/yr). ;-) I’ll come back over the next couple days to talk about the baby, ASP.Net 2.0, the new car, phone/mp3 player, etc., etc. Hopefully with the baby site I won’t be posting to a crowd of no one!