Reframing Ideas

One of the greatest techniques for advancing thought has been an ability to reframe ideas. When you can change the problem, or sculpt a new solution with a different understanding, you have an advantage.  And there are more than just a few ways to reframe ideas, from inversion to analogy.

Inversion
Reframing by Inversion is one of my personal favorites because it’s so simple. If you can look at the negatives you can look at the positives; if you can start with a problem, what about starting with an answer. Inversion allows you to quickly expand your perspectives in ways that can show openings. Pivoting the thought process allows some drastic changes. Or it can ease stresses when used for comparative value.

Scope Selection
Reframing by Scope Selection is taking the idea and expanding it to some extreme or shrinking it to others. Think about how it could be applied if some constraint was raised, and what avenues that that may open. Or you can think about how simple you can make something, that still does what you want.

This kind of reframing can be used to increase productivity or target forward thought. If you can simplify the implementation details, you can save time, even if it took a little longer in thinking about the initial process. And if you think about expanding the concept and those avenues, you can project paths forward.

Analogy
Reframing by Analogy is taking the idea and viewing through a completely different lens. It’s like taking an item and representing it as both a 3D object and a split projection draft. They are the same conceptually, but provide very different observations. Analogy also provides a great way for making conversation move a bit more fluidly by providing terms others may understand.

Ultimately, all of these examples of reframing allow changing the perspective in a way that allows growth. And sometimes a new viewpoint is all that is necessary for brilliance to be achieved. Just because something works, doesn’t make it right. And just because somethings right, doesn’t mean it will work. But there are times when you can take chances and see if it will. Play with the concepts. Maybe you’re working at a higher or lower level than necessary.

First Principles

Everything must come from some logical point of understanding, unraveling into more complex forms. First principles are the basis, the irreducible components, of any logical system. If you can understand the basics, you can build up an understanding of incrementally more complex tools and systems. First principles are the foundation, necessary to build a strong structure of robust knowledge, without them you may understand how to use a tool, but not understand the tool itself.

Something of those with considerable, and respectable, intellect that also have successes to show is that they tend to refer to first principles as a huge part of their thought process. That is anecdotal, but over and over again, I’ve seen people bring up the concept of first principles, and it’s started to stick out to me. The most noted moment for me occurred when re-watching Elon Musk episode of Foundation, where he is discussing his various ideas and ventures with Kevin Rose.

For me, it’s not the first time I’ve thought of or heard the concept, particularly in an education perspective. I think it’s very important to understand the basics, at least at some point, to  build from on your own. With a solid foundation to work from granted by education one can learn and expand further from those concepts outside the bounds of education independently. The biggest key is to independent thinking, if you can reason the solutions and then process their expansions, you’re in good shape.

Sometimes you have to jump backward, saying, ‘No,’ to the commonly accepted ideas, and work your way back up. Doing this often means placing constraints within your path; once you know it is possible, the question is how to do it better, for some definition of better.  This is a tool for thinking creatively.

Optimizing On Time

Time is irretrievable once it is gone. Your goal should be to reduce the time your users must spend. This doesn’t just mean increasing output on the backend, but maximizing data throughput on the interface.

We all take time for granted, and even those who don’t tend to focus on our individual time-costs. As creators, though, we should also look at the time-cost of our products because if you think about it the math shows that to be even more important. Time is a limited resource, variable to perception, but limited to roughly 24 hours available to every person.

To break down my point, if you can reduce the time a person has to spend with your product, that effect is multiplied for all your users. This multiplication effect makes it quickly achievable to save time, in the global sense, over a set of uses. You might lose an hour or two, but assuming frequent enough use, or enough users, there is a possibility for that time to be reclaimed. Humans are constantly working with technology and further progressing, to achieve this goal; even if it isn’t the direct goal.

Automation means that you can remove a users usage at some scale, possibly even fully. If a user does something every day, and it takes 2 minutes, that adds up to an hour over the course of a month. If you can remove the process completely, you just saved the person 12 hours a year.

For example, I started buying similar sets of clothes, black t’s and cargo pants. I only have to think about what to wear maybe once or twice a month. I saved about 90 seconds a day, in getting dressed. I removed the selection process, so that the choice became automatic.

