On the Lambda

Programming, Technology, and Systems Administration

On the Lambda

PowerShell ExpandProperty vs Property

October 2nd, 2017 · No Comments · development, Powershell

I’m only an occasional PowerShell user, and therefore it’s taking some time to develop a deeper understanding of the language. I’m gonna share something that recently clicked for me that I think isn’t well explained elsewhere: using ExpandProperty, especially in combination with understand putting values vs Objects on the pipeline.

ExpandProperty is part of the Select-Object cmdlet, and it’s used to expand properties into the PowerShell pipeline. This is still a beginner-level guide, but if you find words like cmdlet and PipeLine confusing, you might want to go do a basic PowerShell tutorial first. Select-Object accepts a number or parameters, but I would argue that Property (which is the default if no parameter name is used) and ExpandProperty are the main two, and it’s not always easy for beginners to know when to use which, or to understand why you need to do this at all.

So let’s look at some examples. I have four different scenarios to cover, and in each I’ll show how these two Parameters work for that situation. For best results, you’ll want to follow along in a PowerShell console on your own machine.

We’ll use Get-Process throughout the examples as a data source, and for shorthand and to ensure consistent results if the system state changes, I’ll save it to a variable, like this:

$p = Get-Process


First up are collections.  The Get-Process cmdlet returns objects with many properties. One of these is the “Modules” property, which happens to be a collection. Let’s look at that property:

$p | Select-Object -Property Modules

You’ll likely see a bunch of text that’s not very useful. You’ll also see a bunch of blanks, where processes that require administrator or System access were just skipped. Now run it like this:

$p | Select-Object -ExpandProperty Modules

This will likely produce some errors (again: for processes that require admin or System access), and that’s okay; we get a lot of results back, too. These results should be much more meaningful. In fact, let’s assign them to a variable:

$m = $p | Select-Object -ExpandProperty Modules

Now we can look at $m.Length. On my system, I see 2931 modules, more than you’re likely to get from any one process. So we see ExpandProcess rolled up the contents of the Modules collection from every object in the pipeline. We can also look at individual entries in $m, such $m[0], to get a feel for the kind of data we have now. And we can use $m | Get-Member to get the full list of properties and methods available on each object. Importantly, we see we’re working with real System.Diagnostics.ProcessModule objects, and not something more generic that happens to have similar properties, or a bad string representation.


Let’s try another example. In this case we’ll look at selecting a single item instead of a collection, but we’ll focus on the StartInfo property, which is itself an Object with several properties of it’s own.

$p | Select-Object -Property StartInfo

This produces a bunch of a lines on the console that all have the same “System.Diagnostics.ProcessStartinfo” text. That’s not very useful. Now let’s try ExpandProperty:

$p | Select-Object -ExpandProperty StartInfo

Wow, there’s a lot here. Let’s put this data into a variable so we can look more closely:

$info = $p | Select-Object -ExpandProperty StartInfo

Now I can check $info.Length and see a number that matches the number of processes. I can look at $info[0] and see a representation of that object. And I can look at $info | Get-Member to see the full list of items available for use this object. Most of all, Get-Member tells me I’m working with a real System.Diagnostics.StartInfo object. The entire object is there, with all of it’s fields, properties, and methods, and they are all in the pipeline.


But what if I wanted just the Id and Processname… say to eventually output to a CSV file, or to make the screen easier and quicker to read? In that case, I can do this:

$p | Select-Object -Property Id,ProcessName

This let me use just those two properties. There are some things to note here. First all, there is no ExpandProperty equivalent to show. The ExpandProperty parameter can only use one property at a time. Second, these are not System.Diagnostics.Process objects anymore, regardless of what Get-Member shows. They are a custom type with only the base methods (ToString(), etc) and the properties I asked for.


Finally, let’s look at a simple property. Let’s say I have another cmdlet, and I need to give it the ProcessName as an argument. I could try this:

$p | Select-Object -Property ProcessName

but it wouldn’t work for most cmdlets. Let’s look closely at the output, especially near the top. You’ll see this:

[a bunch of process here]

That header means we’re still dealing with an object, just like in the previous example. This object has one property named “ProcessName”. Unfortunately, my cmdlet wanted a string value. So let’s do this instead:

