HNHacker News
TopNewBestAskShowJobs

dack

933 karma · joined August 14, 2011

Hi I'm David, a programmer and just general all-around guy.
submissionscomments
dack··on Ask HN: More “experimental” UIs for editing/writing code?
in lisp, you don't know what a given symbol means out of context (i.e. imports/macros in the environment). in unison, all functions are content-addressed so you can literally send code over the wire and dependencies are automatically resolved. it's a really cool system!
dack··on Deprank: Use PageRank to find the most important files in your codebase
they mentioned using it to add types to a javascript project. i can see why you'd start by adding types to the files that are most used first
dack··on The Grug Brained Developer
As funny as this post is to read, I don't want to see yet another developer say "complexity bad". I want to see a company deliver high-quality products with very few bugs at a fast cadence, and continue to make major changes long into the future without slowing down.

_THEN_ I want developers from that company to share their opinions about how they do it. Do such companies/products even exist? Software is so bad these days that maybe no existing software lives up to our ideals.

dack··on Elden Ring figured out the anti-piracy SEO game
The wikis for the souls games are extremely useful and accurate - I've used them when I got stuck and it made the game even more fun!

Are you actually talking about those wiki sites or different ones?

dack··on Try Clojure – An interactive tutorial in the browser
I've found "cider" for emacs to be a really good clojure IDE and repl. The workflow is a bit different from Java - I find that I am looking up documentation within my editor more often (which explains the arguments and return values), and then trying out little snippets locally using the extremely powerful repl. You slowly build up your program from smaller programs that you have tested to work, so by the time you run the whole thing, you only have a couple typos/issues.

I think the other key to working with clojure is to set up your program as a set of transforms on simple data structures as much as possible such that complex class interactions aren't used much, and that cuts down on the need for great intellisense and static typing. Ymmv, of course, but I've found this way of working more productive than when I was working in Java.

dack··on I would like a job writing Haskell
well, some engineers are lucky enough to get to specify the environment that makes them the happiest, even if it's rare compared to the number of opportunities out there.
dack··on I would like a job writing Haskell
while i don't disagree with you (i have also encountered the type of people you're referring to), i think the stance is more valid than people want to give it credit for.

I would go so far as to say many of the people I've encountered who push back on "abstractions" and keep talking about how programming is "about solving problems" are the ones who allow the codebase to slowly go to shit in the name of features, and progress eventually grinds to a halt until a big rewrite. And in my experience, there are _way_ more of these types of people than the ones over-abstracting. Or it's possible my last company was just skewed toward that culture.

Either way, I've only known a couple people who seem to balance these concerns well and they are the best programmers I know.

dack··on I would like a job writing Haskell
they have a following on their blog, so rather than cold-apply to various (possibly terrible) companies and get thrashed around by their recruiters, they figure someone may be able to give them a high-quality lead and a foot in the door. Seems 100% reasonable to me.

> A person that confuses a job application with a blog post might get confused about other aspects of work responsibilities.

Are you serious about this? It seems like an extreme over-generalization and very unlikely to be true at all.

dack··on Awesome Functional Programming
The concept itself is extremely useful (in a programming language like Haskell, at least), but for whatever reason it resists understanding in the way most people want to teach it.

I'm not sure why it's different than other programming concepts in this way... maybe just because it's such an abstract concept where most people have no frame of reference. You don't appreciate it until you've used it in a bunch of different contexts and finally see why this one abstraction works for all of them

dack··on It's not what programming languages do, it's what they shepherd you to (2020)
This resonates - I've thought about certain technique and language couplings as "impedance mismatches", where the technique itself is fine and good, but the language makes it a horrible experience that's not worth it.

The example that I've run into most is trying to write functional immutable code in Java. I have just never gotten it to work well - of course there are libraries that have weird workarounds (that aren't compatible with standard data types or libraries), or tons of boilerplate you could write, but ultimately Java just fights you the whole way. It's not really worth going down that path imo, and better to switch to something like kotlin or scala if you can.

dack··on All Horses Are the Same Color
Yeah this is why I'm confused as well. I don't follow how if we assume n are the same color, that it implies anything about n+1. It sounds like the article is saying that the N+1 logic makes sense for n > 2, but I don't see how it does.
dack··on Ask HN: Who's not sucky to work for?
Which ones wouldn't you want to be on? Or at least is there a pattern to them?
dack··on Why I built my own static site generator
some reasons i can think of:

1) it's more fun

2) it's good practice as a programmer

3) you get complete control over what content is generated (i.e. can minimize CSS/JS size)

4) you get complete customization - you can make your own way to template things that is convenient for you, or auto-import a particular file format you like to keep for your notes on disk, etc

5) you don't have to learn how to use wordpress

