More servicesWindows Live
HomeHotmailSpacesOneCare
 
MSN
Sign in
 
 
Spaces home  Objective - Chris Hollan...PhotosProfileFriendsMore Tools Explore the Spaces community

Objective - Chris Hollander's Blog

noun: 1.) Chris Hollander's Blog. 2.)Something worked toward or striven for; a goal. adj: Having actual existence or reality.
August 26

Ranting, Raving, and Time Travel.

Mike Ash posted a great rant about his dissatisfaction with his iPhone.  The core of his dissatisfaction is the lockdown that apple has imposed on developers, specifically the inability to write applications that effectively run in the background.

something about that post triggered some sort of contra-de-ja-vu in the back of my mind.

I fired up the wayback machine, and found one of my *blog posts from almost five years ago, raving about my Windows Mobile Smartphone.  Everything in that post is as true today as it was then: I regularly listen to music, read (and write) email, have IM conversations, and browse the web, in various stages of simultaneous, using a windows mobile device.  The only difference is that now, i'm using also uploading pictures to facebook from the other side of the world thanks to GSM roaming, using Windows Mobile Live Search for GPS including turn by turn directions, and keeping track of the interwebs with FFtoGo and Twitter.  Oh yah, it makes phone calls too.

Leedvermaak then, schadenfreude now. :)

*as an aside, I'm astounded by how well my blog held up through archive.org. ;)

August 23

Segmenting Sequences into same sized Chunks

 

Samuel Jack's Functional Fun has become one of my favorite resources for functional/LINQ related info.  A recent post describes an Extension method for "Slicing" an existing sequence into same-sized chunks.  This is particularly useful when you have semi-structured data in a one dimensional list- I come across this pretty often when working with legacy systems (or, with new systems designed by legacy developers... but that's a whole other post). 

A few weeks ago, I wrote my own extension method that was functionally equivalent to what Sam had posted, but implemented differently:

   1: public static IEnumerable<IEnumerable<T>> Chunk<T>(this IEnumerable<T> Sequence, int Size)
   2: {
   3:     int Start = 0;
   4:     while (Start < Sequence.Count() - Size)
   5:     {
   6:         yield return Sequence.Skip(Start).Take(Size);
   7:         Start += Size;
   8:     }
   9:     yield return Sequence.Skip(Start);
  10: }


I think that my version is a bit LINQier than Sam's, but much less LINQy than the original version that Eric White posted.  One important difference is that Sam's implementation returns "full materialized" arrays, while (if I understand correctly) this implementation returns expressions that will be lazy-evaluated.

August 21

Photosynth...

the ease with which that was captured, created, and shared is simply incredible.

photo tour of Edinburgh Castle Courtyard, produced using about 20 pictures taken on my recent vacation and Microsoft Photosynth.  Now, if only the Spaces team would allow me to embed it directly in this post....

li

July 27

Apparently, the Internet is a crutch.

The Plan

Solve a whole bunch of problems from www.projecteuler.net during my 6 hour plane ride to Seattle.

The Epic Fail

Having to solve these problems without direct access to the project Euler site, so that I can use the provided validator to see if my answers were right, was ridiculously hard.  Basically, I had to go by "feel"... if the code was becoming too convoluted, or if attempts were taking more than a few seconds, then obviously I was doing something terribly wrong. 

My plan when attacking a given Euler problem (or, in fact, just about anything in my life...) is:

  1. Come up with a really basic strategy For Euler problems, this might be something like Recursion, Brute Force, Scope Limitation.  At work, it might be adding/improving resources, escalation, cacheing, queueing, etc.  IRL, my basic strategies are limited to "Run", "Hide", "Pimp Slap" (not necessarily in that order, tho).
  2. Implement that strategy as quickly as possible.  This should be less than 10% of the total time that i'm going to spend on the problem/issue/challenge/whatever.
  3. Test the results of the implementation.
  4. If the implementation is within +-10% of target, then I spend the remaining 90% of my time tweaking the implementation to perfection.
  5. If the implementation of the initial strategy fails,  back to the drawing board
    1. repeat steps 1-4 for strategy 2.
  6. at this point, if the solution isn't solid, outside assistance is brought in, starting at the center of my social network (my wife) and working my way out towards specialists in the given subject area (aka, the interwebs).

