Live data from Hacker News

Ask HN: What overlooked class of tools should a self-taught programmer look into

news.ycombinator.com

281–290 of 416 posts

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#281
DEBUGGING! And I don't just mean echo'ing out statements to check the values, I mean an actual attached debugger to your code.

GDB for C / compiled languages XDEBUG for PHP etc

The actual act of stepping through your code and looking at the values, datatypes and their transitions massively increases your productivity if something is tricky!

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#282
post #96
post #93

Honestly I still find a lot of engineers don't know git properly. Like they know enough to commit and push but that's about it. It really helps to understand everything git has to offer.

The three most important basic git operations to know (in my opinion) git checkout -b git log git rebase -i

I know you're probably just trolling but I'll take the bait — I'd put all of these six before any of those three:

    git pull
    git clone
    git status
    git commit -a
    git push
    git diff
I mean, the ones you mentioned are pretty useful, but if you don't have a repo in the first place, even git-log isn't going to be very useful; and if you're branching and rebasing, you probably have to commit first.

(I actually prefer Magit, to the point where I sometimes run Emacs just for Magit when I'm using a different IDE.)

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#283
post #252

Earlier quoted context omitted.

>Most popular folder on Windows is "My documents" Not really... not since XP, anyway. Unless you have a space in your username (which is a terrible idea for many other reasons), your "Documents" path is C:\Users\JohnSmith\Documents. "Program Files" is pretty much the only important path which is likely to have spaces, and your makefiles (hopefully!) don't need to touch that.

On Windows, it's not up to me to decide where users will keep my stuff, and where it will work. Users decide. For a software to work fine on Windows, it must support spaces in files and paths. Also Unicode in files and paths. VBScript does, GNU Make doesn't. > which is a terrible idea for many other reasons If you use make to setup stuff, it's very possible you'll need to access "c:\Users\All Users" which does contai…

You can try the 8.3 convention,

DOCUME~1 Documents

or

ALLUSE~1 All Users [C:\ProgramData]

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#284
post #282
post #96

Earlier quoted context omitted.

The three most important basic git operations to know (in my opinion) git checkout -b git log git rebase -i

I know you're probably just trolling but I'll take the bait — I'd put all of these six before any of those three: git pull git clone git status git commit -a git push git diff I mean, the ones you mentioned are pretty useful, but if you don't have a repo in the first place, even git-log isn't going to be very useful; and if you're branching and rebasing, you probably have to commit first. (I actually prefer Magit, to…

I'm not trolling, and to assume that I am doesn't exactly "assume good faith." [0]

The comment I replied to says:

> Like they know enough to commit and push but that's about it.

In that vein, I was suggesting what I consider to be the most basic git commands outside of the "clone, commit, push" workflow.

[0]: https://news.ycombinator.com/newsguidelines.html

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#285

Earlier quoted context omitted.

I think the parent's using Excel essentially to do repeated template expansion: e.g. for a given set of member variable names ([a, b, c...]), give me the assignment statements I'd need to use those in a constructor. Which I could do pretty trivially in Excel... but could also do trivially in about two lines of Python: vars = ["a", "b", "c"] statements = ["this.{0} = x.{0}".format(var) for var in vars] print(statement…

Those can often be done in a decent text editor with regexp-like search and replace.

Took me 21 seconds with Emacs keyboard macros; no search and replace involved.

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#286

Earlier quoted context omitted.

> the single-biggest booster for me as a practitioner. Can you instantiate this claim with an example? I'm somewhat knowledgable in both math and computer science theory but have yet to feel as though my math background has helped me in practical CS.

About 3-4 years ago I was working on an open source cloud platform for a company deploying a public cloud. There was a particular error that sometimes happened in our production environment where a rebooted VM would come up but couldn't connect to the network. We tracked it down to a race between two services in the data plane. It turns out the VM controller wouldn't wait for the network controller to unplug a virtua…

I'm sorry but I don't see why the TLA+ modeling was necessary. You said that you noticed the lack of coordination before that. From your description, it seems like the mutex thing was a diversion. Anyway, a mutex would not necessarily be adequate for coordination (and many types of mutexes will not work between processes at all).

So to me it seems that you could have gone straight to the lightweight coordination mechanism without the TLA+ model. And anyway, if there was a problem with the mutex, you could test that theory by doing additional logging or an experiment around the mutex functionality.

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#288
post #264

At the job I'm at, I've picked up three tools either for the first time, or in a very new way: 1. Makefiles. See @aequitas' comment for more. 2. Terraform. Seriously, just using this tool taught me [a lot of] devops. It's fantastic! 3. Docker (as a tool!) I'm going to go into the third one a bit - I feel like Docker is mostly thought of as useful for deploying things to the 'net (kubernetes, ECS, etc), but I think it…

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

#289

Makefiles. I always dismissed them as a C compiler thing. Something that could never be useful for Python programming. But nowadays every project I create has a Makefile to bind together all task involved on that project. From bootstrapping the dev environment, running checks/test, starting a devserver, building releases and container images. Makefiles are just such a nice place to put scripts for these common tasks…

Have you ever considered using Rakefiles instead?

https://github.com/ruby/rake

Re: Ask HN: What overlooked class of tools should a self-taught programmer look into

#290
Did you know there are document storage/management systems out there? Its useful when one needs to save a lot of documents(duh) or other too-large-to-save-in-rdbms type of content with metadata. Examples are FileNet or Alfresco.

Did you know there is a protocol called CMIS [1] which you can use to query content from these systems? It's similar to a subset of SQL.

[1] https://en.wikipedia.org/wiki/Content_Management_Interoperab...

Post reply on HN