Category: Technology

  • 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?

    (more…)
  • Navigating Evernote’s UI Hurdles: The Android Widget Experience

    Navigating Evernote’s UI Hurdles: The Android Widget Experience

    As a dedicated Evernote premium user since May 2010, I’ve witnessed its evolution and have largely benefitted from its robust note-taking and task management capabilities. However, a significant portion of my interaction with Evernote is through its Android widget, which, I’ve found, is not keeping pace with user needs, particularly in terms of its UI/UX design and functionality.

    This post delves into the specific issues I’ve faced, highlighting areas where Evernote could improve to meet the demands of its long-term users.


    Syncing Issues with the Android Widget

    One of the core issues I’ve encountered is the widget’s inconsistency in updating tasks. Unlike the seamless sync we expect in today’s app ecosystems, the Evernote widget often falls out of sync. This discrepancy means tasks updated within the app itself don’t always reflect on the widget, or the other way around. For someone who relies on immediate updates for reminders and tasks, this lag is not just inconvenient; it’s a deal-breaker.

    Clunky Task Addition Process via the Widget

    The process of adding tasks through the widget is far from intuitive. An evident example is the inability to set due dates directly when adding a task from the widget. This oversight forces a two-step process: you add the task via the widget and then have to open the app, locate the task, and edit it to set the due date. This cumbersome process undermines the very efficiency that a task management tool should offer.

    Lack of Customization in Task Display

    The widget lacks essential filtering options. It displays all todo-items, regardless of their due date status. This “all or nothing” approach leads to a cluttered and overwhelming widget view, especially for users who have numerous tasks, some of which might not be immediately relevant. The absence of filters to tailor what appears on the widget means you can’t easily focus on the tasks that require your attention for the day or week.

    Need for a More Condensed Design

    The current design of the Evernote widget is too spaced out, taking up valuable real estate on the home screen. A more condensed design would allow for more information to be displayed, enhancing the widget’s utility in a limited space. This is especially crucial for users who depend on a quick glance to stay informed and organized.


    The issues mentioned above with the Android widget reflect a broader concern: the gap between Evernote’s core functionality and its adaptability to user-specific needs, especially for those who, like myself, have shifted to a widget-centric workflow.

    While I’ve been a satisfied customer for over a decade, these UX and UI limitations are pushing me to reconsider my reliance on Evernote. It’s crucial for productivity tools to evolve with user habits, and in this aspect, Evernote’s widget seems to be lagging.

    As a call to action, I urge Evernote to address these concerns, ensuring that its widget is not just an extension but a fully functional and integral part of the Evernote experience. The potential for improvement is immense, and it’s in areas like these that Evernote can truly enhance its value for dedicated Android users.

  • 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"

  • Changing the default font-size on Ubuntu 12.04

    Changing the default font-size on Ubuntu 12.04

    Are you like me and feel a bit overwhelmed by the default massive font-size in Ubuntu? Well, if you’re on Ubuntu 12.04 you’re in luck. Since there is a really easy way to change this setting.

    Luckly and thanks to some helpful individual we have MyUnity. MyUnity is a simple little tool that let you tweek most of Unity in 12.04 without having to install gnome-tweak-tool. The usage is really straightforward and it’ll have you customizing Ubuntu in no time.

    This is how my default Ubuntu 12.04 looked like:

    Changing the font using MyUnity:

    And the result:

    It seems like this tool only work with 12.04 and older, so please read the appropriate documentation if you try and use it on a Ubuntu version below this. Also, i strongly recommend that you reboot your machine after doing the settings.

    Good luck and happy Ubuntu-ing!

  • How to get local files working with Ubuntu 11.10 and Spotify

    Running in to the pesky “no codec found” when trying to play your local mp3 files in Spotify when you’re on a freshly installed Ubuntu 11.10? The problem is that Ubuntu recently changed the Qt media backend from libavcodec to gstreamer. While gstreamer plays (decodes) mp3-files just fine, Spotify wont have any of it. 

    The solution is to manually add/install libavformat, libavutil and libavcodec52 from the previous Ubuntu version. Please notice that you need different set of files for the 32-bit and 64 bit version.

    32-bit Ubuntu:
    wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789249/+files/libavutil50_0.6.2-1ubuntu1.1_i386.deb

    wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789249/+files/libavcodec52_0.6.2-1ubuntu1.1_i386.deb

    wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789249/+files/libavformat52_0.6.2-1ubuntu1.1_i386.deb

    sudo dpkg -i libavutil50_0.6.2-1ubuntu1.1_i386.deb && sudo dpkg -i libavcodec52_0.6.2-1ubuntu1.1_i386.deb && sudo dpkg -i libavformat52_0.6.2-1ubuntu1.1_i386.deb

    64-bit Ubuntu:
    wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789247/+files/libavutil50_0.6.2-1ubuntu1.1_amd64.deb

    wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789247/+files/libavcodec52_0.6.2-1ubuntu1.1_amd64.deb

    wget https://launchpad.net/~ubuntu-security/+archive/ppa/+build/2789247/+files/libavformat52_0.6.2-1ubuntu1.1_amd64.deb

    sudo dpkg -i libavutil50_0.6.2-1ubuntu1.1_amd64.deb && sudo dpkg -i libavcodec52_0.6.2-1ubuntu1.1_amd64.deb && sudo dpkg -i libavformat52_0.6.2-1ubuntu1.1_amd64.deb

    No Spotify-restart required, it just works ™.