https://idlewords.com/#archive:~:text=ceglowski.com-,Threat,...
209 karma · joined February 10, 2015
@TomGranot pretty much everywhere else except here.
https://idlewords.com/#archive:~:text=ceglowski.com-,Threat,...
As one would expect, we've spent an enormous amount of time thinking about debuggers, how they work from the inside and what they contribute to the general experience of developing software.
Debuggers are, for developers well-versed in working with them, priceless tools (see [1] for an example from this very thread). There's so, so much value in walking through a program not only in one's head (as well-put by pg at one time[2]), but by using a tool that enforces a more structured, "formal" process for program exploration. I use it when trying to understand how code I write actually looks like IRL, but also - and maybe more so - for understanding code OTHER PEOPLE wrote with better context than any piece of documentation or simply reading the code would ever give me.
But - as the article and some[3] of[4] the[5] comments[6] here point out - it has warts (quick plug - I recently wrote a blog post[7] that details my perspective on remote debuggers and how they can be better).
One thing that I didn't see mentioned in this thread or in the article, and is a real PITA, is performance. Debuggers are not built to deal with performance problems - or collection of temporal data, for that matter - at all.
Consider how one might go about debugging a real-life performance issue, especially in the context of modern applications - many threads, many hosts, many replicas of the same service, etc.
You probably have a tracer - something like Zipkin[8] or Jaeger[9] - that helps you to break apart latency issues in your endpoints. You also probably have a set of instrumented metrics (graphed inside your APM, perhaps) for quick observation when something is not reacting as fast as you expect it to. But sometimes they don't tell the full story - there's just too many possible edge cases.
Performance issues can be caused by data structures exploding in size, causing degraded performance and OOMs. They can be caused by one method, in a chain of dozens of different, inter-connected ones, that is especially slow. It can be related to non-optimized SQL queries (maybe hidden behind an ORM). It can be a weird code path - one the developer did not expect, and did not test for - that gets triggered by users with very specific characteristics.
Hard.
[1] https://news.ycombinator.com/item?id=25960923#unv_25960923:~......
[2] http://www.paulgraham.com/head.html
[3] https://news.ycombinator.com/item?id=25940064#unv_25957905:~...
[4] https://news.ycombinator.com/item?id=25940064#unv_25957481:~....
[5] https://news.ycombinator.com/item?id=25940064#unv_25957428:~....
[6] https://news.ycombinator.com/item?id=25940064#unv_25957481:~...
[7] https://lightrun.com/debugging/remote-debugging-re-examined-...
The "checkout our twitter" thing is especially cool.
People don't often take the time to do detailed write-ups while investigating, but when they do... amazing. Fountains of knowledge hidden in closed issues.
Speaking of which - especially in the ops / systems side of things - if you're stuck on an issue, and you've got a gut feeling some repo will be a good source of truth for that issue, search for keywords in the open AND THE CLOSED issues of that repo. So. Much. Stuff.
A write-only interface for Twitter.... you, dear sir or madam, have my clicks. All of my clicks.
Liking to write helps a lot with keeping in touch.
I would 100% use that over the desktop app if it was stable.
Re automated / scripted vs. manual - manual all the way. I keep on mentioning to folks this study I read years ago about teachers who had a student tracking system in their school.
The key point from the study was that the teachers who found the system useful are not the ones who got the most detailed or relevant reports, but the ones who actually INTERACTED with the tracking process. Some sort of "obligation" feeling or something drove them to look at the data and then utilize the learnings from it, IIRC.
If anyone remembers such a study I'd be happy to get a link to it.
Re your question, see https://news.ycombinator.com/item?id=25283008.
I am not really into self-hosting and homelabs, in the sense that I never got too deep into the proper architecture of it all and the "right" way of doing things. I find that when I'm creating tooling (or setting up tooling, for that matter) for myself, the only thing that matters is speed of setup and ease of use. Hosted is fine for many things if it's decoupled in a sensible way from your public identity or does not actually reveal anything that interesting about you, IMHO, but I assume that would be an unpopular opinion.
A corollary from this "proposition" is that I leave the world of software often. For things that I have yet to find proper software for, but are indeed great needs that I have in my day to day life, I find my ways.
Going back to your question, I'll admit the other two tools are a bit underwhelming.
I'm a religious nail biter, and the only thing that ever made me stop was jotting in a pad every time I want to bite. I usually keep a small pad (as in a mini-notebook) in my backpack and draw hashtags and lines in it when I'm seeing the habit return. I'm now going through something a bit difficult personally, and while I'm constantly biting right now I know that when it will really bother me I can pull up the pad and stop biting again. It's stupid, I know, but again - it works for me. I got the idea from a book, btw (https://en.wikipedia.org/wiki/The_Power_of_Habit).
The other one is the Hacker's Diet Online (https://www.fourmilab.ch/hackdiet/online/hdo.html) - it's a weight watching tool by the guy who built AutoCad. I lost ±24 pounds after reading his book (https://www.fourmilab.ch/hackdiet/) and have been tracking my weight ever since (±2 years).
One recurring thing in my stack, as you noticed, is tracking. I am an AVID tracker of many things, and generally speaking advise anyone who is in a loop over something to do the same.
It simply... works.
If anyone wants to talk personal tracking, it's not hard to find me on the internets (TomGranot in most places except here). I have a plethora of ideas & opinions on the subject.
There's a bit of secret sauce here that I tend to rely on to prevent myself from being considered "that guy".
First and foremost, I do this as much as possible via e-mail. Phone or WhatsApp is indeed too "personal" for these type of things (save for one person, an old boss of mine, who I have a scheduled zoom call with once a month. But that's just because he and I just like the chit-chat, it appears).
I write up a long-form message, something like 5-8 paragraphs with real news about myself and the things I've been up to, and ship that alongside the usual casual chit-chat.
It's surprisingly useful - I think this is the only context in which long-form e-mail is a good thing.
But then again, I grew up in an era where e-mail is the devil, and this was not always the case (or so they tell me).
I actually think it's more genuine to care enough to write down to call somebody instead of letting it slip by you. Being determined to build the tooling to be good at something doesn't have to stay within the professional realm - it should extend to personal life as well.
This. I feel really, really guilty if I hear something great or awful happened to someone I used to be in touch with, but the relationship faded away into the flow of life.
Why wasn't I there? What? It's been 3 years since we last talked? How did that happen?
So, no to all that jazz. Enter Monica. :)
Exactly. I have this thing that I'm not good at. I have this tool I use to be better at it. Everybody wins.
One might say that computers in general are tools for computational work, since people are not as good at crunching numbers in their head at a consistent, repetitive and deterministic fashion over time.
One might even be right. :)
Stability: Been running it for 2+ years now (or is it 3+ already?), no problems whatsoever. I update when the mood strikes - never had to roll back because something wasn't working.
Why: As someone who considers himself terrible at remembering things, this little piece of software made all the difference re keeping up with people. The e-mail notifications is a killer feature - so simple, yet I've never done it before in my personal inbox.
I think the fact that it's an external service and not inside your inbox matters from a UX perspective. I have this other place where I define the logic, and then receive it in the screen I look at every morning.
Originally came to know of the project years back through https://sive.rs/hundreds, and while he's a bit better (a lot better) at it than I am, I can confidently say I've stayed in touch with dozens of people thanks to Monica. His notion of "ranked lists" also makes sense, at least to me, as a mental framework for managing personal contacts.
Shameless plug (for the creators!): I 100% recommend Monica, have contributed to it, and am a big big supporter of https://github.com/djaiss (Regis), https://github.com/asbiin (Alexis), et al.
They're actively working on something new now, so if that helps them somehow - link incoming:
A personal comment: There's a (repeating) notion in this thread that keeping up with people is somehow linked to how much you care about them. I care deeply about many people I meet, personally, but I don't think the two are necessarily correlated.
Example: Say I met someone years ago at school, and I thought she was pretty cool. I added her to Monica and I reach out to her once in a while to see what's up. We talk about work, exchange some personal stories, and go our separate ways. I might not think about her for months at a time, but then - quite intentionally - I think about her when the email notification comes up. It makes me happy that this person is somehow in my life.
Is that impersonal? Is it wrong in some way? It's my own very, very private way of keeping people in my life. I don't see it as not genuine or fake.
If it works, right?
1. He is a very, very funny dude.
2. He has no tolerance for bullshit, and will be very quick to shut you up if you are making no sense.
3. Having said that, he is VERY nice, and always points you in the correct direction, even if you are deeply mistaken.
4. He was one of the first people to push for Java in CS schools in Israel, when he was the founding dean at the IDC [0]. This might seem like a weird thing to mention, but in hindsight it cemented the use of modern programming languages in academic curriculums here, which is not a small feat.
5. He has a deep appreciation for the application of Computer Science in the wild, the likes of which I have not seen in many CS professors. He seems like a coder by heart, and that's why - I think - Nand2Tetris speaks to many of us: It is a very theoretical book, presented in a maker-y type fashion: build, build, build. Love it.
[0] https://www.idc.ac.il/en/pages/home.aspx
P.S. If you have some way of assisting the bootcamp (financially or otherwise), drop them a line over at info@wecode.org.il. Donation of services will probably also be appreciated, if possible.
While I agree that posting this publicly is less than appreciated, he is VERY enthusiastic about seeing implementations in interesting programming languages, as far as I can remember from my class (last year). I sent him a link to the original repo, which will now be dead.
Would you be interested in forwarding a private link of some sort? I could forward it over.
"handler" -> "handle" "All Inclusive" -> kind of out of the loop
Consider rephrasing the tagline to something more succinct.
Other than that looks good!