The problem is, on a plane, my approach falls apart at step 2. Having access to the internet is the ultimate crutch.  without having the internet to lean on, I had to fully support the weight of my stupidity on my own two feet... (or ten fingers in this case... whatever).  It wasn't pretty.

 

The Results

Suffice it to say, I didn't really solve any Euler problems on my trip.  I did, however, dramatically increase my understanding of some key .NET 3.5 features, and of programming in general. It's nice to know that olding dogs can still learn newer tricks.

The concepts that I'm learning the most about are things like LINQ, Lambda expressions, query continuations, and iterators, as well as some really (embarrassingly) fundamental things like recursion, closures, variable scope, and the secret lives of delegates.

I haven't decided wether or not I'm going to love or hate extension methods.  (also, I apologize to every English teacher I've ever had or known for writing that sentence just now).  I absolutely love the capabilities to extend existing classes, but I worry about the impact of this in the enterprise, or in large projects.  A huge portion of the code for my Euler Project solutions lives in extension methods, and this has allowed me to obtain a really high level of code re-use, and a great improvement in code readability- but at what cost?  By doing my own "language design", i've been able to take some great steps towards a more "fluent API" (btw, WTB a great link to an overview of fluent APIs? wikipedia lol'd at my search), but my code has also become more brittle in some ways- a change to something like my Long.IsPrime()  method suddenly impacted a dozen of my euler solutions, some for better, some for much worse. 

The current generation of developers is used to a very linear, vertical understanding of re-use through inheritance and containment; extension methods introduce a much more horizontal impact, especially when fundamental types (date, string, numbers, etc) are extended.  It's not quite as cross-cutting as Aspects, but at the same time, it's less orthogonal than aspects; if you weave in aspects, its easy to turn them off if you notice a problem... whereas if your using extension methods provided by your enterprise, or by your project architect, it will be impossible to "shut off" those extensions if (or, when) you discover a show-stopping problem with them.

I think I'll file extension methods under the "Great Power, Great Responsibility" tag.  What do you think?

July 24

Digital Identities. I Has them.

 

SO, its been a few months since my last post here on objective, so I figure why not share some love with the Internets. 

It only took me 2 years, but I think I've finally sorted out my Social network applications media presence on the web. 

  • Facebook is my home on the web for the next 3 years. Facebook is how I plan on sharing anything and everything with people who I actually know, IRL.  If you actually know me (i.e., we've shared a meal or a drink or something), then you should add me as a friend on facebook. 
  • FriendFeed is where i'll do my blogerati naval gazing.  I'll still do the majority of my reading in my RSS reader, but I'll do most of my commenting on FriendFeed.  If your interested in participating in the same online conversations as I am, then you'll likely find me on FriendFeed.
  • Delicious is where i'll keep all of my interesting (lol) links.  Feel free to peruse my hawt linkage.
  • this blog, Objective, is going back to its roots.  From this post forward, this blog will be devoted to 100% geekery.  Hardcore geekery. potentially NSFH (not safe for home) geekery.  This will include:
    • Code.  Lots of it. 
    • Tales from the trenches of a public sector consultant.
    • hardware/gadget obsessions.
    • Warcraft stuff.  (yah, thats right.) 
    • etc.

I've decided to sort all of this out because, after quite a creative draught, I suddenly find myself wanting to write again.  I have a story to tell.  I have an alternative perspective to share.  I want to geek out in a big way, and I needed a venue to support that- My friends don't need to be exposed to the horrible gory depths of my geekery, and you, dear Internet (glares at search engines...), don't need to be exposed to the intimate details of dealings with my friends (facebook is just fine for that).

I need to know that I can post code, and not bore my friends.  I also need to know that I can post videos, and not ruin my friends future presidential campaigns. ;)

 

And finally... I want to re-establish a weathered connection. 6 years (gasp!!) ago, when I started blogging, I was known (ok, known might be a strong word here..) as one of the first Microsoft bloggers.  Back then, there was a list (blogroll, it was called, way back then..) of about 20 or 30 of us Msft bloggers, and I was proud to be one of them.  Then the blogosphere entered its inflationary phase, and thousands of awesome M'softies sprang up and took the Internet by storm.  Around the same time, I started in a new position at Microsoft, and I didn't feel super comfortable sharing the details of my day job publicly. 

but as of Today, I am the Empire. This Saturday, I fly back to Redmond for a new swig of corporate cool aide. I'm going to spend a week soaking in as much as I can, then I'm going on a 2 week European vacation.  When I come back, I've got about 20 posts lined up... fire up your aggregators. :)

June 09

iPhone 3G. The G stands for groan. :(

I really, really wanted to love the new iPhone.  See, the original was really wonderful, but still not quite good enough for me... I have an unnatural, unhealthy relationship with my smartphone, and I was hoping that the new Iphone would bring Apple's device at least up to par with what I have, but it fell short. :(

The good:

  • Support for Exchange is awesome- I've relied on having access to exchange on my phone for years now, and I couldn't imagine having a phone without it. 
  • "MobileMe" is super cool... like they say, apple delivers "exchange for the rest of us".  I've been living in an auto-synchronized world for a while now..  my multiple PCs and smartphone have synchronized email/contacts/calendar, and its all accessible on the web thanks to Outlook Web Access (by far, the coolest (and one of the first) ajax apps I've ever seen.. but that's another topic). It's great to know that my friends who don't work at corporations that use exchange can finally stop worrying about syncing up their address books....
  • no suprises with the API announcements.  any platform live and dies by its developer support- now apple is on par with windows mobile development, and positioned as a competitor to android.
  • I love the notion of location information as a first class citizen in the platform... I hope to see windows mobile catch up with this, soon. 
  • the price... quite nice.

the bad (and the ugly):

  • I can't imagine owning a phone that doesn't have expandable storage... Am I being unreasonable here? I just bought an 8 gig micro SD card for my phone for less than 50$, and I can get 32 gig of SD memory for around 100.  If the 8 gig iPhone had the potential for me to throw a card in to upgrade it to 40g, that would certainly sweeten the pot...
  • Their "exchange for the rest of us" solution stops a bit short of revolutionary.  revolutionary would be if the entire sync infrastructure were open to 3rd party developers, so that, for example, facebook could write a "fully synched" client.
  • I find it outright insulting that in 2008, a company would dare release a phone/media device without advanced bluetooth (A2DP, tethering) compatibility.

my fingers are crossed. Maybe, just maybe, next year, Apple will introduce their next iPhone, and it will have enough substance to pry this smartphone out of my white-knuckled fist.  lets see.

May 19

Yes, the web is in peril...

 

according to Scoble, the web is in danger.  The stage is being set for a grand battle with Microsoft, Yahoo, and Facebook on one side, and Google and the open web on the other.  The preemptive strike is the (completely speculative...) Microsoft acquisition of both Yahoo search and Facebook:

This is a fight for the Web. We all just crawled inside a box that locks Google out.

Lets suspend disbelief for a moment, and imagine that things play out exactly how Scoble predicts.  In his dystopia, Facebook becomes an isolated island in the open sea of the google-accessible web.  Users who are "trapped" on the Facebook island are forced to.... well, they're forced to socialize with their friends, use well documented APIs to create and share applications, and proactively manage their online identities.  Further, they will have access to the (second) best search tools on the planet- but those tools could be specifically tailored to fit the well defined needs of their tiny little island... heck, they might not be the best in the world, but maybe... just maybe... they would be "good enough".

Its a hard life for these poor fools, stranded in Facebook.

Life on the outside is so much better, amirite?  I mean, out in the free web, All Your Data Are Belong To Google, and Google Does No Evil.  Which means that your personal information, browsing habits, attention, gestures, opinions, are definitely not for sale to the highest bidder, right?  Do no evil also means not making tons and tons of money by backing web spam, domain squatting, and malware distribution, right?

ok, that's probably enough sarcasm for now. smile_wink  See, the thing is, yes, I agree, the Web is in peril.  The Aggressor, though, isn't Microsoft/Yahoo/Facebook- it's spam.  Or more generally, its unwanted, intrusive attention, regardless of vector.  For years, spam has been slowly eroding the value of the open web, and it's not going to stop any time soon. 

What we've wanted, for years, is a network that we can trust.  A network based on real identity.  
A network architecture that puts the user in control of her own information. 
A network that allows users to opt in or out of participation
if Google could provide that, I would be there- but they can't.  I can't trust Google. Most people out there don't trust Microsoft.  But Flickr and Delicious have never betrayed my trust, and neither has Facebook. 

If you need me, you can find me on the island. smile_regular

 btw, these opinions are mine, and are not endorsed by my employer.

May 16

I know what the Frozen Donkey Wheel Is.

If you've found this post, then you know what I'm talking about.

You came here looking for the Frozen Donkey Wheel.  You've spent hours searching.  You've been pouring over the web, following endless chains of links, chasing rabbits, loosing hours.  You've read a thousand theories, and none of them have satisfied your hunger.  You know that the answer is out there, just out of your reach, just behind the next link.

You've already found it.

You've been in it all along.

The Frozen Donkey Wheel, of course, is the Matrix. 

No, really, stop laughing. Like the Matrix, the Frozen Donkey Wheel is a system.  It's a control.  It's a tool.  Specifically, its a beacon. It's a crib.  It's a tarbaby.  The more you write, the more you read, the more you fight, the more it leads, the deeper you fall, the tighter the trap.  half a million sites across the web tie themselves to the Frozen Donkey Wheel.  And the frozen Donkey Wheel leads back to the original interviews.  Which lead back to websites that are owned by Big Media.  Which sells adds. And makes millions and millions of dollars.  That's all the Frozen Donkey Wheel is.

At TED, JJ Abrams delivers a talk about the mystery box.  The producers have talked, at length, about the importance of the Internet in relation to the show.  They've said that the show simply could not have existed without the Internet.  The Frozen Donkey Wheel is an ad-hoc, dynamic, invisible, real-world mystery box. 

JJ Abrams hasn't opened his mystery box yet.  And he's not going to any time soon.  the secret isn't out there. Your not going to figure it out.  It's not the answer you seek, its the question. 

Your not searching for the Frozen Donkey Wheel because you want to find it.

Your find it because you want to search.

May 07

With Authority comes Responsibility, or something...

 

So, here's the thing with the Internet. Thanks to search engines, all sorts of people find this blog- but when they get here, I doubt they find whatever is is that they were looking for.  Hopefully, this post will help redirect the poor, lost surfers* who stumble across my meager little blog in their search for the answer to life's questions.

  • I was surprised to see that this post about my mobile phone as the ultimate transition object was ranked pretty high on the major search engines for the term "transition object".  My posting is a somewhat nonsensical ramble about my personal attachment issues with my mobile phone- conversely, this is a real discussion about transition objects from a psychoanalytical perspective, if readers are so inclined.
  • I still get a bunch of folks who search the web for the Lost numbers (4 8 15 16 23 42), and somehow find my posts on the subject.  It has been a very, very long time since I've updated these posts, and quite honestly, much more interesting stuff is going on in the Lost-o-Verse- might i suggest checking out these awesome theories about how Lost is a video game, or about how the Lost is based on Time Loops?  Also, people seem to land here after searching for "Somewhere Beyond the Sea" in French. They find a post I wrote a few years ago, back in season 1, when we had absolutely no clue who or when or what was happening on the Island... actually, we still don't really know any of those things, but that's besides the point- the point is, just about every single person involved with that little plot point is dead now.  so... yah.
  • I'm quite happy to know that if you search the web for "how to find misplaced items", my post about finding lost things comes up first.  This whole web thing might just work out after all. smile_wink 

 

*do we really not have a better metaphor than surfing yet?  Because, like, the web is nothing like a wave... and a browser is nothing like a board...

Ok, that's pretty cool.

 

DSC_0387yes, yes, i understand, my keyboard is a mess.  You're missing the point.  Look closer.  The F4, F5, and F6 keys say "New", "Open", and "Close", respectively. I had no idea what their purpose was.   Until today.

Those keys manage my browser tabs.   Let me say that again: those keys manage my browser tabs.  that means one button access to opening new tabs, closing existing tabs, and entering Urls. 

My whole browsing world has been radically altered.

Its times like these that I realize just how much of a geek I am.

May 05

Where it's at.

two years ago, I wrote about the then discombobulated state of social networking.  Things have improved a bit since then:

  • Del.icio.us is still, well, Delicious. smile_wink  I still find Delicious to be the easiest way to participate in the read/write web- I've tagged close to 1500 items, used it to share stuff, used it to find stuff, used it to remember stuff... in many ways, its the current focal point of my online experience.
  • Sharing pictures online is still a mess.  Flickr is cool, but to put it simply, none of my friends use it.  Instead, my friends upload pictures to myspace, facebook, or older photo sites like kodak.  Low-res pictures get emailed around, and eventually disappear.  For a while, I tried to use Windows Live Messenger Shared Folders (thats alot to type..) to share pictures with my mom, but that didn't quite work out. I am still looking for the perfect way to share pictures, and very soon, videos.  Flickr may win by default...
  • 43 Things was a cool idea that fizzled.  not sure why.  That's all I have to say about that.

The new hotness (and by new, I of course mean old to everyone except me...), surprisingly, are a series of services that attack social networking from surprisingly different angles.

  • Twitter is anti-blogging. It's often referred to as micro-blogging, but I don't think that sums it up quite right- Twitter boils blogging down to its most pure form (answering the question: "what am I doing right now?"), and throws away everything that is horrible and annoying about blogging: trackbacks, linkbacks, comments, spam, tags, clouds, feeds, etc. Some might call it glorified IRC chat, some might call it a conversation bus, some might call it the future- all of them are right.
  • I think Facebook is probably best described as the first true social operating system.  See, in geek terms, an "operating system" is the software that provides developers with a layer of abstraction so that they can write applications without worrying about the details of the computer machinery that those apps will run on.  That's exactly what Facebook does, but for the social Internet.  Developers write applications (like, 25k+ at the time of this posting) that run on facebook, and they don't have to worry about all of the nitty gritty details of how to manage communities- Facebook takes care of all of that, and the apps just hum along.  its pretty damn cool- and, to top it off, the abstraction works both ways.  as a user, I don't have to pay attention to dozens of different web sites, accounts, friends lists, etc- i just do that once, in Facebook, and I get a "portal" experience for all the different apps that I'm interested in.  Cool.
    • the other thing that I find interesting about facebook is that it's essentially a walled garden- there is no notion of "public profiles" that just anyone can see.  It's built on the premise of adding technology infrastructure to existing, established social networks- not on the notion of building web-wide social networks out of the ether.
  • FriendFeed, quite possibly, is the coolest of the bunch.  FriendFeed takes on the task of aggregating all of the silly little crumbs that we leave across over 30 different social network properties (including every single one thats ever been mentioned on this blog) and coordinates them into a single, global, threaded discussion.  Here is a list of just about everything that chris hollander has contributed to the interwebs, going back to 2005.  gotta love that. :)

So.... what's the point of this blog post? after spending a few months in "Read Only mode", I'm ready to start contributing to the web again.  This is due, in part, to the culmination of social network stuff outlined above, but also due to the alignment of a bunch of awesome tools: Windows Live Writer, Live Gallery, Witty, Live Mesh, and my smartphone... but that's a whole other post. smile_teeth

October 06

Update.

My walk outside went well.
 
My inbox is still clean.
I have one less inbox than I used to.
My action items were completed, delegated, or turned into full scale projects.
I have followed up.  I have closed all previously open loops.
There are exciting opportunities ahead.  I may even be able to write about some of them.
All of my bills are still payed- and there are no new ones.
All of the documentation for my previous project was submitted and approved.
My new project requires extensive documentation.  The action items are defined.
 
My desk is a mess.
 
I have at least one shiny new toy, with more on the way.
I have found my favorite new quote: "Statistics are like bikinis. What they reveal is suggestive, but what they conceal is vital" - Aaron Levenstein.
March 13

clean slate.

My work inbox has zero items in it. 
My hotmail inbox has zero items in it.
I have zero unread items on bloglines.
I have no unread notes or open friend requests on myspace.
All of my bills are paid.
All of the documentation I needed to do for my current project is complete.
my desk is clear.
 
I have generated about 80 next action items.
 
 
I should really go take a nice walk outside while the sun is still shining.
February 27

winter is official over...

...at least for me.
 
Today marked my triumphant retun to a ten minute mile- someting I haven't been able to run  in about six months. My "winter hibernation" is officially over!
 
I haven't been to the gym in weeks- since my usual (bad influence) lunch buddy wasn't available, I decided to hit the gym during my lunch hour.  A minute or two into my treadmill warm-up, This is How I disapear (My Chemical Romance) came on, and I started mashing the "speed up" button.  the next song that my phone shuffled up for me was Everlong (Foo Fighters), which starts off relatively slow (which was gave me a second to catch my breath and grab a sip of water), but quickly ramps up and ends incredibly high (which led to more speed-up-button-mashing).   When I run treadmill, I usually cover the time/distance/heart rate thingee with my towel, so that I don't get caught up counting seconds- I pulled away my towel, and was shocked to see 1.04 miles in 9:43... and that I had been running over 8 miles/hour for the last two minutes!
 
It always suprises me how much easier it is for me to accomplish some things, in spite of paying absolutely no attention to what i'm doing...
February 23

The ultimate Transition Object.

The thing about spending your life working with computers, software, the web, and bits in general is that things have a way of staying relatively abstract.  The actual relationships between things become very well defined, very predictable, very understandable. 

Have you ever seen what happens the moment an executive realizes they left their blackberry on a plane?

In the last 2 years, i've left my cellphone home about three times.  Today is one of those days.  Its a disaster.  My hands shake, i'm constantly worried that i'm late for things- I obsessively check my email.  I constantly check my pockets. If I wanted to talk to someone right now, I'm fucked.  I don't know my best friends phone numbers.  I don't have a quarter for a pay phone. If I did, they wouldn't never take the time to accept an anonymous call from some weird pay phone number. I have nothing to stare at during boring meetings.  I have 101 keys beneath my fingers, but all I want is my 12 key pad and T9.  I don't even want to think about all the people who might choose today to call me.  Who know that when they call, their numbers and names and pictures and songs will blare out of my phone, and will assume that I'm not answering because I'm dead in a river somewhere. 

Its really not the phone.  the phone is the cheapest pile of plastic, silicon, LCD, and battery that could be cobbled together and resold for the highest possible price.  The thing is, my life is in that thing.  I carry everyone that I care about in my pocket.  My neurons fire through its circuitry, and spray a mess of life onto my caller. I hear voices.  I see faces.  I connect.  The cell phone is the ultimate Transition Object. 

A Transition object is a thing that you use as a substitute for a relationship.  Infants have pacifiers.  Catholics have crosses.  Butch held on to his fathers watch.  You probably still have your highschool sweetheart's t-shirt in a drawer somewhere.  My phone is my ulitimate transition object.  It proxies every relationship in my life.  Everything important to me ends up on my cell phone, somehow.  People, places, music, messages.  A transition object is a tool.  You can take out your transition object whenever you need to, and recieve a quick dose of comfort to ease your anxiety. 

I often wonder if modern cell phones were specifically tailor made to serve as handheld substitutes for disconnected relationships. I wonder if america is last to catch on, because it seems like mobiles are a much bigger deal everywhere else in the world.  I wonder how many people still have still hang on to lost relationships, lost loved ones, and lost places and times by clinging to digital bits stuffed into their pockets.  I wonder how many people only consider a friendship truly over once their contacts have been deleted from their respective phones.

I guess what I'm trying to say is... I really wish I didn't forget my phone today.

View more entries