Live data from Hacker News

Ask HN: Which tools have made you a much better programmer?

news.ycombinator.com

411–420 of 519 posts

Re: Ask HN: Which tools have made you a much better programmer?

#411
Do everything in your power to find out what's actually happening with a bug; don't just guess.

- SQL

- Your metrics system's query language

- jq

- sort / uniq

- grep

- awk

- pyplot

- mapbox (if you have geospatial data)

- your environment's canonical profiler, and how to connect it in situ

- how to poke the relevant APIs with your bare hands (curl, grpcurl, etc)

- how to MITM and inspect the communications between your components (wireshark, charles, certificate trust stores, feature flags to disable pinning, etc)

Re: Ask HN: Which tools have made you a much better programmer?

#412

Earlier quoted context omitted.

An excellent list. Regarding functional programming, I recommend starting with a gentle approach that doesn't require picking up a new language: 1. Stop creating counters/loops and become facile with map, reduce, and the like. This will shift your thinking away from blocks and toward functions. 2. Take the time to really understand what side effects are, and start avoiding them everywhere they are not necessary. Keep…

> I recommend starting with a gentle approach that doesn't require picking up a new language Disagree. This is likely to 'dilute' the lessons of functional programming, as it were. If you learn to program in idiomatic Clojure/OCaml/Haskell/Scheme, you can be relatively sure you really have picked up the principles of functional programming. If you merely attempt to apply new principles in an environment you're alread…

Even in languages where the concepts can be encoded, it can be hard to determine what aspects of a given library are the encoding and which parts are the fundamental ideas if you haven't seen the ideas used in well-suited language. For instance, I didn't really understand the use of functools.reduce[0] or itertools.starmap[1] in Python until I was familiar with zipWith[2] and foldl [3] in Haskell.

The ideas themselves are not particularly complicated, but I hadn't previously worked with abstractions where the default was to operate on whole data structures rather than on individual elements, so I didn't see how you would set up your program to make those functions useful. In addition, for abstract higher-order functions, type signatures help a lot for understanding how the function operates. I found `functools.reduce(function, iterable, initializer)` significantly more opaque than `foldl :: (b -> a -> b) -> b -> [a] -> b` because the type signature makes it clear what sort of functions are suitable for use as the first argument.

It's now easy for me to use the same abstractions in any language that provides it because I only have to learn the particular encoding of this very general idea. While I couldn't figure out why functools.reduce was useful or desirable, I couldn't figure out many parts of C++'s standard template library at all. But if you already know the core concepts and the general way that C++ uses iterators and the fact that functools.reduce, Data.Foldable.foldl, and std::accumulate[4] are all basically doing the same thing for the same reasons is a lot more readily apparent.

[0] https://docs.python.org/3/library/functools.html#functools.r...

[1] https://docs.python.org/3/library/itertools.html#itertools.s...

[2] https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-...

[3] https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-...

[4] https://en.cppreference.com/w/cpp/algorithm/accumulate

Re: Ask HN: Which tools have made you a much better programmer?

#413
post #82

Docker. Being able to develop/ deploy code across a team and business is invaluable.

100%.. for all the crap Docker gets these days, it has been a great tool for my software dev processes.

I don't know how the infrastructure was before docker was introduced, but for me it made things more miserable. Build times are longer, if you work on OS X it eats up battery and causes it to heat up (because on OS X it runs inside of VM). Makes things so much harder each time you make change you have to rebuild it to run it, unless you do some tricks that aren't always possible in all languages. You can do development inside of a docker, but that also has its own issues, primarily you can't use your fancy IDE.

Re: Ask HN: Which tools have made you a much better programmer?

#414

Earlier quoted context omitted.

I'm not the original person so I have no idea what their experience is, but I feel pretty much the same. Every time I work in a language other than Ruby, it feels like programming . When I work in Ruby the language feels almost effortless. I wish I could do everything in Ruby and it frustrates me when there is something I can't make work in Ruby. Especially Rails, everything that works works so smoothly. When it does…

What are your thoughts on Crystal? See: https://crystal-lang.org/

Would you like to pay now (compile time) or later (runtime)?

We have ways of dealing with scaling of runtime in production (develop infrastructure environment).

There's no way I know to speed up the edit/compile/run loop during development.

