Sometimes Words Do Mean Something

Sent an email yesterday to a colleague asking for a link to something his team created on the website. A couple of people +1 the ask. The reply was that he was going to put a link to the item I asked for and others (I didn’t) on a wiki. He included a document that has a table with the format the wiki will take, but doesn’t have the data I was asking for.

After an email thread of 6 or more responses – I still don’t have the link.

Would You Like Frosting on That?

When delivering a project – I find the final weeks the most stressful. Everything that comes up during the final stretch has way more gravitas than had it happened earlier; making them that much harder to overcome. So much has been written about this over time (e.g. Mythical Man Month, etc.) that I won’t go into here. Suffice to say that many times there is just a finite list of things that can be done. Sometimes it’s just a roll-forward – stay the course strategy and just launch when you can.

Can you tell this is where I am at in the current delivery cycle? The weeks before the Thanksgiving Holiday (here in the US) are the busiest for us in the retail world. As a consumer I assume you are aware of the reason why. What you may not aware of is that we have a practice of locking down much of the website for weeks to ensure stability. That is my current deadline – make it before we freeze.

Considering the resource triangle where time and cost (resources) are fixed then clearly my only alternative is to cut scope. I have been asked a couple of times now what we can cut and still make the launch. My answer – if you want something that people actually get a benefit from – not much. I am not trying to deliver a sever layer cake here where it’s still tasty with only 6 layers. Unfortunately, this is a 1 layer cake and one without frosting at that.

It does beg the question, is there a way we could have broken this thing down into more parts – each adding value but able to stand on their own. Off the top of my head I would say no – but it is something that I will take up during the retrospective phase of this project.

So we keep moving forward – clearing obstacles, escalating, communicating. A little luck wouldn’t hurt either.

Do I Keep This Blog?

I have had to spend a bunch of time maintaining this blog over the last month and it has me thinking if blogging – on an actual blog – is still a thing. With tumblr, Facebook (list other social media tech here) do we still need blogs, RSS and that stack of tools (including WordPress – the app I am writing this with). For that matter, do I even need a personal domain name (e.g. <my name>.com, .org, etc.)?

To disambiguate this a little more, I am not questioning the value of blogs in general. I believe that as a way to publish things for those that are semi/professional bloggers – blogging still has a role. Personally, I read fewer blogs; but I feel that the reason for this is more a factor of the changes in the type of information I consume. My personal life has undergone a great deal of change and my career continues to evolve where I don’t find the need/time to subscribe to blogs. What I am contemplating here is do I need to the custom website, blog, infrastructure that is needed to have my own blog? As just some person in the world who has some things to say and assumes that no one is actually interested/reading what I write. Which means that much of what I write is for myself rather than anyone else. This is the context of my contemplation.

For a very long time I have been racing other people for logins/identifiers. My default for this is “ckoppang” – a left over from long ago network logins. Turns out that I have 2 brothers whose first name also starts with a “C” and there is at least one other person who likes to use ckoppang. So of course in the early days of the Internet I went out and reserved my person domain name; which I have renewed year after year at not an insignificant cost for something which only exists in electrons.

So why do I keep this? Especially since I seem to get hot/cold on blogging. Why spend the money or invest the mind space to something that has questionable value? To answer this I feel like it’s worth trying to explore why I blog. Is it just a good intention with low value it ends up getting pushed to the end of my priority queue? Case in point, as I have been trying to type this entry it has taken me over a day due to interruptions and “real” work. But I do find value in thinking about things “out loud” and being able to see my thoughts. Granted they don’t come out of my head in a very coherent way – so the act of organizing/processing thoughts can be helpful. Stated another way – I am arguing or convincing myself sometimes. This is actually a practice I do a lot; just no always in a public way. I am a fairly self-reflective person looking for ways to improve the way I “move through the world” and I tend to do quite a bit of writing around this. So this feels like an extension of that. Looking at the frequency of writing I have been doing on that front – it too has suffered recently with life’s priorities.

So where does this leave me? Or stated another way – I feel like I need to wrap this thing up. At least before the next interruption.

I am going to keep this going since I do like writing – as much as my 11 grade English teacher may be cringing right now (she really didn’t like me – but that’s whole other story). Being someone with the knowledge and means I and going to work on utilizing technology (e.g. WordPress on my iPad) to make use of those moments I do have where I can quickly put something out there. Hey they don’t always have to be as long as this one. Even something with twitter length is valid. So if writing is important, then why continue to do it here? Is there some reason that my own standalone blog is somehow better? Am I actually building something larger – like a personal brand?

As I sat here and contemplated these questions (and more) I reached a place where I was just like “maybe I just like having this quiet little island to go and play on”. But those are all good questions to consider if you are thinking about this “problem”. I feel a little like I am just abandoning this whole discussion while at the same time admitting that it is possible to just overthink things.

What do you call the people you write software for?

For most of my career I have referred to the people who I write software for “users”.  It just made sense, they are using the software so they are users?

Interestingly enough at Amazon we call them customers.  Not to say that the word user has been stricken entirely from the vocabulary, but it makes me wonder if it should.  Here is my thinking.  Something different happens in my mind when I think of the people I am writing software for when I use the word customer.  It is hard to describe…but maybe this story will help you understand what I mean…

When I worked at Microsoft I worked in the consulting division and we would help people make sense of the variety of ways to write code on the Windows platform.  Often times some of my customers (aka clients) would have come up with a unique way to solve a problem using some piece of Microsoft software.  When I would relate this back to the product team (another aspect of my job).  More times than not the question I would get back would be “why would they do that – that is not what we intended”.  We used to refer to this as the RDZ – reality distortion zone; which was the invisible field that hung over Redmond that prevented the product teams from understanding how people really used Microsoft product.