$p | Select-Object -ExpandProperty ProcessName

It seems like the same data, but look again at the output at the top of the list. This time there’s no header. Now we’re dealing with simple string values, and that’s much more likely to match up with whatever cmdlet you’re using needs to see.


Hopefully this has been helpful. My intent was demonstrate not only the differences between Property and ExpandProperty, but also help you understand objects vs values, why that can matter, and to give you some tools to help you know which you’re dealing with.


Supporting Outlook with G Suite

May 4th, 2017 · No Comments · IT News, networking, security

Where I’m at, we use Google Apps (G Suite) for e-mail, but still rely on Active Directory for individual accounts and use MS Office rather than Google Docs most of the time. One situation to come up in the last few years is Google no longer supports MS Outlook out of the box. If you want to use Outlook, you must first enable “Less Secure Apps”. 

I know, I know. Why would you ever use Outlook when the Gmail web client and apps are so much better? I hear you. I use the web browser for day to day work. But there are still those who prefer Outlook, and there are a few things Outlook can do that Gmail does not do, or does not do well. Mail merges are an important one.

So, I need a way to support Outlook for some of my users without seriously undermining their security. I think I may finally have a plan.

One mitigation against allowing Less Secure Apps is enabling two-factor authentication. As much as I’d like to mandate that here from a security standpoint, as a practical matter I know that’s not gonna fly with our user base, especially as our campus is in a rural area and we have a small number of students who do not have reliable cell phone service for receiving two-factor keys. What I could do, however, is offer users a trade-off.

The idea is to enforce that Less Secure Apps are disabled. However, if someone wants to use Outlook or other “less secure app”, I can move their account to a different OU within Google where two-factor authentication is enforced. This will allow the creation of an App Password that will work with Outlook. I also see this as way to encourage two-factor adoption among my user base.

Note this is not the ideal solution. Needing to manually move an account to a different OU adds friction on both the IT and user sides of the equation. It’s also not discoverable; users won’t automatically know why they can’t enable Less Secure Apps by themselves, or if they do understand it’s an IT policy they may not realize we have a work-around available. A better option would be for Google to support this automatically, and prompt the user to turn on two-factor at the time they try to enable Less Secure Apps. Sadly, this is not possible.

Also note I have not yet implemented this scheme. I have historical users who may already have one feature enabled but not the other, and I’ll need to identify and clean up these accounts. This idea also does not currently mesh well with our sync process from Active Directory. It will be a significant project to align the two.

Nevertheless, I may at last have a path forward.


What are “Less Secure Apps” in Google?

May 4th, 2017 · No Comments · IT News, security

If you’ve tried to use Outlook or another traditional e-mail client with GMail, you may have run into this requirement to enable “Less Secure Apps”. There are other situations that may prompt you to turn this on, as well. What does that mean? Why does it matter? I think I can explain.

Google, by default, uses an authentication protocol known as OAuth (specifically, OAuth 2). When you sign in with OAuth, you sign in to Google’s system directly. This is true even when you sign for a third party app. With a correct OAuth implementation, an app will redirect you to Google’s sign-in page, and you never put your password into a place the app can see directly. Once you have signed in, Google issues you a special OAuth token, and the app can then validate and trust from the token that you have signed in properly.

There are several reasons this is important:

  1. By controlling the login form, Google can limit and monitor attacks attempting to discover passwords via brute-force login attempts.
  2. Controlling the login form also allows Google to protect you against a malicious or incompetent app that might not handle your password in an appropriate way.
  3. You don’t have to share (and risk compromising) a password that, let’s be honest, you probably re-use at every other internet service you have.
  4. By tracking tokens, Google allows you to revoke tokens for compromised devices or applications.

A LessSecureApp, then, is anything that doesn’t use OAuth.

Let me give you a couple scenarios where this matters. Let’s say that you connect an online service to your Gmail account… maybe something like Siri of IFTTT  (If This Then That). Later the service is then breached or hacked. Because LessSecureApps are disabled and you authenticate via OAuth, that breach does not include your Gmail password. This might be extra important if, say, that Gmail account is where confirmation messages are sent when someone tries to change the password at your bank’s web site. This helps you whether you use a mobile device or a desktop that never even leaves your house.

