Posts

Software links worth remembering

I tend to quote software trivia  - starting a list for my future reference: Igor's Laws Of Programming 1. No duplicate code 2. Trust Tests not experts 3. Create Issue then whine Design Patterns Gang of Four  - The original patterns that kicked it off. Cloud Design Patterns - MS guide to making great cloud services Enterprise Design Patterns - How to make enterprise apps. Stats Bugs solved by using a static type system  15% . Bugs per  KLOC is a language independent constant @  15-50/1000  . Reading to be a great programmer Pragmatic Programmer  - How to be a great programmer Reading to make great software:  Clean Architecture  -  How to design a large scale system. Agile Principles And Practices  - How to design components. Code Complete 2  - How to write code C# in a nutshell -  The c# book worth owning Fluent Python - Writing great python code Programming in Scala - Learn about langua...

Optimaling vs Maximizing

Copied from  Seth Godin  as I've always tried to articulate this, but was never able to so I'll copy swaths of his post: I can run a comfortable 6 miles per hour, but I can also run 10 miles an hour at full speed.  But, turns out I can only run 10 miles an hour for 5 minutes, while I can run 6 miles per hour for hours. Ten miles an hour is maximum speed, but it isn't optimum. Systems have an optimum level of performance. It's the output that permits the elements (including the humans) to do their best work, to persist at it, to avoid disasters, bad decisions and burnout. One definition of maximization is: A short-term output level of high stress, where parts degrade but short-term performance is high. Capitalism sometimes seeks competitive maximization instead. Who cares if you burn out, I'll just replace the part... That's not a good way to treat people we care about, or systems that we rely on. As a valuable contributor seeking to build a career,...

It's all about the 43" 4K Monitor

Image
You might say I have a monitor obsession. I'd not disagree, but I would argue I spend 8 hours a day on my monitor, so having the best monitor I can is worth it. I'd also argue, monitors last forever, so you might as well get them as soon as they meet your needs. Speaking of, I now have a 43" 3840x2160 monitor.  It lows my 34" ultra wide out of the water, and I'm now getting rid of my 27" and 30" monitors.  There's a few things you'll need to know when getting this monitor. 1) T he left and rightmost 1/2" are in shadow when you're close.  This is a weird effect, described here . According to the author of the review it happens on all the current 43" monitors. When you move your head to see the left most edge, you can't see the right edge because it's in shadow, and vice versa.  Most windows have a margin so you won't notice. The place I have noticed it is in terminals (conemu and iterm). 2) Not everything can dr...

StartupVille: Not a unicorn? Consider being a zebra!

Image
When I worked on Smile, I struggled because I wasn't interested in profit, but interested in making the world a better place. To achieve this, I'd need a sustainable business, not an exponential one. However, investors want exponential, not sustainable businesses.  This table comparnies unicorns and Zebras is from a great article on the topic.

I love my 34" ultra wide monitor

Image
I love monitors. I already have a  27" monitor and a 30" monitors , and now I've added t he dell 34" . It's huge, elegant, and has all the ports a geek could dream of.  Ultra wide are sold as being amazing for productivity and movie watching.   I don't disagree, but there are a few gotchas you should know about.  For productivity ultra wides are extolled as the equivalent of two monitors side by side.  For me, the width of the ultra wide is a bit shy of what I'd like for two windows side by side.   Don't get me wrong, it's doable, but with my old eyes and jacked up font sized, half a 34" monitor wide is too skinny a window.     I usually end up make one window take up 2/3s of the screen and another window take up 1/3.  It's too bad the windows snap feature doesn't allow you to do this automatically. If you have a good software solution for this holler.  For movies, especially ones available in 21:9 the 34" ultra wid...

Emotional Intelligence, Strategy, and how Igor Ticks @ idvorkin.github.io

If you're interested in learning more about How Igor ticks,  Emotional Intelligence and Strategy, check out my alpha "blog" @ idvorkin.github.io It's currently very rough but has a few interesting properties: From a content perspective, it's focused on less technical topics - book reviews, strategy, emotional intelligence, and my own self discovery. From a technical perspective, it's a jekyll static  markdown blog, something I've always wanted to try because I can use powerful editing tools, keep the content under source control , and never need to worry about being at the mercy of my service provider.

Cool Tools: Remote Tech Support

We all have to support our friends and families on their broken computers. Recently I was introduced to teamviewer . It's a remote support application that free for non commercial use, and works perfectly.   May your next "mom's computer doesn't work" incident be less stressful.

Monitor Sizes And Ratios