When I think about how a customer centric Microsoft would have been different – then the response back to me would have been something like “that is really cool, we never thought of that – how can we make it better”.

Try it.  It may just change the way you think about things.

Possibly the Most Useless Code Post

rejectNeed a quick and dirty way to take an element normal XML file and turn it into a CSV file.  I know I could create something from scratch, but was hoping for a jump start on this since I am in a big hurry.

So I find this post.

This person gives me the code to take XML and turn it into CSV for his/her XML only!  Geez how useless is that?

I guess it just bugs me because I have been doing lots of interview code reviews and if I saw this I would laugh and hit the DO NOT HIRE button for this person.  Which has actually happened.  Sigh.

 

More Quotes

This blog was started/named based on some funny quotes from people I know.

Here are some more that we put on the board of honor…

  • “Please adjust your tone”
  • “Why not be paranoid”
  • “Maybe you should try unit testing”
  • “Please fix your software”
  • “Please fix your process”
  • “If all our assumptions are good, then we are good”
  • “It works on my machine”
  • “It’s a gift from the Security Team”

 

If you smelt…you dealt it

nofartNo this entry is NOT about flatulence.  Ironically, there is a Wikipedia page that is – here.  Instead my intent is to opine on the practice at my employer about developers supporting their own code – which means that if you broke something then you are going to be the one to fix it.

When I was managing the production support team at my previous employer; the team’s responsibility was to focus on the operation of key systems and ensure that they were available and meeting SLAs.  This team did a good job at keeping things moving – if something broke they got to be pretty adept at fixing issues.  If you look at this as an outcome with a fixed cost (which is how we structured it) then it can look pretty attractive.  But in the end the people on the team had many concerns/issues/complaints/etc about the challenges they faced in sustaining this model.  In the end – I feel that this model takes too short of a view of life cycle of a system and therefore is flawed.

amazonlogoFirst it is worth noting that Amazon has a list of core leadership principles that they live and breath.  I have done a lot of chin rubbing around these as of late and the more that I play with them the more I like them.  When considering this post there were a few in particular that I felt applied…”Ownership”, “Invent and Simplify” and “Insist on the Highest Standards”.  If you read the short descriptions for each of these they are all pointing to how separating support from development is flawed.

If developers are not responsible for keeping their own code running or seeing how it behaves in production then how they doing any of these things?  Sure it is possible that you get outcomes in this direction; but it is not likely – especially without the ownership.

A related topic to this is how we work this into our Agile methodology to ensure that we still get things done on time.

Firehose Treatment – Open Wide

I needed to take a short bit of time off from blogging while I worked out the details of interviewing, negotiating and relocating (at least me) to Seattle from Connecticut.  I am now into my second week of work at the largest online retailer and the fire hose is blasting full force.

Being this big means that someone has already done a lot of bernsteinbookthinking about how to make something massively scalable.  Back in “the day” I remember pouring over the Principles of Transaction Programming book by Bernstein.  I knew this stuff inside and out and it still serves me.

 

Given the massive need for scalability I have had to dust of some new/old theories. ACID is out BASE is in.  Sure I have read about a bunch of these over the last few years, but it is different being at a place that is actually doing it.

Here is a list of things blowing my mind today…

  1. Eventual Consistency – It will get there when it gets there.
  2. Anti Entropy – Anything with the word entropy in it I find confusing.  So what is Anti-Entropy? :-0
  3. AWS – I had to pay for this before, now everything we deploy is already running on this.  Note to self; shutdown my services and save a couple bucks.

Nasty Security Issue

Yesterday a colleague asked me to help with a security issue he was having.  He is someone who I consider to be a good developer; but does not have a good understanding of Windows security beyond the basics…Right click on folder -> Properties -> Security.

The problem manifested as this developer (only) loosing access  to a NAS share – “it used to work”.

First I confirmed that he was in the correct Active Directory (AD) groups and those groups had sufficient permissions to the folders in question.  Check.  Conclusion – it should work.

Then I had the developer write a quick web application to make sure he was passing his full credential to web server.  Check.  Conclusion – not something that is globally impacting authentication/authorization.  Seems to be something in the “conversation” between this workstation and the file server.

Hmmm.  Next thing was to try this from another workstation.  He remoted into a old Windows XP workstation.  It worked!!  Conclusion – something going on with his workstation.

Now I know that on my laptop, when I log into Windows but I am not connected to the network – I am using a cached credential on my workstation.  I also know that part of that credential is the groups that I am a member of.  So it seems that what this particular workstation is passing to the file server does not have the right groups since the server is denying the request.  Seems like there is something dirty/broken in the cache.

I typed “windows delete cached credential” into my favorite search engine and got this post.  We followed the steps that Ashok spells out…

  1. From Control Panel\All Control Panel Items\User Accounts click the username To the left you will see Manage your credentials.  From that select the share name and remove.
  2. Delete using net use Start > Run > cmd > net use * /DELETE

…and shazam…it worked.

There is a first for everything – this was definitely a first.

Now onto a nasty SharePoint issue that I have been putting off.   Hey at least I may end up with another blog post.

Interviewing

I was recently helping some colleagues think about interviewing techniques. I like to see work product from people. So a while back I developed an assessment that we use. It has been a big help in evaluating candidates.

When I worked at Microsoft we took our interviewing very seriously. Certainly there are lots of stories (myths?) out there about the process. Some truer than others. I have a master list of good questions and suggestions I still use from that time. It is helpful to review periodically to just get into the right mindset.

Along these lines…I was recently turned onto InterviewZen. I like the idea of being able to watch a recording of someone creating a work product. We have a classic computer science sort of problem (weighted graph) that I use, but I don’t get to see the person working thru their thinking. I am going to try and adapt mine to this format.