HN user

vbsteven

1,971 karma

Freelance software development and cloud infrastructure.

I'm always interested in talking to people about autism/adhd/burnout issues in tech.

Email me at (hn username without vb prefix) @ quantus.io

Posts33
Comments511
View on HN
stevenvanbael.com 5y ago

The open calendar, task and note space is a mess

vbsteven
2pts0
youtu.be 6y ago

Final Fantasy VII Remake Tactical Mode Rebuilt in Unity

vbsteven
2pts0
github.com 6y ago

Druid – A data-first Rust-native UI toolkit

vbsteven
40pts0
www.javaadvent.com 6y ago

OpenJDK 11, Tools of the Trade

vbsteven
2pts1
blog.digitalocean.com 7y ago

DigitalOcean Kubernetes Is Now Generally Available and Getting Even Better

vbsteven
7pts0
github.com 7y ago

Kubit – CLI tool for switching between kubernetes configs

vbsteven
1pts1
github.com 7y ago

Flutter desktop embedding

vbsteven
3pts0
stevenvanbael.com 7y ago

Profiling Zsh startup time

vbsteven
1pts0
stevenvanbael.com 8y ago

Back to basics: A minimalist website

vbsteven
3pts0
github.com 8y ago

Rust Qt Binding Generator

vbsteven
206pts42
news.ycombinator.com 8y ago

Ask HN: Native alternatives to Electron

vbsteven
5pts1
hackernoon.com 9y ago

AWS secrets and other keys found in decompiled Android apps

vbsteven
1pts0
medium.com 9y ago

I was offered $1M for my Go package – and I said No

vbsteven
2pts0
github.com 9y ago

Show HN: Req-cli, HTTP request template tool

vbsteven
6pts0
www.stevenvanbael.com 10y ago

Read about the software you use

vbsteven
2pts0
github.com 10y ago

VerbalExpressions – Regular Expressions made easy

vbsteven
2pts0
www.nateberkopec.com 10y ago

Hacking Head Tags for Speed and Profit

vbsteven
24pts14
vbsteven.com 11y ago

4 months on the Play Store with a niche productivity app

vbsteven
4pts1
androidfocusapp.com 12y ago

Show HN: AndroidFocus – an OmniFocus client for Android

vbsteven
12pts8
news.ycombinator.com 12y ago

Ask HN: Freelancing for equity

vbsteven
3pts3
www.jini.co 12y ago

2013 in review and 2014 resolutions for Jini, the contextual data platform

vbsteven
1pts0
support.apple.com 12y ago

OSX Mavericks Mail update improves gmail support

vbsteven
4pts0
www.slideshare.net 12y ago

Privacy is an illusion and you're all losers

vbsteven
1pts1
cryptocow.com 13y ago

Taking anti-forensics to the extreme. Introducing the Fricosu Key.

vbsteven
3pts0
www.summerofcontext.com 13y ago

What will you build on a contextual data platform?

vbsteven
1pts0
andedit.com 13y ago

Show HN: Andedit 2, a text editor for Android

vbsteven
26pts20
www.filipmaertens.com 14y ago

Focus. Focus. Focus

vbsteven
1pts0
github.com 14y ago

Err - the pluggable jabber bot

vbsteven
1pts0
vbsteven.com 14y ago

Android fragmentation is a feature, not the big problem everyone says it is

vbsteven
82pts35
opdebeeck.org 14y ago

Computing Schizophrenia and the Future of the Mac

vbsteven
15pts5

Currently I'm doing JVM only using Retrofit and Jackson instead of Ktor. Mostly because I know the JVM ecosystem best and supports all my target platforms. It's delightful to work in a big monorepo that shares API models all the way from the backend to the clients.

The backend and client libraries will be fully open source. That's the only way a self-hosted project like this can work.

I'm not sure about the android/desktop apps. I might keep them commercial for a bit to experiment with an open-core monetization strategy.

Give me a couple weeks to iron out architecture details and write some design docs and then I'll publish the project on GitHub. Shoot me an email if you're interested.

I did not succeed yet and iOS was indeed holding me back to use Java (or Kotlin, my preferred JVM language). Since a few weeks I've ditched my iPhone because of to the upcoming CSAM scanning changes and I'm back on Android.

By dropping iOS as a requirement, Kotlin/JVM is feasable again for all my personal target platforms and I've decided to use that as the main language for my system.

