What is trying to be expressed by "highest form of wealth" is usually about agency.
The problem with agency, unlike what 'power' connotes you to believe; you can't just have and store it for later. Like others rightly point out in this thread, there are many avenues in life you want to be agentic but cannot solve with anything you possess, but only through becoming a required thing through transformation; examples are health, skillfulness, being understood in a relationship, an equanimous existence etc. Even then, you're to an extent up to the whims of misfortune and fortune, or if you're not allergic to that word; to fate. There is at least one thing you can't be agentic about with any wealth, and that is your fatality; which connects to the original meaning of fate.
But that's not even the only problem with agency; most of the time you don't even know when you have it and also when you don't have it. This is the bread and butter of psychotherapy; you either misattribute blame where it doesn't belong or fail to hold people/yourself accountable when you should; or you miss what and how you could solve a problem but instead invest your energy and emotions in an avenue that just won't work.
Which means agency, capability of doing things that get you towards your real goals, whether you've realized them or not, is deeply tied to wisdom; knowing in which manner you're deceiving yourself be it through buying things instead of being things, or getting out of being confused about whose agency exactly lies where and where is the way out of an agentic entrapment.
Which ultimately means, there is one and one only form of wealth, that thing you constantly need to aspire to build, and that is wisdom.
I think for many of us (myself included), the dwelling feels familiar and safe. I had a hard childhood in some regards, and I learned that fear and doubt were safe bets. I spent many times being unbearably excited for things only to be disappointed, over and over, for so long.
It’s so strange to think that as an adult, I’m still that kid. I can rationalize past it, but I still recoil from life like a child.
Many of us do. We learn some things as kids and have a hard time letting go of it. Especially if it’s meant to protect us.
I have a hard time doing more than rationalizing. The act of letting go and carrying on with more positive or even neutral thoughts is actually a staggering task to accomplish at times.
Hopefully with practice I can get there. I’m realizing it’s important not only for me, but everyone around me. I’m not a black cloud or anything, but I could be a much better person to be around if I could overcome stuff like this. If anything, I’d just be more present and available. I tend to disappear when I’m unhappy - not many people have to experience it.
I think you cannot control how you are made, but you can control what you do with it. It's up to you to figure out how to put yourself in situations where your personality will be an asset rather than an obstacle.
As far as emotions like inadequacy and anxiety, I think mindfulness is a useful tool in terms of differentiating between having those emotions and dwelling in them.
For instance, recognizing one's sense of inadequacy, and from a sober state of mind being able to decide whether that is a signal to reenforce one's skills in some area, or to remind oneself why that reaction is inappropriate in this case is a healthy response. Just walking around feeling bad all day due to imposter syndrome is not a healthy response.
Regarding your last sentence, I think technical jobs, and especially people who write code as part of their job, are forced to develop a special kind of humility. Engineers, scientists, technicians, deal with the law of physics everyday. As a developer particularly you get immediate feedback dozens if not hundred of times a day. You can't bullshit your way out of a bug. The computer is cold, rational and executes the piece of code you wrote. You can't convince it to run your program with pretty words.
This is in contrast to other jobs, for example marketing specialist. As a marketing specialist you spend weeks or months on a well crafted marketing campaign, then you launch and the results are not bad but yet not great either. There could be millions of reasons for your campaign to have failed. You could job-hop thinking you did a great job and blame the lukewarm success on external factors.
There are people who spends their whole career failing at what they do who would never know otherwise because their job lacks this sort of cold instant feedback.
The big shift in my thinking came from understanding that negative thoughts are indeed logical for the most part but not necessarily conducive to good outcomes. So to actually be successful you have to adopt cognitive distortions that lean toward optimism and action. You can't win against negative internal dialogue with rationality, so the only way to get past it is to be unreasonable. Reject any negative thought with prejudice as soon as possible, like in few milliseconds, at least until you're healthier. This overtime trains your mind to think fewer of those negative points. Which in turn allows you to focus on good things and kinda delude yourself into taking action, actions tend to lead to better outcomes.
For me burnout comes from the endless treadmill of external pressures (arbitrary deadlines, changing requirements) and the endless treadmill of development work. There's not really ever a chance to step back and take a breath - just constantly moving from one high priority task to the next.
It's also a bit thankless, being good as this job, in a lot of cases, means you are moving really fast from one task to the next without any down time in between. I find it hard to get to a place where I can feel accomplished or proud of a piece of work, because the next fire/high-priority task is already "behind schedule".
I think part of it may also be due to the fact that the job is constant problem solving. Even though its nice to find solutions to problems, knowing you'll be perpetually in a state of "there is a problem that must be fixed" is taxing on mental health (for me at least).
> writing complex React components feels more like admin; a constant worry that I'll miss a dependency in my useEffect call and end up crashing my browser session.
I don't understand this worry, but I guess that happens when you try to do everything with hooks, the way I settled in my approach is to use React components just for the view without hooks, nor lifecycle logic, just dumb components with ocasional local state (useState)
Then using Controller pattern, within the controller I use 4 types of hooks, 1 navigation (useHistory), 2 read global state (useSelector), 3 dispatch an action (useDispatch), 4 useEffect() to execute on props change or component mount.
That's it, that's where the realm of React and UI ends for me, everything else is in Ducks, Ducks are single file or folder per module that contains Actions, Epics (Obervables) or Sagas (generators), Reducers, initial state of store and Typescript types.
I really like this separation of concerns:
- dumb components: to worry just about the looks and local state.
- controllers: to worry about data in, actions out, life cycle and navigation.
- Ducks: Management of data fetching and global state.
I wrote this from the top of my head, but if anyone is interested I'm thinking about writing a demo repository and document this approach, maybe others have done it already this is not new, but practices that I've been collecting along the way.
Explain to me this. How can proof-of-work NOT result in massively expensive energy consumption, regardless of where the energy is obtained?
Suppose I wanted to conduct a 51% attack against Bitcoin. If I succeed, I stand to benefit monetarily, for example by shorting BTC on the Chicago Mercantile Exchange -- since a successful 51% would massively damage trust in bitcoin. Alternatively I could double-spend, though reaping the rewards without getting caught might be harder. Let's put the details aside and just agree that if you had the power to 51% bitcoin, you could make a lot of money off it.
What stops me from doing this is that the energy required for 51% of the mining power would be ludicrously expensive, even for just the half-hour[1] or so it would take to execute a damaging attack.
At least, it must be more expensive than the amount of money I could gain via my short position and/or double-spends. Otherwise it would be worth doing, right?
But for that to be the true, it must mean that the whole rest of the network is currently expending at least that much energy, every half hour or so, to constantly stop somebody from doing this.
So doesn't that put a dollar-amount floor on Bitcoin energy consumption, equal to [maximum amount one could stand to gain from crashing Bitcoin] repeated every [minimum duration of 51% attack to destroy confidence in bitcoin]?
Whether the mining is occurring with cheap energy in Iceland or expensive energy in California doesn't change that enough of that energy must be used to make it too expensive for an adversary (who could also be operating in Iceland or wherever) to attack.
[1]I say half-hour because 3 confirmations are considered sufficient for Coinbase to accept a BTC deposit, so I think it would make big waves if 3 blocks got reversed by a 51% attack.
Glamorous Toolkit (https://gtoolkit.com) by feenk, which embodies the thesis of this blog post, is in my opinion the most exciting working development environment in decades. I think in 5-10 years people will be pointing to it as having a huge impact on the industry.
Once you understand the consequences of reducing the cost of specialised tool development by orders of magnitude, it becomes obvious that a qualitative change in experience follows, that brings us much closer to what people like Engelbart were searching for.
I've personally not find pushing myself to ever yield better outcomes. I think we have this false causation between pushing ourselves and achieving something.
In fact, I think we often would rather push ourselves in an all out burst of max effort exhaustion, than put dedication and consistency behind a goal.
Pushing yourself just a little bit more, but sustainably, consistently, and actually taking your progression slower, giving yourself more time to achieve your goals, but making sure that you're constantly moving little by little closer to it. That's what worked best for me. It means the journey feels easy as well, it just becomes a routine of excellence.
I think what often happens is that we're too impatient, probably because we're anxious about the thing we're trying to achieve, we're stressed about it and would like to get it over with so we can be stress free again, so we give a big push, and you know what, most of the time that push does nothing, and you get more stressed but also exhausted. At that point, flight is often the only recourse left.
The only exception to this might be short little events, like sure if you have an exam, a bit of stress and a last all out effort can help. If you're competing in some athletic event similarly. But for most other life goals, I'm not so sure.
There's two quotes related to my prior comment that I like to keep in mind, thought others might find them insightful as I did:
> There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.
That one reminds me what success even means. Simply growing myself, being slightly better today than I was yesterday is accomplishment and success in itself. When you focus on others or external achievements, you tend to get lazy in your approach to growth, you look for shortcuts, push harder than is smart, and you get anxious, nervous, stressed in a way that will slow your growth long term.
> Most people overestimate what they can do in a day, and underestimate what they can do in a month. We overestimate what we can do in a year, and underestimate what we can accomplish in a decade.
This one reminds me why you got to give yourself longer horizons to success. Success and accomplishment follow an exponential curve in my opinion, you need to keep that focus and continue to accumulate that momentum until the tipping point.
I've been lucky enough to be independent for 10 years thanks to a web-app (Oxbridge Notes)
Along the way, I learned a lot concerning both system design (e.g. dependencies, CI testing, monitoring) and also the marketing side required to channel enough customers into the business to generate revenue.
Lately I've recorded 25 or so videos about these topics — basically a day in the life in small tech. If this is your world (or if you plan for this to be your world), these videos should have value to you: https://www.semicolonandsons.com/
Tabbed browsing: a lousy band-aid over poor browser document and state management (2014):
...What I want is to maintain a list of current references, preferably with some spatial context (tree-mode browsing is great for this) to what the relationship is between pages in my browser session. I do not need is for every last single page to be open at the same time, sucking down memory, CPU cycles, and worse: playing videos and/or making noise.
That state-management is missing. Bookmarks aren't really it -- they're a permanent quick-reference to stuff you want to go back to, and as with any storage locker or closet, suffer from the clean-out problem: it's a goddamned pain in the ass to go and sort through the stuff you've tossed in there and clean out the junk.
Browser history isn't it either: it's too comprehensive, is insufficiently contextualized, doesn't record relationships between pages (other than, maybe, relative time). On mobile devices it's a chore to sort out where in your history a given page was in the highly constrained display available. Site-supplied titles are often absolutely worthless for finding content (though some such as HN do this well).
There's a space between the comprehensive listing of everything you've visited, and the highly organized catalog, that's missing in the browser space. Effectively: the current workspace, with the papers and books with which you're currently working open in front of you. I've been playing with this stuff for decades and it's still a frustration....
To give a simplified but largely accurate summation: IP and Ethernet were each designed in different time periods and largely without knowledge of the other. Ethernet was historically used in such a fashion that multiple hosts (more than 2) occupied the same collision domain, that is, they were physically connected to the same cable, or through hubs that repeated frames to all interfaces without routing. This means that Ethernet required an addressing scheme so that hosts on the same media knew which frames were for them (higher-level protocols at the time did not necessarily handle this).
Ethernet's addressing scheme was not designed to accommodate large hierarchical networks and so is unsuitable for the IP use case, but more importantly, IP was designed completely separately from Ethernet, and was not used primarily with Ethernet until later, so IP could not "assume" that the layer below it handled addressing (typically there was either no layer below [point-to-point] or only a very simple one).
The result is that Ethernet and IP duplicate functionality to some extent. It is theoretically possible, although not common, to build a network which uses only layer 3 routing without any reliance on Ethernet addressing. A significant reason this is rare, arguably the most significant reason, is that IP is now carried over Ethernet a significant majority of the time and L2 Ethernet devices (like switches) require the use of Ethernet addressing for the network to function. You usually see "pure IP" in virtual networking environments where the IP is encapsulated in, well, more IP, but even then Ethernet frames are sometimes used because, well, just like network hardware, operating system network stacks generally expect them (examine, e.g., the linux bridge implementation). It is completely possible to build network stacks and network appliances which do not require the use of Ethernet but it is expensive and there's not much of a motivation to do so, and you'd run into issues with any kind of equipment not so designed.
Addressing is not the only duplicate functionality between Ethernet and IP, and it's one of the less significant ones since Ethernet addressing does provide utility even if not strictly required. Ethernet frames are checksummed, and IP headers are also checksummed, even though the Ethernet checksum is already over them. The IP header checksum exists because IP was historically carried over lower layers that did not provide integrity checking. This is basically pure wasted space in typical networks, so IPv6 drops the header checksum to remove the overhead.
In general, though, network protocols tend to make more sense when you have some awareness of the history of their development, as when you try to view the modern internet as an elegant, monolithic design as some authors attempt, a lot of things won't make sense because they simply are that way for historic reasons. Ethernet and IP were each designed in the '70s, but separately, and their use has accumulated significant cruft since then, including some radical changes in the ways that they were used (for example the transition of Ethernet from shared media to point-to-point, which occurred de facto earlier but became largely formalized with the introduction of GbE which prohibits more than two hosts in a collision domain, and of course ironically the introduction of multiple hosts in a collision domain as an even larger issue with wireless protocols, which requires additional handling below, or actually in lieu of, the ethernet layer, 802.11 being a replacement for ethernet that happens to behave similarly in many ways for compatibility).
Finally, the OSI model is something that tends to add complexity and confusion to these discussions, which is why I doggedly discourage its use in teaching. The OSI Model describes the OSI protocols, which were contemporaries competitors to the TCP/IP protocols. Arguably, one of the reasons that the OSI protocols fell out of use (in favor of IP) is exactly because they assumed seven layers, and each was fairly complex. Some OSI protocols are still in use, for example IS-IS (OSI layer 2) in the telecom industry and some backbone IP transit, but in niches and generally being replaced with IP. IP is intentionally simpler, and can be fully described using four layers, what's usually referred to as the TCP/IP model.
The OSI layers do not map 1:1 to the TCP/IP layers, even if you simply ignore the ones that map more poorly as instructors often do. Even worse, many instructors and textbook authors feel such a strong compulsion to map modern networks to the obsolete OSI model that they cram application-layer protocols into OSI layers 5 and 6 in order to have examples of them. I have seen cases as extreme as an instructor claiming that HTTP cookies represent the session layer. This kind of thing is nonsense and hinders understanding rather than contributing to it. If the OSI model is taught (not a bad idea at all as students should realize that TCP/IP is merely the popular way, and certainly not the only way), it should be taught specifically by contrasting it to the different TCP/IP model. Unfortunately few instructors and website authors today seem to even be aware that the OSI protocol stack existed separately from IP.
And, if you are wondering, yes, Ethernet can be used in a switched network completely independently from IP (although not really in a routed network unless you are generous about how you define routing). This was more common decades ago, the only equipment I have ever personally encountered that used bare Ethernet was a very outdated CNC setup.
The fundamental problem with UI frameworks is figuring out what to re-render based on some event, while also providing a declarative view of the code to the developer.
Some libraries optimize this via micro-optimizations (e.g. inferno is carefully crafted so that browsers use the hidden classes optimization nearly all the time). Some libraries do this by compilation (e.g. svelte takes assignment expressions and rewrites them into a reactive trigger call). And so on.
The problem though is that no matter what the framework does, there's no way to render 1 million things in a page all at once (and yes, people do try that). On a fundamental level, doing anything a million times synchronously will block the main thread (javascript is single-threaded, you see).
In the mithril.js community for example, the solution is to say "well, don't render 1 million things, use pagination or occlusion culling or search or some other mechanism since no one's ever going to meaningfully interact w/ 1 million UI elements simultaneously anyways". In the React world, concurrent mode is a technical attempt at addressing that same issue.
There are various different use cases that fall within concurrent mode's scope, e.g. avoid stuttering animations (the mithril.js community answer in this case btw might be "well, use CSS" or "use lifecycle events and vnode.dom to drop down to vanilla JS").
The React team is corporate-sponsored, so they solve problems in very different ways that an OSS project run by volunteers.
Despite people mention the lack of the data it's not a problem anymore. It was a problem like few years ago but these days we have access to thousands hours of speaker data. For example we have 100 hours of single speaker database at CMUSphinx, it's not a big problem.
Algorithms become a bigger problem these days. For TTS for example one has to implement hybrid speech synthesis technology combining hidden markov models and unit selection. Most commercial companies are using this technology, but no open source project has it released. The closest ones are OpenMary and Festival, but they are either unit selection or hmm, no hybrid synthesis implementation yet.
The problem with agency, unlike what 'power' connotes you to believe; you can't just have and store it for later. Like others rightly point out in this thread, there are many avenues in life you want to be agentic but cannot solve with anything you possess, but only through becoming a required thing through transformation; examples are health, skillfulness, being understood in a relationship, an equanimous existence etc. Even then, you're to an extent up to the whims of misfortune and fortune, or if you're not allergic to that word; to fate. There is at least one thing you can't be agentic about with any wealth, and that is your fatality; which connects to the original meaning of fate.
But that's not even the only problem with agency; most of the time you don't even know when you have it and also when you don't have it. This is the bread and butter of psychotherapy; you either misattribute blame where it doesn't belong or fail to hold people/yourself accountable when you should; or you miss what and how you could solve a problem but instead invest your energy and emotions in an avenue that just won't work.
Which means agency, capability of doing things that get you towards your real goals, whether you've realized them or not, is deeply tied to wisdom; knowing in which manner you're deceiving yourself be it through buying things instead of being things, or getting out of being confused about whose agency exactly lies where and where is the way out of an agentic entrapment.
Which ultimately means, there is one and one only form of wealth, that thing you constantly need to aspire to build, and that is wisdom.