Pages

Google+

Thursday, December 12, 2013

Moving To Medium

I'm giving Medium a shot. I like it because the team is moving very fast in improving it vs blogger.
I also want something more lightweight to work with and blogger is a bit heavy for me.

Check me out here.

Monday, September 30, 2013

5 Tips For Writing A Job Story

A job Story is a powerful way to facilitate team conversation and discovery when designing products. They are meant to cut right to the job to be done by eliminating distractions. The job story encourages the product's design process to focus on context, causality and motivations instead of assumptions, subjectiveness, personas and implementations.

As I write more job stories, I've been paying attention to characteristics which make some stories better than others. When a story is well done, it helps me and my team cut right to what needs to be discussed and puts us all on the same page - making the product design process dramatically better.

Here are 5 tips which will help when writing Job Stories:

  1. Refine A Situation By Adding Contextual Information
  2. Job Stories Come From Real People Not Personas
  3. Design Modular Job Stories Which Features (Solutions) Can Plug Into
  4. Add Forces To Motivations
  5. Job Stories Don't Have To Be From A Specific Point Of View

Thursday, September 26, 2013

"The User Experience Team of One" by Leah Buley & O'Reilly Media

This book's title is what caught my attention and after reading it.....I think the title is prefect. Through this book, Leah is giving UX designers, both aspiring and existing, techniques and the motivation to
bring focus to the role of a UX Designer, as well as strategies on how to convince an organization that the role of UX should exist.

Sunday, September 22, 2013

What Christensen and Thompson Got Wrong and Right

Ben Thompson, is a blogger who's recently piqued my interest and I've been following his tweets and blog. His last post, WHAT CLAYTON CHRISTENSEN GOT WRONG, is... well....wrong. I found this interesting because he's a very smart guy; however, this last post had some errors. This article will focus one of the two big ones - Christensen's philosophy does not really apply to the iPhone.

Friday, September 20, 2013

Replacing The User Story With The Job Story


*A newer & better version of this article can be found on medium.

I've written about the problem with user stories before. At the time, I found it better to just have the team talk over proposed changes to the product. This worked great when the team had gelled and the product is very mature; however, now I'm working with a new team and building a product from scratch. In this case, because our canvas is blank, we are having trouble getting on the same page when it comes to customer motivations, events and expectations. But today, things have turned around. I've come across a great way to use the jobs to be done philosophy to help define features.

I call them Job Stories.

Thursday, September 12, 2013

Zero To Product: How & Why I Discontinued My Product

This is the 7th (and final) part of a retrospective on vizipres: A product I began and worked on for a few months. 

Hit, Stand Or Double Down?


Over the course of the 6 previous articles I've written, I've described how I built a product from inception to release. In this last part, I'll talk about why I decided to discontinue my product ( vizipres ) and how I shut it down.

Wednesday, September 11, 2013

Zero To Product: How I Built My MVP

This is part 6 of a retrospective on vizipres: A product I began and worked on for a few months. 
part 1part 2part 3part 4, part 5, part 6, part 7

Stacking Up


It would take a little time before I had some results from my experiments. In the meantime, I would begin building my MVP. Before going onto how I built my MVP, I'll briefly talk a bit about the process of deciding what would go into it.

Monday, September 9, 2013

Zero To Product: Narrowing My Situational Segment With Analytics

This is part 5 of a retrospective on vizipres: A product I began and worked on for a few months. 

Testing The Real World


I'm moving along in my process of creating my next product, vizipres. I've got a problem space, I've defined some situational segments, I've talked with customers and done some modeling and I have a UI concept I like. Before creating an MVP,  I wanted to kick off another experiment so I could get more information about the situational segment I'm targeting: People who want to organize and share information in order to entertain, educate and influence others. I chose to start this experiment now because it will take some time to get results and in the meantime, I can build out the MVP.

Friday, September 6, 2013

Zero To Product: Prototyping and Spiking The UI

This is part 4 of a retrospective on vizipres: A product I began and worked on for a few months.
part 1part 2part 3, part 4, part 5 , part 6, part 7


I Need A UI


Armed with the models I've created after talking with possible customers, I wanted to start exploring a UI concept. How to develop a UI is a topic that is already discussed ad infinitum on the web, so I won't go into everything I was thinking about, instead I'll focus on my key decisions & motivations.