This is what I concluded as well. The end goal for my desired system is to make it straightforward to hook into events so I can add automation.

This turns out to be very hard to do based on CalDAV/WebDAV protocols because many clients and services implement the spec differently or only parts of it.

That's why I switched my approach and I'm writing my own backend storage layer that has my desired event system builtin on that layer (Using Kotlin/JVM for the backend, postgres for storage and MQTT for pub-sub to events). On top of that storage/api layer I'm building CalDAV/WebDAV support so external clients can connect to it.

Having my own HTTP+MQTT API makes it a lot easier to build modern clients as well. In fact because I chose Kotlin/JVM as my baseline and have already written a pure Kotlin client library I'm making a lot of progress on both desktop, android and cli tools to interact with the system.

It looks like I missed the option to set an htpasswd file directly on the radicale server. After a second look at the Radicale documentation it looks like it supports both, htpasswd directly on the server or configured on the reverse proxy.

Author here, let me nuance a little bit what I mean with "cross-platform world".

It's 2021 and there are 3 major desktop and 2 major mobile platforms, plus some smaller ones on each side. And then there is the Web, which is both mobile and desktop focused.

If you're going to write a new library that you want to use on all of these platforms, you need a programming language that works on all of these. For iOS Java is a non starter because as far as I know there is no proper JVM that can be used in App Store apps. C can target all these platforms (including the web using WebAssembly) but it is a major pain to setup the tooling for every platform, especially if your library needs complex dependencies for things like SSL.

I am not a Rust zealot that advocates rewriting everything in Rust. I only mentioned Rust once in the whole article so your "obviously" comment doesn't really hold. The reason I mentioned Rust as a language for my project is because it is one of the modern languages that have cross-platform building and dependency management builtin from the start. It is a lot less work to write an SSL-enabled library in Rust that can be used on all these platforms than it is to write one in C.

Actually my business email is currently setup like this. I have a business o365 account and use Outlook on Windows/MacOS/android/iphone and Thunderbird on Linux.

But I want to move away from it because I want to 1) gain control over my data and 2) extend the system with automations.

Thats why I started researching open source and self hosted alternatives.

I'm the author of the article, it's always fun to see your own articles pop up on HN unexpectedly.

This post was written several months ago and in the meantime I have given up on trying to cobble something together using existing solutions because they don't provide the extensibility that I want.

I'm building my own replacement from scratch focussing on tasks/projects/calendars first. The architecture is a postgres db exposing CRUD API endpoints and all changes are broadcasted over MQTT so I can easily hook into everything for automation and extension.

I have a desktop application in JavaFX and a mobile Android app so I can use Kotlin as one language across all clients and backend. Lots of code sharing going on for things like API models.

The Spring framework (Java) does the same thing for controller methods. If you need an authenticated user, or a model object, or a path variable, just add it to the method signature and the framework will provide it.

I don’t know if there is a term for this concept. I’ve always seen it as some form of Dependency Injection/IoC but at the method level instead of object creation.

IIRC the Actix web framework in Rust does something similar for handler functions.

I should have know that. Now I understand what you meant in your first comment.

As long as the app doesn’t rely on Play Services it shouldn’t be a problem. By “degoogled” phone I mostly mean taking Google out of the critical (privileged) path in the OS for software and app updates.

Is there a specific reason for this? Does the Fitbit app rely on Play Services?

I don’t care too much for on wrist calls or anything like that. I just want to use the Fitbit app to sync stats and mostly display notifications from WhatsApp and my personal apps.

I’m thinking about buying a degoogled Android phone to replace my iPhone. The main things I want are:

* Spotify needs to work over Bluetooth in my car

* WhatsApp needs to work (preferably with push notifications)

* I need the Fitbit app to work so my watch can show push notifications from my personal apps

* a network-based location provider to be consumed by my personal apps (I’m working on a personal data and automation suite that relies on frequent smartphone location updates)

Is this something that can be done with CalyxOS on a Pixel? Can other Android flavours like GrapheneOS or LineageOS do this?

And aside from Android, how far along are other “mobile linux” smartphones for use as a daily driver with regards to the above points?

I’m not familiar with their product line but from reading just this comment I would guess that old devices that lose connectivity get a full new device and devices with WiFi losing partial connectivity get coupons and credit for their inconvenience (caused out of Amazons hands through the carriers)