Re: Ask HN: Which tools have made you a much better programmer?

#415
post #296

Earlier quoted context omitted.

Unbelievably amazing to be able to shift-click on syntax and jump to the source - even works pretty well in dynamic languages. I HATE using a Gem then needing to break my train of thought to pull up the official documentation to see what an API interface looks like. Ctrl+click. In and out in 15 seconds.

You just taught me something! I've been using keyboard hotkeys to jump to source. On mac, I can hold down command (probably ctrl on linux) and it lights up like a link, shows the gist, and let's me click to go to source. This is why I love these sorts of threads :)

Ctrl-B also goes to definition (at least on Linux) if you don't want to leave the keyboard. On definition Ctrl-B lists all usages of the term under caret.

Re: Ask HN: Which tools have made you a much better programmer?

#416

For me, the transition from Bash to Zsh has been a huge efficiency boost. Mainly because of some great plugins for Zsh, such as z, zsh-peco-history (better history search), zsh-autosuggestions, and zsh-syntax-highlighting. My blog post about setting up a Linux workstation describes this in detail: https://tkainrad.dev/posts/setting-up-linux-workstation/#swi... . The best thing is, there is no initial productivity hit…

I also want to thank you for this blog post. I'm a long time linux user, but just got a new machine and decided to start from scratch rather than try to port over my previous environment. Looks like just starting from your post will save me some time.

Re: Ask HN: Which tools have made you a much better programmer?

#417
- Lambda Calculus, and Functional programming principles.

- Thinking in terms of types and structure, rather than linear procedures.

- Category theory.

- Vim as a language for editing text.

- Emacs (my own config w/ Evil).

- Nix.

- A documentation specific browser, such as Dash.

- The latest grep flavour - ripgrep.

Re: Ask HN: Which tools have made you a much better programmer?

#418
post #186

Earlier quoted context omitted.

Maybe the person meant to say Visual Studio Code is preferable to Visual Studio.

I feel that Visual Studio Code (a free programmer's text editor) suffers from its poor branding -- it's too easily confused with Visual Studio (a paid IDE), so folks dismiss it out of hand because of the perception that it's not free or is only for MS languages like C# (neither is true). Microsoft should have called it something else. As a Vim user of 2 decades, I have to confess something: VS Code is a far better pr…

I have no problems using LSPs for C/C++ (via clangs), rust (rust-analyzer), Python (pyls), JS/TypeScript, CSS, bash, and more in Vim (Well, NeoVim) with the autozimu language client.

Re: Ask HN: Which tools have made you a much better programmer?

#419
post #257

Not strictly a better programmer but a more efficient one. - FZF (Fuzzy Finder) really speeds thing up in bash when searching your history. - Vim (as others have mentioned). With the plugin vim-fugitive (a git related vim plugin). I love Gblame in vim-fugitive, as being able to look at the history of lines of code and stepping back in time can at times be very useful. - Creating various aliases. For example in git I…

I've installed rg and aliased it to to grep, so the muscle memory stays the same but underneath the tool is changed. Also works for ls -> exa cat -> bat

exa completely breaks ls arguments/switches and as such is a hard pass for me.

Re: Ask HN: Which tools have made you a much better programmer?

#420
post #26

The Jetbrains suite. Lightens the cognitive load, makes it easier to refactor and keep code tidy. All of which allow me build better software. For almost everything else e.g. git, learning how to use the command line instead of a UI is the best way for me to learn how the tooling works.

Back then (10+ years ago?), IDEs were meant to be bloated and slow having convoluted interfaces and I only used it when absolutely necessary (like Eclipse for Android before Android Studio became the default) but my, JetBrains saves me so much sanity, it changed the definition of IDE for me (or rather IDE was meant to be like that). I only used lightweight text editors before then. (Used SublimeText before the switch.)

Great thing about JetBrains is they work out of the box unlike vim where you need to spend a whole month customizing just to get back on working on the project with 20 random plugins out there and it's still probably only 30% as good as JetBrain's.

VSCode is being developed rapidly and I see many good plugins but it's still quite far behind except for the launch speed. At least it could be seen as a competitor to make sure JetBrains will keep innovating and keep the performance of their IDE sane not to lose customers to VSCode.

Post reply on HN