jump to navigation

Thoughts on Windows 8 Monday, 01/30/2012

Posted by Percy in Technology.
Tags: ,
1 comment so far

I’ve been using Windows 8 on my three year old “tablet” PC (i.e. laptop with touchscreen that spins around) off and on for the past few weeks or so. So far, I’ve been pretty impressed with it – to the point that I’m seriously considering going Windows Phone when it comes time to replace my trusty iPhone 4. Too, if the new tablets are priced right and not as heavy as the prototypes I saw at Tech-Ed, one might be coming home at some point.

With Windows 8 (non-server since I haven’t tried the server version), I think there are some strengths and weaknesses which I’ll throw out.

Strengths
Backward compatibility with Windows 7 – apps still run

While I haven’t found any metro apps to install (the app store isn’t available for the dev preview), I have been able to install some of my favorite apps without issue – Evernote, Dropbox, Chrome, Firefox, etc.  And, so far as I can tell, they all run like they should.  You don’t get the full-screen Metro UI or a neat tile to go along with them, but they open in the “Desktop” section of the UI and run just fine.  I haven’t installed a ton of apps since I’m limiting myself to a 60 GB VHD, but except for a few specific instances I’m planning on using it for my main OS on my laptop – at least until the preview expires.

Metro UI makes sense

From the first time I saw the new UI running on my machine, it was usable.  There were a few little quirks I had to figure out, but for the most part, it made sense.  Having a touch screen really helped, though.  The first time it booted up, I just swiped through the apps with my finger, and moved a few icons around.  I even found the menu at the right by myself, just by swiping at the edge of the screen.  I can’t seem to get the multi-touch working on my machine right now, so I can’t do all the neat tricks.  All in all, though, once you see it, you know how it works.

Tiles are really cool

I really am enjoying the “tile” interface, especially those that are larger and can report back info.  I can see the reason for them very quickly, and I now get all the Windows Phone commercials about getting the info quick and getting out.  Currently, if I want to check the weather, I have to pull out my phone, unlock it, go into the Weather group, open up my weather app (The Weather Channel), and let the app load to pull up data.  I can see that if I had a Windows Phone with the weather tile expanded and set up correctly, all I would need to do is pull out the phone and unlock it.  The information would be displayed for me very quickly.  Theoretically, to get all the info I want from my device, I can see just unlocking it and scrolling through the tiles.  If the apps are set up appropriately, I shouldn’t have to open any of them.

Waking from sleep is FAST

So, I’m running this on a laptop that’s three years old.  It’s a dual core with 4Gb of RAM, so it’s not the top of the line, but it’s not completely ancient either.  Waking from sleep on Windows 7 takes a good amount of time.  It takes enough time that I really only use it when I’m done with using the computer for a while.  I used my tablet at a local conference recently and I had forgotten to set the power settings like I prefer.  So, a few minutes into a session, it went to sleep.  I didn’t notice until I had something I wanted to put in a note in Evernote.  My first thought was “Dang it, now I’ve got to wait for this to boot up and I’m going to miss the next few of this session.  Maybe I should just load it up on my phone and take notes from there.”  Then, I remembered seeing videos of people starting from a cold boot in less than a few seconds, so I gave it a shot.  In a few seconds, I was at the welcome screen, and after putting in my PIN (more on that later) I was back taking notes.  The whole experience reminded me of unlocking my phone (or, as an extension, an iPad) and was just as fast.  Needless to say, I wasn’t worried about letting it go to sleep after that.  In fact, I’ve changed my normal power setting to allow it to sleep much more quickly than I do in my Windows & instance.  It really does give you the tablet feel in this respect.

PIN login

So, there are three “passwords” you can set up in Windows 8.  The first is your usual alphanumeric pass phrase.  The second is a picture “password” where you’re shown a picture, and you perform a pre-defined set of gestures to login (similar to the android “connect the dots” unlock screen).  The third is using a PIN, much like on the iPhone or iPad.  I have to admit, when my machine woke up from sleep and I was using it as a tablet (screen turned around so the keyboard was behind it), I thought it was going to be a pain to type in my password.  However, I was asked for the PIN I set up, and just like on my phone I was able to quickly enter it and get on with what I was doing.  I realize it’s probably the least secure of the three options, and I’ll probably set up the picture password soon, but it was really FAST.

Sync with Live account

I’ve only got one machine running this OS right now, but I can see this being a cool feature.  I’m not sure what will be synced, but it did pull down my avatar which was a nice touch.  I assume this will integrate with Office365 or Live Mesh in some way.