(It's not to say I think using wordpress is bad - if you like it, use it!)

dack··on U.S. Tech Salaries Grow, but Not for Everyone
How do you know they are being disingenuous rather than just ignorant / incorrect?
dack··on Poor in Tech
Hey, sorry to hear about your predicament.

A lot of companies hire remotely these days, or are totally remote (Gitlab comes to mind).

Two things I would recommend if you are open to advice:

1. Consider the possibility that you have some skills to grow to achieve more senior levels. Confidence helps, but it's not enough on it's own.

2. Interview at other companies that don't require you to relocate to see what you're worth - switching jobs is (sadly) one of the easiest ways to get promoted or a pay raise.

Good luck!

dack··on Poor in Tech
I won't say there's no bias (I'm sure it exists everywhere), but I think it's not an "expensive image" that gets you promoted as much as confidence.

Many people who grew up rich have a natural confidence to them (because they are protected if they lose their job, have been told they'll be someone important one day, given lots of help in life), and that helps a lot in giving a vibe that you'll succeed.

The great thing is that the confidence can be gained even if you didn't grow up in the same circumstances, it just takes more work.

dack··on Poor in Tech
I definitely agree that being mean to the staff (be it cleaning lady, waiter, etc) is a very bad sign of someone's character.

That said, if I were cleaning an office building I don't think I would want everyone chatting me up - just kindly get out of my way when I'm trying to clean something but otherwise I don't see it as rude to not engage with me when I'm doing my job.

dack··on Poor in Tech
If you're poor but also have tech skills and are in the bay area, I would recommend working at a public tech company for a while first - then you're no longer poor and can afford to work at a risky startup.

That's all I could think about when reading this post.

edit: Maybe the point of the post was not losing touch with reality or becoming an ass to people when you start making money (which I can agree with), but they also came off a bit self-righteous to me.

dack··on Ask HN: How can a unhireable person get a job?
They seem to be open to it, and pretty desperate for advice since they've already tried a lot of things. I'm sure a lot of advice is wrong but maybe some of it will help!
dack··on Why I still Lisp
That's great! Are you making the argument that I won't be able to find an example where doing some transform in a type-safe way is awkward in TypeScript, or just that this one example can be done in TypeScript?

By the way, my example was meant to be more like User -> User where there are some string values and some other types of value. You want to do the transformation in a generic way, but still have the type-safe object come out the other end with all the expected keys.

dack··on Why I still Lisp
> What thing that violates a type check would be "perfectly fine to do"?

One good example is where you might treat records or "product types" as maps

Let's say you want to write a function that can capitalize all the string fields in the object passed in. In a dynamic language, you could map over the values and apply capitalization trivially. It would be a one-liner.

In a static language, you'd have a few options, but none are great:

1. You could use "reflection" or some dynamic feature to do this, but lose type-safety

2. You could make the function take in the union of all possible data types in your system, and then write a mapping function for each one. Then you're duplicating the logic N times, or at the least writing a lot of conversion boilerplate.

3. You could write two functions for each data type in your system to convert to a Map<String, Object> or some such and back, which lets you operate on the maps. Again, lots of boilerplate. Maybe you use code-generation for this? That would add complexity.

In reality, you probably wouldn't even try to write such a function in a typed language because of how awkward it is. Maybe you'd just write specific translation functions for the records you know you happen to need. But I think that's what people mean when they say you're restricted by the type-system - because it can't verify those types of operations, you find workarounds when maybe that would have been the easiest way to implement something.

dack··on Apple has threatened to remove Amphetamine from the App Store
Not op, but no; the app has nothing to do with drugs.

I don't think we as a society should be this sensitive/prone to suggestion. If anything, I believe the censorship promotes the idea that people have no responsibility to make their own choices, and we must build to the lowest common denominator.

Note, I'm not really making a judgement about whether Apple should be allowed to do this - I think that is harder question.

dack··on Bertrand Russell's argument for idleness is more relevant than ever
i still remember the time (early in my career) i was summoned to jury duty and tried to register an "undue hardship" with the judge because i had a project deadline coming up.

i genuinely thought it was that important, but looking back it was really not a big deal at all (and the judge knew it) :)

dack··on Ask HN: Do you donate to Wikipedia? Is their donation request motivating?
it looks like they have some savings now, but wouldn't make it 2 years if they stopped getting donations. it makes sense to me that they would continue to fundraise unless they had an alternative recurring source of funding
dack··on Launch HN: Xkit (YC S18) – OAuth infrastructure as a service
Apparently there is a legal reason to use caps (which is, to make certain terms "conspicuous" such that a "reasonable person" ought to have noticed it)! https://www.termsfeed.com/blog/all-caps-legal-agreements/
dack··on That coworker who never stops refactoring
Most code needs ongoing maintenance - if folks aren't writing tests to begin with, then they probably aren't going to update them as functionality changes over time if Fred isn't around. And automation might be great for the current situation, but eventually need some improvements that nobody is willing to do. Eventually the tool seems less useful and people stop using it.
dack··on That coworker who never stops refactoring
Right, if the root cause is a culture issue (which results in not having adequate testing), then having Fred write the missing tests will not solve it.
dack··on That coworker who never stops refactoring
I think the post was saying that different folks have different skills and we should give people the space to do what they enjoy. I agree with it, and somewhat fit the archetype of "Fred" in the post.

That said, I could only nod along with the first half of your comment - the rest started to get a bit condescending.

I mean, you do you - if this working style works for you, that's great! But I think you can still work on your craft and be a perfectionist while appreciating how others want to work as well.

dack··on ‘Strong Opinions, Weakly Held’ Doesn't Work That Well
While I want to believe this post, I also wonder how long they have been doing the new technique (did i miss them mentioning that?). I say it because I wonder if "percentage confidence" is now the hard part, where humans are terrible at estimating such things.
dack··on Kick the Shit Out of Procrastination
I've found the 25 minute timer to have multiple benefits:

1. If I'm struggling to start, telling myself I only need to spend 25 minutes on it gets me started

2. I can pretty easily hold myself back from checking slack/email or context-switching when the block is 25 minutes - I can always peek at messages after to make sure nothing important happened.

3. It gives me a target - frequently there is something concrete I think I can _complete_ in 25 minutes, and that gives me motivation to push to get it done by then. If it goes a little over, that's fine

4. Because these periods of 25 minutes are really intense, I can't do them back-to-back all day. I have found switching to an interesting YouTube video for 5 minutes during a break (and trying to completely rest the brain during this time) re-energizes me more quickly, and lets me do more pomodoros without needing to stop for a while

← PreviousPage 4 of 8Next →