• Making Movies. Sort of.

    If you are a programmer, you might have heard that you should have a hobby that is not programming. I’ve always said mine was playing guitar. But if I’m honest, I don’t play that much anymore. I still play around here and there, but not nothing serious.

    I’ve been watching Casey Neistat videos recently. I’ve really fell in love with his stuff. So much so that I think I’ve been inspired to try some sort of film making. Not full blown movies with actors and scripts, but short videos of some sort. It seems like it would be fun.

    A few ideas.

    • A documentary of the making of a web app from start to finish. A behind the scenes look at what it takes to make an app.

    • Some sort of a Day in the Life of a Developer series.

    I know nothing about film making. I’ve done a small bit of reading. I tried to record some footage and then edit it yesterday. I learned that it’s really hard. Like really, really hard.

    I’m currently playing with stories on Snapchat and Instagram. This gives me the freedom to play around with scenes and different things with the overhead of editing and such, while I learn some concepts. I suck pretty bad right now, but that’s the fun part. I get be a newb for a while.

    You should say hi over there.

    Instagram: ScottRadcliffAgain

    Snapchat: ScottRadcliff

    Read Making Movies. Sort of. →
  • Retreat

    Everything is messed up today. One of those days that is just messed up from the time you wake up. Bad news in text messages, a bad haircut, even my latte is bad.

    Sitting here in a coffee shop. I just needed some time. Time away from people, from the daily routine, just everything.

    This reminds me of people that take personal retreats. They just go off by themselves and just reflect. Reflect on where they want to be. Maybe where they came from. And definitely how they got to where they are now. Maybe they think about the things in their life that they don’t like. Things that don’t bring any happiness. By the way, you should shed all of those things.

    I wonder how a person can do this without the luxury of having enough free time for that. I know I can’t get that much free time. Maybe that’s part of the problem.

    Maybe retreat doesn’t mean what I think it means?

    I guess I took the term retreat as a term to describe this type of solo time, but if you look at the definition, it has some interesting variants.

    Retreat:

    (of an army) withdraw from enemy forces as a result of their superior power or after a defeat: the French retreated in disarray.
    • move back or withdraw: it becomes so hot that the lizards retreat into the shade | a series of trenches which filled with water when the ice retreated | (as adj. retreating) : the sound of retreating footsteps.
    • withdraw to a quiet or secluded place: after the funeral he retreated to the shore.
    • change one’s decisions, plans, or attitude, as a result of criticism from others: his proposals were clearly unreasonable and he was soon forced to retreat.
    • (of shares of stock) decline in value: [ with complement ] : shares retreated 32 points to 653 points.
    • [ with obj. ] Chess move (a piece) back from a forward or threatened position on the board.

    I really like two of these. The first one. withdraw from enemy forces as a result of their superior power or after a defeat…. Often a retreat feels like regrouping after defeat. I doubt anyone would call it that. But that’s what it is. You’re defeated and need to regroup. The second one, and a more descriptive version of what I think a retreat is, says change one’s decisions, plans, or attitude… That’s really what it is. Actually. Maybe we can combine the two. withdraw from enemy forces as a result of their superior power or after a defeat, and plan to change one’s decisions, plans, or attitude for success I think I like that. I retreat because I am defeated and need to plan a new path for victory.

    If I now look at a retreat as a withdraw from enemy forces as a result of their superior power or after a defeat, and plan to change one’s decisions, plans, or attitude for success, I can manage that. I can manage a couple of hours a week to reflect and plan. It’s not always defeat, but there is always reason to plan and change direction.

    Read Retreat →
  • Unintended Consequences of Group Chat

    I’ve started to notice a side-effect of nearly instant communication within teams. This could be applied to any service. The results will be the same. But for this example, Slack is pretty much the default.

    The Era of Email

    The problem stems from how email works and how we have been trained to think about communication.

    When I send an email to a colleague, I can’t see them online. I have no expectation of when they might read and respond. Typically, I expect 24 hours reasonable. When I send a message via email, I am okay with a response the following day.

    Slack sets a different expectation. Especially direct messages. To me, a direct message communicates importance. When I receive a direct message from someone, I think this is important. It’s like setting a priority on an email. Thankfully no one does that anymore. It’s awful.

    Email doesn’t really communicate importance. Well, besides the priority method. Not that we haven’t tried. Stars, priority inbox, filters, etc.. These are all methods to try and extract things that are important. I think they all fail. Turns out chat fails also.

    Enter Group Chat

    Here’s the kicker. In Slack, we can see who’s online. More importantly, we can see who’s not online. This is where it gets tricky. If I am typing a message to someone, and that message is important to me, and I see them come online as I am typing it, still online as I send it, and then they go offline without responding to my message. It leaves me to think that they chose to ignore me. That whatever I had to say is not important to them. Even though it was important enough that I felt I needed to send it to them directly.

    Now that I know that they saw my message and chose to ignore it. Do I say why did you ignore my message? or maybe I say Did you see my message earlier?, knowing that I saw them come online and leave without acknowledgement. Maybe I just continue and say nothing knowing that I saw them ignore it. They don’t know I saw them ignore it, so it seems like a non-issue to them. A no harm no foul type of thing. This is what I do. Just let it go. But it does bother me.

    If this scenario is email. The same person can ignore my email. I have no idea they chose to ignore it and I have less of an expectation of a response.

    Maybe realtime communication is just as bad as obsessively checking our phones for updates. Checking in all the time to see if someone responded to me, to see if they are online yet, or just to see if I have missed something is unhealthy.

    Maybe this type of chat does more harm that good? Maybe I don’t use it correctly? Maybe 37Signals is right about group chat, it really is an all-day meeting with random participants and no agenda.

    And finally, maybe email still has it’s place for communication that is important and has no need to be in chat.

    Read Unintended Consequences of Group Chat →
  • Fun with Metaprogramming in Ruby

    I’ve been programming in Ruby for awhile. Somewhere around 5-6 years. And I don’t really play with the metaprogramming stuff much. I know it’s there, and I know it’s powerful, but I don’t often see a need in my day to day programming.

    I’ve been playing around with a toy app in almost pure Ruby. I say almost, because I am using Sinatra and some libraries, but no Rails or other frameworks. Sinatra has this weird instance variable thing going on where if you are sending the user back to the form after a validation failure, you don’t always get the object back, which leave the form without the previously entered values. I’m sure I’m calling something wrong. This is part of the problem with working in frameworks too much. You lose your edge on how to wire things up with just a programming language.

    So I thought it would be cool to build a couple of libraries to do some regular things that I could reuse.

    Enter FormValues. A simple class that can take a hash of values from a form and generates methods to call these values as needed. I figure this way I don’t need to keep track of objects, I can just call the methods as needed. Seems like a good place for cookies or sessions in pure Ruby. The CGI class has both of these.

    I wanted to show how I created a getter method for each key/value pair from the hash I pass in. The Hash will go away. It will probably become a cookie. I’m still hacking on this

    def initialize(params)
      @data = Hash.new
      params.each do |key,value|
        @data["#{key}"] = value
        define_singleton_method "#{key}" do
          @data["#{key}"]
        end
      end
    end
    

    So, if I pass a hash as params like this {first_name: "Scott", last_name: "Radcliff"}. I would get the methods #first_name and #last_name that would return Scott and Radcliff.

    Metaprogram all the things.

    Read Fun with Metaprogramming in Ruby →
  • Thinking is Underrated

    I try to start every programming task with some thought.

    I don’t mean thought as in hacking things together to see what works.

    I mean some thought as in thinking about possible solutions and refusing the accept the first one.

    I think this is a lost art. As programmers, we spend more time accepting solutions then we do thinking through solutions to make sure we are solving the right problem in the best possible way.

    Spending a few minutes scribbling down some notes in a notebook might be the best thing you can do to develop better solutions to problems.

    Read Thinking is Underrated →
  • Startups and The Liquidation Event

    Steve Blank has the best article on startups and investing I have ever seen. It all boils down to a liquidation event. You are taking investment money to dump off your company. Well, in most cases you are. Sometimes an IPO is a target, but more often than not you are looking for a payday. Let me rephrase that. Your investors are looking for a payday.

    That doesn’t mean investment is bad. Just that any founder of a startup should know what they are getting into.

    In my personal opinion, investment is okay, given the company is profitable and there is plan to pay back the investors.

    Know what you are getting into.

    Go read What Founders Need to Know: You Were Funded for a Liquidity Event – Start Looking

    Read Startups and The Liquidation Event →
  • Hacking is All About Social Engineering

    In college, I took a lot of electives that had to do with networking and other topics that didn’t have a lot to do with programming. In one class I was given the option to read Takedown: The Pursuit and Capture of Kevin Mitnick by the Man Who Did It. A book about the most prolific hacker in history. I quickly realized that hacking has less to do with computers and more to do with humans. Through Social Engineering, a person can you your own tendencies and the faults of humans to gain access to what they need to get to your stuff.

    If you haven’t read about Kevin Mitnick, and are interested in how people get hacked, read that book. If you want a quick look into how Social Engineering works, watch this video.

    Read Hacking is All About Social Engineering →
  • Lending a Helping Hand

    Have you ever thought about why it’s called lending a helping hand?

    Because it’s temporary.

    You are extended something that someone gave you. Good will. It’s a loan. A loan that should be paid back in the form of your good will towards someone else, the first chance that presents itself.

    Read Lending a Helping Hand →
  • Living Styleguides

    Working on a new app and decided to try a styleguide that lives and breathes through the CSS. I’m happy with how it’s turning out.

    "Styleguide for an web application"

    Read Living Styleguides →
  • The Blueprint

    I listen to quite a few podcasts. Probably more than I should. Honestly, I delete most of the episodes. So I guess I could say I subscribe to a bunch of podcasts. One of those, Software Engineering Daily, recently had Seth Godin on as a guest.

    I am a Godin fan. He’s not really a developer, but has some great things to say about business and doing your best work.

    You should listen to the episode, it’s pretty great. Definitely some stuff that carries over to creating software.

    One thing stuck out to me. Something I have been thinking about for a while. Seth was talking about how one of his companies needed an application built. So they created a spec, with design comps and details (I assume a functional document), and took those to an agency in New York.

    They asked the agency how long it would take to build the app. The agency replied ‘three months’. Seth replied ‘Good. See you in three months’.

    In today’s agile world, this seems crazy. But glorious.

    Think about that for a minute. No scope creep. No changes unless a formal request is made.

    But we know this doesn’t usually work. Seth Godin is the ideal client working with a top level agency in New York City. Defining scope before hand and forcing changes to be a formal request simply doesn’t work for many clients.

    But maybe it could.

    Something along the lines of a blueprint.

    This is how engineers work. They design a structure, hand over a blueprint, and that’s what gets built. If there is a design flaw, it’s on the engineer to fix it. As a former construction worker, I totally get this.

    I like the idea of a blueprint. A well thought out, defined requirements documents with a visual representation of what is being built.

    I imagine a blueprint for a software project very similar to that of a construction project.

    Read The Blueprint →

subscribe via RSS