HNHacker News
TopNewBestAskShowJobs

pdmccormick

389 karma · joined March 5, 2011

Hi! My name is Peter, and I'm a software developer primarily focused on embedded Linux, systems programming and security.

GitHub: https://github.com/pdmccormick

[ my public key: https://keybase.io/pdmccormick; my proof: https://keybase.io/pdmccormick/sigs/OrKXSd2zp2Th8eFGRrxu1hQKb9wH0tnQel0Yd089mU0 ]

submissionscomments
pdmccormick··on When I stopped trying to self-optimize, I got better
Thanks, 25 years in and I'm still learning new things. But I don't think I was specifically shouting out the Unix philosophy. My comment was more in response to the OP article, that rather than "trying" to optimize in the sense that you already know what you need to optimize for and towards, instead thinking of self-improvement as being a by-product of being able to think new thoughts, thus the upfront emphasis on the acquisition of new language (with a big nod to the Sapir-Whorf hypothesis). This could be through collecting good terminology, best practise and patterns, and learning the philosophies of systems such as Unix and languages like Go and Python. However, with aliases and scripts, it becomes something you can actually "speak" in an effective sense, which ultimately can lead to improvements over earlier capabilities that go beyond what you could have envisioned as possible from the start.

I took a handful of math courses in school, and what I didn't realize till later was that learning how to rigourously prove things mathematically had dramatically reshaped my mind. I am left wondering what it must be like for the minds of those who have traversed that tower far higher than I ever have or will.

pdmccormick··on When I stopped trying to self-optimize, I got better
Over the past year, I’ve made a deliberate effort to improve my “personal computing”, which for me is about how I use the shell. I start by trying to notice when I’m doing the same task multiple times and getting tripped up on the specific syntax or sequence of commands (i.e. what’s the Git command again to split certain files out of a previous commit into a separate one?) I will then create an alias, a shell script or maybe a larger program to start addressing it, solving my initial use case first, and gradually revisiting things over time to make improvements.

Through this process I’ve created a whole idiom of commands for myself. I have no pretense that they would be useful to anyone else, and I don’t sweat them beyond their ability to make my life easier. From these incremental efforts, I find I have access to a new kind of language in my mind. Especially with Git, I find myself seeing it as an extension of my mental process, integral to how I even think about solving problems, not just a VCS I use to push code around.

By noticing how I was working, I didn’t seek to optimize where I was at, I sought to graduate to levels where what previously needed optimization just doesn’t exist.

pdmccormick··on You Don't Need UUID
Pivoting to the related subject of compact textual representations of _typed_ data, check out CESR[0]. Through some careful choices of code prefixes and payload lengths that won't require Base64 padding, it provides a novel encoding scheme for JSON plus cryptographic signatures (all while enabling true concatenative composability). It is at the heart of the KERI[1][2][3], a decentralized identity management scheme, and ACDC[4], a mechanism for verified credentials.

[0] https://trustoverip.github.io/tswg-cesr-specification/draft-... [1] https://keri.one/keri-resources/ [2] https://trustoverip.github.io/tswg-keri-specification/draft-... [3] https://github.com/WebOfTrust/keripy/ [3] https://trustoverip.github.io/tswg-acdc-specification/draft-...

pdmccormick··on Govt of Canada proposes a 4% Link Tax
Correction: Canada is a country with a small number of large cities that determine the national government. There are whole regions of the country that have no representative voice within the governing parties.
pdmccormick··on EU opens Microsoft antitrust investigation into Teams bundling
Could someone start some kind of judicial investigator process over how terrible Teams is?
pdmccormick··on Customize Django Admin Interface
After many years, I’ve come to the same conclusions and can heartily recommend these suggestions!

Another similar suggestion I’d add is make a settings module with a base collection of configuration (i.e. myproject/settings/common.py) that other deployment-specific dev.py & prod.py import from.

Basically, don’t forget that Django projects are always Python modules too, so go ahead and use those language features too.

pdmccormick··on MDN Playground
Last week I signed up for an annual subscription to MDN. I didn’t realize it at the time, but paying subscribers get the option to enable offline mode (it currently downloads about 630 MiB of content). I generally have fast connections wherever I’m working, but the difference between “fast” and “instant” when loading new pages is really making the experience feel special for me. I would heartily suggest you support MDN and try it out!
pdmccormick··on Displayport: A Better Video Interface
I once purchased a FireWire multi-channel audio interface with the express intent of reverse engineering the protocol in order to add Linux support. I purchased a specialized PCI card that was intentionally non-standard (not OHCI 1394) but could snoop and capture traffic between a device and a host. I chipped away at deciphering a register map for awhile, but eventually better USB audio devices came along that had more driver support.

Still trying to do the same sort of thing though with some audio related USB and Ethernet/IP devices so I guess I never really gave up the idea in my heart!

pdmccormick··on How to start a Go project in 2023
A Go vendoring pattern that I've found very useful is to use two repositories, the first for the main "project" repository, then a second "vendoring" repository that imports the first as a module, and also vendors everything.

This may require a few extra tricks to plumb through, for example, to make all cmd's be externally importable (i.e. in the project repository, transform "cmd/foo/%.go" from being an unimportable "package main" into an importable "cmd/foo/cmdfoo/%.go", then have a parallel "cmd/foo/main.go" in the vendoring repository that is just "func main() { cmdfoo.Main() }", same as you have in the project repository in fact).

Vendoring aside, this is also a useful pattern if you're "go:embed"ing a collection of build artefacts coming from another source, like a frontend HTML/JS/CSS project.

pdmccormick··on How to start a Go project in 2023
Sounds like an interesting problem to have. Would something peer-to-peer like BitTorrent work to spread the load? Utilize more of the networks' bisectional bandwidth, as opposed to just saturating a smaller number of server uplinks. I recall reading many years ago that Facebook did this (I think it was them?)
pdmccormick··on America Is Trying to Electrify. There Aren’t Enough Electricians
Kudos to you for the correct use of "decimate".
pdmccormick··on Advice to Aimless, Excited Programmers (2010)
There is a great quote from Terence Parr, creator of the ANTLR parser generator:

     Why program by hand in five days what you can spend five years of your life automating?
See https://www.infoq.com/presentations/Automation-DSL/
pdmccormick··on GitHub staff are required to use Teams by Sep 1, 2023
I scanned the replies to see if this comment specifically had been made. Thank you.
pdmccormick··on 7.8 magnitude earthquake hits Turkiye
I vividly remember watching videos of the 2011 Japanese tsunami rolling inland. Seeing cars and bicyclists that looked like small toys that were completely oblivious to the torrent of water that was about to be upon them gave me such a sickening, helpless feeling.
pdmccormick··on How A Bedouin Tracker Sees the Desert
I had not expected to spend 5 minutes learning about this today, but thank you nonetheless for the tip off.
pdmccormick··on I Love My PinePhone
So add a very little bit more mark up to ship it correctly and to account for some percentage of returns due to shipping damage.
pdmccormick··on Ask HN: What was life like before and after a baby
I’m sorry to hear this, and you’re not alone (I’ve been WFH with young kids for half a decade so far). I know that feeling of pulling your hair out because the house is so _alive_ and distracting. Would you have any opportunity to go to a quiet workspace, a public library, a coffee shop, or return to an office part time? Best of luck to you.
pdmccormick··on The MGR Window System
In the mid 2000s, the wireless network infrastructure at my university authenticated your device based on SSH'ing into a server. But the specific SSH server used at that time did not support password-less logins via keys, so it required typing in a password every time you connected (and WiFi was flakey in that environment in those days, so dropped connections weren't uncommon). I asked the IT support folks about this, and they told me that I should try adding it to the software. I figured out what it would take and wrote some patches, but then they said they couldn't run something customized like that. Years on their reasoning makes sense, but at the time it was really disappointing and I dropped the effort after that.
pdmccormick··on What comes after Git
I've never understood the argument that you should not optimize your own working environment (IDE/editor customization, alternate keyboard layouts, shell aliases, custom hotkeys, scripts, etc.) because it could be unfamiliar to someone else. I've also heard it in the context of, you shouldn't stray too far from the defaults because if you sit down to use a colleagues' computer, you will be out of your element. Unless your job is to pair program full time, or perhaps you're creating educational screencasts, maybe? If you slowly build out your own personal setup over time, presumably you should still always be able to explain what it is that you're doing at each step.
pdmccormick··on What comes after Git
Thank you, I think that is exactly what I was looking for, and just what I had secretly hoped someone might suggest in response to my comment. Thanks again!
pdmccormick··on Rogers network outage across Canada hits banks, businesses and consumers
Thanks for mentioning the last major outage. That one was memorable for me as my son had just been born a few days prior. If that had happened the day of, I honestly don’t know how we would have managed it logistically.
pdmccormick··on What comes after Git
Am I the only one who thinks that Git's UX is fine, and maybe even rather enjoyable? It has taken time to learn, and I am by no means a power user, but its model is now in my brain so, for better or worse, it's how I think and work now too (interactive rebasing for the win, all the time, and lots of shell aliases to shorten things). I do wish I had an easier way to split up a commit that accidentally included several unrelated changes though.