At scale though, with lots of people using it, even a second, or a few milliseconds can add up. If you cut 0.1 second out of a loading time, that happens 5 times per user a day, you save them 15 seconds a month. If you implemented this in an hour, and it was only you, it would take you 20 years to reclaim that hour. If you had 100 users, it would only take 72 days. So even a very small scale, the global availability of time can be increased.

You can’t just tweak the backend though. Eventually, the time-cost won’t work out mathematically to spend more time trying to get more data across the same channels. You can still manage this by increase the capacity you present, if you do it logically, this is why designers are important. An engineer can get stuff done, but they aren’t always focused on the cost of time for a user. Designers should focus on the user-first, to help increase the fluidity, and thus remove hidden time-costs.

Another option for modifying the time-cost is in condensing the data, in a loss-less manner. Think about he way we use compressors to shrink the data we send over the wire. If we can shrink the details down without losing the context; still conveying the message. We can take huge steps in create a total time-value, vastly greater.

These are the goals that I feel should be focused on. And I do not disregard the fact that the tendencies are when time is saved, to spend it on even more information. This could be said to be good, or bad. I feel it’s negative, but that requires a additional capacity to prevent continued indulgence. That’s a topic for another time.

If You Want News, Focus On The Product

Over the past year I’ve taken various roles in and around various products. I’ve seen, advised on, and been part of the main issue. Companies want news, but they don’t do anything newsworthy. Why the hell does anyone want to write about what you did 6 months ago? 3 months ago? Even last month?

The fact of the matter, in my experience, and my observation is unless you do something on the product side, good or bad, or have some clout you aren’t going to get news. There is a factor of your scale as well, as some sources tend to focus on the larger stable companies and products, which is partly due to the advantage of inertia and size. I’m going to mostly ignore that though and point out product problems I’ve encountered.

I know that there are products that can get by successfully only doing data processing, primarily when offered as a business service. Unfortunately, it’s common to see stagnation or failure in the consumer area because it has pretty low barriers to entry, and often times lower consumer value. I’ve got no problems if this is how you want to start and test a market. As you grow you’ll need to either be so awesome the user wants to keep using it or have another reason for the user to interact with the site.

If you only handle data from one service, that’s great, but why aren’t you handling data from more? Only Twitter or Facebook, why don’t you add the other one to your sources, even better try and get in and add Google +, while it’s still early and/or hot. You are self-limiting and become susceptible to your source’s actions. Free yourself from the dependence, through wider integration plans. Even better, add your own system that can be used without the external dependence, giving yourself more control on the data you want, a protection from external forces, and a possible pivot point.This doesn’t mean you need your system to be the primary, but having it is a good thing.

I’ve had several minor rows with people over this in the past. Often times they aren’t in a position to change it. Once, I was in the only actual position to change it, but it wasn’t what was planned or wanted; I should have done it, anyways. You’ve got to just do it.

Another issue, I’ve had was trying to push a dev issue, that was a roadblock to the companies API. Yes, they offered a public API, but as a consumer data-processing, they neglected some key functionality required for 3rd-parties to offer clients, while also being completely absent from a huge market. I had jumped in to try and help build a client not realizing the issue when I started. Once I found it though, after a few weeks work, I sent several emails and had a discussion with a non-technical person to try and get the issue fixed. I received no replies, aside from the non-technical person, even when I stepped out of the support chain and contacted a developer explicitly. I gave up after a few weeks of trying to get a response. I still support this company’s mission, and wish them all the best.

A big one that killed my big project I was working on at the beginning of the year was that the team had no focus. We were all on different pages, and sometimes there was a delay in one area, or someone pushing hard in areas that wasn’t necessary at the time. Getting off the rails and trying to keep going further is a recipe for disaster. If you fall off of a clear path, collect yourselves, lock-in what needs done, and focus on your goal. Also, don’t let what you’re doing be driven by press reasons, that’s the wrong place to focus and will have you running everywhere.

While I wish I could say that I haven’t and won’t again make any of these mistakes, I can’t. I will absolutely try, and they are things I don’t want to forget because they cost me a lot of time, energy, and passion. When it comes down to it you’ve just got to focus on the product.

  • Problem #1: You’re just a data-processing company.
  • Problem #2: Developers aren’t involved in technical support.
  • Problem #3: Your team doesn’t have the same goals or reasons.

Free Idea: Collect Your Friends