In another scenario, you use a laptop, tablet, or smart phone, and the device is stolen. With Less Secure Apps on (simple username/password authentication), the thief now has full access to your Gmail account. But with Less Secure Apps disabled you can log into Google and revoke the token issued for that device. The most the thief can see are the messages stored on the device locally. Even a thief who immediately accesses the device, before the token is revoked, will not be able to recover your original password from the device. The thief will not be able to use the account to reset access to other services, like a bank or credit card account.

If it’s such a big deal to enable Less Secure apps, the question now is why Google allows it all? Aside from the cynical view that it would cost them too many Outlook users, there are some legitimate uses for this ability. Where I’m at, we occasionally need to do a mail merge that cannot easily be done through Google’s own service, but is very easy through Outlook. In this case, I will enable Less Secure apps, do the mail merge, and then disable Less Secure apps again. This works for us because the situation only comes up a few times per year.

In practice, I strongly recommend leaving Less Secure apps disabled unless you are also able to turn on two-factor authentication (which you really should do anyway), and in that case Google provides an alternative Per-App Password mechanism to use instead of Less Secure apps anyway.


3 ways to improve the cheese on your pasta

March 31st, 2017 · No Comments · non-computer

When I was in high school in Wisconsin, I worked for a time at a fancy Italian restaurant. I worked in the pizzeria kitchen, which was in a different place and served a different dining room than the main kitchen for the nice side of the business. Nevertheless, I learned some things from the chefs, especially regarding cheese. Some of it, as you’ll see, comes from growing up in the Cheese State. Some of it I figured out on my own. I want to share the three ways I believe we can get better cheese on our pasta:

  1. We typically don’t put nearly enough cheese on pasta. If you’re gonna add cheese, add enough that you can taste it.
  2. Go for the asiago. Of the big three Italian cheeses (Parmesan, Romano, and Asiago), Americans like their parmesan, and occasionally romano. For myself, I’ve found asiago to be much more flavorful, and it was often the cheese used with the really nice dishes in the restaurant.
  3. Given the option, add the cheese before adding the sauce. I know this isn’t always possible, especially in restaurants. However, when you can, add the cheese to the pasta first, and do it while the pasta is still as hot as possible, so that the cheese melts and adheres somewhat to the pasta directly.

Doing all three of those can really enhance your meal.


Sci-Fi Setting Idea – Buildings in Space

February 2nd, 2017 · 1 Comment · non-computer

I’ve had this idea for a sci-fi story setting kicking around the back of my head for a while, and I want to get it down somewhere. It’s not really an idea for the story so much as the just background setting, but I still think it’s pretty cool.


The background begins with a near-future Earth, where the environment has gotten worse. Temperatures have risen, ice has melted, and the West Coast has practically disappeared up to the Rockies. The Great Plains are starting to resemble a desert, but Canada is still able to pick up the slack in food production. There are no more doubters or deniers, and everyone is fervently looking for a breakthrough, with no success. Until.

It finally happens. Someone creates a cheap, clean, easy, compact, and — above all — abundant new energy source. The how/what of this new energy source don’t matter, and I’d avoid talking about it too much, except to say it involves Thermodynamics, and the total and efficient conversion of any matter into energy, where any common rock, dirt, trash, water, whatever, can be an energy source even better than plutonium.

Suddenly everyone has more energy to play with than they ever thought possible before. Use of fossil fuels for anything disappears practically overnight. New technologies that rely on this energy begin to develop. It has a profound effect on society. Space exploration is suddenly much cheaper and safer, though still (at first) too slow. Warfare begins to shift towards energy weapons, with the counter of the development of any energy shield.

And you’d better believe there is warfare. The sudden lack of steady income into certain religiously charged areas, coinciding with the simple construction of new energy weapons that put them at a level with superpowers weakened by environmental deterioration, and things really break down just as space travel has it’s own energy drive breakthrough. The energy drive is also straightforward and simple, and once explained any competent engineer can build one, just like the with the energy production, and it’s unfortunate that the war and other events disrupts more concerted and coordinated exploration efforts.