My key motivation is to identify what-I-know-I-don't-know and then design against that until I am satisfied that the conflict I was concerned about has been resolved. For example, I'm not going to worry about how ( or if ) I need to design a log in workflow, instead I'm most concerned about having a UI that customers ( and the consumers they make content for ) will understand intuitively and feel productive using it.

Thursday, September 5, 2013

Zero To Product: Customer Development, Modeling Timelines & Shared Problems

This is part 3 of a retrospective on vizipres: A product I began and worked on for a few months. 
part 1, part 2, part 3, part 4, part 5, part 6, part 7


Listen & Stay Focused


To recap, here's where I am:


Next, it was time to start talking with customers to learn and validate my hypotheses. Armed with that information, I would then build some models so I could start thinking about designing the UX. Even though by the time I started vizipres I had conducted countless customer interviews for other products, I did make some mistakes with my interviews for vizipres. The mistakes are generally more interesting, so I'll lead with that.

Wednesday, September 4, 2013

Zero To Product: Exploring A Situational Segment

This is part 2 of a retrospective on vizipres: A product I began and worked on for a few months.
part 1part 2, part 3, part 4, part 5, part 6, part 7


What Customers Are Doing Now


After choosing a problem space ( There's no great way to organize and share information ), I needed to do some research to see how people are dealing with the problem space now. Very rarely do people engage in a new behaviors, instead, they switch between behaviors. So, to know how and why someone would want to search for the solution I was proposing (vizipres), I needed to know what people were doing now, the problems they were facing and what would cause them to use my product to get the job done. Armed with this info, I could explore it and hypothesize a situational segment. After that, I could then begin to test my hypotheses through interviews.

Tuesday, September 3, 2013

Zero To Product: The Problem Space

This is part 1 of a retrospective on vizipres: A product I began and worked on for a few months. 
part 1, part 2, part 3, part 4, part 5, part 6, part 7


The Problem Space


When I meet people and they learn that I build products, I often will see their eyes brighten and then I prepare for the question which is sure to follow....
'So, what's your idea?' 

At this point I gently move the conversation to how I prefer to focus on what I call the problem space. I enjoy this part of the conversation because I love seeing people go from momentary confusion (no doubt thinking 'what's a problem space'?) to the excitement when they too understand the problem.

Thursday, August 29, 2013

A Product's Local and Maxima Extrema Threads

Your product is a web of threads. These threads connect features and together, shape your product. Just like the threads of a web, when you pull, push and even add threads, your product will react and change. One way to calculate these changes is to consider your product's local and global productivity extrema and how they are connected by threads.

Saturday, June 22, 2013

The One Cost Engineers Don't (and shouldn't) Consider...

...is opportunity cost.

Kris Gale recently wrote an attention grabbing article: The one cost engineers and product managers don't consider. The article is long, dips into a few different topics but can generally be summed up as:

Engineering needs to have substancial influence over business decisions. This is because engineers understand a system's overall costs [complexity] better than the business.

He's wrong.

Thursday, June 20, 2013

Situational Segmentation vs. Customer / Market Segmentation

My mom is about to buy an iPhone.

My friend Ramon has an iPhone.

My mom, in her 70's, is generally afraid of and avoids technology.

My friend Ramon, in his 20's, is a genius engineer and generally keeps to himself. 

Except for owning an iPhone, Ramon and my mom have nothing in common. If someone wanted to segment them by market or customer, these segments couldn't be more separate. Yet, if you thought of them in situational segments, you'd find these segments to be tangent - maybe even the same. By focusing on situations and not 'markets' or 'customers', you can more effectively execute marketing, build products and use that to launch powerful promotion.

Tuesday, June 18, 2013

Lean, Not Models, Is Your Hedge For Product Initiatives

Yesterday, I arrived early for an event which was hosted by a startup here in NYC. While waiting for things to get rolling, I noticed the startup was hiring. I glanced at the openings and one job description had this listed as a responsibility:

Create revenue and cost models for product initiatives. 

This made me think about what could be better than using models. After some thought it occurred to me: creating models can be a waste and one of the best ways to combat waste is with the Lean mindset.

Friday, June 14, 2013

The Customer's Timeline

We all look to hire a product or service when we have a job to be done. Thinking of it as 'hiring' is a powerful metaphor because few decisions are irrevocable. When we move from one solution to another, we are firing our current solution and in it's place, hiring another. You're thirsty but you're getting bored with water. Water will satisfy your thirst, but you've decided to fire that solution in favor of hiring juice. Water just doesn't get the job done right now.

What's happend here is the customer has moved from contentment with a current solution, through considering a change, to finally making a decision to either continue to hire the existing solution or to fire it and replace it with another.

This method of breaking down customer behaviour is of very much tied to the 'jobs to be done' philosophy. It's certainly tempting to think of the progression as linear; however, it's not.  Forces will pull customers towards and away a new product or behaviour. Depending on the strength, timing and circumstances of these forces, she will either continue to hire her existing solution or she will fire it and use another.

Current depictions of these forces and timelines depict them as linear, but I find it to be a long and winding road... a road which might take the customer back to their existing solution.



I drew up this picture to demonstrate how I see the customer timeline and how those forces pull us towards a new product...or might take us back to existing behavior.

The key is to effectively identify these events and to make the events (emotions) which push the customer towards a new product or behavior stronger than those pushing them towards an existing behaviour.... or to a competitor.

Wednesday, June 12, 2013

Marketing = Research. Promotion = Communication

Marketing, promotion & advertising are similar terms that are used often and because of this, they are often misused - generally one being used in place of another. It's important to know the difference because when we know how they are different, we can then effectively use them. An example of not knowing the difference can lead to problems, such as executing promotion when the marketing is incomplete.

Tuesday, June 4, 2013

Bunts vs Home Runs: Market vs Product Oriented

During a game, a baseball coach will survey the field: taking into consideration facts such as which bases are loaded, the current inning, the score and how good his hitters are. She'll use this to decided if it's time to go for a bunt or swing for a home run.

When working towards product / market fit, you generally start with either a product or a market. It's important to know the difference because one is a bunt and the other is a swing for a home run.

Thursday, April 18, 2013

The Synthesis of Thin & Fat Clients

My buddy Vic once used the phrase 'mega trends'. I like that that phrase. He used this term while giving me his take on CORS and how it will shift things back to the browser based Fat Client model. Firefox OS and ChomeOS are blurring the lines of thin and fat clients; yet, something feels missing in this war of thin vs. fat clients. What's the missing link before the next cycle happens? What will it look like? When it does happen, how would I think about Product differently?

The missing link is we're going to have an evolution, a synthesis, of thin and fat clients.

Wednesday, April 17, 2013

Trading Opportunity for Reduced Risk

Make no mistake about it, deliverables slow down your team, product and organization. Depending what the deliverable is and why it's done, this may or may not be a bad thing. Chances are, however, that your 'deliverables' are a product & organizational smell.

Tuesday, April 16, 2013

Your Product Has No Curator

It's tempting and romantic to think a team or organization will naturally coalesce around a product. It's also very dangerous to think it actually works. It's a product & organizational smell.

Product & Organizational Smells

'Code smells' is a familiar term to software engineers. It's very similar to the expression: 'where there's smoke, there's fire'. The difference between the two is that in the 'smoke' case, it's obvious something is wrong. Smells are different. Smells are subtle and generally unnoticed; often, they are even disguised as as 'best practices' which is why they can be so dangerous. Product and organizations have smells as well and they need to be identified.

Monday, March 25, 2013

Am I A Product Or Project Manager....?

There's so much chatter in the world about Project vs Product Management. It's a question which many people do and will continue to get mixed up.

Thursday, March 21, 2013

Predictive Analysis For Product


If you are involved in Product, Itamar Rosenn has a short talk you must listen to.  In his short (about 10 min) brief, he explains about how his data science team works with user data (osemn) and how these effect product direction. Data driven product is a topic that which I will write more about in coming weeks ( my post Focus On Relationships, Skip Personas is a good intro to why I advocate this approach); however, in the mean time, here are some notes from his talk.

Tuesday, March 12, 2013

Focus On Causality, Skip Personas

There's a fundamental problem with personas: they are made up and not real. This means they are full of errors and prejudice. Using personas will distract and lead your team to make wrong decisions.

Monday, March 11, 2013

Agile Isn't About Product Or Customers

I was recently sitting in on a group of people learning what it means to be product managers. The presenter spent a lot of time explaining Agile practices - from Stories to Epics.  The whole time I was thinking:

"..in all this time, I haven't heard one mention about the customer or the product. Why then, do these product managers need to spend so much time learning Agile."

Sunday, March 10, 2013

The Problem With User Stories and What's Better...

...is the team simply talking together.

The problem with user stories is that it discourages team communication. It might seem like it encourages team communication, but it really doesn't. They are just another way to avoid talking-things-out and to have disconnected team members push tasks to another.

Saturday, March 2, 2013

Stop Trying To Remake Email and The Todo List

I recently came across an article by Tom Tunguz where he rants a bit about the failure of current TODO lists. It reminded me of Watkins' article about Mailbox which in turn, reminded me of one of Paul Grahams posts about email in general.

Whenever I read someone commenting about the need to remake email or the todo list... one of those "You're doing it wrong" memes pops into my mind.

Email and TODO lists are perfect the way they are, if you're unhappy with them, it's because you're using it wrong.

Sunday, December 16, 2012

Rapid Prototyping The Stupid(?) Way

There's an article floating around called "Rapid prototyping the Google X way". It highlights Tom Chi of Google talking about how his team mocked up some prototypes of Google glass. It's bad advice and a terrible philosophy.

Monday, November 19, 2012

Measurement Bias Destroys Products

Flying cars have always been a staple of sci-fi. And why not, just think how fun it would be to drive one!

Suppose then, that flying cars are on the horizon. All the futurists, and you, agree that they are going to completely replace existing cars and car design. There've already been field tests and the media is gobbling up the latest info - especially when they are available to buy! Now, you run a business which creates & sells cars. How do you go about introducing a flying car that your existing and future customers will want?

Thursday, November 15, 2012

Drop Agile and Focus On Creating Value

About 2 years ago I joined a team to help grow a product. At the time, they were Agile....very Agile. Deep in my mind, however, I had a secret plan. Yes! I schemed and plotted like a proper evil Disney villain. My plan was to get this team to stop being Agile.


Thursday, September 20, 2012

Stay Young and Relevant, By Accepting Ignorance

When I think about children, I think of them as little, present bias hedonists - forever searching for pleasure and knowledge as if in a hurried, life themed scavenger hunt. They want to know everything. They want to do everything, regardless if it makes sense at all. You can also tell them almost anything and they’ll almost always believe you without judgement or reservation.


It’s great!

Saturday, February 11, 2012

Why I Discourage Roadmaps

Invoking the image of the greatest orators of all time, every month I would gather the stakeholders together and eloquently guide everyone through the product roadmap: the vision of our product and how we would execute it.

It was glorious....

...wait...what am I talking about??!! Our monthly roadmap discussions were a NIGHTMARE. All that tension, haggling, posturing, politics… So about 7 months ago, I axed roadmapping. Looking back, it was such a waste of
time money. Whenever we'd get together, we'd spend about an hour or two to 'update' it. The most absurd part would be discussing what we'd be doing in a year.

Tuesday, January 17, 2012

Velocity Has Left The Building

I just came across an article about Agile Velocity: how to use it and why it's important. In some ways the author and I are similar...we both have experience as software developers, worked in management positions and we even have the same name, 'Alan' (I'm liking this guy already!). Well, turns out the guy is an 'Agile Coach' and is preaching about how useful velocity is (maybe we're not similar after all).

Thursday, January 12, 2012

Only When Simple Fails

"I'm updating the library [server] Ivy pulls from with new versions. It's gonna take a lot of time and it's a pain in the butt to deal with. Anyone have suggestions on what libraries to add or any comments about the repository?"

I certainly did have a suggestion: shut down the server and stop using Ivy.

Monday, January 2, 2012

Flashtent Sessions


Everything Flash has begun uploading pieces of my talk to their website. Right now only the first two segments are available, when more are available I'll post an update about it.


See the videos on Everything Flash here.


Thursday, December 22, 2011

My FATC Talk Is Now Online

My talk from FATC has been posted by The AT&T Tech Channel. I talk about using FDT & Flash to dev for multiple platforms. Here I'm using an inheritance approach to abstract differences. It's good to know even though I still prefer a composite approach. I like using a library of platform agnostic business logic and then have each platform target pull from that.


 


Wednesday, December 21, 2011

Why Do You Actually Track Employee Hours?

I had an employer who required everyone at the company fill in time sheets. These were supposed to be filled in as work was done on projects and then submitted for 'approval' at the end of the week. Approval is used abstractly because I'm not really sure what happened as there was never any feedback on it…except for one time when the accountant came up to me…

Sunday, December 18, 2011

Do We Really Need A QA Phase Anymore?

Over the last year, as I learned more about how Google, Facebook and Flickr deploy software, I noticed little to no mention of QA. In fact often the developers themselves were pushing their commits live. Facebook does have a roll out gatekeeper, but from what I understand he's reviewing the commit and focusing on how damaging it could be in the case the developer made a mistake.

What's going on here.....

Monday, June 7, 2010

AS2 Detecting When Mouse Leaves the Stage

A handy script when working with Actionscript 2 code. Because there is no Actionscript 3 Event.MOUSE_LEAVE equivalent in AS2. the best thing to do is to write a custom script for mouse detection on stage. I don't know who authored this, but I'd like to record it so it doesn't get lost on the internet.

Wednesday, February 10, 2010

Strategies For Global Data ( hey it happens... )

[ disclaimer: I see this technique as 'damage control' and not a best (or even good) practice. Yes, globals are to be avoided ]

Twitter is a wallflower's dream... anyone can eavesdrop and quietly judge from afar....
Last night Jesse Freeman , Ralph Hauwert and Robert Penner had a little discussion via Twitter about statics & globals. It starts here. Robert encapsulates the danger of globals with this:
Statics are evil when they puncture encapsulation and hide dependencies that impale anyone who tries to use them somewhere new.

Monday, January 18, 2010

Liskov's Behavioral Sub-Typing In Action... or How To Misuse Inheritance

 

Time To Eat My Own Dog Food


A few days ago, I posted an implementation of a Semaphore with AS3. Ever since then, something about the code just didn't sit right with me. I've wanted to research and write about the Liskov substitution principle (LSP) for a while now, and I decided that I would demonstrate it with my Semaphore classes and examples. When I first designed the classes, I thought I was doing a good job, now....not so much. In fact, I think I made errors in my application architecture and overall approach.

Wednesday, January 13, 2010

Synchronization Techniques for Flash & AS3: Part I - The Semaphore

[Edit] The source code for this has been updated and can be seen and downloaded on this follow up post.
Flash does not support multihreading, and that's probably good thing since managing threads can be very, very difficult; however, Flash can have a kind of concurrency when it comes to user interface, multi-user applications (e.g. games) and synchronizing animations. With user interfaces, a developer may wish to disable parts or all of the UI while asynchronous events, such as loading assets and managing various animations are executing. Within a multi-user environment, imagine a game where players share a limited amount of resources - checking things in and out as they become available ( see 'Dining Philosophers Problem').  Another scenario might be the need to manage many, many animations.

When it comes to concurrency there are various techniques that come to mind - The Semaphore , Java's ReentrantLock and CountDownLatch, the Actor model, and Scala's Mailbox. This first post will focus on the semaphore.


Tuesday, December 8, 2009

Offical FDT Training

I have just completed a training series for Powerflasher for FDT.  FDT is a great product and I am very happy to have been asked to write and produce this training for them.

The videos go over what I have learned after many, many hours of working with Eclipse and FDT.

Friday, November 27, 2009

Improving Flash's Interactive Timeline Animations

Something that has become (somewhat) of a lost art these days is the animated button. Designers used to go crazy with engrossing roll overs and roll outs - sometimes to the detriment of usability. Now-a-days, I don't see many interesting buttons.

Perhaps it's due to how button animations can be  decently executed with Javascript and CSS;  people are getting used to those and many designers are simplifying Flash buttons to mimic Javascript and CSS buttons. Another theory might be do to how more of Flash work has shifted towards developers handling  animations.  They prefer to just code the animation and in doing so can do some great things, but some things still can only done by a hand made animation.

Then....there is another theory of mine; a more subtle detail that everyone thinks, but doesn't say out loud...

Hand animated buttons are jumpy!


My Latest Implementaion of Skipping AS3 Events

In a previous post, I talked about how I use method closures to avoid AS3 events. Since then I have been using the technique extensively and I still don't use custom events - at all. The previous example was OK, but this one is better. This is also a class I use in most my projects.

Data Structures with AS3 - The Linked List

When programming, there are many things I avoid or  just squash out altogether:

  • If I see someone has written an event, I try to get rid of it - this goes 2x for custom events.

  • If I'm working on someone's production code and I see comments, I refactor and delete them.

  • I rarely use conditionals.


Thursday, September 17, 2009

AS3 Undo / Redo With Display Objects

There are a few examples of undo & redo floating around, but I wanted to give it a shot myself. I didn't look at anyone else's solution and I'm glad I didn't, because I came up with a very different and clean solution.

Sunday, September 13, 2009

Optimizing Flash Animations Via Lookup Tables

This is cool.


Computer Science guys know plenty of coding Kung Fu; for us Flashers,  we have to either need some CS friends hangin' around, or discover it ourselves. This time I got lucky and had both.


Saturday, August 22, 2009

Skipping Flash's Events for Cleaner Code

For some time now, I've been using a technique that allows me to skip Actionscript's events and it's really been helpful in writing clean code. Recently, prominent community developers such as Andre Michelle, Joa Ebert, Robert Penner, and Nicolas Cannasse have made solid critiques of Actionscript and generally AS3's event model makes it onto their list of grievances. Andre and Joa have even created UIEvent to help deal with event listeners.

Like many other Flash developers, when I learned about creating custom events or dispatching Flash's built-in events I started doing it a lot. But..... it can really be a pain. I find that frequently dispatching and cleaning up events really dirties my code.  It also makes it harder to read.  Also, event dispatchers can be so far removed from methods who are dependent on them, that a coder will often have to search around to find the callback. Because of this I avoid Flash events as much as possible, and here's how I do it.

[Edit] Callbacks are also substantially faster than events: Grant Skinner's recent optimization talk

Wednesday, August 19, 2009

 FDT and ANT | A User’s Guide – Part II

In part one, I showed how to get started with FDT and Ant (live error checking, code hinting, dealing with the JRE error...). Part two is the start of incorporating Ant into your work-flow. I would classify these videos as beginner-ish, and starting to get into intermediate Ant.

Sunday, August 9, 2009

FDT and ANT | A User's Guide - Part I

Some time ago I began integrating FDT and ANT.  Not long after, my friends complained about not seeing me, my desk became littered with espresso cans, and I started having lots, and lots of Chinese take out.

Mixing Ant and FDT is simply addictive - there's just so much one can do.  There are also several pitfalls that, if not prepared, can really confuse you.

Thus, I began to write down the process to aid others and to remind myself in case I forgot. Not long into this process I learned that there is a lot to cover.  Instead of cramming it all into one post, I have decided to split it up among several posts.

Part one contains two videos about getting started with Ant. I'm getting back into recording videos so forgive me if I'm a little stiff.  I'm getting more comfortable with recording again and I've even started doing a little bit of editing.  Already between the first and second video, I can tell I'm getting better.

In total the series is going to cover work-flow tricks, working with live error checking, code hinting, templates (creating and using), how to extend Ant by adding Java libraries,  FTP, SSH, ASdoc, SVN, debugging tricks, creating SWFObject swf -embeded HTML files, multi swf compilation and more.

FDT - Customize Your Workflow

We all come across things that end up saving us lots of time when used over and over again. If you use FDT, there are countless options available to enhance a development work-flow. Here are some of mine:

[NOTE: This is a combination of an old blog post I did (before my database blew up) and some new stuff thrown in]

Wednesday, July 29, 2009

Dependancy Injection - Minus the Hype

Within the Flash community there has been a fair amount of talk about Dependency Injection. A few ( generally Flex ) frameworks have become popular - notably Robotlegs, Mate and Swiz. It's easy to find high level discussion about them, but these generally involve developers who are already familiar with DI ( Dependency Injection )  and IoC ( Inversion of Control ).

Fowler's article is often cited when references are made to DI.  Admittedly, it's a lot to take in and consider, especially when the article gets into containers.  All this can be confusing to anyone who's not a seasoned coder or just wants a simple example and not all that prose.

Tuesday, July 28, 2009

Secrets of Object Orientated Encapsulation

Something Between Just You and Me


There's a little secret I'd like to share... I think many object-oriented programmers use encapsulation incorrectly. For years, even I was guilty.


Yes, it's true.


Sunday, June 21, 2009

Party Pooper

My host went through some changes and it killed my blog. I have stuff backed up, but there is some weirdness going on. Hopefully I'll be black in action soon.