A few weeks ago, I was working on setting up another webpage as a portfolio and jokingly made Holden Page a project. I then shared over on Friendfeed that Holden was now a personal project, which turned into a thread filled with Pokemon jokes. This is when I started thinking about how cool it would be if you actually could collect your friends in a game.

So with that idea I decided to lay out a few structures and ideas rather rapidly on what would be interesting. I’ve decided not to follow through with any of the aspects at this time and figured I’d make them public record. Obviously, the ideas are pretty closely related conceptually, they will be presented as such, but they may be applicable elsewhere. I’m just going to write it up as a bit of a package deal.

Concepts

  • Connect to one or more networks to gather friends
  • Convert your friends into  a set of useable gaming aspects
  • Random occurrence of friends or competitors
  • Should be able to collect, compete, or trade friends with others
  • Maintain a list of friends that will be commonly used

Connect to networks

Allow the user to import their Twitter, Facebook, or Google+ friends into the game. Personally, I thought Twitter would make a better base for the game, but it’s possible that both Facebook and Google+ would make better networks to connect with since they both have gaming platforms built in. There isn’t really anything novel here.

Convert you friends

This was the main idea that I thought could be used in an interesting manner, which also lent itself to Twitter quite well. Take the username of said friend and create a hash from it, doesn’t have to be unique. Use this hash to create parameters befitting your usage (e.g. Taking the Pokemon/RPG aspect, using the hash to determine HP ATK/DEF SPD S.ATK/S.DEF, and they’re various growth rates at level up.) In addition to or in lieu of the hash, you could also try to determine a type by analyzing the friend’s recent content and create a type for that user. This would be more advanced, but doable.

Random Occurrences

This is where I had issues, not so much the occurrences, but how the encounter’s would be handled. I couldn’t come up with any reasonable interaction for this portion of the game. The few very weak ideas I had were using recent content as a competitive method or creating a set of abilities from the hash.

Trade, Collect, or Compete with Friends

These tools are what I find interesting. By encapsulating these concepts into a game, you make sharing friends an aspect that would be a hopefully rewarding experience. This would hopefully increase serendipitous encounters with people you may not have encountered before, but also allow you to reward people for their interaction with you. I’m in love with this, honestly and hope to either come up with a decent way to manage it, or hopefully someone who sees this would.

Friends List

This would be the parallel to your team of Pokemon. The differences would be that it could be possibly generated by those people you interact with most, or people you most want to reward with experience. Experience could be tracked individually(only for the user) or by aggregate(for the friend id). This would allow for possible global ranking based on usage, which would be an interesting concept, compared to our current systems of trying to track and analyze social value.

Random Ideas Related

  • Items that can modify elements of the game, such as leveling up or accessing certain areas.
  • Add minigames for users to play, possible advertising location.
  • Allow users to send out and view network updates from in-game.
  • Instead of using network relationships, maybe use websites, or resources

Like I said, I’m not interested in following through with the concept at this time so go ahead and use them. If anyone would like to discuss them in a more in-depth fashion you can leave a comment or email me at jamesfuller@theinnovationist.com

Also I have to thank World of Higlet for getting this started, and had she not given me a nudge those many days ago I wouldn’t have thought about half of this.  In thanks I’d like to give a shout out to her current web-series, “Mind My Brains, Darling!“.

The Game Can Change In A Blink

…Or how dreams go can go down the sink.

Earlier, this evening I found out that my cousin was pregnant, but she’s like a little sister, so I feel like I’m going to be an uncle. I’ve been having a hard time trying not to judge and just be happy, but it’s hard. She’s known for years what she wanted to do, and has had it all planned out, and then out of nowhere a surprise that’s going to shake her life. The unexpected turn that can derail even the best laid plans. Now I’m trying to fight myself off, I know she’ll be a great mom, but I can’t help but wish there was another way.

I’m fighting myself over being judgmental, but also fighting my own hypocrisy; when I was 16 my girlfriend got pregnant, it wasn’t mine but that didn’t matter to me. I offered to help her raise it, and be the father that the child would need, and started prepping for it. A few weeks later, after having discussed it, but without telling me until it was done, my girlfriend had an abortion. I understood the reason, fully, but it still hurt, then as it does now. My girlfriend, was trying to get rid of a bad dream for her, and open back both of our opportunities for the future.