More than this, it turns out that even clean energy is not such a panacea. There’s still the fundamental laws of thermodynamics to contend with. Energy cannot be created from nothing, and neither can it be destroyed. The used energy remains; it’s merely converted to a different form. That form is heat. Global warming is worse than ever, even without fossil fuels or greenhouse gasses. The environment is failing even faster, society is approaching collapse from war, but suddenly space travel is easier than ever, if a bit blind.


It happens. Evacuation. Earth is mere decades from no longer supporting life. In order to get people off planet in quantity, mankind turns again to it’s favorite new invention. Common buildings are outfitted with an energy machine, discrete shield generator, oxygen/carbon scrubber, makeshift hydroponics area that often amounts just to raised gardening beds and sunlamp, and an energy drive, which is an offshoot of earlier weapons research with the new energy source. The shield generator is set to project fields that almost exactly match the exterior of the building, such that once in space you have, for all intents and purposes, and common building just floating there, with very little in the way of visible accommodations for the hazards of space.

When a building is ready, it just leaves. There are buildings of all types, ranging from sheds for one all the way up to skyscrapers. Mostly it’s larger buildings that are already equipped with cafeterias, exercise facilities, dormitories, and common entertainment areas, like schools, hospitals, and some hotels, but any larger building can be converted, so warehouses and factories are common, too, and some families will make a go of it in their own homes. Looking at it in space, you might just see a normal house float by.

But that doesn’t stop the fighting. There is no easy access to grow food or obtain raw materials or products. Resources are scarce. There is no government up there. Piracy is an immediate problem, and so the building-ships scatter in a great dispersion. Many are destroyed, and mankind is left with a remnant travelling the stars in their building-ships.

For a more visual story, pirates seized most the great buildings during the initial escape. A skyscraper would become a symbol of evil; a school or hospital a symbol of good.

Story Opening

The opening of this story would take place at least a number of years later. Long enough that many of the building ships have failed. Either the tech was botched in their building, or they were not able to establish a sustainable routine for producing food. Those that remain have reasonably reliable tech powering their building, and probably at least one person who knows how to maintain it. By now they have found a way to survive for longer periods without aid, but they are always on the verge of exhausting their resources. No one is well off.

It’s far enough along that most building-ships are scattered and isolated but no so far in the future that buildings have dwindled and spread to where encounters are statistical anomalies. Encounters with other building-ships are not common, but not rare, either. Every building hopes to encounter another friendly building; every building dreads seeing a skyscraper. There are still older people who remember Earth, and active adults where were born there but left too young and lived a different life for too long to remember how things were. The young have known nothing but space.


Eight Principles for Good Ad Blocking

May 5th, 2016 · 1 Comment · IT News

I’ve seen a lot lately about Ad Blockers used on web sites: how sites and publishers are responding to more Ad Blocker use, the rising numbers of ads on a page, malicious ads, etc. It’s been in the tech news. I myself even (reluctantly) installed an Ad Blocker recently.

Here’s the thing: I don’t mind ads anymore. I used to absolutely hate them, but back in late 2008 I had a revelation. I was using this new-fangled programming question and answer site called Stack Overflow, which aimed to compete with the notorious Experts Exchange. Both sites used ads, but Experts Exchange purported to be mainly subscription based, while Stack Overflow was going to be fully ad supported. I’ll give you one guess which site actually had a better experience. This stark contrast caused me to rethink my position on web advertising. Since then I’ve avoided using Ad Blockers, at least for the most part.

Things have been changing, though. As I said, I was recently forced… yes, forced… to install Ad Blocker. Something is different now about the way ads are served on the web. Ad networks have been unable to adequately police their inventory, resulting in the frequent situation where legitimate and respected sites serve malicious content to users. This leaves the use of Ad Blockers as the only recourse for many of us.

