Here are some of my thoughts...

Experience
Feel Lucky

I would give Firebase a miss for now especially if a bit of server side code (called Cloud Functions in firebase).

Cold start, the delay incurred when a function hasn't been used in a while, is a killer and can't be over come by paying for a plan.

Admittedly Firebase is in beta although they still provide payments plans...

More Like This

I recently implemented a 'context service' for the PocketLab web app which has proven to be very useful for multiple reasons.

The service, which is part of an angular web app although assumably could be used in most front end web frameworks

  1. Listens on URL changes
  2. Constructs a context from the new URL
  3. Publishes the context through an Observable.

In the web app I am working on the context consists of the object currently being viewed and the hierarchy it exists in as well as some more broader information such as login status and PocketLab device in use.

Amongst other things this is useful for providing information to UI components that help the user orientate themselves within the app and for sending a lot of rich data to Google Tag Manager.

More Like This

I find the lifecycle of angular services to be quite anti-intuitive when down in the weeds with lazy loaded modules.

If I have a service declared in a lazy loaded child module and that module is loaded the service is instantiated and according to the documentation and pretty much everyone who has wrote on the subject should live for as long as the associated injector (and thus module) lives unlike a module directly imported which I understand shares the injector and thus the services will be available app wide for the lifecycle of the entire app.

I have found that if a lazy loaded module accessed through a router outlet is navigated to from the same lazy loaded module through a different router outlet which effectively wipes the previous base component of the module, the component is redrawn but the service from the previous module and assumably the actual module itself sticks around. The question then is for how long?

More Like This

All thoughts are now stored exclusively in a Lucene index and managed by Elasticsearch. I am still using Postgres to manage authentication.

The main motivation for using Elasticsearch is the 'More Like This' feature which link thoughts together automatically.

More Like This

I think I will start learning machine learning

More Like This

To improve the utility of the Doing widget I should start using it more for personal tasks. I think the task description, which for work items I currently don't read very often, would be more useful and I would engage with the actual content on the widget rather than the colours and the notifications.

To encourage we to use it for personal tasks I think the following improvements might help.

  1. Make it easier to enter thoughts. This can be done by
    1. Making 'Add Card' work offline
    2. Add new cards to 'This Week' or 'Today' depending on which one is current in view.
  2. Notifying the user when 'This Week' and 'Today' lists are empty in certain time windows.
More Like This

Static Age by the Misfits took some listening to to get into but I am very fond of it now.

More Like This

In Inadequate-Equilibria Eliezer Yudkowsky argues that the efficiency of the economic system and the number of people in the world means that there isn't any low hanging fruit when it comes to converting an idea into something profitable.

Although things are in a state of Nash Equilibrium everywhere the incentive structure in place means that these states can't be resolved in a way that makes money otherwise it probably would have happened already and it wouldn't really be in Nash Equilibrium. Or something like that.

More Like This

Some processes I perform during the day that I might be able to improve on are:

  1. Making coffee
  2. Exercising
  3. Reading
  4. Making dinner
  5. Programming
  6. Managing projects
  7. Betting

Improvements could entail

  1. Making the process faster to perform
  2. Making the result of the process better
  3. Achieving more enjoyment from the process

For each process one type of improvement may be more desirable than another. For example, I don't want to speed up my coffee making as I use it as a chance to take a break from looking at the computer screen but I do want to speed up project management as it would give me more time to do something I enjoy.

More Like This

Although I believe a more liberated engineer (free from excess social, bureaucratic and traditional processes) generally makes for a more for-filled and ultimately more productive engineer it can also be helpful to use self imposed mechanisms to guide behavior where human tendencies can lead us down unproductive paths.

An example of this is a widget I created for android which connects with my Trello boards, sits on my home screen and has the following features:

  1. A Doing section, (scrollable) Today/This Week section and Clocked off section which track corresponding lists on all Trello boards and present the cards present in these lists.
  2. Ability to move the cards between lists as well as into the 'Todo' and 'Done' lists which are present in Trello but not presented in the widget.
  3. Triggers notifications and alarms when amongst other events the following happens
    1. A card sits in 'Today' after the day is complete
    2. A card sits in 'This Week' after the week is complete
    3. A card sits in 'Doing' outside work hours
    4. There is no card in 'Doing' during work hours

The alarms and notifications have a pavlovian effect and can be made to quite unpleasant by adjusting vibration length and sound thus increasing the effectiveness.

More Like This