Computer folks spend LOTS of time on monitors, so getting the right ones matters .  Monitor dimensions are incredibly important, so here's the dimension table for the high resolution monitors Diagonal Ratio Size 27" (2560x1440) 1.77 (13.2, 23.4) 30" (2560x1600) 1.6 (15.8, 23.7) 34" (3440x1440) 2.3 (13.5, 31.1) In case I need to do this again, here's the computation in R  

Soft Skills:Principles vs Values

TL;DR: Principles are unchangeable objective truths, values  are your subjective prioritization.  The better you can align your values and actions with principles, the easier your life will be.  Differentiating principles and values sounds pedantic, but it's important to differentiate the concepts. You choose your values, but your values have no impact on principles. Conversely, principles, can have a huge impact on your ability to live life according to your values.   When your values and principles are out of alignment, you're bound for some suffering. Stephen Covey differentiating principles and values: Principles apply at all time in all places. They surface in the form of values, ideas, norms, and teachings that uplift, ennoble, fulfill, empower, and inspire people. The lesson of history is that to the degree people and civilizations have operated in harmony with correct principles, they have prospered. Correct principles are like compasses: they are alway...

Soft Skills: Igor's personal mission infographic

Image
It's important to uncover "how you want to live your life", and to review it frequently.  Much of how I want to live my life is based on the 7 habits of highly effective people, and I've created a handy infographic to help inspire, remind, and encourage me. ps. If you're curious how often I review this infographic, I'll tell you a story. Turns out I drew this infographic in December 2013 while on vacation, and promptly forgot about it.  A few days ago, I was rummaging through an old sketch book, found the infographic and decided it was perfect.  To avoid forgetting it again, I'm adding it to my blog, and  am setting a weekly reminder to review it :)

Startupville: Start with a skate board.

Image
Imagine a Fortune 500 company trying to build a car.   Because the company has lots of resources, they likely have a customer research team dedicated to understanding what the customer wants. They have lots of engineering experts each of which is able to produce products of technical complexity. Finally, and probably most importantly they have a culture which rewards accomplishing big things, often before they hit the market. As a consequence, at a large company a car would probably be developed one functional component at at time.  However, the risk here is that the customer never wanted a car, and you build the wrong thing. By contrast a startup has almost no resources, and is usually evaluated by customer growth rate.  This has the virtuous side effect that product is constantly being guided by customer need. In Startupville it's essential you are always building something the user wants to achieve their goals, in the car analogy, you'd progress by building a ska...

Startupville: Staying motivated as a solopreneur

TLDR:  When you're disheartened, do something that you can control and succeed at. Succeeding recharges your motivation and lets you take another run at your most important problems. Staying motivated is easy when you're having wins, or executing again a plan you believe will succeed.   Unfortunately, there will be long stretches where you won't have wins, and the longer it has been since a win, the farther you will be from believing your plan will succeed. When it's been too long since I've had a win, my motivation will tank, and I'll find you stop doing much of anything. For me to get back on track, I need to start working on things I can control and succeed at.   Often that means working on things that are less important then the things that have me disheartened. Except that's a fallacy.  See, the thing that's most important when I'm disheartened is finding my mojo. So, when you're disheartened, do something that you can control and su...

Time.Ltd:Mortality Software

*This post is a work in progress, in the madman/architect phase, if you'd like to help flesh it out, I'd love the help.  please add comments or ping me.* Why mortality software? To be satisfied we need to live in accordance with the person we want to be. Unless we know who we want to be, and act deliberately to achieve it, our satisfaction will be infrequent, and often accidental. Mortality software helps you understand who you want to be, and supports you in being that person. In a nutshell, making your satisfied. The first step for mortality software is helping you figure out the person you want to be and your values. Who do you want to be? What are your values? To figure out who you want to be, write your eulogy.  To make it easier, figure out the roles in your life. Imagine the person who would speak to each role of your life during your funeral.  What would you want each person to say?   That eulogy is the person you want to be. Now imagine how ...

A richer model of happiness - Pleasure/Flow/Satisfaction

Happiness is a coarse term, and often leads to cumbersome discussion and confusion. Martin Seligman provides a more granular model of happiness: pleasure, flow and satisfaction.   This model will be useful as we discuss positive computing.  Pleasure is the happiness of doing what feels good in the moment.  It's the happiness of consumption.  Eating, drinking, buying something.  Pleasure is easy to achieve, but the happiness is lost within minutes.  Flow is the happiness of being engrossed in a a challenging, enjoyable task.   It's the happiness of production. Making art,  baking cookies, working on a project.  Flow takes effort to get started, but the happiness last the length of the task, often lasting hours. Satisfaction is the happiness of  being the person you want to be.  It's the happiness of identity.  This happiness is deeply personal, for me it's being a deliberate person who can put a smile on a strange...

Soft Skills: Writing as Madman, Architect, Carpenter and Judge

