Peace For All

July 3, 2012

Why Would Anyone Giveup Dreams?

Filed under: Life in general — Devlin Bentley @ 11:06 am

The music in my dreams, the sights, and the visions. The artistry and the wonder, the potential untapped. Never would I surrender eight hours of dreaming the future, discovering my past.

May 2, 2012

Switcher, an awesome alt-tab replacement, with search!

Filed under: Life in general, technology — Tags: , , , — Devlin Bentley @ 12:11 pm

I was needing an alt-tab replacement that allowed me to search open windows (yes I have that many windows open!), and after a few minutes of searching I found the amazing utility Switcher. The animations are a bit slow, but you can turn them off and have a really rapid alt-tab replacement utility that allows for search! Search is amazing, I have 20 windows open right now, alt-tabbing through them is generally a pain, but I type at 120WPM, so searching is faster than using my mouse of having to hit “alt-tab”, do a visual check of which app is selected, rinse, wash, repeat.

My only complaint is that when using multiple monitors, which monitor search results show up on seems fairly arbitrary. It also seems to split across screens, but it would be nice if there was a way to tell it to stick to one screen or the other.

But those are minor complaints compared to the amount of time and frustration I am saving with it!

April 26, 2012

My favorite meal to cook

Filed under: Life in general — Tags: , , , , , , — Devlin Bentley @ 11:09 am

I get asked this question a fair bit, so I decided to make a blog post about it. For those of you who don’t know, one of my passions is cooking healthy food at home, from traditional American favorites to dishes from around the world.


On multiple occasions the question “What the best meal you have ever made?” has been asked of me. That, it turns out, is a question that requires a fair bit of detail to answer.

Let me start off with yesterday: my dinner consisted of a homemade soup, tasty if not simple and utilitarian. I had prepared it the night prior with the intent of consuming after returning from work, which is exactly what I did.

But that soup is of no great consequence, the effort put in was minimal and the result sufficient. It serves only as an example of how I prefer to plan my meals during my work week.

Twice Baked Potatoes

Now, if one asked my friends and family which of my dishes was their favorite, I can promise that the answer would be my Twice Baked Potatoes. All twice baked potatoes  start from the same base: Potatoes innards, generous amounts of sour cream, an equally good measure of grated sharp cheddar cheese, a bit of butter, chopped green onions, and mayhaps a bit of crushed garlic. To this I add my one custom ingredient, the ingredient that shocks and amazes: At least two large peeled shrimp which are placed into each potato shell after it has been stuffed.

Preparation instructions are the same as for any other twice baked potato, merely bake the potato to near completion, cut in half, scoop out the insides, prepare the stuffing as described above, insert stuffing back into the shells, and bake again for a short bit of time.

Simple, though a bit of leg work in practice, but the end result is wonderful. No one expects, but everyone has been pleased by, the shrimp.

72 Hour Smoke Bacon Stew

Now I will not argue that my twice baked potatoes are not one of my best dishes, surely they are. But they are not the dish into which I put the most love into the creation of.

What I pour my heart into is the making of my 72 Hour Smoked Bacon Stew.

The first step in its creation is to acquire bone in smoked bacon from a European deli, of which I am thankful that I live near a number of. The bacon is then placed into a large pot which has been filled with tomato sauce (if I am truly feeling up to it, I have made the tomato sauce myself from purchased tomatoes). Some simple seasonings are added to the pot, a few bay leaves, and a wonderful chili powder variant that one can only acquire online.

This is then allowed to stew for a wee bit less than 3 days. Being tended to and watched carefully so that the broth does not boil away or bubble over.

On the first day, the house is filled with a wonderful smokey aroma. It is a pleasant harbinger of things to come.

On the second day, both the meat and the fat has fallen from the bone and it can be seen where the bone marrow itself has started to fall apart.

It is on the third day that one awakens to find that the bones have given themselves up to make the broth complete.

Now, what is left over are mere details. At this juncture I most often add a variety of beans to make a good hearty stew, but a variety of different rices will do justice as well. Other vegetables are added as needed and as requested by those I will be serving.

It takes a lot of time and dedication to cook, and the result turns out differently each time. But, when done properly, and there are many places to make mistakes, it is by far my favorite dish to prepare.

April 20, 2012

How Microsoft can take over the High End Gaming Keyboard market

The picture below is of the Microsoft Sidewinder X6, a largely forgotten gaming keyboard from Microsoft.

Image

It was, and still is, close to being the best gaming keyboard ever made. Why?

  • A swappable numeric keypad that can be turned into a macro pad means that MMO players are happy.
  • Convenient macro keys close to the WASD cluster so FPS players can have their fun as well
  • It has a red backlight that does not ruin your night vision, it also looks less tacky then blue backlights which are starting to have a backlash against their overuse.
    • The backlight’s brightness can be easily adjusted through the left knob up on top. This makes it really simple to just twist the knob and turn off the backlight before going to bed. No strange key combination to remember.
  • There is a volume control knob, for lighting quick changes in volume level, no pounding on the Vol- key while your ears are getting blasted.
  • A full set of media playback keys, meaning there are no strange hotkeys or function+key combinations to remember.

