HNHacker News
TopNewBestAskShowJobs

mystickphoenix

148 karma · joined September 10, 2015

Python and Clojure backend software dev that moonlights regularly as devops and data engineer.
submissionscomments
mystickphoenix··on Any Suggestions for Bookmark Managers?
I currently use xBrowserSync and I've had zero issues, it may not be your exact use-case, but it does allow tagging of bookmarks, searching, etc.
mystickphoenix··on Ask HN: Where have you found community outside of work?
A few things for me:

- A search and rescue team. Not only do I get exercise, fresh air, and the good feels of helping someone on their worst day, I also build very strong bonds with people I'd never have met otherwise.

- Tabletop RPG's. I've joined a few groups and while not all have worked out, a couple have really stuck and we've become great friends. It's also a great excuse to sit around a table without digital distraction and really enjoy one another's company.

- Finally, Burning Man. The burner community has been a godsend for me. Always interesting and engaging, sometimes sarcastic and snarky, never a dull moment.

mystickphoenix··on Orb Farm
If you haven't been exposed to it, check out Noita. It's a falling sand action roguelike where the entirety of the world is simulated.
mystickphoenix··on Ask HN: Where to Find Motivation?
Anecdotally, something that's helping me is treating software development the same way I treat yard work. The work itself on the surface isn't super interesting. In fact, most of the time it's pretty tedious and boring (mowing the lawn/rebasing an annoying set of commits). It's work that still needs to get done, so focusing on:

- doing each action correctly

- finding micro optimizations (if I turn the mower this way, I get that stupid piece of grass that I can never get without another entire pass)

- or, dare I say, finding joy in a job well done helps me get into a "mindfulness"(?) mindset

"Job" meaning everything from "put my shoes on" to "sharpened the mower blade well" to "made the pass with that mower perfectly" to "got all the yard work done". Focusing on the small bits first seems to snowball into the larger ones.

I think getting into the mindfulness mindset and finding joy is what has really helped me. The work itself is boring, tedious, etc. However, pride in a job well done feels good, which creates a positive feedback loop. This year, the yard work has felt less terrible and the yard is looking better than ever.

I'm not quite there yet with software development, but applying the same sort of strategy has been helping over the past couple of weeks. Not every day is omg-amazing but the good days are starting to outweigh the bad ones.

mystickphoenix··on Save your local shell history to log files
Are there any shell-agnostic ways of doing this? I tend to bounce between zsh, fish, although fish has been sticking lately so a fish version of this would be amazing.

nevermind, managed to get this working for fish, just add it to the end of your ~/.config/fish/config.fish file :)

  # log every command
  function cmd_log --on-event fish_preexec
    if test (id -u) -ne 0 # if we're already sudo, don't log
      echo $(date "+%Y-%m-%d.%H:%M:%S"): $(pwd): $argv >> ~/.logs/cmd-history-$(date "+%Y-%m-%d").log
    end
  end
And, since I keep editing this comment... blog post about it with all credit to OP and OP's inspiration

https://bryan-lott.github.io/log-all-commands/

mystickphoenix··on Ask HN: What lesser-known accessories do you use with your computer?
Another thing to try is podman. I run it on my mac and my mac is no longer trying to fly away on the strength of the cooling fans alone.

Podman used to be a bit rough on mac but it's gotten significantly better, especially with podman-desktop. docker-compose even works with it as it does something on the backend to swap out the docker socket. I wouldn't recommend doing podman-compose as it looks to be mostly unmaintained? Or at least no new releases have been cut in a couple of years.

mystickphoenix··on Maybe you don’t need to talk to someone
In addition, pay attention the modalit(ies) of the therapist. If you've tried a few therapists and haven't found one that clicked, try one that emphasizes a different modality.