What's the lesson, that you can learn anything eventually, or that familiarity means you will lose the ability to accurately evaluate something?

pdmccormick··on A most vexing parse, but for Python packaging
If I ever see a resume or a job description that lists "C/C++", that's a red flag to me that either someone might not actually have that much experience, or someone doesn't actually know what they are looking for.
pdmccormick··on Knowledge is like a house of cards
A practise I’ve found very fruitful in my programming journey is to do deliberate practise, even when (especially when) I’m knee deep in another problem. For me this looks like an explicit “learning” directory structure where I write short examples for myself, generally to explore an unfamiliar package/module, or to work up a simple but self-contained piece of code. I keep this separate from any other active project, and I often find myself referring to my own examples to refresh my memory, or use it as starter code for similar situations in the future.
pdmccormick··on Is it time to remove reiserfs?
I can still remember discussing the case while hanging around the student union office at school. I wanted to believe he didn't do it, in part because there would be a chance that the children might be reunited with their mother, and also because of a youthful naivety about the supposed honesty and integrity of someone of strong technical competence and achievement. I had been running reiserfs for years already by that point so I definitely had the "my team" bias. It's a sobering lesson that I continue to reflect upon to this day.
pdmccormick··on Google Search Is Dying
I just have one question... does Netcraft officially confirm this?
pdmccormick··on The Catherine Project: A new experiment in liberal education
Has anyone ever stopped to consider the ethical question of applying the latest unproven fads of educational theory to unwitting students? Ideally before large scale rollouts?

As someone who grew up during a tumultuous time for the public education system in Ontario, Canada, it felt like ever year or two whole curriculums were thrown out and the latest and greatest "cutting edge" approaches and fads were foisted upon us. I can see a lot of parallels in software development, but I wonder about the specific potential for lasting damaging effects for children and young people. I know I experienced some gaps that took a long time to be addressed.

pdmccormick··on Man left shocked as his house is 'stolen'
I wonder if that means they don't pay all that much compensation on a case by case basis, or if there isn't that much fraud occurring to begin with.
pdmccormick··on MacBook Pro 14-inch and MacBook Pro 16-inch
Steve Jobs passed away 3666 days ago.
pdmccormick··on Go: Don't Change the Libraries in 1.18
But were Go modules a better solution in that space? Should we have stuck with a less better approach (not casting a judgement on dep necessarily) just because it was an earlier attempt to deal with the same problem?
← PreviousPage 2 of 4Next →