Now, that said, this keyboard is not perfect. It does not have N-Key Rollover. which is very very unfortunate. The keyboard that came after it, the Sidewinder X4, has amazing NKRO and red backlighting, but is otherwise a very utilitarian keyboard. This fits its role as a low cost gaming keyboard, but it entered into a very crowded market and it didn’t really taken the world by storm.

The other problem with the X6 is that the high end gaming keyboard market has moved on. The current big thing is Cherry MX switches of various types. Right now only a few manufactures are making gaming keyboards with Cherry MX switches, and with the exception of Corsair’s Vengeance series, all the Cherry MX gaming keyboards are fairly spartan in their feature offerings. Many of them do not even have media control keys and the vast majority have the same styling as regular cheap PC pack-in keyboards.

I believe that when you take into consideration all these factors (Microsoft’s excellent design work on the X6 and the lack of real competitors in this product space) that Microsoft is in a great position to enter into and dominate the market for high end gaming keyboards.

How? Quite simple: Release an updated version of the Sidewinder X6 with NKRO that uses Cherry MX switches. Offer it in two SKUs, one with Brown switches and one with Red. (The CherryMX brown sku could even have a limited production run, but it would serve the purpose of getting excellent press amongst enthusiasts.)

This would immediately place Microsoft’s offering at the top of the pack for Cherry MX gaming keyboards by offering more features than any other gaming keyboard of comparable quality. The X6’s design was already great, and re-released and updated it has the potential to be the best gaming keyboard sold by anyone.

The second aspect of this is doing a proper marketing campaign. Thankfully there are so few CherryMX gaming keyboards out on the market right now that getting reviewers to take a look at your product is comparably easy, as is building up a good grassroots base on forums. If MS sets out full throttle on both paths, top down and ground up, a new CherryMX X6 should be well received by a community that eagerly awaits the latest high quality products.

September 25, 2011

PowerShell Call Operator (&): Using an array of parameters to solve all your quoting problems

Filed under: Life in general, PowerShell, Programming — Tags: , — Devlin Bentley @ 7:30 am

I would like to thank James Brundage (blog!) for telling me about this. Suffice to say, the man is seriously into automation.

Alright, if you just want to learn about using arrays of parameters with the call operator (&) and skip all the explanation of what doesn’t work, scroll down to the bottom. I am a big believer in understanding solutions though, so this post will detail everything that doesn’t work and slowly build up towards what does work.

The last blog post I did on this topic was about using Invoke-Expression to solve problems with passing parameters to external programs. I resorted to using Invoke-Expression since (as an undocumented side effect?) Invoke-Expression will strip off quotes from parameters to commands it executes. But in some circles using Invoke-Expression to execute programs is considered heresy. It is thanks to James Brundage that I was able to figure out how to better use & and also come to a greater conscious realization of how PowerShell handles strings.

To summarize the problem, try to get the following to run in PowerShell

$pingopts = "www.example.com -n 5"
ping $pingopts

If you run this command ping will spit out an error, the root cause of the problem is that PowerShell passes $pingopts to ping with the quotes still on it, so the above line is the same as typing

ping “www.example.com -n 5”

Which is obviously quite wrong.

The next obvious solution is to use the call operator, “&”. The call operator is how you tell PowerShell to basically act as if you had just typed whatever follows into the command line. It is like a little slice of ‘>’ in your script.

Now the call operator takes the first parameter passed to it and uses Get-Command to try to find out what needs to be done. Without going into details about Get-Command, this means the first parameter to the call operator must be only the command that is to be run, not including parameters. The people over at Powershell.com explain it really well.

With all this in mind, let us try the following

$pingopts = "www.example.com -n 5"
&ping $pingopts

Run that and you will get the exact same error. Fun!

Why is this happening?

The problem is that & does not dequote strings that have spaces in them.

So this code works:

$pingopts = "www.example.com"
&ping $pingopts

Where as

$pingopts = "  www.example.com"
&ping $pingopts

will not.

But if we think about this for a minute, we already know about this behavior. Heck we expect it and rely on it. It is so ingrained into how we use PowerShell that we don’t even think about it, except for when we run head first into it. So now let us explicitly discuss PowerShell’s handling of strings.

String Quoting Logic

The string auto quoting and dequoting logic is designed around passing paths around. The rule, as demonstrated above, is quite simple. A string with a space in it gets quoted when passed to something outside of PoSH, while a string without spaces in it has its quotes stripped away. This logic basically assumes if you have a space, you are dealing with a path and you need quotes. If you don’t have a space, you are either dealing with a path that doesn’t need quotes, or are passing something around that isn’t a path and you do not want quotes. For those scenarios PowerShell gives exactly the results people want, which just so happen to be the results people need 95% of the time.