During those few weeks, I felt invigorated, filled with more passion than anything before. During those weeks, I realized I had to fight, not for me, but for the child’s future. I’m not a fighter, when it comes to myself, I do what I do to survive, but I don’t really try harder than that. It’s unnatural to me. Tonight, that passion was revived,  this time I’m fighting for not just my ‘niece/nephew’ but also for my cousin’s future. I really don’t want to see her end up on the same path, I’ve gone down. I don’t want her dream to die.

It’s time to drop my humble approach towards life: Allow life to happen. It’s time for me to grab the bull by the horns and take this life for a run. The only thing that could happen is that I fall, and have to get back up. Infinite Upside. I’ve got nothing to lose, and so much to give.

…Or why business plans stink.

So far this post has been pretty personal, now let’s talk about business; business plans to be exact. The idea of a business plan is to provide some guidance about the market, your growth, competition, and strategy to achieve that growth. It used to be that the plans were long-term, 5-10 years. The problem with this, is that as our world becomes ever quicker to adopt new changes, your strategy can be invalidated. You very well may be stuck playing checkers, while everyone else plays chess, if you stick to the business plan.

If you want to stay alive, you have to change your strategy to fit the new rules of the game, otherwise you will lose. This means that you need to constantly be on the ball, and willing to change as you get new data, which requires that you actually acquire, analyze, and adapt to some set of data. And you need to be constantly aware, but also have some lag on decisions, so that you don’t get stuck working on a fad. Business plans have become near useless, for long-term prediction.

The important things now, aren’t the plans, per say, but that you understand your market and competition, can do what you say, and are willing to keep going with the feedback you get. You have to preempt competitive maneuvers and always be on the look out for new competition. The game is now not just about who gets there first or who does it better, but who does most of what I need, how I want

If you do everything according to plan, you will be beat, there is no doubt in my mind. You become predictable, you have to change the game that’s being played, and adapt to the new rules, when others change the game. If your plan is invalidated, don’t fight to save the plan, take that information and adapt to it. If you can’t stop there, then maybe you should go hang out with the telecom and cable giants, they’ll keep clawing to keep their duopolies on the market, but the casket will close on them if they aren’t careful. The status quo is deadly.

Be prepared to go to the brink, for what you believe.

You’ve got to take everything you’ve got and just go headlong into the fray. Life doesn’t stop because you want it to;  don’t try to stop it. Enjoy it, all of it, even hardships. What doesn’t kill you only makes you stronger, after all. Make your moves with patience and diligence, but do make your moves before the clock stops.

“When the going gets tough, the tough get going.”

The Simple Styleguide I Follow

I was asked to provide an overview of a project that I was working on and I ended up providing a style guide in the overview documents and thought it was worth sharing. It’s in no way all encompassing, but it provides a good core for self documenting code, in my opinion.

Simple Styleguide
Naming Conventions
-   Files
   -   Always lowercase
   -   Words seperated by an underscore
   -   Controllers
       -   Named after the functional  area they are meant to add
   -   Models
       -   Named after the table they access in the database
       -   Tagged with a _model to denote the file as a model
   -   Views
       -   Named after the controller which requires that views
       -   At most 1 primary view per controller
       -   You can provide a sectioned views using the sections folder
       -   Sections should be stored in a folder named after the primary view
           -   e.g. /views/sections/{primary view name}/logged_in.*
       -   Tagged with a _view to denote the file as a view

-   Classes are capitalized version of file name

-   Function/Method
    -   Words seperated by an underscore
    -   Generally use a verb at the beginning to describe functionality

-   Variables
    -   Normally named after the field they access
    -   Create model objects as m_{model name}

Spacing
-   Indenting
    -   Uses spaces instead of tabs, 2 or 4 spaces
    -   Classes
        -   Brackets start on next line at the same level as the class
        -   Brackets end on the same level as the class
    -   Functions
        -   Brackets start on the next line at the same level as the function
        -   Brackets end on the same level as the class
        -   Add a new line to split functions up for readability purposes
    -   Control Blocks
        -   Brackets start on same line as the beginning of the block
        -   Provide one space between the end of the logic and the bracket
        -   Brackets end on the same level the control block

Extra Bits
-   Functions that have a similar focus should be close to each other