1,037 karma · joined July 28, 2019
Ironically i suck at Big O notation itself. So maybe i under value it.
Which is to say i have no confidence issues in my working knowledge of Big O. I lead a team, i've developed obsessively for 10 years now and despite my many short comings i don't think understanding trivial complexity - the why of "Why is HashMap faster than BTreeMap on lookup? When is it slower?" etc - is lacking. But, i couldn't use Big O notation to any meaningful complexity with any real confidence. My math background is nil.
In general i need to up my interview game, which i think also means i need to up my math game to have a firm understanding of Big O notation itself.. but the complexity is not the issue, for me at least.
Mind you i don't know, i like Rust - but i'm not a C-like programmer and don't want to be. But, nevertheless my opinion of Zig seems quite high. It seems Zig is the benchmark in this space.
> So PKM might be useful to archive away the details after you reach a conclusion.
100%. I hold the same mindset!
Regardless of the implementation, i want something to archive and/or retain (in the working memory sense) my conclusions. As without repetition i feel like a majority of what i read, and any conclusions therein, evaporate. Maybe the author would argue that if i want to retain it i should study it! .. but i don't, it's just some article i read.
Are my only choices to invest heavily or become increasing narrow minded? The things i actually invest in i know quite well.. but what does that matter? I'd like to be generally, reasonably informed. I'd like some minor effort spent reading broad topics to not be in vain. Besides, even if i invested heavily - there's only so many hours in the day; only so many things i can invest in to properly retain.
It seems reasonable to me to seek software to aid in this. But it feels like the author is attacking the idea of PKM just as much as the implementations. I can imagine many implementations are akin to snake oil.. but the goal seems reasonable. No?
Eg, i prefer my language of choice. However i am personally focused on self hosting, so being "just as easy as PHP" seems useful.
I tend to ship self contained binaries that can run on your computer without configuration. While that would work on a web host it's not going to restart automatically or have any integration with old school PHP focused providers. Has anyone heard of a PHP bridge for this sort of thing? Perhaps I make a version of this app that works under CGI (or w/e)? But then you still have to know "Do i want the binary? Or the CGI? What the hell is CGI anyway?" etc.
if only.
Your complex programs aren't easier in Go, in my experience. The simplicity of the language doesn't help me much when my day is spent fighting to figure out how to make a problem which is inherently complex easy to maintain, reason about, and be without bugs.
I want a language that makes my day simpler. Where at the end of the day, my "net complexity" is less. Go leaves all the complexity to you and offers you very few tools to solve this. Bugs, spread out logic, and even runtime costs of the overuse of Interface{} (prior to Generics at least) left me with a lot of things to solve myself. My days in aggregate were more complex with Go.
Just my experiences.
Fwiw, while i do imagine thinking in words is slower than non-words, i myself have an inner monologue and it is far from... structured when typically active while i'm thinking. It sounds much more like the mutterings of an insane person. Ie while i'm chewing on a problem the majority of my thoughts are without form - but sprinkled in between them are voiced words. Sometimes a run of words, sometimes a single word, often nothing at all.
Similarly while i think best when i talk out loud to myself, what i verbally express are structured quite similar to my inner voice ramblings. They are trains of thought weaving back and forth almost without meaning. Large gaps of jumps, usually cutting myself off mid sentence.
> I think there might be some correlation between this and being introverted, socializing is exhausting for me because the translator is not well trained as I don't use it while thinking, and it has to run at 100%. I've talked with my better half about this and she said it's easy for her because the sentences are already there and it takes zero effort to say them, which aligns with my theory.
I struggle immensely with socializing as well. Unsure if it's related, but i tend to talk _too_ much. It's like i always push the conversation, and i have to fight not to talk. That or i forget my points/etc. Despite talking heavily, i dislike most socialization. I often leave conversations wishing i had said nothing.
Makes it a bit more complex though if the block sizes make subdivision like this difficult, though. This isn't an idea for an implementation necessarily, rather just an idea to illustrate my request. I want to have larger font size than my gutters/etc in my term editors.
It does seem to add reasonable complexity to the implementations, but i imagine it's opt-in.
Giving up on laughter seems a "baby with the bathwater" approach to inclusiveness. I suppose being miserable is rather inclusive though :/
Instead, this is the largest failing in my mind to TUIs. As eyesight goes, font sizes increase, and if you use a TUI so do your borders, pads, etc. You have no way to keep a reasonably consistent border size in a TUI if you also want larger fonts.
As it stands i'd prefer my "UI" elements in my TUI to be half the size they are currently. Gutters for things like line numbers or error indicators are obscenely wide due to this notion that they must be a full block size.
If instead you put restrictions on the division, such that font blocks would have to evenly divide then, hypothetically, misalignment would be less of a concern.
So many cool new TUIs are being born today but without very small font sizes they are made nearly useless imo. Popups in https://zellij.dev/ are another great example of something severely inhibited by old fashioned limitations.
Hypothetically some simple restrictions for variable font sizes could keep the simplicity of TUI while also empowering the UX. Similar to how variable colors didn't suddenly make this a "GUI".
I love so many term features but they're at odds with me when i have a larger font size. Suddenly by having my coding text slightly larger i lose screen real estate because all of my borders and widgets are big font characters too.
Is there a good way to have bigger primary font with smaller TUI borders/widgets/etc? What would a good way look like?
Eg both houses and land purchases (something i'm trying to do) are quite a difficult market due to cash offers being consistently present. Ie a new family won't have 500k in cash and their loan offer isn't as good as a cash offer. It happened to me several times when i was buying my home ~6 years ago, 250k cash offers, 300k cash offers, etc. And ironically it just happened to me 2 weeks ago on a land offer. A 310k land offer (loan) beaten out by a higher value and pure cash offer.
So my question is if prices will really dip that much when seemingly so much of the house and land market are propped up by cash rich buyers. Hypothetically they don't care about high interest rates right?
Perhaps high interest rates will mean the cash rich people can offer less due to less competition, but if cash rich people are also competing against other cash rich people then.. i'm not so sure.
Thoughts?
If it's just as fringe as you say, and i agree, then we shouldn't entertain the idea that media is (or was, in early 2000s before Netflix) losing that much money to pirating. As i'm sure now that people start migrating to less legal avenues for digital media we'll start seeing a resurgence of cries over lost profits due to piracy.
The thing that Nix, for me, currently fails at is introspection. Every function is a black box and i have no clue what's in it. I have to go dig up files on github to see what it even accepts. It's as if everything is obtuse.
A "simple" LSP/Type system would do wonders for understanding what the function is, what it does, and the inputs/outputs.
.. also i have some difficulty understanding functional "mutation" patterns like how overloads are implemented. But i hope that'll make sense eventually.
NOTE: i also think Flakes are absolutely necessary for Nix. Nix is way less valuable to me without Flakes.
The thing i've found most interesting is it appears[2] that CRDT backends need to expose CRDT flavored types to users. Which is to say how i'm writing this combines the notion of a type, say `[i32]` with how you want the merges to work. CRDT works great but based on my amateur-hour researching on the subject i don't feel you can write a single CRDT merge strategy for a single data type ala `[i32]` and have it be always correct. Applications need to indicate enough context on what makes sense for a given data type.
So yea, i agree with you. I'm interested in making a database-like thing, backed by CRDTs, but i also have seen very few general purpose implementations with CRDTs. It feels like i'm breaking "new ground", while having no idea what i'm doing and having no intention of being an actual researcher here. I'm just making apps i enjoy heh.
[1]: https://github.com/attic-labs/noms [2]: appears, because i could easily be wrong
The language team has done a great job rounding rough edges, and this next roadmap is slated for even more polishing. They heavily prioritize dev experience which is why i think people like myself (a GC'd language person historically) use and love Rust so much.
Obviously i'm biased, but i quite enjoy it. I find i am more efficient now than before, because it manages to give me the ease of the "easier" languages quite often with a rich set of tooling when i need to go deeper.
Personally i feel the concern over the borrow checker is way overblown. 95% of the time the borrow checker is very simple. The common worst case i experience is "oh, i'm borrowing all of `foo` when i really want `foo.bar` - which is quite easily solved by borrowing just the `.bar` in a higher scope.
The lifetime jazz is rarely even worth using when compared to "easier" languages. Throw a reference count around the data and you get similar behavior to that of them and you never had to worry about a single lifetime. Same goes for clones/etc.
I often advocate this. For beginners to use the language like it was a GC'd language. A clone or reference count is often not a big deal and can significantly simplify your life. Then, when you're deeper into the language you can test the waters of lifetimes.
So yea. Your mileage will vary i'm sure. But i find Rust to be closer to GC'd languages than actual manual languages, in UX at least. You won't screw up and leak or introduce undefined behavior, which is quite a big UX concern imo.
The potential DSP integration is nice too. And to top it all off, it's made in a language i enjoy and within the first 24h of using it i had a PR made for a small feature i wanted. Being able to contribute in a language i enjoy was nice.
If you just mean handling errors from funcs .. it's no different than non-async, no?