What software development means to me
I'm a competent mathematical problem-solver, but what does that mean for software development? This week I've been exploring
- agile simplified: do what is valuable, make a working product quickly without interruption, trash it if necessary, and collaborate
- use right tools for the job? prioritize working code over methodologies and documentation (though Rust does the latter so well by default)
ripgrep
has been the best grep
for years, but grep
is best for projects with mixed encodings- CI/CD is actually pretty easy (this site is also on a pipeline!)
- only commit working code that is better than the previous version
- monads: I'm finally enjoying category theory!
- this means your type system has some consistency and structure that you probably want desperately
- Rust's
Enum
handles this beautifully, I'll explain more later - I'll get around to Haskell eventually 😇
- There is no happy/sad path, only valid and invalid states
Box, Rc, Arc
are alien at first, but so is anything novel- constexpr is overrated and a bit messy: is the design is wrong?
- is Circle the savior of C++?
- static analysis will not save us. That's your compiler's job
- side-effects: your function signature should tell the whole story
- but this is not enough!
- when you want to multithread, your functions should minimize side-effects
- when you want to maintain,
mut
is the correct default maps
, iterators
, collecting
Chore list
I want to
- clean up my homepage
- parallelize my
MCTS Ramsey
project
todo!("thread-local argmax graph");
todo!("immutable ScoreKeeper");
todo!("n_(a,g) -> n_ag");
todo!("clippy compliance");
todo!("open pictures in UI");
todo!("do I have enough g6 tests?");
todo!("on-the-fly tikz with wsl?!");
todo!("optimize the guess graph");