I'm surprised nobody's mentioned spreadsheets - specifically Google Sheets or something scriptable and hosted. Recently I've built up a small system which sucks in data from a few places (fitness, task management, calendar,..) and analyses it against several goals I've set. This means I can see how I'm progressing towards what I want without even touching it anymore. They're a really nice UI for bootstraping projects…
Ask HN: What overlooked class of tools should a self-taught programmer look into
331–340 of 416 posts
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#332I would recommend learning the SOLID [1] design principles. I've found them to be a very helpful guide when designing software components. [1] https://en.wikipedia.org/wiki/SOLID
Particularly the S — the Single Responsibility Principal. So much messy, convoluted code is convoluted because it lacks a singular, clear purpose, and bundles up multiple responsibilities into one section of code, be that a module, class, or whatever is appropriate to your language. They're all good, and you'll get good insight from them all, but I think that first one is more important and has provided me more value…
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#333Read the curriculum of an undergraduate computer science course and read up on the things you haven't heard of. Some courses will even have lecture notes available. E.g. these four pages are the university of Cambridge masters in computer science: https://www.cl.cam.ac.uk/teaching/1819/part1a-75.html https://www.cl.cam.ac.uk/teaching/1819/part1b-75.html https://www.cl.cam.ac.uk/teaching/1819/part2-75.html https://www…
Do Cambridge courses not have labs/projects? I looked at the course materials on a few of the courses and couldn't find any. Or are they given out to students separately?
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#334Earlier quoted context omitted.
I'm now torn between reading this one first or the Architecture of Enterprise Applications.
I loved Designing Data-Intensive Applications. It gives you the reasons why NoSQL databases exist and the problems they solve. Moreover it gives you reasons to select one over another. It's really excellent and one of my top two CS books
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#335Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#336Earlier quoted context omitted.
I'm also occasionally using Docker t generate build artifacts (so +1 for that) - how do you pull the built blob out of the image? I've used `docker exec` plus `docker cp`, but it feels a little clunky.
You can just mount a volume and write the blob into it, very easy and convinient!
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#337tldr: redis Hey man, I went down an eerily similar path as you. Seld taught and building a trading system. Wading thru sockets and pipes before discovering zmq and having my whole paradigm for programming completely shifted. Absolutely love zmq, and enjoy thinking of new projects to use with it. More towards your actual question, I don't think it's as ground shifting of a discovery as zmq, but Redis has also helped m…
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#338Earlier quoted context omitted.
> If you're already using a Vagrant or Docker-based development workflow, WSL doesn't really add much, and takes some things away. I/O performance, for example. I've been actively using WSL for over a year along with Docker and set up the Docker CLI in WSL to talk to the Docker for Windows daemon. Performance in that scenario is no different than running the Docker CLI in PowerShell, or do you just mean I/O performan…
I find that it depends a lot on what you're doing. The real problem with WSL is I/O latency. It's acceptable for relatively infrequent file access, but will eat you alive if you're doing anything that involves lots of random file access, or batch processing of large sets of small files, or stuff like that.
That's dealing with 10k+ line projects spread across dozens of files quite often, and even transforming ~100 small JS / SCSS files through Webpack. It's all really fast even on 5 year old hardware (my source code isn't even on an SSD either).
Fast as in, Webpack CSS recompiles often take 250ms to about 1.5 second depending on how big the project is and all of the web framework code is close to instant to reload on change. Hundreds of Phoenix controller tests run in 3 seconds, etc..
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#339Earlier quoted context omitted.
I don't know. Since git uses content-based addressing, you can't actually alter any commit, only create new ones. And orphaned commits don't get garbage collected for like 30 days even if you explicitly tell git to clean things up. So, the original stuff will still be there. It might just not be obvious how to access it. Part of the commit is the reference to zero or more parent commit object ids. So, if you find the…
Here is an example of how to create a problem. You rebase your private branch off of a shared master and pull in other people's commits. Someone else pushes out their rebased version using force. More commits are made on top of the other people's commits, including reversing some bad commits. You try to rebase off of the shared master. In your last rebase, you are trying to replay all of the commits in your history t…
Absolutely not. Force pushing a shared master is probably the worst sin one can commit with git. I guess you already have come upon the 'why' of it.
A "Rebase workflow" works so that devs use rebase to 'move' their work on an updated master after a pull/remote update, resolve potential conflicts locally, and do a fast-forward push to origin/master. This also works on copying work between different feature branches just as well.
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#340Earlier quoted context omitted.
I find that it depends a lot on what you're doing. The real problem with WSL is I/O latency. It's acceptable for relatively infrequent file access, but will eat you alive if you're doing anything that involves lots of random file access, or batch processing of large sets of small files, or stuff like that.
I just haven't seen that as a problem in my day to day as a developer working with Flask, Rails, Phoenix and Webpack. That's dealing with 10k+ line projects spread across dozens of files quite often, and even transforming ~100 small JS / SCSS files through Webpack. It's all really fast even on 5 year old hardware (my source code isn't even on an SSD either). Fast as in, Webpack CSS recompiles often take 250ms to abou…