A to-do list, how novel! Practicing some Golang based on Dreams of Code's list of golang projects.
- cobra for the CLI,
- fyne for desktop notifications,
- fuzzy for fuzzy searching,
- progressbar for guess what, a progress bar on the pomodoro subcommand,
- huh for the add subcommand form,
- bubbletea for interactive listtui subcommand list,
- and viper for config management.
( terminalizer used for example gif-ing. )
- How golang opens, closes, writes and reads from files, including permissions.
- CSVs are handled weirdly in
encoding/csv-- why no update record function? - Lots of string manipulation and printing.
- First CLI from scratch in Golang, whoo.
cobraandcobra-cliare very nice to work with from the ground-up.- Scopes and shadowing are tough, Golang is nice and typed and it was occasionally tough moving from a lot of Python.
- Managing concurrency is made easier by Go, but it still can be hard to get ahold of all the moving parts. It's important to ask yourself if you really need concurrency and its complexity or can deal with a blocking operation/different performance characteristics.
- Using a debugger for concurrent operations is helpful but reading the debugger output can be tough.
- Note to self: keep track of what is being exported and not, as well as directory structure. It can bite you later.
bubbleteais super fun to mess around with once you get in the mindset of the Elm architecture paradigm!
- Break code up into functions more
- Write tests
- Build out and integrate the
remindsubcommand more. - Move to a proper DB
- Flocking
- Fully convert to a TUI including launching cobra subcommands from bubbletea
- Deployment and DevOps stuff, after all I am a DevOps engineer <3

