HN user

dhagz

472 karma

I am a software engineer at Chick-fil-A, Inc.

My blog is at http://dathagerty.com

[ my public key: https://keybase.io/dathagerty; my proof: https://keybase.io/dathagerty/sigs/Vx0Abf8LUHJ9LqSZidYEPj0r8xVut9M2OeS7vmiO72w ]

Posts1
Comments264
View on HN
Will It Mythos? 29 days ago

I've found it to lead to an overall better experience, yes. I don't see any reason to not do so - I don't think the token spend is enough to really make an impact, and who cares about typing more? If I get tired of typing I can switch to dictation.

Really, you don't need to know how to program to do Strudel. Like, yeah, it's a programming language - but it's not like you need to know the fundamentals of software engineering to write something with Strudel. You just start typing and keep what sounds good. There is no difference between figuring out the melody and harmony and all the other parts of the song - you just type and edit until it sounds good. You get immediate feedback since it's constantly looping and trivial to work in your changes.

Compare that to piano: sure, you can walk up to a piano and plunk out a melody easy enough - but once you start venturing towards harmony and song the skill required ramps up exponentially. Suddenly you need to have both hands doing independent things, know where to place your fingers so that you can comfortably play the notes for the current beat and future beats (there's a ton of technique here and it's not the most intuitive thing ever - entire books are written to drill it), the list goes on.

One thing for profiling HTTP services specifically, you can attach handlers for pprof data easily [0]. I usually only mount the routes if I've set a flag for it, usually something to indicate I want to run in debug mode. This does everything "for free", i.e. it starts profiling memory and CPU and then exposes the data on routes for you to visualize in the browser.

[0] https://pkg.go.dev/net/http/pprof

I read once a stellar idea to help get over the fear of starting to draw in a notebook (or an art project, or a new software project) is to just start scribbling and drawing. Intentionally starting with a mess makes it much easier to break the cycle of "This thing I'm doing isn't good enough yet for this".

Along these lines, something I have shamelessly stolen from Merlin Mann is to write "The first page is profound" on the first page of every notebook I get.

Good teams don't need sprints, ergo sprints are bad is not a good argument. I'm not the biggest fan of SCRUM overall, but it exists for a reason. I saw in another thread/article here someone describe SCRUM/sprints as "training wheels for managers", and I feel that is incredible accurate. If I'm going to come in and start leading a team, I'm probably going to start with SCRUM just to get my feet under me and learn how the team works. After that, switching to kanban can be discussed, but there needs to be /some/ tracking to communicate timelines to the business at large.

I lived in Athens (recently, not in the eighties) and it was almost overwhelming how much music there was at any given time. And not just "pop" music, but orchestral/wind band stuff. The music school at UGA is pretty damn good and so there's always a good concert available.

Back in 2001/2002 (I was 11 or so) I wrote an AppleScript to play a specific iTunes playlist. I then set up my iMac to run this script every morning at ~5am to be my alarm clock. That feeling of bending the computer to my will was pretty cool, and started me down the path to becoming a software engineer. It's amazing what ~10 lines of code turned into.

That was the whole point of the article - the process of <dealing with thing> was delightful because <thing needer> dealt with a <thing provider> that gave a shit.

I get where you're coming from, but I think you're expecting too much from the "form" part of design, when guitar pedals are basically pushed entirely towards "function". There's obviously a spectrum (Walrus Audio, Earthquaker Devics for two that manage good function and good form), but BOSS pedals are beautiful to me in just how easy they are to use - that big ol' flap covering the switch makes it to where I have to try _really_ hard to not turn the pedal on when I stomp on it. And that's the primary thing I want to do with a pedal - turn it off and on. BOSS's pedals actually very literally are laid out in proportion to how I use them - the dials get maybe 20-25% of the enclosure's usable space, while the rest is dedicated to making it easy to do the thing I care about. It might be brutalist and basically entirely function over form, but there's beauty in just how usable it is.

Honestly, I enjoy the current answer to this (which was around long before Go's generics) - there is the `sort` package, which provides a lot of baseline sorting functions for built-in types, and then a function that takes a slice of `interface{}/any` and a function to sort the elements of that slice.

Not only that, but the chances of having more than one developer at a company who already know $LANGUAGE_NOT_USED_AT_COMPANY is slim. There's maybe like two or three other people at my company who know Rust, and none of them are on my team or even close to my team in the org chart. So me proposing we write a new service in $LANGUAGE is basically me saying, "If I ever leave, you will have to literally move heaven and earth to maintain this thing. Or worse, you'll have to build institutional knowledge of $LANGUAGE as an insurance policy against me leaving."

I sort of get what you're saying, but at the same time I don't. Any logic that depends on what the "next/child" handler returns can get errors either from the response itself or the context, depending on the approach I want to take (context is probably most idiomatic, but its own bag of worms (I say that because values in the context are all empty interfaces/any type, which is a pain when you want a concrete type)).

Unless there's some usecase I'm missing, since I haven't really touched Gin in awhile, and never got too crazy with what I wrung out of it.

Yeah, my team doesn't do anything terribly complex with them, but when I'm developing services I always throw in a command-line flag to toggle debug mode - ups the log level and serves pprof data using Go's net/http/pprof module. So it's not a user-facing feature, but we haven't run into that need yet.

It's funny, I'm fairly skeptical of homeschooling due to my experience being homeschooled. Not that my mom did a bad job, she did the best she could, but the curriculum we followed was, to put it lightly, incredibly conservative and Catholic. Like, there was an entire chapter of one of my American history books dedicated to the oppression of Catholics in Colonial/early America. To focus so heavily on that instead of the other oppressions of the time is...not great. There were some good things in the curriculum as well - I spent a lot of time reading and memorizing Shakespeare and great poems. But those bright spots don't make up for brushing over evolution and an incredibly skewed perspective of history.

Twelve Years of Go 5 years ago

I only use Go for two things: CLIs and web services. There are a lot of frameworks out there to help you develop web services in Go, but what really impresses me is that you don't really need them - you can get surprisingly far just using the standard library.

...just get a split keyboard (the Kinesis isn't a true split - still one body). It's cheaper. You don't have extraneous keys. You don't have to worry about using software to get your computer to play nice with two keyboards. I like the offerings from https://gboards.ca, personally (bonus, they're ortholinear if you believe that is good for reducing pain).

I got the Gergoplex from that site, and over the course of a week of typing I got used to it and was able to be productive with it.

Just get a split.

Honestly, I don't see a reason to keep Docker for Mac installed on my computer. I haven't run a container workload locally in I don't know how long and I haven't built a container locally in even longer. It's just taking up space on my laptop and bugging me to update what seems like constantly.