But I’d like to avoid this. I remember the old web, before small sites could pay the bills from ads. I don’t want to go back to that. I don’t want to go back to Experts Exchange. Instead, I want a new kind of Ad Blocker… one that actually allows ads by default, and only blocks ads as a penalty to sites or networks that aren’t behaving. My suggestion is for this new Ad Blocker to only take actions when one or more of these eight principles are violated:

  1. An ad blocker shall block all ads from any site for one year if that site serves a malicious ad. Even just one confirmed malicious ad shall trigger this penalty.
  2. An ad blocker shall monitor ad networks and shall block all ads originating from a network for one year if that network serves even one confirmed malicious ad to users. A network that is unable to police its inventory should be penalized.
  3. An ad blocker shall block ads that use plugins including but not limited to Flash, Silverlight, or Java. Perhaps some day interactive ads will find their place, but this is not that day.
  4. An ad blocker shall block ads that play audio or video without action by the user. A hover is not an action by the user. An ad blocker may extend this to eventually block all ads on a page, site, or ad network for repeat offenses.
  5. An ad blocker shall block all ads on a page if the ad content on the page is > 25% of the total page size in bytes. This may be determined as an aggregate across all of the ad block service’s users and impressions for the page, as some ad networks may occasionally legitimately place a larger ad on a smaller page. An ad blocker may extend this to eventually block all ads on a page, site or ad network for repeat offenses.
  6. An ad blocker shall block all ads on a page if the page prioritizes loading ad content ahead of loading non-ad page content, or fails to allocate proper placeholders in the initial render, such that late-loaded ad content forces original content or links to jump to a new position just as the user might be about to click.
  7. An ad blocker shall block all ads on a site if ads from any page on the site interfere with using a page or substantially confuse users, such as pushing content down off the page while a user is trying to read, or filling in an ad near a link or button that a user may want to click. An ad blocker may rely on end-user reporting to identify these pages and sites, rather than determine this on the fly.
  8. An ad blocker shall block tracking data reported to ad networks which extends beyond the current actual url of the page where the ad is displayed, which specific ad was served, and whether the user clicks the ad. Right now, this is most tracking, but I believe an effective blocking strategy can influence advertisers to improve behavior, or at least be less obtrusive about it, such that this principle might be relaxed in the future. For the moment, however, I believe it is necessary for ad networks to do more to establish user trust, and that means not gathering any more data than they could get from an over-the-air TV ad.

I’ll add one bonus principle that’s really more of a feature option: users should have the option of blocking categories of objectionable content in ads, such as pornographic (or even mildly explicit), gambling, politics, etc. However, I have some previous experience with content categorization engines, and this may be a much more difficult feature than it gets credit for up front.

Some of these principles may seem like death sentences to a site or ad network, but remember that not everyone uses ad blocking services.  Rather than stopping all ads, this would be merely a modest penalty for even the worst offenders. Nevertheless, it **is** a penalty, and therefore should help incent ad networks and sites to better police their content. I think enough people using an Ad Blocker that follows these principles could have a strong positive effect on the internet as a whole. I also believe it would actually INCREASE revenue for sites and ad networks alike, by improving user trust and confidence in the ads they see (thereby increasing the value of each impression) and by shaking some of the more irresponsible players out of the industry, thereby leaving a higher share for those who remain.


The Missing DHCP snap-in for Windows 10 Remote Server Administration Tools

November 6th, 2015 · 4 Comments · .net, c#, development, networking, Powershell, servers

If you’re used to managing Windows Servers, you’re likely familiar with the Windows Server Remote Administration Tools. These tools are packaged as a download for each client (not server) version of Windows. They provide the same set of MMC snap-ins you’ll find on a server, such as Active Directory Users and Computers, DNS, or Group Policy, but for your desktop. You can connect the tools from your desktop to whichever server you need.

Unfortunately, the Windows 10 version of these tools left something out. There is no DHCP snap-in. Instead, Microsoft included a set of Powershell Commandlets for managing a Windows DHCP server.

Now, Powershell is fine for many things. It’s even probably the best way to make changes to your DHCP configuration. In a perfect world, ALL changes to a server happen via command line scripts that were first tested outside of production, and then stored in order in a tool like Puppet or Chef, so that a server can be rebuilt from stock just by running the stored scripts.

However, day to day work sometimes requires quick access to dhcp lease information, where I may want to do things like sort by lease expiration, IP address, or
MAC address. The command-line Powershell tools simply didn’t appeal to me for those times when I just want to get some quick information, and perhaps copy it to the clipboard.

So I built my own viewer for Windows DHCP server scope and lease information. It’s on GitHub. Go take a look.


Steam Controller Review part 2 – Game Play

October 20th, 2015 · No Comments · IT News

Continuing from part 1 of my Steam Controller review.

