Category: Software Engineering

Coding, Python, web development, architecture, and deployment

  • My Genius Ideas Notebook

    My Genius Ideas Notebook

    Last year I started a notebook specifically to collect ideas that I feel are particularly innovative or interesting. I keep it on my desk – one of the few things.

    While I believe that ideas are usually worthless without taking the action to implement them, or at least further investigate their feasibility. Collecting ideas into one place has some value. It becomes a source of inspiration to draw from when feeling bored.

    Good ideas take time to form and a notebook is a good place to mix words and sketches and build the idea over time until they become more fully developed. I tried iPad notebooks, which with the pencil has good support for sketching, but digital things tend to get lost below the fold in a way that physical books on a desk do not.

    What are some of my ‘genius ideas’? I’ve got a space launch system that doesn’t need rockets which I’m trying to solve for a lower scale system that would still have a viable market. I collected ideas for a unique proof of work algorithm, and AI system for learning languages, an inline electric bike pedal assist motor, the vision for a Canadian moon mission, inflatable furniture, and more.

    When inspiration strikes I try to write it down. Sometimes those ideas are fleeting and it’s good to catch them before they are forgotten.

  • 3D Printing

    3D Printing

    For Christmas this year, I got a 3D printer to add to my ever busier home office. My hope with the printer is to create more in 2019. And I have a backlog of ideas for things I want to make with it.

    I hit a wall with my bike design a couple months ago due to lack of tools to take things from a sketch and 3d model into a prototype phase. I hit the same wall earlier in the year trying to prototype an active support structure. My hope is that a 3D printer will let me take some of these ideas and make functional prototypes, or make the jigs and tools to help me make them.

    In addition to the ambitious things, there’s plenty of little things that these printers are particularly good at. Wire clips, mounting hardware, models and little odds and ends that I hope will keep my office neat and tidy will be fun to play with.

    While I wait for a couple pounds of plastic filament to arrive I’m combing through the 1,000,000+ models on thingiverse looking for stuff to print.

  • No More News

    I have been finding myself increasingly frustrated with the amount of American news that I see as a Canadian. On many topics it seems like I know more about what is happening in another country than in my own. A sad state of affairs. Most of these things are actually meaningless to me personally. Decisions made by American politicians are unlikely to cause me to change anything in my day-to-day, affect my decisions or something that I would have influence on. As a result, everything I know about American politics represents wasted neurons and wasted time.

    American News is a drama. The characters and their emotional conflicts play a staring role keep us hooked like a soap opera. It draws us back in day after day to find out what happens. It stays on our mind through the day, speculating about what will happen next.

    It made me think about all the media I consume. 

    Increasingly I have been withdrawing from all consumption channels. With Facebook, I have disabled all notifications, and log in less than once a month. I stopped using my feed reader and unsubscribed from everything that explicitly was world news related at the beginning of the year. Yesterday, I purged my phone of Reddit, CBC News, and Pinterest. The last of my consumption-only news feeds. Twitter is my only remaining source of outside information – but I’m careful about who I follow.

    Either you control your brain, or your brain controls you. I want to make sure I am consciously in control of my own brain by ensuring that what goes into it aligns with my goals, that I reduce my risk of being influenced by media hype or fear tactics.

    My goals are that I want to be building as much as possible. To focus on creation, I’m limiting the hours spent consuming.

    The consumption that I am trying to do more of is books. The ideas in books have been baked for years before they make it to the printed page. They undergo multiple levels of review and editing before publishing, and they have the length to more fully explore and explain things. Choosing a book to read also aligns with the desire to control what goes into my brain which is very different from the lack of control we get from skimming through clickbait headlines.

    As I have been cutting down on media consumption my phone has become less and less useful. I’m thankful of that, since it gives me more time in the day to be the author of my own future.

  • Media Distractions

    “Are you distracted by breaking news? Then take some leisure time to learn something good, and stop bouncing around.” – Marcus Aurelius

    It can be difficult to block the media from your view. Over the last year or more I have been trying to limit my access.

    Several years ago, I was having a conversation with someone at work about the situation in the Ukraine and made me realize how limited my knowledge is in that region of the world. I decided at the time to get a magazine subscription to The Economist, and follow current events a little more closely.

    However, over time I have become more disillusioned. And have been swinging to the other end of being more selective in reading news.

    I removed Facebook from my phone, reviewed and turned off notifications for news items. I stopped visiting news websites for things that are not immediately important to me (ex: housing market info while looking at buying a house).

    Instead I have been turning attention toward books more and engineering shows/documentaries. The nature of the publishing business is that it takes much more time and investment to author a book and as a result there is more thought and research to going deep into the ideas. I love learning about engineering ideas because they are usually so positive and constructive – how did they overcome this problem, why is it designed that way, etc.

    With the news, I attempt to ask myself 2 questions to ascertain it’s value.

    1. Is this something that will affect the actions I take in the near future
    2. Is it an opportunity to learn about new ideas or be educational

    So I have become ignorant to things that are happening, yet at the same time it is impossible to eliminate exposure to all the news. Trump tweets, shootings or pipeline approvals are passionate discussions that are high on fear and angst but low in value. Somehow despite aggressively limiting my news intake I still hear about these things.

    Limiting news is an ongoing effort to be selective about the information and ideas that go into my brain. Reading, as they say, is the closest thing there is to mind control. We can be in control of the reading we do, and thus control to a certain extent and with some strategy a direction we would like our thoughts to take us.

  • Trying Windows

    Time for me to get a new Laptop and for the last couple of months I have been delaying on the purchase.

    I’ve been a Mac user for the last 12 years and used Linux before that. The last time I actively used a Windows PC was around the year 1999. So a switch to windows would be difficult and take time to learn how it works.

    After getting overly confused by the options with PC manufacturers I eventually decided to take a risk on trying Windows and purchased an Open-box discount item from BestBuy. It was actually 50% the cost of a comparable Mac. The Dell XPS 13″ is at the high end of laptops, it’s made with aluminium and carbon fibre, and feels light yet solid.

    Right off the bat though it has a power issue. Perhaps the reason why it was returned. It’s something I’ll be able to deal with for a while.

    Windows though is a conundrum. It’s a steeper learning curve than I expected.

    There’s WAY too many disruptions and noise. I’m not sure how, but facebook notifications got integrated at the OS level and everything from slack and email to security updates, and dell updates are visually disturbing. The windows menu boggles my mind with the rotating squares tempting me to play video games. It’ll take some time to find out how to tone down all these productivity killing distractions.

    Installing software is far more confusing than I remembered. Perhaps I’ve been spoiled by how easy it is on Mac and Linux, Mac is usually drag and drop into the Applications folder, and most development specific command line tools are a simple homebrew command away. Linux puts 99% of available software in the same place and easily installable. Installing MySQL on Windows was absolutely confusing – search the internet for a download link, a complex installation wizard that prompts for choosing between options I never knew existed, there were some random errors with sub-packages that failed to install. Trying to find other software to install often had me downloading files from sketchy websites. On Mac you don’t even have to look for it: `brew install mysql` and it’s up and running. On Linux is similarly easy: `apt-get install mysql-server`.

    I miss sudo. Opening a separate command prompt with admin rights to do admin things is annoying and a security problem. I’m tempted to work with an admin prompt all the time just in case I need to do something that requires it, but that means anything I run that was compromised would have admin access as well. Temporarily raising access rights only on the commands that need it – and asking for your password to do so – is much much better model.

    Thankfully, I found Chocolately, a package management system for windows. Other than still being tied to an administrator command line, it is actually quite impressive. The wide library of packages they have indexed will basically install any windows software available.

    Windows is not great at playing along in my mixed environment at home. I have Macs, Linux and FreeBSD running on different computers. Windows introduces a new lowest common denominator for some things. It didn’t support the file server shares I had, so required adding a new service, it couldn’t read the portable hard drive and required work arounds for copying files. I hope the new direction Microsoft is taking eventually expands on support of non-windows technology.

    I installed the Windows Subsystem for Linux and then installed Ubuntu. It’s great to be able to run all my familiar tools: bash, zsh, grep, ssh etc. And for the most part those simple things work as expected. It is possible to run MySQL through Ubuntu on windows as well, but there’s a gotcha. It’s not running all the operating services you’d get with a real installation. So you need to start services from the shell. Also I’ve found a bunch of software that gets confused by the OS description and fails to install.

    The learning curve is bigger than I thought. I’m still adjusting and learning. Windows is better than it used to be, but so far I’m finding lots of things that are confusing.

  • Personal Cloud

    It kind of snuck up on me a bit over the years. I have got a rather decent collection of computers running for various different side projects over the years.

    At home I run a local NAS file server 24/7 for local backups and as a shared place to access files from other computers and TV apps.

    My Linux desktop is also always turned on. It is primarily for local development and running services that I don’t want to have on a laptop that goes to sleep such as long downloads

    I also have a MacBook Pro to use for work.

    Little computers are also scattered around or in closets. I have a couple of Raspberry Pis for single use cases.

    Over the years my projects have also required spinning up servers. I’ve always found it a chance to try new technology and so I have spread apps across a couple of AWS accounts, Digital Ocean and Heroku.

    Today I found myself spinning up yet another server. This one, to run an Ethereum test node. In retrospect it is something that I would have benefitted from doing weeks ago. Cloud servers benefit from gigabit network speeds and one click access to more performance than I can easily get at home. It would have literally saved me weeks of dealing with downloading and re-downloading, and a hundred dollars on a portable HD.

    Funny how back in my high school days I would have been happy with a Pentium 2 PC to share with the rest of my family. Now, not only is my desktop computer vastly better than that old PC, but I am personally running 10+ computers and if I had time to manage more I’d probably be.

  • A Surprising Year

    I was about to write a blog post about how 2017 was one of the least dramatic years, but then skimmed through my past 12 months of blog posts and realized just how much did happen.

    We didn’t move, or have another baby. However, these are some of the highlights:

    • Ada started school!
    • I learned to sail a keel boat, and got my marine radio licence
    • We got a new car
    • I finally went to a Python conference (in Montreal)
    • I hacked on a couple of fun personal software projects – fosterous & stock investing twitter bot, youtube video creation
    • I tried my luck at Forex trading
    • I rode the wave of crypto-currency
    • I almost lost a tooth
    • I completed 5, 5-day fasts this year
    • I travelled to San Francisco twice
    • We vacationed to Newfoundland
    • I managed to keep a daily journal habit
    • Halloween trip to Mount Tremblant
    • Weekend trip to Prince Edward County
    • Gave up alcohol for 6 months

    So, while 2017 lacked any major life-changing events, it was jam packed with living life to the fullest.

  • My Crypto Token

    This weekend I was in Montreal for the PyCon Canada conference. The first time I’ve been able to attend event though it’s something I’ve debated going to almost every year for the last decade.

    However, the weekend was cut short to work on something more interesting.

    I used some of my time this weekend to write my own Ethereum Smart Contract and start testing it for a little idea I’m working on.  Something I think could legitimately make the world just a little bit better for everyone.  A small benefit for a large number of people is a massive impact.  And big impact ideas are the ones that are the most worth doing.

    I’m hoping to share a little bit more as it takes shape in the next few weeks.

  • Alexa vs. Google

    I got in on the pre-orders for the newly announced Google Home Minis

    After playing around with the Amazon Alexa for the last few months I wanted to see what the differences would be.

    It’s clear after just a couple of days with the Google Home in the house that it is MUCH better. Google has done an amazing job with their voice AI.  A query like “tell me a scary story” works, and it additionally will play a spooky audio track behind the voice. It is less repetitive about repeating back things instead of just doing them too which seems a little bit more natural.

    It still seems like early days for this technology, but as it continues to get better I can see it playing a bigger role in how we do things. The biggest hindrance to it seems to be the difficulty in learning and discovering what it can do.

    Google should consider doing paid TV placements or something, otherwise the only way to learn the capabilities of these things is to go out of your way to find things to try.

    For now, I’ve got my smart plugs/lights connected to it, spotify for music and my gmail account for emails, calendars, shopping lists etc.

  • Not Infallible

    I’ve been reading the Walter Isaacson biography of Benjamin Franklin which is quite insightful both in terms of the genius of the man himself, and the historical perspective. One trait he had which I think I also share is a healthy appreciation of my own and everyone else’s fallibilities.

    In my world view the human body and mind are imperfect. We have aches and pains, need glasses, use hearing aids, suffer from kidney stones and other benign ailments. Our senses can trick us, optical illusions being a obvious example, colour blindness, numbness (or anaesthetics) deaden our sense of touch, hot and cold perception can be tricked. Inside our minds the fallibilities are numerous and complex: recall of memories is never exact (yet we are often adamant of their accuracy) and we are victims of a litany of cognitive biases that sway us from rational thought.

    With these imperfections in mind, I think it is healthy of have a slight distrust in our own opinions, and likewise to understand that everyone else is prone to the same human fallibilities too.

    Extending that concept. Everything in the world that is not derived from the laws of physics: law, business, art, finance, parks, music, government, building design, computer programs etc. are built on the pillars of ideas that come from human minds. All those things are also fallible in similar ways.  Government legislation is crafted by people with limited perspectives and therefore may have honestly unintentional and unforeseen consequences. It’s not necessarily the case that corruption or conspiracy is any more to blame than simple ignorance or under-appreciation of the balance of winners/losers for any given change that is made. However it is also worth considering that our opinion of the legislation may be based on incomplete perspective.

    The world is complex, trying to simplify it can be one of those cognitive biases we all exhibit.  I have accepted that my human mind has limits to the level of complexity it can comprehend, and that even within my domain of expertise – computer programming – what is ‘right’ is almost always just a matter of opinion.