Problems arise  when you have strings with spaces in them that you do not want quoted after leaving the confines of PowerShell. Bypassing the string quoting/dequoting logic is not easy and you can end up resorting to Invoke-Expression hacks like I detailed earlier or you can try to find a way to work within the system. The latter is obviously preferable.

The Solution

You may have already guessed the solution from the title of this blog post: Pass an array of parameters to the call operator. Given the sparse documentation available online for & (it would be nice if it said string[] somewhere), one has to have a fairly good understanding of Powershell to figure this out on their own, or just randomly try passing an array to &.

The key here is working the system: by passing parameters in an array you can avoid having spaces in your quoted strings. Where you would normally put a space, you break off and create a separate array element. This is still a bit of a work around, it would be optimal to find a way to tell & to dequote strings, but this solution does work.

Code:

$pingopts = @("www.example.com", "-n", 5)
&ping $pingopts

Again, notice instead of “-n 5”, I split it into two array elements.

Just for reference, here is how you would build that command up line by line using an array:

$pingopts = @()
$pingopts += "www.example.com"
$pingopts += "-n"
$pingopts += 5
&ping $pingopts

This actually is not much different from constructing 3 separate variables and passing them in after ping:

$param1 = "www.example.com"
$param2 = "-n"
$param3 = 5
&ping $param1 $param2 $param3

Which is the blatantly obvious solution but also the ugly one so I never even considered it. Of course using arrays is more flexible since you can declare at top and slowly build up your command line throughout your script.

Hopefully this saves everyone some time and the journey has helped you understand a bit more about Powershell.

January 16, 2011

No I am not going to blog about my cats

Filed under: Life in general — Devlin Bentley @ 11:46 pm

Yes I have two kitties, no I am not going to turn this into a blog about weird things cats do. That is what Facebook status updates are for.

(yes they are cute)

July 28, 2009

Focus Bracketing On My Consumer Digicam

Filed under: Life in general — Devlin Bentley @ 4:16 pm

So long story short, I installed CHDK on my $300 Canon digicam (SD880).  I only get 1mm control over focus, but it still allowed me to produce this cool picture:

WinCE Dev Board

WinCE Dev Board

I put it together using the free CombineZP application.

December 31, 2007

Towne Pointe Pulls Listings

Filed under: Life in general — Devlin Bentley @ 3:14 pm

Towne Pointe, the very nice (if someone traditional) condo project just a stones throw away from downtown Redmond, has either taken down almost all of their listings or have sold all of their remaining units (spare one) over the holidays.  For posterity, and in case things change, I have captured a screen shot of Condo Compare’s listing for Towne Pointe units.

image

It is interesting that more and more agents are just completely pulling listings down.  Relisting houses and condos is of course quite common (though annoying from the buyers perspective), and it will be interesting to see if Towne Pointe relist their units sometime soon, e.g. before the “spring rush”.

Of note, Towne Pointe has not sold any units since August 2nd (and I would really consider that a July sale), as can be seen in the King County Records for the complex.  Simply checking the sold date on each unit shows they had a burst of sales between June and July and have had nothing since, a story that many real estate agents are becoming familiar with.

Note:  Some portion of King County’s website is down right now (3:34PM Dec 31 2007)

December 29, 2007

The Cleveland

Filed under: Life in general — Tags: , , , , — Devlin Bentley @ 7:15 pm

My girlfriend Lila (who already has an excellent post about The Cleveland) and I went to visit The Cleveland in person today.  It was late in the day, raining, and we had just finished up visiting another project.  Still, we learned some valuable information and got to see the room layouts in person.  I have to say that they look bigger in person than one imagines from the floor plans. 

After coming back home, we again went over the numbers we had gathered about The Cleveland, looking for some more patterns or discrepancies.  Comparing the price of identical floor plans on the resale market to that which the builder is selling, we found something that makes perfect sense but still made us quite peeved.  The two prices are identical!

  1. Let us compare units 513 and 506, identical floor plans on opposite corners of The Cleveland.  Looking at the sales history for unit #513 and the asking price for unit #506, we see that unit #513 sold for $394k in early July, and was then resold for $467k.  The price the builder is asking for #506?  $467k!  Yet obviously anyone could have gone there back in July and bought it for around $394k.

Normally this would seem like common sense behavior, if you sell something for X, and the guy next store can sell it for X+1, you need to raise your price, you are selling too low.  But this is not the situation with condos right now, instead I would argue that the $467 price was inflated by a bubble and that the original price should still hold true.

The lesson here is to always do your research and to be an informed buyer.

December 9, 2007

Why is there Carpet in my Dining Room?

Filed under: Life in general — Tags: , — Devlin Bentley @ 8:39 pm

dynamic_imageCAZBJW7O

Not naming names here, because a ton of condos do this.

At least the unit posted above does not have white carpet in the dining room area.  I have seen what happens to white carpets in dining rooms, and it is not good.

Also, any chance I can get some cabinets made in this century?  Thanks!

Older Posts »

Blog at WordPress.com.