Touch is a first class citizen, but works well with mouse/keyboard input

When you first see the Metro desktop, you want to reach out and touch it.  It just makes sense.  Like I’ve said, I’ve had a touch enabled laptop for about three years now.  With Windows 8 (and Vista before it), I might have used the touch features, but only on rare occasions or when I wanted to take notes using the stylus.  With Windows 8, I end up using some of the touch features even when I’m using a more traditional mouse/keyboard application like Visual Studio.  So, just by the nature of the UI, I’m using touch more, which is a neat experience.  I’ve also found, though, that the “Desktop” portion of the UI is “traditional input friendly” (i.e. lends itself well to normal mouse/keyboard input).  I didn’t feel that I was missing anything using the mouse and keyboard in this view.

Native ISO mounting

There’s no need for third party tools now to mount (or at least open) ISOs now.

Weaknesses:
AutoCorrect is missing

This is more of an issue with using the tablet PC features.  When I was taking notes at the conference, I really missed having autocorrect.  I would type a bunch of notes in a hurry, only to look back and have to correct a bunch of misspellings – most of which had to do with international characters (which I’ll go into more below).

Onscreen keyboard has some quirks – picks international characters

This may be just a setting I’ve gotten wrong, but there were some quirks when I was using the onscreen keyboard.  Every so often, I’d get an international character thrown in.  I’ve not spent a lot of time on this, but I’ve never see it anywhere else.

New apps automatically get a tile

This may be a setting somewhere, but it annoys me that every app I install gets a tile.  I think when I originally thought of the “tile area”, I compared it to the desktop.  For me, I have very few icons on my desktop.  I think the “tile area” is more of the start menu, just flattened out.  It would be nice, though, to have the ability to select which apps get icons and which don’t.

Indeterminite:
Metro UI’s useablility for business users

I’m still trying to understand if Metro really has a place in the business world.  Now, with Win8, you can get to a desktop and run all your normal apps.  So, just as much as Win7 has business use I think Win8 can.  But, that’s completely bypassing the Metro UI.

We’ll see how things go as Windows 8 gets closer to release.

33 Wednesday, 01/25/2012

Posted by Percy in Birthday, Personal.
Tags: ,
add a comment

33 is just a number. To some it’s the number on a sports jersey. To others, it might hold other significance.

To me, as of about 7 PM tonight, it will be my age. It’s the year that, once again, my life forever changes as Sarah and I welcome our child into our lives. It’s a major milestone in my life. It will be a year that I will always remember. Even so, there’s one bit of significance around the number 33 that keeps coming to the forefront of my mind – it’s how old Jesus was when he died.

That one thought has overshadowed a lot of others the past few days. I look at my life so far, and I’ve gone through some pretty major changes and milestones – graduating High School and then college, getting that first job, buying a home, figuring out what I want to to professionally, getting married, getting baptized, and now preparing for the arrival of the next generation of my family. I’ve done a lot, experienced a lot, and had a pretty great life overall. But, if this were my last year on Earth, I don’t think I feel like I’ve had enough time to do everything that I want to do.

And, maybe that’s the problem. I have my own plans, but one of the reasons that Jesus had so much of an impact on history is that He turned over His plans to God. Now, being God, I’m assuming He knew what the outcome would be. But, that doesn’t mean that the part of Him that was human didn’t want to follow a different plan. That’s evident when He asks God to “take this cup from me“. In the end, though, He knew that God’s plan was better than His own, and submitted Himself to it.

Whatever you believe, Jesus changed the world while only living on this Earth for 33 years. I’m here, 2000 years afterwards, reading about His actions, and studying what He did and who He was. Now, having reached that age myself, and looking back, I don’t know how He had the will power to go through with a plan He knew would end in His death.

That’s just been something weighing on my mind as of late.

Vacation God Moments, Part 1 – Celebrating the Sabbath Monday, 01/16/2012

Posted by Percy in God Moments, Personal, Vacation God Moments.
Tags: ,
2 comments

Sarah and I took a wonderful fall vacation trip up to Asheville, North Carolina right before Thanksgiving this past year – a “babymoon” of sorts.  It’s the second time we’ve made this trip, and we always seem to find ourselves driving along the Blue Ridge Parkway at some point.  I always feel that God talks most to me when I’m closest to His creations and this trip was no different.  I think there’s a few things He tried to teach me during our afternoon drive, and I thought I’d share those with you.

