From novice to master, and back again (2013)(blog.djmnet.org) |
From novice to master, and back again (2013)(blog.djmnet.org) |
> we don't have to figure it out - we just need to remember what we did
I always tell people: "You think I wrote this manual for you, but I'm not that altruistic. I wrote it for future me."
To be fair, not exactly the same thing. I typically remember I wrote it, just not what it does or how it works. :-)
you get into a task, you cram stuff in as you go, you finish it, and then you dump everything go onto another task.
i find my most valuable skill is to slow the pace to ensure retention of information
The most depressing thing is being presented with an issue and finding my name attached to a closed ticket from years before with no explanation of how I fixed it.
Guess what, current me, you're going to learn this again from scratch because past me was in a hurry and couldn't be bothered to type out what he did.
BSG - this has all happened before, and it will all happen again.
That's probably how early Alzheimer feels.
I think that the Internet has modified how our brains retain information. I don't think this is an original idea, but I've observed that I'm real good at indexing where I saw some piece of information and very poor at storing the actual piece of information. I have to physically write things down to commit them to recallable memory.
Debian (stable, at least) doesn't use his version anymore. The HISTORY section of the current manual says
> This su command was derived from coreutils' su, which was based on an implementation by David MacKenzie. The util-linux version has been refactored by Karel Zak.
Granted, I have specific code tells, which helps, but like the article mentions I have forgotten the why or the bug that I fixed that required specific changes.
Back in the age of modems, when PPP was still the new hotness, I was proud of myself for memorizing the IP addresses for a few of the services I used regularly. Two or three times I got to punk my friends when the DNS servers got messed up, and they’re sitting with me in the computer lab wondering what else we could do to pass the time when they looked over and noticed that I’m happily typing away in the very thing they couldn’t get into because The Internet Is Down. No man, it’s just DNS.
Older, sadder but wiser me knows that I still could have done that joke if I had written the numbers on a scrap of paper. I could have had twenty instead of five.
From Novice to Master, and Back Again - https://news.ycombinator.com/item?id=9098635 - Feb 2015 (1 comment)
From Novice to Master, and Back Again - https://news.ycombinator.com/item?id=8443981 - Oct 2014 (27 comments)
the difference is that nothing I've ever worked on will ever be public or useful beyond a small private business which doesn't even exist anymore.
I still get nerdsniped though if certain people start copying my idioms and introduce bugs, because this looks like something I would write but didn’t.
edit: or the program the man page is documenting!
No matter how many times you do it, you will have to re-learn it every single time.
If you write code do yourself a favor and write for future you. It'll help.
2. Google it.
3. Find answer on stackoverflow.
4. Try to upvote.
5. "You can't vote for your own post."
This has happened to me multiple times.
I was discussing how the only info I found was in a remote wikipedia article, yet incomplete. the guy told me he had written that article too.
good times
I wish there was even better way to preserve the context of what you were doing at the time (env variables, current path at the time etc).
PS: be sure to always have a -—help option that describes the function, just as you would do when programming
Before I began my studies in Zen, I thought a tree was a tree and a stone, a stone.
When I started to study Zen, I could see that a tree was not a tree, and a stone was not a stone.
Now that I am a Zen master, I know that a tree is a tree and a stone is a stone.
-- Source: my buddy in college
I think you come full circle to learn that you can only keep so much in your head at one time and that you're always in some sense loading up what you need for the next month or three. At least this time you knew to look for the man su command, and remind yourself of the work you did, that you shared with all these other people.
ln -s /foo/bar/baz
will create a soft link in the CWD named baz, pointing to /foo/bar/baz.So you see, if you know that you can always skip the destination, then, logically, the source must be the first one!
but yea, it took me many years to wire down ln's target link_name semantics for some reason.
what helped for me was to reason about the single argument form. ln -s ~/opt/junk/bin/thinger creates a link to thinger in the current directory. this single argument form is easy to remember, if you want to create a link of course you have to specify the name of the target (from which the link name will be inferred) and since it's the only argument it has to be the first one. now if you want to give it a different name, put the name in obvious still open place, the second argument.
If bash has something like that I’m still missing it.
Obviously the brevity of bash can be its own power.
Anything more than trivial I do in a high level programming language like Go (previously I would use Ruby or Perl).
From everything I’ve seen PS is a nice direction to go in.
I wish there was a sudden upheaval and everybody used a shell that wasn’t so legacy-cruft-laden.
For scripting you can always use Python, which is lightyears ahead of PS.
Before enlightenment: chop wood, carry water
After enlightenment: chop wood, carry waterIt is true in the sense that 1 and 0 are common representations for true and false in computer science, but really, it is false and almost certainly establishes magical thinking in the layperson.
Modern computers run on electricity, and in electrical circuits such as computers, true/false is represented as a transistor semiconductor being in a conducting or non-conducting state. Current can either flow, or it can’t.
In fact, one could build a computer out almost anything that lends itself to both being on and off, and to being controlled by its on/off state (or that of another equivalent assembly).
junior dev: python is so cool!
senior dev: python is slow. No type checking. The syntax is garbage.
John Carmack: I write a lot of python and I use it exactly for what it is good for!
The idea behind the story is quite fascinating to me. If simulationists are right, it's as good or better of a "why" as "origin seeking" IMO. Not that I believe one way or the other, I just think the idea's interesting to ponder on.
https://github.com/sudo-project/sudo/blob/SUDO_1_9_9/plugins...
But this particular message was removed in sudo 1.9.10:
https://github.com/sudo-project/sudo/commit/6aa320c96a376136
This is especially frustrating because your question is likely to pop up first in your search results because you probably phrase things the same way even years later!
Certainly, quick access to information with a small search query helps tune our brains to get small search queries, but do some filing for a day or three and your brain will get tuned to quick recall there too. In the old days, you'd get real familiar with certain parts of books.
Edit: this line of reasoning works for common usage of a lot of other utils too, like zip/tar etc. Even grep - is it grep FILE PATTERN [PATTERN ...] or grep PATTERN FILE [FILE ...] ?
I remember the times before I learned Bash and the Unix userland. Those where dark times. I was stuck on Windows 98, which I really didn’t like. It just felt so needlessly crippled. When I discovered Bash, Debian, the Unix way, it felt like a breath of fresh air.
These days I’m on macOS. And one of the best things about it is that it’s a great desktop operating system, with a Unix under the hood. The userland Apple ships is quite dated, but that’s easily solvable by installing GNU Coreutils etc via Homebrew.
even when doing windows or embedded development with tools like visual studio or wrs tornado, i've always insisted on having mkl or cygwin for command line tasks.
It is The Worst.
It’s just the most egregious example. The difference in excess argument processing between commands is rather broad example. Is the last arg special or the first one? Grep and tar are in the majority, but cp works differently. They only make sense if you think of the power user.
That really should be a giant clue that it shouldn't be used by anyone, for any reason. "It could be that the purpose of your life is only to serve as a warning to others."
Problem was, I would often forget to write things down, or naively think "that was quick to find out, don't need to write it down", which is a classic mistake of confusing post-facto mindset with pre-facto.
So now when I wonder how to do a thing, I first write down in my notesfile what my question is, so when I do resolve it I go and write down the answer to satisfy my need for closure.
I make a new markdown file for every program / VPS login command (the entire SSH command with custom ports), and really anything which I know I would need to search through bash history down the road to do it again.
Those files are sorted into a handful of folders which allow me to quickly find all these programs / commands quickly.
And many times, even years later, when I google the answer, I google my name, stackoverflow, and the topic, and kapow - answer received :D
If you can’t be alone with your own thoughts then brother are you in a bad place. Everything in moderation.
Examples: These do the same thing:
tar cfv foo.tar a b c
tar cvf foo.tar a b c
tar -cvf foo.tar a b c
This errors, trying to add foo.tar to archive v: tar -cfv foo.tar a b cYou mean the target, but that isn’t a logically necessary consequence at all. Conceivably, `ln` could support the following two syntaxes:
ln [options] target
ln [options] link_name target
The way I remember the correct parameter order is that I remember it’s the non-intuitive one.Kind of like when my wife tells me I'm doing something wrong and she wants it to be the other way.. I know she thinks this thing is important, but can't work out which way she wants it done.
> (A) Modern computers run on electricity [not ones and zeroes]
> (B) one could build a computer out almost anything that lends itself to both being on and off
You got it right in B, which is exactly the point when people say computers are just 1s and 0s. Computers are a mathematical concept, not just some electrical device, as you seem to claim in A. The fact that you can build a computer out of water or air pressure or Minecraft Redstone is exactly the point people are making when they say they're built up from 1s and 0s (not electricity, not silicon and copper, not Redstone).
There's lots of different answers here in different contexts. The reason 1s and 0s are good is because they represent the information in the digital domain, not the implementation in the analogue.
Then people kept wandering up and agreeing with me and by the end it was practically an intervention.
Long before standing for true or false, 1 and 0 have stood for the presence or absence of something arbitrary, so I don't see any issue here.
- byte and word size,
- endianness,
- semantics of what means what in a string of bits (think Two’s Complement, IEEE 754, ASCII, ISO-8859-1, Shift-JIS, Unicode),
- what it means to do certain operations on bits (Boolean algebra),
- how different binary operations can be constructed from transistors / logic gates (ALU design),
- how information can be retained in and recalled from memory (basically just flip-flops),
- how said memory is laid out with respect to internal/external devices and program regions (conventions!)
- how said memory can be addressed, and how information can be transferred between CPU and memory (bus architectures),
- how the computer architecture can be programmed to do things (processor instruction sets),
- and whatever I forgot just now…
And then some people design and build trinary computers, imagine that.
(There is no completion. The trailing off is intended.)
Granted, many of these people have been around since before typewriters and phones were a common thing, but the ”1s and 0s” explanation does not offer anything tangible for people who cannot see the trees from the forest (sic), and thus it only widens the ”digital divide”.
In my experience the best thing to get people interested in computers is to show them more than MS Word in school. Fortunately a substitute teacher was more competent than that and absolutely blew my mind with a for loop.
Imagine if people generally understood that automobile combustion engines work by ”combusting fuel” without knowing anything more about their car.
That’s absolutely true in a sense, but if we left things at that, drivers would probably be inclined to think some kind of magic is happening, because that’s what science thought of combustion for a long time! (see ”Phlogiston theory”)
I wonder how those drivers would explain the functioning of the pedals and the shift knob.
> Imagine if people generally understood that automobile combustion engines work by ”combusting fuel” without knowing anything more about their car.
No need to imagine.