As an example: Cognitive Behavioral Therapy (CBT) vs. Eye Movement Desensitization and Reprocessing (EMDR) vs. Freudian Psychotherapy vs. Ketamine Therapy vs. [insert whatever modality you'd like]

mystickphoenix··on Show HN: Spaghettify – A VSCode Extension to make your code worse with AI
I'd love to see a feature that creates tests that don't actually test anything
mystickphoenix··on Ask HN: Are browser bookmarks dead? What alternative(s) do you use?
I use https://www.xbrowsersync.org/ to keep track of, organize, search, tag, and sync my bookmarks across all my computers. Very happy with it over the past year.
mystickphoenix··on Show HN: Asdf Clone Written in Rust
This looks great, will be working with this in the next few days. I've always had a bad relationship with asdf as it seems to break existing tool management in creative ways that I'm unable to untangle without uninstalling it completely (long story, much thrashing of keyboard and mouse).
mystickphoenix··on Is Dark Mode Good for Your Eyes? (2020)
Sample size of 1 but dark mode is a godsend when I'm on the verge of a migraine. Being flash-banged every time I go to a website is a quick trip to pain and nausea town.
mystickphoenix··on Ask HN: Reading material on how to be a better software engineer?
A few things come to mind along with what's already been mentioned:

Assorted Non-Book Readings:

- https://randsinrepose.com/dont-skip-this/

- http://www.stilldrinking.org/programming-sucks

- https://sysadvent.blogspot.com/2019/12/day-21-being-kind-to-...

- https://donellameadows.org/archives/leverage-points-places-t...

- https://grugbrain.dev/

- https://changelog.com/posts/rich-hickeys-greatest-hits

- https://github.com/papers-we-love/papers-we-love/blob/master...

- http://www.cs.unc.edu/techreports/86-020.pdf

Books:

- The Phoenix Project: Gene Kim, Kevin Behr, George Spafford

- Deep Work: Cal Newport

- The Art of Leadership: Michael Lopp (Rands)

- Extreme Ownership: Jocko Willink and Leif Babin (once you get through the ho-rah stuff it's a fantastic read)

- Time Management for System Administrators: O'Reilly (fantastic for interrupt driven work)

- Elements of Clojure: Zachary Tellman (not just for Clojure devs)

mystickphoenix··on Ask HN: What is the most impactful thing you've built?
One of my first developer projects. Was working for a GIS company reverse engineering ancient geospatial databases (and our own). Nothing had foreign keys, there was a "global connection table" that provided many-many-joins, primary keys were strings, etc. Hundreds of tables and thousands of columns.

Most of our days on the data migration team were spent tracking down missing connections between entities, inconsistencies in the data that our clients had found, etc. I took a "find a string in every column" stored procedure and rewrote it as a python desktop app. Once the basic functionality was there I multithreaded it to run each query simultaneously. After that, I provided a graph-layout GUI that the users could click through and build their queries dynamically based on existing connections they'd already found.

No idea if it's still a thing anymore but it was amazing for my team. We went from guessing at relationships between entities because we didn't want to wait for the stored proc to run for hours to knowing which entities had what relationships in minutes. Single best thing I've ever written.

mystickphoenix··on Obsidian 1.0 – Personal knowledge base app
even better, it asks you to type a specific vim command before enabling it. Great "here there be dragons, are you a dragonslayer?" UX choice, and fun easter egg too ;)
mystickphoenix··on Antikythera Mechanism: Evidence of a Lunar Calendar (2020)
Obligatory link for Clickspring on youtube who is machining the mechanism from scans: https://www.youtube.com/playlist?list=PLZioPDnFPNsHnyxfygxA0...
mystickphoenix··on Code doesn’t have to be a mess
For me the number one thing I try to focus on is _naming_. If something is hard to name, it's likely hard to understand or overly abstracted (misdirected). If something is easy to name, it likely follows [insert any software development "best practice" here].

What's a good name? I love the phrasing from _Elements of Clojure_ by Zachary Tellman [1]

> Names should be narrow and consistent. A *narrow* name clearly excludes things it cannot represent. A *consistent* name is easily understood by someone familiar with the surrounding code, the problem domain, and the broader [language] ecosystem.

1. https://leanpub.com/elementsofclojure/read_sample

mystickphoenix··on Flipper Zero – Portable Multi-Tool Device for Geeks
FWIW I've used mine to duplicate both of our car key fobs (middle 2000's Mazda and middle-2010's Jeep) so it'll probably be very dependent on make/model/age as to whether it uses rolling codes.
mystickphoenix··on Why have a blog? (2020)
Github pages is a fantastic way to get a static blog up and running. I use Zola instead of Jekyll to have a little more control over the look/feel/etc and have an automatic RSS feed.
mystickphoenix··on Tell HN: Recruiters are lying about remote positions
I started searching for remote-first companies and specifically targeted them. I have 10-15 years of experience (depending on the specific needs of the company) in software, I was in a stable position at yet another zombie startup so I had time to hone my resume, interviewing skills, etc. Took me 2 tries and 2 years to land this particular position but it was worth it.

Interviewing can definitely be a numbers game but in hindsight (and just my experience) it's important to only go for companies where you think you'd be happy working.

As for onboarding, whether it's a remote first, omg-remote-because-of-covid, or an in-person company I've had varied results. My experience at most startups is that onboarding is pretty low on the priority list and quality is very dependent on the hiring manager and the team you've been hired onto.

mystickphoenix··on Tell HN: Recruiters are lying about remote positions
Focusing on remote-only, remote-first, remote-from-scratch companies is how I ended up at my current, and literally best company I've ever worked for, gig. Obviously the pool of such companies is smaller than in-person and they tend to have more competition for roles, but my unscientific guess is that pool is growing larger.

Bonus points for those companies because they didn't have to "figure it out" or change upper management corporate culture to go remote.

mystickphoenix··on My next main browser: a review of Orion
I have that issue as well and end up using xBrowserSync to keep bookmarks synced between Chrome (Android) and Firefox (MacOS and Windows). Maybe worth a shot. I'm on the waitlist for Orion so I don't know if it works on Orion yet, fingers crossed!
mystickphoenix··on DIY Onewheel – open-source self balancing skateboard
What you're looking for is an EUC, Electric Unicycle. Most of the people in the local onewheel group I'm a member of that ride EUC's wear full motorcycle protection. At least one of them can go upwards of 45 mph.
mystickphoenix··on Anti-mimetic tactics for living a counter-cultural life
> You don’t need to fix everything, just make the world better by being in it.

I wish more people would follow this advice. I've made it a habit to try to make the world an infinitesimally better place every day. It doesn't always work out, but the effort is a huge boon to my mental health and maybe I succeed and the world is a better place.

mystickphoenix··on Ask HN: What are some must read books?
Off the top of my head...

- Snow Crash - Neal Stephenson: it has its flaws but is still a rocket ride through a not-so-farfetched cyberpunk dystopia. I love the tongue-in-cheek nature of it as well "Hiro Protagonist" being the main character :D

- Extreme Ownership - Jocko Willink and Leif Babin: a different take on leadership than I've read previously, once you get through the first couple bits on "we're SEALs and badass" sort of stuff there's some amazingly good leadership qualities on display.

- Every Tool's a Hammer - Adam Savage: As a weekend warrior maker, this book speaks to my soul. It gives my brain permission to make mistakes and learn in a way that few others have.

- Michael Pollan: pretty much anything written by him has wit, intelligence, research, practical experience, etc. Love his writer's voice and most of his audiobooks seem to be read by him, a fun bonus!

mystickphoenix··on Ask HN: I'm looking for a good book on the fundamentals of CS
I found The Imposters Handbook - Rob Conery to be a fantastic overview of CS concepts. Taught me where my CS fundamentals were deficient and gave me enough of the proper language to search effectively and start filling in those deficiencies.
mystickphoenix··on Ask HN: What are some must read books?
Non-violent Communication - One of my top 5 books easily. Changed how I think about the language we use in everyday communication with other people, and more importantly, the language I use with myself.
mystickphoenix··on The Origin of Consciousness in the Breakdown of the Bicameral Mind (1976)
He also mentions it explicitly (assuming my memory isn't that faulty) in The Big U.
mystickphoenix··on Show HN: Parallelise pipelines of Python async iterables
I'm unable to find the particular article that made async click for me with Python but I'll try to paraphrase the conceptual idea while trying to ignore language differences as much as I can:

Async function calls work like "normal" until they hit a yield statement. When they do, they yell back up the callstack "hey, I'm going to be waiting for a while, let something else happen while I am".

When that happens, one of two things can happen. 1. Either there's nothing else to do, in which case we wait until something that has yielded to no longer be waiting. 2. Something else is done waiting and it's waiting for its turn. In which case, it's allowed to continue at this point until it either returns or yields again.

In this sense, instead of yielding a value, the function is yielding the stack to something else that can use it while it's waiting.

Async is great for when you're waiting on external processes to complete (database calls, API calls, etc). It's terrible for any CPU heavy tasks because, at least in the Python world, it can still only use a single CPU. In this way, again, specific to Python, it's use-case is much closer to multithreading than multiprocessing.

Another way to think about the machinery behind the scenes is it's a queue of callstacks. If an async call yields the primary stack, its callstack is thrown onto the queue. The queue of callstacks is then processed in order.

Hope that helps! Took me a long while to wrap my head around it and I still struggle reading it some of the time.

mystickphoenix··on Show HN: Parallelise pipelines of Python async iterables
Process/Thread pools help to mitigate the brain damage in Python significantly, but I hear you. Python's concurrency story is the main reason I started looking at other languages for a better concurrency story and it's why I picked up Clojure as a second language.
mystickphoenix··on So you want to write your own CSV code (2014)
Fantastic article!

It's missing: - "what if the quotes are smart quotes?" - This applies to both quotes inside a field and quotes wrapping a field - "what if the file doesn't have a header?" - "what if a logical record is spread over multiple lines?" - Yeah... so, you have line 23 that has the majority of the data in the expected columns, line 24 has additional data in columns 23, 25, and 28 that's supposed to be appended onto the previous line's data that also appears in columns 23, 25, and 28. Line 25, same thing, but line 26 starts a new logical record.

Seen all three above in the wild and Python's (pretty awesome) CSV code didn't handle them. Queue the custom code that wraps Python's core CSV parsing.

← PreviousPage 2 of 3Next →