The first of these has a tie in with a Sunday School lesson from around the same time.  The basic premise was that God gives us the Sabbath as a gift, and we don’t always know what to do with it.  Too, the point of the Sabbath is to rest, to change up your routine in such a way as you get energized and rejuvenated.  For me, this vacation was a Sabbath.

This vacation allowed us to rest – we didn’t have to do anything at any particular time, nor did we have to be anywhere at any particular time.  We didn’t have any responsibilities other than enjoying ourselves.  We could go where we pleased, when we pleased, and we surely did.

It also allowed us to reconnect.  It’s easy for life to get in the way of your marriage, but that’s not why God put that perfect partner in your life.  It’s through growth in your relationship together that causes you to grow more than you could individually.  I don’t know about you, but for me, it takes me a while to “re-enter” my personal life after I’ve been working all day.  It’s not usually until about halfway through dinner (and sometimes not even then) before I can shut off things going on at the office.  And, it usually has to be a conscious effort.  However, on a trip like this, where the time off has been planned for some time, I find that I can let the office go.

That actually brings me to one of the most important things to do while celebrating your Sabbath – disconnect from the world.  It’s taken me a while to get comfortable with this and I’m not completely there.  I have to disable my work e-mail and sometimes my personal e-mail.  I leave my phone on silent most of the time, just to be sure I concentrate on what’s most important.  You have to “Stop the Noise” as my friend Carisa Turner puts it (more on this in a later post).  I find that God will speak to me in that low whisper, but I have to be in a place where I can hear it.  Sometimes it happens because I’m really focusing on what Sarah is saying.  Sometimes it happens because I hear a bird chirping on a sunny day. Sometimes it’s because I hear nothing at all and it makes me uncomfortable.  I can tell you that it doesn’t usually happen in the “bing” of a new e-mail or the reminder of an upcoming appointment. That doesn’t mean God can’t use those moments – He definitely can. I find that, for me at least, those moments usually just distract me from Him or what He’s trying to show/teach me.

If you can’t tell, I’m not taking the Sabbath to only mean Sunday.  I’m taking it to mean a time of rest and relaxation.  It’s a time that’s set apart from your everyday routine. It’s sacrificing time spent in one area to spend time with God – in other words, Choosing to Cheat. It’s allowing yourself the time to be open to what He has to say to you.

Too, I’m still learning how to celebrate the Sabbath. I’m not always sure what to do with a gift like that, but I’m trying to get better about it. It’s about being intentional, and that’s what I’m working on. I’m putting this out there more as a reminder to myself.

So, how do you celebrate the Sabbath?

Fun with Powershell, Part 1 – Intro/Twitter API Monday, 01/09/2012

Posted by Percy in Fun with Powershell, Programming, Technology.
Tags: , , ,
1 comment so far

I’ve really been enjoying learning more about Powershell.  I’ve actually gotten to the point that I think about using it first, and then writing a full-fledged application second.  In the past, I’ve listed some of the things I’ve been able to do with Powershell, but I thought I might dig a little deeper and provide some more detailed info about the what and how of those kind of things.  Too, whenever I talk to developers or technology folks about Powershell, they all have the same reaction – “Isn’t that more for system administrators than for developers?”.  While I fervently agree that anyone administering any kind of system needs to know Powershell for their own sanity, it’s a great tool for developers as well.  So, I thought I would highlight how developers can use Powershell by throwing out some real world examples of how I’ve used it.  Also, I’m assuming that you know the basics of Powershell – declaring variables ($), calling methods on objects, piping input into commands, creating new objects, etc.  If you need more clarification, please let me know.

I don’t know how long this series will be, but here we go with part 1.

I was reading through my twitter feed the other day, and I came across this post from The Oatmeal:

“Is there a way to sort my Twitter followers by the number of followers they have? (in descending order)”

My first thought was “I’m sure I can do that in Powershell”.  Now, there are a number of web apps out there that will actually do this for you.  I even think the next tweet points to friendorfollow.com.  However, I thought it would be a neat learning exercise.  Before we begin, I figured I’d throw this out there – I honestly have no idea how this will work.  I don’t have some stock twitter API in my back pocket ready to use.  So, this will be “from scratch”.  So, here’s how I did it.