Writing breaks down into 4 distinct phases:  brainstorming, organization, writing and editing. To  reinforce the distinctness of these  phases, think of writing as four distinct jobs:  Madman, Architect, Carpenter and Judge.   Maximize your efficiency by doing each job, distinctly, deliberately and serially. Each  job has a specific goal,  and  that goal should be your  sole focus during while doing that job.  Do not do the next job, and do not go back to previous jobs.  To reinforce the distinctness of each job, consider using a different tool, and physical reminders of each job. As madman, your job is brainstorming.  Take your brain's musings and get them down on paper. Maximize creativity, find as many interesting ideas as possible. As madman don't waste time "arguing" or "revising" what you're spitting out.  Personally, I use pen and paper when  I'm the mad man to prevent  myself from revising, editing, o...

Startupville: Reading list

Books I recommend: Start small stay small  - How to build a realistic software business.   Business Model Canvas and Value Proposition design - Value prop, and business is king. This book is a must read.  Be sure to by the print book as it's full of pictures and diagrams.  V is for vulnerable - A cute book on the attitude you need to survive as an entrepreneur.   Lean startup - The book that kicked off how to run a startup Traction - A treatise on customer aquistion strategies or how to get traction. Books I'm reading now: Zero to one - In progress looks great.  Blogs/Articles In progress Paul Graham  - Paul is the founder of y-combinator and his writings defined the startup industry. Brad Feld - One of the other best loves VC's. Often talks about funding, very interesting. We don't sell saddles here  - A treatise from the founder of Slack. How to think about MVPs  - A classic picture of how to build ...

Soft Skills: How to communicate effectively

To be successful, you must communicate your ideas. The heart of communication is a story which must be written. Emma Coats wrote stories for Pixar, and tweeted a series of “story basics”. Most of these are applicable to communicating, and I’m posting them here to remind myself how to communicate better. What do you want to say? Why must you tell THIS story? What’s the belief burning within you that your story feeds off of? That’s the heart of it. Come up with your ending before you figure out your middle. Seriously. Endings are hard, get yours working up front. What’s the essence of your story? Most economical telling of it? If you know that, you can build out from there. How you want to say it? You gotta keep in mind what’s interesting to you as an audience, not what’s fun to do as a writer. They can be v. different. Discount the 1st thing that comes to mind. And the 2nd, 3rd, 4th, 5th – get the obvious out of the way. Surprise yourself. Simplify. Focus. Combine chara...

What positive computing approach are you taking in your designs?

The positive computing book lays out a simple model for the approach your designs can be taking, I summarize it here: Approach Description Example None Happiness ignored Most applications today - no attempt to make users happy Passive (reactive) As issues are found which effect happiness, features are redesigned Comment systems allowing anonymous comments. As anonymous comments filled with negativity, comment systems evolved to allow enforcing a user identity, and to block "bad" users. [TBD: Get a better example] Active Augmenting existing features to make users happier Bing home page - displaying beautiful images that makes users happy. Deliberate The goal of the feature is user happiness exclusively Happify- a tool to train users ot be happier

Measuring In the moment happiness (InMoHap) with moodles (Mu)

This post is in progress to help me flesh out my progress -- feedback please!  TL;DR:  Moodles, abbreviated Mu, is a measure of in the moment  happiness" (InMoHap), which is extremely helpful when exploring positive computing.  The case for moodles.  The goal of positive computing is to make users happier, which means we need to measure happiness to tell if users are happier.   The current methods to measure happiness have limitations (details on request) , so we'll define a new ideal unit for in the moment happiness (InMoHap)  called the moodle, abbreviated Mu. The properties of the Mu is it can be objectively measured at any moment of time with minimal  user interruption.    For example, just as a fit bit can transparently count your steps through the day, a Moodle-O-Meter can measure your InMoHap throughout the day. Examples of using moodles.  To get a good understanding of InMoHap and moodles the following graphs show...

StartupVille: Testing vs Optimizing

TL;DR - Optimizing, is figuring out how to do make a result better.  Testing is checking if something is so good it doesn’t need to be optimized, or so bad you're better off doing something different. Founders spend a significant portion of their time comparing alternative to see which is better and why. For example how to make a landing page more appealing, or what price they should set for a product. This process is incredibly important and called optimizing. Optimizing is often expensive so before you start optimizing, test to see if something has so little traction it's not worth starting to optimize, or has so much traction there's no need to optimize. For example, imagine you have a customer acquisition cost (CAC) budget of 5$ and you run some search ads and get a 0% click through rate.  In that case, instead of trying to optimize search ads, you are probably better off trying a different channel like social network  ads.  Now, imagine when you try social...