The first thing I need to get off my chest is Steam’s In-Home Streaming feature. Most of my time with the Steam Controller involves In-Home Streaming, and this is also my first experience with that technology. I want to focus mainly on the Controller, but in order to do that I need to clear the air on In-Home Streaming.

All in all, In-Home Streaming has worked much better than anticipated. My experience showed it is actually possible to play low-latency games like Counter-Strike and Portal via In-Home Streaming. The responsiveness and picture were both good, as long as you’re willing to explore the settings available.

However, adding this extra moving cog into the mix did introduce some new struggles. I had to troubleshoot several things, and so far have not been able to get the Steam Controller to play Portal or Portal 2 via In-Home Streaming, even though Counter-Strike: Source, which has a very similar setup and engine, worked just fine.
Update Oct 20: Valve has released an update to address the issue with Portal and Portal 2.

Now, about the Steam Controller.

I spent enough time playing Counter-Strike to get a few kills; with this controller, it took a while. If a person who scored 15 kills in a round with a mouse and keyboard would only score 4 or 5 with dual analogs (and yes, I believe there is that much difference), the same person could probably do 6 to 7, maybe 8, with the Steam Controller. The Steam Controller is a definite improvement over dual-analog options, but not, in my opinion, to the level where it can replace a mouse and keyboard.

It may be possible with practice to get pretty good, and there may be new configurations or better support for this class of game coming, but as it stands it’s just too hard to aim well at close range at someone moving across the screen. While this isn’t great for the Steam Controller, it’s not out of line for my expectations coming in, and if anything it still exceeds them.

First person shooters like Halo that were born on consoles tend to take this into account in their level designs, and I may look to try a few of those in the future. I may also put in more time with the Controller when I get the Portal games working. With time, I may get good enough to make another attempt in a team game versus real people. However, I’m competitive enough to cringe at the idea of going into a game like this with that kind of handicap.

Where I am most interested in this controller is for more “casual” games, and here it worked great.

I had given up on Lego Marvel Superhero after I first purchased the game. It’s not the kind of game I want to play sitting at my desk, but it didn’t play well at all with the wireless keyboard/touchpad combo I have for the computer. It just wasn’t fun. The Steam Controller makes this game fun again.

Final Fantasy XIII worked pretty well, too. There were some glitches involving In-Home Streaming, but overall I prefer playing this game from my couch, with the Controller, on my TV over playing it at my desk, as well.

I played several hours of Civilization V, and it was good. I needed the keyboard handy at time just to adjust amounts of Gold when bartering with other nations, but that’s something I do rarely. The only other problem is not related to the Steam Controller: the text was just too small in many places. I often found myself standing in front of the TV so that I could clearly read information. I doubt the publisher ever fixes this game, but I’d look for future releases to be sensitive to that issue. Overall, I think I prefer this experience to playing the game at my desk.

The controller worked well for browsing and watching Netflix. I especially found it easier to manage for browsing than the bulkier keyboard. I could improve things further with some custom button binds, but I haven’t explored that yet.

I do have a few real complaints. Something in the driver for the Controller seems to conflict with the wireless keyboard/touchpad combo I use. Sometimes one device or the other will not function, while the other device has taken precedence. In this case, I’ll point the reader back to the last article, where Valve is very explicit that this is still beta, and they are watching for this kind of issue. I’ll be surprised if a firmware update in the next few weeks doesn’t fix this for me.

I also promised an update on battery life. After 14 hours over three days using the controller, Steam still reports 100% battery life remaining when I check it’s settings. Doubtless this is another issue, possibly due to standard instead of rechargeable batteries, but so far battery life seems to be at least reasonable.

One area where I could see the Steam Controller doing real, but did not get a chance to try, is in an MMO like World of Warcraft, Star Wars Old Republic, or Perfect World. If someone tries one of those games, I’d love to hear about how it worked for you.

In conclusion, I’m very pleased overall. There are some things I’d like to do with the Steam Controller that I can’t do well, such as play Counter-Strike, but within the expectations I set for the device, it’s performing admirably.


Steam Controller Review part 1 – Expectations and Unboxing

October 16th, 2015 · No Comments · IT News