First off, I’m assuming that there is a twitter API, so I go to twitter’s website, and I click the link at the bottom labeled “Developers” (hey, that’s me!).  That takes me to dev.twitter.com, which has a link for Getting Started with the API.  Bingo!  After looking around there, I find that it’s just HTTP requests of the format “https://api.twitter.com/{Version}/{Controller}/{Action].{Format}?{Parameters}”.  So, in this case, the first thing to do is get the followers for a particular user.  So, the URL I’m going to use is https://api.twitter.com/1/friends/ids.xml?screen_name={your user name}, since I want to use the XML format.  That returns the list of all my followers.  So, now I need to get this into Powershell by firing up my trusted Posh IDE – PowerGUI.

With Powershell, you have access to any .NET library, including the ones in the core.  There’s a class called System.Net.WebClient that I think I can use.  Let me see what options I have:

New-Object System.Net.WebClient | Get-Member 

There’s a method called DownloadString, that takes in a string address as a parameter.  So, lets give this a try and see what happens:

$url = "https://api.twitter.com/1/friends/ids.xml?screen_name={your user name}" 
$wc = New-Object System.Net.WebClient 
$wc.DownloadString($url) 

That returns the XML response that I’m looking for.  So, now I need to put that string into an xml object, and see what options I have.

[xml] $data = $wc.DownloadString($url)
$data | Get-Member 

Now, one of the properties is called “id_list”.  If I look at the XML returned from the URL I passed in, that’s the root node.   So, by putting it in the XML object, Powershell has effectively serialized my XML into an object tree.  So, now I should be able to get each individual id.

$data.id_list.ids.id | 
% { 
	$_ 
} 

From that I can see the list of id’s. Alright, now I can loop through each one of my followers. So, the next step is getting the number of followers for each of those users. Luckily, there is another API call that can give us that information.  So, now, for each one of these users I want to call a URL of the following format - https://api.twitter.com/1/users/lookup.xml?user_id={User ID}&include_entities=true.

Note: The twitter API only allows 150 calls an hour per IP address.  I found this one out the hard way.  So, while you CAN loop through all your friends, I wouldn’t recommend it if you have more than 150 people your are following.

So, now I can do something like this within the loop:

$userUrl = "https://api.twitter.com/1/users/lookup.xml?user_id=$($_)&include_entities=true"
[xml] $userData = $wc.DownloadString($userUrl)

A little more testing tells me that the user name of the current follower can be found at $userData.users.user.screen_name and the follower count can be found at $userData.users.user.followers_count. Now, I want to see this data as a simple data set so I can sort the data. There’s a neat little trick I picked up while reading this article. You can dynamically declare an object structure by using a command similar to this:

$newObj = "" | Select-Object Property1, Property2, Property3

If you then do something like this:

$newObj | Get-Member

You’ll see “NoteProperty” types that correspond to the properties you declared earlier. Too, instead of doing multiple set operations on separate lines, you can do multiple set operations on one line – as long as you get the order correct. So, once I get the data for the user, I can do something like this:

$outputItem = "" | Select-Object Name, ScreenName, FollowersCount
$outputItem.Name, $outputItem.ScreenName, $outputItem.FollowersCount = $userData.users.user.name, $userData.users.user.screen_name, [int] $userData.users.user.followers_count

Now, if I just put $outputItem on a line all by itself, it’ll be returned as a result of this iteration of the loop. So, now my loop returns a data set which contains all the data I want to see. Just to make it a bit nicer, I can pipe it out to Out-GridView. That allows me to see the data and play with it all I want. So, if I put it all together, I’ve got a script that hits the Twitter API and will return a grid view of all of the people that you are following and their follower count in a little over 10 lines of code (and some of that simply for formatting):

$url = "https://api.twitter.com/1/friends/ids.xml?screen_name={your twitter name}"
$wc = New-Object System.Net.WebClient
[xml] $data = $wc.DownloadString($url)
$data.id_list.ids.id |
% {
    $userUrl = "https://api.twitter.com/1/users/lookup.xml?user_id=$($_)&include_entities=true"
    [xml] $userData = $wc.DownloadString($userUrl)
    $outputItem = "" | Select-Object Name, ScreenName, FollowersCount
    $outputItem.Name, $outputItem.ScreenName, $outputItem.FollowersCount = $userData.users.user.name, $userData.users.user.screen_name, [int] $userData.users.user.followers_count
    $outputItem    
} | Out-GridView

So, there is is. In the interest of full disclosure, here is my script, with the user limiter code included as well as some commented code I was using for testing purposes:

