Category: Technology

  • How I finally fit AI into the way I build software

    How I finally fit AI into the way I build software

    For a long time, I used AI the way I think many developers started using it. Chatting with ChatGPT, asking questions, poking at what it could do. Later, I brought it into my editor, Zed and VS Code, as autocomplete. Then the slow move over to terminal based AI assistance. Useful, sometimes even impressive. But it didn’t feel natural.

    I think part of the problem was how I was thinking about it. AI as the “Lovable model”: one prompt in, an okay-ish app out. Interesting, yes, but I could never wrap my head around that as a serious workflow. A rough app from a single prompt is still a rough app.

    The shift came when I stopped thinking of AI as autocomplete or a one-prompt app generator, and started treating it more like a engineer on my team. Not someone who owns the product, the architecture, or the decisions, but someone who can work extremely well inside a clear frame.

    That’s when it started fitting with how I already work.

    (more…)
  • How AI made leaving Evernote finally worth it

    How AI made leaving Evernote finally worth it

    For about 15 years, Evernote was one of the few apps I genuinely loved. I started with notes, then shifted to using it heavily for tasks and reminders as well.

    (more…)
  • Is the SaaSpocalypse real, or is it just a squeeze?

    Is the SaaSpocalypse real, or is it just a squeeze?

    There is a lot of noise right now about the SaaSpocalypse. Depending on who you listen to, AI is either about to destroy the software industry as we know it, or this is just another market panic dressed up as a technology story.

    I’ve spent close to 30 years building software, and much of that time has been spent building and managing products used by millions of people. So I’m not particularly interested in looking at this as a stock market story, or making dramatic predictions about every large SaaS company suddenly disappearing. I’m more interested in looking at it from the builder’s side.

    (more…)
  • What if the next programming language isn’t for us?

    What if the next programming language isn’t for us?

    We’ve spent decades optimizing programming languages for humans. Nicer syntax, higher-level abstractions, better type systems and better tooling, all in service of human authors. But something is shifting. Increasingly, we describe what we want and AI writes the code.

    If that continues, there’s a question I can’t shake:

    If AI becomes the primary author of software, why would the next programming language still be designed for us humans?

    (more…)
  • Four things wrong with the Evernote Android widget

    Four things wrong with the Evernote Android widget

    I’ve been a paying Evernote user since May 2010. For most of that time I’ve been happy with it. But almost all of my day-to-day use goes through the Android widget rather than the app itself, and the widget hasn’t kept up.

    Four things bother me. None of them are dramatic on their own. Together they add up.

    (more…)
  • How to trigger and run Firebase scheduled functions from localhost

    How to trigger and run Firebase scheduled functions from localhost

    Every wonder how to trigger Firebase scheduled (pubsub) functions directly from localhost during development? It’s actually quite easy, but for some reason not very well documented.

    Start by installing Firebase CLI:

    npm install -g firebase-tools

    Setup local Firebase emulators:

    firebase init emulators

    Make sure that your firebase.json has a pubsub port defined.

    "emulators": {
      ...
      "pubsub": {
        "port": "8085"
      }
    

    Start your local emulators:

    firebase emulators:start

    Shell into the running Firebase emulator instance

    firebase functions:shell

    You can now trigger any functions.pubsub.schedule directly from this prompt. E.g:

    scheduleNotifier();

    You’re now able to significantly improve your firebase function development, since you can trigger the scheduled functions interactively.

    firebase > scheduleNotifier();
    'Successfully invoked function.'
    firebase > >  No matching documents.
    >  Notifier done: 0
    
  • How to check a DNS TXT record using OSX Terminal

    A lot of services today authenticate DNS via TXT records and i find myself looking for web-services that checks those values for me. However, doing this will only give me the DNS record(s) for the DNS where the service is running, not actually my local DNS response.

    Doing this via the Mac/OSX Terminal (command line) is trivially easy:

    dig -t txt domain.com

    Which will give you the TXT record for the specified domain. You can change the “txt” part to any other DNS parameters.

  • How to fix “Unprotected Private Key File!”-errors when trying to connect to a EC2 machine

    Most Amazon EC2-users run in the to pesky “Permissions XXXX for ‘xxx.pem’ are too open. It is required that your private key files are NOT accessible by others.”-problem from time to time. And the solution is surprisingly simple.

    Since you are trying to access a machine using a private key, SSH requires that this key is only readable by the current user. This is to ensure that no-one else on the system can access this file and use it.

    Simply change the permission of the .pem file to 400, which means that it’s only accessible by your user and the problem will be fixed:

    chmod 400 xxx.pem

  • Getting Nvidia-drivers to work on Ubuntu 12.10 – Quantal Quetzal


    After installing Ubuntu 12.10 Quantal Quetzal on my development-machine i noticed that i wasn’t running on the Nvidia drivers for my GeForce GTX 560 Ti. And to make matters worse, the proprietary drivers didn’t work either. So i set out on a Google-hunt to find myself a solution.

    It seems like there currently is a bug in 12.10 which caused the Nvidia drivers to fail. Regardless for which repository (ppa:xorg-edgers/ppa etc) you’re using and if you’re using the latest version (304.32).

    Problems seem to be within the kernel, so you need to install the generic kernel including its headers. Then remove the current Nvidia-drivers and re-install them. Sounds complicated? It’s not, just run the commands below and reboot.

    Edit: Notice that you need to do this each time there is a new kernel upgrade in Ubuntu. So currently you should replace linux-headers-3.5.0-17-generic with linux-headers-3.5.0-25-generic in the instructions below.

    Jump over to a terminal
    Ctrl-Alt-F1 and login as your username.

    Install linux source and headers, make sure to use the current kernel version
    sudo apt-get install linux-source
    sudo apt-get install linux-headers-3.5.0-17-generic

    Uninstall nvidia driver
    sudo apt-get remove nvidia-*

    Reinstall nvidia driver
    sudo apt-get install nvidia-current-updates

    If it successfully installs, restart the computer
    sudo shutdown -r now

    This solved my problems with my GeForce GTX 560 Ti and i’m now running 12.10 in full GPU acceleration.

    Source:
    http://askubuntu.com/questions/202677/nvidia-driver-doesnt-work-in-12-10

  • Changing font-size in Ubuntu 12.10 without MyUnity

    Since MyUnity isn’t available yet in Ubuntu 12.10 Quantal Quetzal i though i’d write a quick update to my previous post which isn’t working on Ubuntu 12.10.

    The process is fairly simple, just run the command below and adjust them to whatever your preferred settings are.

    Just keep in mind to double-check that the fonts you’re using are indeed install. Otherwise you’ll end up in a world of hurt when you reboot.

    gsettings set org.gnome.nautilus.desktop font "Ubuntu 10"
    gsettings set org.gnome.desktop.wm.preferences titlebar-font "Ubuntu Bold 10"
    gsettings set org.gnome.desktop.interface document-font-name "Ubuntu 10"
    gsettings set org.gnome.desktop.interface font-name "Ubuntu 10"
    gsettings set org.gnome.desktop.interface monospace-font-name "Ubuntu Mono 11"