To start this review, I need to come clean: I hate game controllers. I mean, really hate them. My game of choice is the first person shooter, and my platform of choice is a PC. Give me a keyboard/mouse or give me death! Literally. My character is probably gonna die a lot if I’m forced to use a controller instead of my beloved mouse and keyboard.

In the Steam Controller, Valve is attempting to bring some of that mouse and keyboard precision to your living couch and TV, but you’ll have to color me skeptical. I think the key words in that previous sentence are, “some of”. I’ll be very surprised indeed if the device sitting next to me is able to deliver.

Thankfully, I can use the power of reasonable expectations to still come out of this with a positive experience for the controller. While shooters are my preferred game, I’ve been known to play the occasional Final Fantasy, Lego Star Wars, or real-time strategy. I’m looking for the Steam Controller to up my experience in these areas. I’m also hoping to use the Steam Controller as an improvement over my current setup for controlling Netflix playback via the computer behind my TV.

About that. I have a computer behind my TV. It’s a 2010 Mac Mini that I got for free and resurrected from the dead by putting a spare laptop hard drive inside to dual boot Windows 10 and OS X. A gaming PC this is not. However, it’s adequate for Netflix playback, and should suffice for Steam In-Home Streaming. Again, color me skeptical that In-Home Streaming will be responsive enough for shooters. However, this won’t be a problem as long as I limit my expectation to the kinds of games where millisecond adjustments aren’t needed. The Steam Controller can succeed in getting a 5-star review by excelling in those areas. If it works for shooters, too (and I will at least try this a few times), that’s just a bonus.

Let’s move on to the unboxing. Here, I have to give Valve full marks. I wasn’t really expecting to see my controller until later this month or early next, but they did right by their pre-orders. I received a notice with tracking info when the controller shipped, as well as a follow-up notice just ahead of it’s arrival that I believe is worth re-printing here:

The first Steam Link and Steam Controller pre-order units are scheduled to arrive over the next few days.

We’re eager to hear your feedback as we continue to make changes and improvements leading up to the full retail launch on November 10th. For the next few weeks, we recommend that you opt in to the Steam client beta (through the System settings panel in the Big Picture UI) so that you’ll be running the most current fixes and functionality.

We’ll be keeping an eye on forums everywhere, but we’ve also set up a contact email address for everyone on the team: SteamHardwareFeedback@valvesoftware.com. Whether you’re having a great time or running into issues, we want to know.

I believe that was beautifully executed. Well done, Valve.

The device itself looks and feels great. Here is the box:

Steam Controller Box

Opened up:

Steam Controller Opened Box

Further contents:

Steam Controller

Also in the box were a Product Guide and Quick-Start Guide. You can see that controller ships with a set of AA batteries. I have no idea what the battery life will be, but I have an ample supply of rechargeable AA’s at home. I am a little disappointed that it doesn’t use something more like a cell phone battery, but I imagine this helped keep costs down, which I also appreciate.

The feel of the controller is pretty good overall. The right trackpad fits under my thumb much better than expected. Left and right motions are actually more of a diagonal axis across the pad, so I hope this is either adjustable or pre-tuned correctly (I will report this after some time in actual game play). The handle buttons under my ring finger and little fingers feel good. I’m not so sure about the upper trigger buttons yet.

My biggest concern right now is that my thumb has to leave the trackpad to use the XYAB buttons. I have to choose one part of the controller or the other. However, this is more on game designers using layouts and mechanics that don’t require this, or on me to work around it through customizing the layout.

That’s all for now. Stay tuned for part 2 in a couple days, where I’ll talk about the actual playing experience with the controller.


Technology vs Magic

April 2nd, 2015 · 1 Comment · non-computer

In honor of the death of Terry Pratchett I’ve been re-reading a few of his books. One in particular is “Maurice and his Educated Rodents“. The premise of the book is that a cat and some rats come across some magical debris that gives them human-like intelligence and speech.

Something in that got me thinking about the difference between magic and technology. People do research all the time to examine and improve the intelligence of rats and other mammals. Imagine what a wondrous technological advancement it would be to create a drug that could give human-like intelligence to a colony of rats! But the cat and rats in the book could also speak. Not just that, but they used human language. That’s magic. Not only do we have the intelligence increase, but the knowledge transfer as well. That’s clearly magic. There’s just something there that knows what you need for the advance to be practical.