That sounds like a fair deal to me. Although it’s pure speculation. I haven’t checked if that is actually the case.

The Remarkable 2 runs Android and has a USB-C port so it might support a wired keyboard.

Although I’m not sure if the screen refresh and cpu are fast enough for comfortable typing. I already get frustrated using the onscreen keyboard for typing a 10 character notebook name.

I enjoyed the article and it was very clear to me. Thank you for writing it.

Singling out details and sidetracking the comment thread about this one detail is just a thing that HN tends to do frequently. Usually the first few comments determine the tone/topic of the thread instead of the article itself. Which is not always bad.

This is similar to what I do but in my head the escalator goes down instead of up.

When editing (mostly C-like languages) I can "see" the execution thread pass through the code like a step-through debugger. At a function call I can mentally "step into" the function and the function is visualized to the right of the current function with its first line on the same height as the call site. Doing this for recursing functions means a visualization that progresses downwards and to the right.

I guess my mental model evolved this way after years of step-through debugging.

Mental models for code and other things are a fascinating topic. I also have a very specific calendar/timeline model that is not a straight line at all. A full year "view" arranges months in a 2D layout where some months progress "up", others "down" and they are connected in weird ways. For example 31/01 and 01/02 are adjacent, but 30/11 and 01/12 are not. 31/12 is the last box of the year and is adjacent to 01/01 repeating the pattern for the new year.

It could also be a partial IQ score of 80. IQ tests are divided in 4 key areas each scored separately. If all 4 scores are similar they can be averaged to get the final tested score. If they are not it’s called a “gap” and the average score is meaningless.

With gap results it’s not uncommon to see 2 low areas scoring 80s and 2 high areas 120 or even 130+.

“A developer declaring a tested IQ of 80” could be a gap case and somewhere along the way the nuance got lost in translation.

The FFX example stood out for me. It looked much smoother, less jagged edges from what I remember playing it on PS2. Although there was an HD remaster for PS4. I don't know which assets were used.

I wonder how people using a keyboard like this handle numbers and function keys?

My daily keyboard is an OCZ Vortex 3 which has a dedicated numbers row and above that a row with ESC/F1-12. I cannot imagine using a keyboard that does not have these two rows. Mainly because my IDE/Vim/Tmux configs are heavily customized to use F1-F12 and <C-$num> for common actions.

Something lightweight like MQTT is also well suited for this. It was originally designed for telemetry messages in IoT situations but it also supports websockets so it can be used in web applications or browser extensions.

In an interview with Sporza he said on day 1 he had knee issues because his cleat slipped. On day 2 he rode through the pain. On day 3 he wore sandals on his trip to a shop and noticed his knee didn’t hurt. So he bought flat pedals and continued on those using the sandals.

He also said the shop did not let him buy only the pedals so he bought the whole bike just for the pedals.

Mortons Alt Tour was a charity event to raise money to donate to World Bicycle Relief. More info and a donation link can be found on https://alttour.ef.com/

I couldn't find any links to this page in the article.

Some YouTubers tried to join him on his ride. One example can be found here: https://www.youtube.com/watch?v=0bmFa3xsnr8

Also noteworthy is that he had some issues with his shoes/pedals in the first days. After which he completed the tour on flat pedals and sandals!

Another interview and video: https://sporza.be/nl/2021/07/12/de-avonturen-van-lachlan-mor... (site is in dutch but the interview is english)

Against SQL 5 years ago

Most of this opinion comes from “SQL” being vendor-specific. Is JSON vendor-specific? Is anything else, that we actually use by choice?

Two things that come to mind are Markdown with all its flavors and Regex with multiple engines.

edit: and to a lesser extent maybe C/C++ compilers and JS engines.

edit2: also JVM, Python and Ruby runtimes

But both edits describe technologies with an official spec and slightly different implementations. Markdown/Regex are more comparable to SQL because they have vendor-specific syntax.

It depends. Many small projects I'm involved in already have a docker-compose.yml with database, backend and other services. Combined with a private docker registry somewhere (Gitlab, ECR). If that is available I will use docker to deploy.

If that is not available, then it depends on how complex the dependency graph is. If it is simple and I can just `apt install` all dependencies then I'll wrap the install in an Ansible Playbook and use systemd. If not I create my own docker-compose.yml for deployment.

edit: when multiplexing multiple projects on the same host (happens with very small projects) I always use docker.