cls
# New-Object System.Net.WebClient | Get-Member
$url = "https://api.twitter.com/1/friends/ids.xml?screen_name=katman26"
$wc = New-Object System.Net.WebClient
[xml] $data = $wc.DownloadString($url)
$count = 0
$data.id_list.ids.id | 
% {
    if($count -lt 5)
    {
        $userUrl = "https://api.twitter.com/1/users/lookup.xml?user_id=$($_)&include_entities=true"
        [xml] $userData = $wc.DownloadString($userUrl)
        
        $outputItem = "" | Select-Object Name, ScreenName, FollowersCount
        $outputItem.Name, $outputItem.ScreenName, $outputItem.FollowersCount = $userData.users.user.name, $userData.users.user.screen_name, [int] $userData.users.user.followers_count
        $outputItem
    }
    $count++
} | Out-GridView

Let me know if you have any questions about this or any of the examples I’ve shown. I’m not a Powershell expert…yet. :)

2012 Goals Monday, 01/02/2012

Posted by Percy in Holiday, Personal.
Tags: ,
add a comment

Sarah and I have a New Year’s Day tradition that started a few years ago. I’m not really sure how it came about, but I’m really glad we’ve kept it up. The tradition is simple. We go out to a decent restaurant where there aren’t many distractions (usually The Melting Pot so we can take our time), we look at our goals for the past year, discuss whether we were successful and then we lay out our goals for the coming year. We don’t do resolutions, because it’s much harder to track the status of things like “save more money” or “eat healthier”. It’s a lot easier to look back over the year and say “did we ‘have x amount in our savings account’” or “how did we do on ‘getting new carpet’”.  It’s actually a bit harder to do goals vs. resolutions, because you have to be specific.  It has to be something you can go back to later, and simply say “yes” or “no” to it being completed.  There should be no gray area here.

Too, it’s all about beginning with the end in mind. As many of my work colleagues know, I’m a BIG proponent of defining success before you start working. My favorite question at the start of every sprint is “what defines success for this iteration?”. My favorite question at the retrospective – “were we successful based on the definition of success when we started?” If you don’t define what success is (and you’re not extremely explicit about it), how do you know that the small decision you are making today will keep you heading in the right direction? I think that’s important at work, but how much more important is it for the other parts of your life?

So, we went through this exercise on Sunday evening and I think we’re going to have a good 2012. It feels really good to look across the table and know that you and your partner in this life are heading in the same direction.  Too, it’s neat to find out what your wife wants to accomplish this year – sometimes, it even surprises and inspires you.  I actually came up with some personal goals that I’m excited about.

One of the goals that we’ve committed to together is reading through the entire Bible this year.  Both of us have read through most of the Bible, but I honestly can’t say for sure that I’ve read every verse. That changes this year, and I’ve got the best accountability partner along for the ride. We’re starting the One Year Bible together, and I’m even doing a chronological one on my own – ’cause I’m geeky like that.

I’m also committing to reading 8 books this year. Last year, I tried to commit to one a month, but got off track in February which just discouraged me and caused me to not want to read at all. So, I’m trying a more realistic goal this time around. Too, I’m not confining myself to a timeline. If I read two books this month and none in the next two, I’m still right on track and won’t get discouraged.

I’m also committing to writing one blog post a week. FYI, this one does count for this week. :) I want to improve my writing skills, and also keep track of some cool stuff I’ve been working on. Too, I’ve started about six other posts that I need to finish. This goal will (hopefully) force me to finish those and improve my writing some. I’ve even had some requests for posts (gasp!) and I’ve completely let those people down (sad trombone). This will hopefully kick me in the pants about that as well. Plus, I hope I can contribute to the online community in some small way. I’ve got the next few lined up, but I know that there may be some weeks where it’s just something simple. At least it’ll be something. This part of my plan was inspired by Hanselman’s post on productivity. I want to attempt to produce more this year.

Along the same lines of producing more, I’ve committed myself to submit at least one talk to a conference.  I’ve actually had two separate people tell me I should do something like this (for two separate talks), and I think it would be a good idea.  I can’t control if they are picked or not, so my goal isn’t actually to present.  If a talk I submit DOES get picked, then that’s just icing on the cake.  I’ve done some internal presentations, but never one in public like that.  I may not enjoy it, but I’ll never know unless I try.

We came up with a bunch of other goals for this year – most of which we want to get done before late February. :)

So, what are you doing different/the same this year? How do you judge the success of each year?

Follow

Get every new post delivered to your Inbox.

Join 670 other followers