Category: AI & Automation

AI tools, Claude Code, automation, and AI-assisted workflows

  • Taking Daily Notes

    One of the productivity hacks I tried this year was to keep a physical notebook with daily handwritten todo items following the Bullet Journal idea.

    It became part of my morning routine to try and think of 3-4 things I wanted to get done each day.  I’d refer back to my monthly goals every few days to help think of ideas or to prioritise. Now that it is nearing the end of the year I’m starting to look forward to reviewing the past 12 months worth of notes to see just how much I got done in 2017.  Surprisingly I managed to stick with it for the full year.

    I’m finding these kinds of rituals to be rewarding and become more valuable as the history builds behind them.

    For instance, each month since 2006 I have tracked my net worth.  In that time I have lived in 4 provinces, had 4 different jobs, and bought and sold a house.  Each month that I add a row to that spreadsheet the value of that information and the insight it gives me compounds.  It’s a routine that I do on the last day of every month, and will continue to do because I think the economic story it will tell when I’m 80 years old will be fascinating.

    The same holds for my daily notes. Looking back even a month reveals things that I thought were important 30 days earlier but, subsequently abandoned.  The memories and insights that might come from a decade worth of journals is hard to imagine.

    More than anything else, the personal value I get from keeping a history is that our brains are fallible, they remember only the things they want to remember, and twist memories away from the truth over time. Recalling a memory and then cross-referencing with your own written thoughts at the time can be an interesting exercise to do.

  • More Blockchain Shenanigans

    Over the last couple of weeks I have been spending more time understanding blockchains and researching various alt-coins.  I purchased a hardware wallet and transferred my existing investments into it.

    In an effort to really grasp the concepts I implemented a simple block chain application.  It is at it’s core a very simple idea.  A blob of data with a hash calculated on it and then put that hash into the next block creating a chain which prevents tampering.

    Adding to that simple idea is some distributed systems logic to do discovery and consensus. Bam, that’s the start of a verifiable block chain application.

    Now that this idea is out there and is relatively easy to understand there are plenty of people trying to apply it to solve different problems. Applying blockchains to every industry is an interesting thought experiment and will surely find some winning applications.

    Alternative blockchains have been exploding onto the scene. Most have some sort of wallet application which you can securely hold a balance of coins/tokens.  Exchanges have popped up to help trade different currency pairs. Businesses have started to accept them as a form of payment.

    There is a lesson I learned after missing out on investments in the Google IPO, Netflix and Amazon. When looking at these stocks I evaluated them on traditional metrics of revenue, and Earnings Per Share. In retrospect it was the wrong thing to look at for these high growth stocks.  The better question to attempt to evaluate is “will this company be more relevant in 5-10 years?” 

    Blockchains are something that I think has shown some resiliance since bitcoin first was released nearly a decade ago. They are starting to be taken seriously by governments, investors and businesses. It seems to me that they are here to stay and that they will become more relevant in the coming years as they become easier to use, regulated and useful. It’s an investment that I hope to get into before it goes mainstream.

  • New Car

    It took nearly 4 months from the time we made a down payment at the Kia dealership until taking possession of our new Kia Niro.  It didn’t seem like it was that exotic of a car that it takes 1/3rd of a year to deliver one.  But now we have what is probably the only red touring edition Niro in the city.

    We put a couple hundred kilometres on it over the weekend. It’s fun to play with all the new gadgets.

    One thing that I’ve been particularly intrigued by is all the driving assist features.  Adaptive cruise control, lane departure warnings, and automatic emergency braking make highway driving semi-automated.  The car doesn’t steer for me, but if I do a bad job it will beep at me. As a result, it’s interesting to see the remaining ‘human’ tasks for driving as nearly trivial.

    We picked this car specifically for doing road trips. I think it’ll be perfect for the job.  the 40L gas tank looks like it will get us 900km.  That’s 2x what we could get in the Civic.  So now we just need to plan some more weekend trips to Montreal, Toronto, and Quebec City.  I also want to drive through some more of the US east coast next year and see Boston, New York, Washington DC, and perhaps drive all the way to Florida.

  • Maintaining Focus and Passion

    My current side project is a bit bigger in scope than I had imagined when I set out my goals at the beginning of the year. With any large project it can be difficult to stay focused and passionate about continuing to work on it.

    For this project, the more I think about it, the more excited I get about the possibilities.

    One of the keys has been to set aside time to think about it more deeply.  I have been going for regular walks alone for 30 minutes to an hour at a time to wander and wonder.  This is something I mentioned a few posts ago, but it’s worth re-iterating just how effective it has been to help me resolve things and further develop ideas and attachment to the vision.  Without these walks this project would have died weeks ago, instead it is getting closer and closer to being ready to launch.

    For the right project you want to keep working on it late into the night, and that’s what I have been doing these last few weeks.

    Often times in life we find ourselves in a reactionary mode.  Emails come in and we deal with those, kids fall or whine and we deal with that situation, something is on TV and we focus on that. In business we know that reactionary mode is not very productive – instead of fighting fires at every turn you should be building on new ideas, expanding visions and problem solving how to make them a reality.

    You need to carve out space to do that and walking alone for 30 minutes allows you to be in control over your own agenda, your own thoughts for just enough time to bubble up new connections.

     

  • Brainstorming Week

    After reading Elon Musk: Tesla, SpaceX and the Quest for a Fantastic Future I was pretty charged up and inspired to start working on something more long term and meaningful. Since the book was published Elon has also gone on to create several more businesses that weren’t mentioned – OpenAI, The Boring Company, and NeuraLink.  Elon’s ambition to tackle really hard problems that have long term massive impact potential is admirable and inspiring.

    The problem with reading books like that for me is that it always gets me thinking.  What kind of things could I build? What ideas are worth the risk? Could I take the same leap of faith to pursue a goal that Elon has on several occasions?

    Several times over the last few years I have found myself thinking that the world needs a few more people like Elon Musk to solve audacious problems.

    Now I have a little bit of insight into how to create another Elon, the traits and stepping stones that could be modelled.

    Along those lines, I have been doing a lot of brainstorming over the last couple weeks. I will be trying to prototype some of the ideas and further develop them over the next couple of months as part of my goal to have 12 software projects implemented this year.

    The idea to work on for April is to find a way to fund open source.  It has been tried, but no one has found the right formula yet.

  • Web Design Fallacies and the Failure of CSS

    Having the experience now of building dozens of different web sites over the years I have come to the conclusion that there are some major flaws in how web design is done and the underlying assumptions have proved inadequate to make web design better.

    The first of these is the about CSS.  The goal of CSS was to create a language that designers could use to apply their vision to a website to separate the concerns of design from the logic and structure of a website.  It was meant to be simple enough that someone without a technical background in computer science would be able to write and maintain.  Of this goal, CSS has failed miserably.  Finding a web designer who has a design background but also knows CSS is nearly impossible.  Most designers skills are based in Photoshop and Illustrator, few have any interest in writing or maintaining CSS files.  The flip side of this is that most programmers are tasked with writing in a design language when they would be much more comfortable with JavaScript and few engineers have a good eye for design.

    Another web design gotcha that is easily overlooked is that the web has different constraints from paper.  A static design spec put to a snapshot pdf or image of the final design is only 2 dimensional.  Web design reality is that there is at least 3 dimensions and sometimes 4 or more to implement.  This puts the onus of implementing missing design onto the developer.  How the page should behave at widths of 300px up to 2000px? What interactions should exist? What animations are there? Responsive design cannot be done with Photoshop and so these rendered design mockups represent perhaps only half of the design.

    I would like to see one of two things happen:

    1. Make changes to the CSS tools so that it can be managed in much the same way that Photoshop does.  Fulfil the promise of putting design implementation into the hands of the designers by making the tools used to craft it similar to the tools they’re already familiar with.
    2. In cases where engineers have to do the design implementations provide a method that is more familiar to them.  It should allow for unit testing, it should be designed to reduce the likelyhood of regressions as the design changes. Debuggers and linters should identify unused code.

    I think what we have with CSS is a bad compromise.  It is too technical, daunting and uninteresting for most designers to want to work with it, and it’s too unstructured, untestable and imprecise for engineers to have much love for it.  As a result CSS exists in a no mans land where few people have an aptitude.

    The future looks interesting though.  Will there be a next generation language after SaSS that improves things for the lives of developers, and how will the React.js approach impact the future direction of web design.

  • Best way to learn Machine Learning

    I’m going deeper in my learning about how to successfully implement machine learning algorithms this year by initally doing a survey of all the resources out there for learning this stuff.

    It is a fast moving area of expertise and as such newer techniques and tools wont be covered in older books or tutorials.

    MOOCs are now a great way to get up to speed on the Deep Learning approaches to Machine Learning.  And while there are some good quality general books out there about ML, most are currently in pre-order.

    The most appealing to me right now is the course on Udacity, presented by Google which uses Tensorflow in iPython notebooks to teach how to build and apply ML.  The best thing is that it’s

    1. in Python
    2. uses the latest ML library TensorFlow (developed at Google)
    3. Is free

    As with all learning, the best way to learn is by doing it yourself and practicing enough to make it stick.

    This is not the first resource I’ve used to learn about topics in Machine Learning and it won’t be the last.  Taking multiple courses, reading multiple books and tackling multple problems on your own is the best way to ensure you have no gaps and a well rounded deep understanding of the concepts.

    Actually mastering a new skill is hard and there are no shortcuts.  Accept that and jump into the challenge.

  • Slowly Delving into AI

    This year seems to be a big year for AI development. Deep Learning approaches are going to be applied to more areas and I expect most of the big name tech companies will continue to expand their research in the area.

    The encouraging thing for the rest of us developers is going to be the opening up of core technologies.  The algorithms themselves are not significantly complicated. And the true value comes from the data used to train these models.  So there is some incentive for companies like Google to open-source their AI tooling.  It will enable more developers the chance to push the boundaries of AI techniques, while the companies themselves maintain ownership of the critical training data used to get the best results from these models.

    What that means is that this year there will be more than a few new start-ups trying to turn these AIs into web services, or sell trained libraries as tools you can use in your own code.

    Take for instance, something like sentiment analysis.  There are already quite a few APIs you can easily tie into to get this sort of analysis added to your own projects.

    This year I expect this will expand into a large variety of areas.

    Spell checking is prime for disruption.  For too long spell checking has relied on simple dictionary lookups and Levenshtein distance to guess at correct spelling.  These are relatively crude compared to the ability to understand context within a sentence and give much more probable corrections.

    Google has open-sourced TensorFlow, and it has already gotten some significant attention from the developer community.  As more developers learn how to use these tools this year, you’ll see a lot of very interesting developments.

  • Learning AI Algorithms

    One of my goals for the year is to get deeper into learning the new generation of AI algorithms and practice getting good at applying those to real problems. AI has been one of those areas that always fascinated me, and then I took the AI course at university and learned that it just wasn’t as difficult or as interesting once the covers had been lifted on the mystique of it.

    There are many approaches to algorithms that can be classified as AI.  If you consider that AI is the ability of a program to be given a dataset and then answer questions outside that dataset then something as simple as a linear regression is considered and AI.

    #!/usr/bin/env python3
    import random
    def linear_regression(x, y):
     length = len(x)
     sum_x = sum(x)
     sum_y = sum(y)
    # Σx**2 and Σxy
     sum_x_squared = sum(map(lambda a: a*a, x))
     sum_of_products = sum([x[i] * y[i] for i in range(length)])
    a = (sum_of_products - (sum_x * sum_y) / length) / (sum_x_squared - ((sum_x**2) / length))
     b = (sum_y - a * sum_x) / length
     return a, b # y = ax + b
    if __name__ == '__main__':
     simple_data = [[0, 10], [0, 10]] # slope=1, intercept=0
     print(linear_regression(*simple_data))

    random_data = [list(range(1000)), [random.triangular(20, 99, 70) for i in range(1000)]] # should be slope ~=0 intercept ~= 70 print(linear_regression(*random_data))

    In a real world example this would be expanded into an N dimensional regression where each dimension is an attribute.  As the data gets bigger and bigger, regressions need more advanced techniques to comute things efficiently.  But ultimately it never feels like you’re doing something emergent, you’re just doing math.

    Decision trees are another popular form of AI algorithm.  in the most basic form this is just a binary tree of questions, to answer a question like “do I have cancer?” you start at the top of the tree and answer yes or no questions at each node until you reach the leaf which should provide the answer.  Again these get more advanced as they are applied to more difficult use cases but never really get to the point where they feel like an intelligence.

    Neural networks and the new research in deep learning approaches are by far the most interesting, and yet they are also still nowhere near a state of general intelligence.  A neuron in a neural network is a simple program that takes input, modifies it and sends that as ouput and accepts feedback to re-inforce positive modifications.  These neurons are then connected into vast networks, usually in layers.

    The breakthough in deep learning is that we can provide re-inforcement at different layers in the network for successively more specific things and get better results.  Applied to a data set these can do remarkably well at thing like identifying faces in a photo.

    There is a bit of artistry required to apply these to a real world problem. Given data and a problem to answer from it, which type of algorithm do you use, how does the data need to be cleaned up or re-factored, how will you train and verify your AI algorithm afterwards?  There’s enough options there that just choosing a path to go on is often the most difficult task.

    The whole AI space still is at it’s infancy and really needs a genius to come in and shake up everything.  All the current approaches are narrow in scope and a breakthrough is required to find a path that will lead to a strong general AI.

  • How to Maintain Momentum

    The main lesson from a handful of recent books that I have read has been focus on fewer, more important things if you really want to make progress.  Less but better.  And that the best way to maintain the momentum on the projects you do want to take on is to make small steps and celebrate the progress, rather than reaching the end goal.

    Studies have shown that the best way to create engagement in your work is to either experience achievement or recognition of achievement regularly.  This is something you have probably experienced personally.  The best projects are the ones that you can feel like you finished something at the end of every day.  Massive all or nothing projects that drag on each day where you work hard but it’s difficult to see the progress can wear you down very quickly.

    With this in mind, it is important to structure your projects such that there are always pieces where people can feel personal accomplishment or otherwise provide some external recognition of something that cannot easily be sub-divided in to small tasks.

    This works at various different scales too.  Entrepreneurs talk about Minimum Viable Products and “Done not perfect” to describe that initial ship-able product that can be celebrated as a turning point in the business.  At the day-to-day scale the accomplishments might be to implement a button on an app, or finalize financing terms for a business loan, or write a chapter for a book.  When you start off the day knowing the small task that provides a small step towards your end goal, then at the end of the day you can feel that sense of accomplishment when you complete it.

    These small daily accomplishments are THE major factor in maintaining momentum.

    Work each day without the sense of accomplishment is like crossing a bog – slow, tedious and dreadful.

    With the sense of accomplishment it’s like driving a car on smooth paved roads – even if you take your foot off the gas you’ll keep going forward.

    How do you make this concrete and apply it to YOUR goals?

    There are two steps/skills required to control and build your momentum.

    1. Focus
    2. Planning

    Focus is about very specifically knowing what your goal is and using that goal as part of all your decisions.  Develop your goal by taking time to really think about it, make it something measurable, attainable, and time boxed if possible: “lose 10 lbs by summer vacation”, “reach $1M in revenue this year”, “sign up 1000 new clients this month”.  With this goal in hand filter all decisions through it.  “Will X help me accomplish Y faster?” If the answer is No, then put it aside, decline the offer, and continue to use your time on things that will get you to your goal.

    Planning is about taking the time to really think about how you can accomplish your goal.  Figure out how to divide a big goal into smaller daily or weekly goals – something that is actionable. $1M per year in revenue is more difficult to understand than a $4000 per day sales goal.  Then put systems in place to measure and accomplish those smaller goals. Up front planning is important but it is also critical to re-evaluate and adjust the systems as progress is made and you learn or experience roadblocks.

    With a good plan and the ability to maintain focus on your goal you stand the best chance of having the daily accomplishments needed to create momentum.  Slowly but surely these accomplishments compound until massive progress is done, goals are met and success is had.