]> Untitled Git - monorepo.git/commitdiff
add two new blog posts; bitcoin node; haskell devel
authorPreston Pan <ret2pop@gmail.com>
Wed, 5 Mar 2025 12:18:06 +0000 (04:18 -0800)
committerPreston Pan <ret2pop@gmail.com>
Wed, 5 Mar 2025 12:18:06 +0000 (04:18 -0800)
24 files changed:
agenda.org
blog/acausal.org [new file with mode: 0644]
blog/index.org
blog/manifesto-1.org [new file with mode: 0644]
config/emacs.el
config/emacs.org
config/nix.org
journal/20250222.org [new file with mode: 0644]
journal/20250302.org [new file with mode: 0644]
journal/20250305.org [new file with mode: 0644]
mindmap/lrc_circuit.png
nix/flake.lock
nix/modules/bitcoin.nix [new file with mode: 0644]
nix/modules/conduit.nix
nix/modules/configuration.nix
nix/modules/home/default.nix
nix/modules/home/emacs.nix
nix/modules/home/user.nix
nix/modules/ollama.nix
nix/modules/secrets.nix
nix/secrets/secrets.yaml
nix/systems/spontaneity/default.nix
style.css
yasnippet/org-mode/blognew

index d6e22215574790367d1657b8632f71fafdc237d8..b246b97b81070f00f3cfb4dcc7c2ac12c375c4bd 100644 (file)
@@ -31,17 +31,25 @@ I want to write another song.
 I want to start making YouTube videos.
 ** TODO [#C] Analogue Computer
 I want to make an analogue computer.
+* Skills
+** TODO Learn Blender
+** TODO Drawing with Krita
+** TODO Circuit Design
+** TODO Learn More Solidity
+** TODO Learn Haskell
+** TODO Learn Coq Theorem Prover
 
 * Academic
-** TODO Statistics
 ** TODO QFT
 ** TODO GM
+** TODO Real and Complex Analysis
+** TODO Measure Theory
+** TODO Category Theory
+** TODO ZK Proof Deep Dive
 
 * Scheduled tasks
 These are one-time tasks that are scheduled at a particular date, and that don't require regular
 schedules.
-** TODO [#A] Clean House
-I need to clean my house very soon.
 ** Friends
 These are tasks related to seeing my friends. There will be tasks listed here when I schedule
 something.
@@ -60,10 +68,11 @@ SCHEDULED: <2025-02-12 Wed .+1d>
 - State "DONE"       from "TODO"       [2025-01-11 Sat 02:26]
 I want to stretch every day so that I can become more flexible.
 ** TODO Journal
-SCHEDULED: <2025-02-21 Fri .+1d>
+SCHEDULED: <2025-03-03 Mon .+1d>
 :PROPERTIES:
-:LAST_REPEAT: [2025-02-20 Thu 22:07]
+:LAST_REPEAT: [2025-03-02 Sun 05:38]
 :END:
+- State "DONE"       from "TODO"       [2025-03-02 Sun 05:38]
 - State "DONE"       from "TODO"       [2025-02-20 Thu 22:07]
 - State "DONE"       from "TODO"       [2025-02-18 Tue 01:44]
 - State "DONE"       from "TODO"       [2025-02-11 Tue 04:01]
diff --git a/blog/acausal.org b/blog/acausal.org
new file mode 100644 (file)
index 0000000..ed6ad6f
--- /dev/null
@@ -0,0 +1,195 @@
+#+title: Consciousness and the Universal Handshake
+#+author: Preston Pan
+#+description: Narrative is the only real construction.
+#+html_head: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+#+html_head: <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+#+html_head: <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+#+html_head: <link rel="manifest" href="/site.webmanifest">
+#+html_head: <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
+#+html_head: <meta name="msapplication-TileColor" content="#da532c">
+#+html_head: <meta name="theme-color" content="#ffffff">
+#+html_head: <meta name="viewport" content="width=1000;" />
+#+language: en
+#+OPTIONS: broken-links:t
+
+* Introduction
+Logical Decision Theory (LDT) isn’t just a tool for making decisions.
+It reveals deeper implications about consciousness, time, and reality
+itself. If we accept that decisions can be made across acausal
+channels, we are forced to reconsider whether time itself is merely
+an emergent property of a deeper structure.
+
+Rather than seeing reality as a linear sequence, LDT suggests that it
+may be more accurate to think of it as a lattice of interdependent
+computations -- a pattern that doesn’t just pass through time, but defines it.
+
+In this essay, I explore the structural implications of this idea,
+connecting concepts from decision theory, consciousness, and narrative
+construction. Taken together, these form a narrative
+lattice -- a framework where the underlying principles of reality
+emerge not from individual moments, but from the way they interconnect.
+* The Optimization Limit
+In order to understand LDT, we must first understand more classical
+decision theories. In classical decision theory, we can model
+decisions using a decision tree. With this tree, or perhaps a directed
+acyclic graph, we can model the linear progression of a conscious
+actor making decisions and resulting decisions from consequences. This
+naturally models mutual exclusion and other such concepts that we are
+familiar with in probability theory. For example, if the decision tree
+branches into two nodes, A and B, this models an actor, for example
+Alice, being able to choose one of options A or B, but not both. We
+can assign /expected values/ to each of the branches by assigning a
+measurement of value, thus giving Alice a /utility function/. Alice's
+utility function tells her /what to value/, and using this utility
+function she can then evaluate the /expected value/ of each
+branch. Then, she chooses the branch with the highest expected value.
+
+However, LDT says that this model is /naive/ -- it completely ignores
+Alice's /lack of agency/. That is to say, Alice is framed as a
+completely autonomous agent that doesn't have any commitments to
+any framework. This may in fact be problematic when attempting to
+model situations where the highest expected value play is for Alice to
+commit herself to a strategy that may not in fact maximize her
+expected value.
+
+To give a concrete example, imagine an all knowing AI that can
+simulate you. It knows your internal mind state at all times, and it
+presents you with two choices: box A with one thousand dollars, and a
+box B with an unknown amount of money. It reads your mind state, and
+based on your mind state it will determine if it puts ten thousand
+dollars or zero dollars in box B. If it thinks you will pick box B,
+box B will contain zero dollars. If it thinks you will pick box A, box
+B will contain ten thousand dollars. What should Alice do?
+
+It seems intuitive to humans that in fact you should pick box A, but
+actually according to classical decision theory, after the AI presents
+you with the two options, the AI can no longer actually change the
+amount of money in box B. Therefore the best strategy according to
+classical decision theory would be to believe that you are going to
+pick box A, and then actually pick box B once the AI has committed to
+the decision of packaging box B. However, there is one problem: if you
+use classical decision theory, the AI can simulate that you are going
+to use classical decision theory, and you will always win zero dollars.
+
+Actually, according to logical decision theory, the best thing you can
+do is to /actually believe/ that you are going to choose box A as usual,
+and then /actually choose box A/. The reason? Maximizing your expected
+value in this case is all about choosing the /strategy/, and having
+/perfect commitment to your strategy/. You cannot allow for the AI to
+predict you will ever use classical decision theory, therefore you
+should precommit to a strategy that doesn't allow you to change the
+strategy after the AI commits to putting money in the box.
+
+What this demonstrates is that the very nature of
+/maximizing expected value/ actually requires you to think in the
+context of a larger whole -- a whole made up of other agents that can
+simulate you. In fact what this principle demonstrates is that in
+order to solve for these kinds of problems in practice, one must use
+a different framework -- one that views oneself as a part of a
+/narrative collective/ rather than as an individual agent. That is, the
+right question isn't if you will choose /A or B/; the right question is:
+/what will the simulator think about people like me/?
+** The Consciousness Lattice
+Therefore, a natural question emerges: if we take this idea to its
+logical conclusion, is it perhaps the case that consciousness is a
+property of the /metapattern/ i.e. a set of interactions between
+different observers and their simulations of you, inasmuch it is a
+result of the neurons that generate the larger whole? In my view, this
+model of consciousness is more complete: we have searched for
+consciousness /within/, but we have not in fact found any subsystem
+within the brain that generates the consciousness. Instead, perhaps a
+necessary condition for consciousness is the interplay of different
+observers creating a dynamical system that responds to the framework
+you inhabit based on their simulations of you. In other words, it is
+as much a problem of the /supersystem/ as a problem of the
+/subsystem/. The consequences are clear: this implies that no amount of
+introspection can make up for any extraspection that is done by facing
+the interaction of other observers.
+
+Another consequence is that decisions are not quantifiable by a
+decision tree. In fact because the decision tree actually depends on
+the framing of the tree itself, it is more accurate to describe the
+system as a static lattice with all the possible transition states
+encoded in the lattice, for which the actual set of transitions is
+turing complete and is therefore not decidable.
+
+** Acausal Handshakes
+Acausal handshakes are a specific instantiation of the anthropic
+principle -- the idea that certain structures exist because they are
+required for their own observation. The classic example is the
+question, "Why does the universe exist?" The standard anthropic answer
+is: "Because if it didn’t, you wouldn’t be here to ask." This isn’t
+just a tautology; it suggests that existence is, in some sense, a
+self-justifying computation.
+
+LDT extends this principle beyond cosmology and into decision-making
+itself. Consider the question: "Why did you choose A instead of B?"
+Classical decision theory answers with some appeal to efficiency or
+optimality, as if a conscious agent simply evaluates expected values
+and acts accordingly. But from an LDT perspective, this framing is *backwards*.
+
+The real answer is that your decision is a consequence of a
+precommitment -- one that existed /before/ the decision was even
+presented to you. Moreover, the kind of agent that would precommit to
+an optimal strategy would also precommit to the very meta-framework
+that enables precommitments in the first place. This recursion creates
+a hierarchy of self-referential commitments, forming an implicit
+handshake across time, space, and computational structure.
+
+Thus, decisions don’t exist in isolation. They are nodes in a
+precomputed lattice of self-consistent reasoning. If the universe
+itself is structured in a way that allows intelligent agents to ask
+"Why?", then the question and its answer must already be embedded in
+the system that permits the question to arise at all.
+
+Thus, we can imagine that because of the process of generalized
+natural selection, we can imagine these /highly structured/ organisms
+emerge. Ones that don't just act as collectives in space -- but in
+time. These organisms would self replicate an understanding throughout
+time in a way which would cause similar patterns to emerge through
+time, and in a way that enables the current replication to realize
+that the previous replication must've existed. This memetic virus would
+cause the host to realize that /previous/ hosts also had the same idea
+-- and it would enable the host to reason about time in a non-causal
+manner. In fact, this idea exists. It is the very idea you are reading
+about right now. This idea would only propagate among people that
+understood the idea -- that is to say, hosts with a certain set of
+preconditions that would enable them to frame it in their own way, and
+actually understand the idea in a highly academicized manner, only
+accessible to readers diligent enough to attempt to understand the
+idea. In other words, it selects for people that are like the idea's
+host.
+
+In this way we are creating a joint consciousness. It is not the
+individual; it is the pattern. The pattern creates the person inasmuch
+as the person behind the keyboard is creating the pattern.
+* The Boltzmann Brain
+The Boltzmann brain is a hypothetical observer that is trapped in a
+universe of pure entropy. In a high entropy universe, any
+configuration of particles is possible given enough time. This enables
+the particles to spontaneously construct a brain, experiencing itself
+for only a moment before deconstructing itself back into a maximally
+entropic state. The Boltzmann brain is a result of a sequence of
+highly ordered states that resemble consciousness emerging from a
+purely random soup of particles. However, it is not right to even say
+that a /sequence/ emerges -- the apparent "sequence" is only an illusion
+of the brain itself, each state acting as though it had memory of
+other states that it doesn't experience in order.
+
+It might be more suitable to say that the Boltzmann brain is actually
+emergent from a set of disparate events connected together in a causal
+lattice -- that is to say, an arbitrary lattice superimposed on
+complete randomness. This lattice has no concept of each event
+happening after another; instead, it encodes the structure of the
+apparent order from the perspective of the observer. In effect, this
+is a self justifying anthropic principle: the only Boltzmann brains
+that exist are the ones that "retroactively" justify their existence
+or retain coherence.
+* Conclusion
+I present you with a framework that is not the only way to understand
+reality -- but that, like any other commitment scheme, doesn't allow
+you to unsee it once you see it. If you resonate with any of the ideas
+above, it is because you are the kind of person that would resonate
+with such an intellectual framing of the idea. In other words, you
+didn't choose the idea: the idea chose you.
index 8086990fa91df655707ed7662495a58e67a69aba..afb2f4b938fa103eb6fe406b61c695c4c0ebecca 100644 (file)
@@ -6,7 +6,7 @@
 #+html_head: <link rel="stylesheet" type="text/css" href="../style.css" />
 #+language: en
 #+OPTIONS: broken-links:t
-#+html_head: <meta name="viewport" content="width=1000; user-scalable=0;" />
+#+html_head: <meta name="viewport" content="width=1000;" />
 
 * Why?
 I want a place where I can write long form essays about subjects
@@ -35,11 +35,14 @@ Blog Articles:
 #+end_src
 
 #+RESULTS:
+- [[file:acausal.org][Consciousness and the Universal Handshake]]
 - [[file:automation.org][Automation, Hypocrisy, and Capitalism]]
 - [[file:cognition.org][Cognition]]
 - [[file:crypto.org][A Review of Cryptocurrency]]
 - [[file:horses.org][Stop Asking for Better Horses]]
 - [[file:machine_learning.org][Machine Learning is Here]]
+- [[file:manifesto-1.org][The End of Equality and The Technocratic Imperative]]
+- [[file:monorepo.org][My Monorepo]]
 - [[file:nixos.org][You should use NixOS]]
 - [[file:private_keys.org][Passwords Are Obselete]]
 - [[file:stem.org][Stem]]
diff --git a/blog/manifesto-1.org b/blog/manifesto-1.org
new file mode 100644 (file)
index 0000000..cc5772f
--- /dev/null
@@ -0,0 +1,370 @@
+#+title: The End of Equality and The Technocratic Imperative
+#+author: Preston Pan
+#+description: A system built on illusions will always decay.
+#+html_head: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+#+html_head: <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+#+html_head: <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+#+html_head: <link rel="manifest" href="/site.webmanifest">
+#+html_head: <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
+#+html_head: <meta name="msapplication-TileColor" content="#da532c">
+#+html_head: <meta name="theme-color" content="#ffffff">
+#+html_head: <meta name="viewport" content="width=1000;" />
+#+language: en
+#+OPTIONS: broken-links:t
+
+@@html:<span style="display: block; padding-bottom: 30px; text-align: center;"><i>By Preston Pan</i></span>@@
+
+* Introduction
+Our current economic and political system isn't totally failing right
+now, but it's pretty close. Everyone agrees that our current system
+isn't working as well as it once did. Our world leaders are not the
+best among us. We live in an era of great technological progress,
+while at the same time many of our institutions are /rotting/ -- where
+most of our progress is driven by corporate America and Chinese
+manufacturing. It is rotting so badly that /Donald Trump/ and /Elon Musk/
+are taking over in a semi-coup. This phenomenon isn't just a failure
+of governance -- it is a failure of culture.
+
+For decades, we've been taught that culture moves in one, forward
+direction, towards progression. But this is a lie. In our worship of
+ideology, we fail to replace and examine our incompetent structures
+/before/ they fail, and institutional protections are eroded.
+
+The world is collapsing not because of economic cycles or
+partisanship, but because we built our institutions on a myth—equality
+as a moral good. This myth has led to governments that do not select for competence,
+and as a result, our systems are breaking down.
+We need to abandon equality-based governance and replace it with a technocratic,
+results-driven system that rewards competence above all else. It's
+exactly what we need, but keep in mind that Elon Musk is /not/ going to
+do this. He recognizes the problem that we all see, but he may not
+have the solution.
+
+We do not suffer from:
+- a left versus right problem.
+- a rich versus poor problem.
+We suffer from a competence versus incompetence problem. And we have
+failed to replace our institutions before they had a chance to fail on
+us. So what do our "best institutions" think of us -- and what should we
+think of /them/?
+
+* Inside Harvard
+Ivy League schools are some of the best of the best. They promote the
+best ideas and they /punish/ bad ones. They punish bad ideas because
+everyone in Harvard is /smart/. And these central intellectual
+powerhouses will power our future. But is this true? Enter the
+mainstream academic thought complex and one of its core values, which
+led to revolutions all over the globe: our focus on equality, and the
+communist movement which originated in academia
+(many famous American physicists were affiliated with CPUSA; the Russian
+Communist revolutions started on the back of an intellectual class in
+Russia; Chomsky, Deleuze and Guattari; Einstein was a socialist, the
+list goes on and on). Let's look at their track record, one of their most prized ideas, and
+/let's see how they play out in practice/.
+** China
+Chinese communism received copious support from Chinese
+intellectuals. There were intellectuals in China protesting
+for a simpler writing system before Mao implemented the simplified
+writing system, for example. However, the movement quickly turned away
+from any semblance of intellectual input.
+
+The foremost major failure of Mao's regime during this period was the
+great leap forward. During this time, grain was planted densely
+because the idea was that grain wouldn't compete against others of the
+same kind. This reduced grain harvests, and my friend has a personal
+story about this. His grandmother witnessed a farmer telling a commune
+that they were stupid for planting grain so thickly, "you could lie
+down on it!", they said. They got their tongue cut
+off for spreading "false information" about the regime. *Millions starved.*
+Other policies included "communal furnaces", where people were told that
+they could make high quality metals communally without economies of
+scale. The truth is that in order to manufacture high quality steel
+instead of pig iron, you need industrial scale furnaces because
+"communal furnaces" /can't reach heat capacity/. Despite this obvious
+failure waiting to happen and the academics warning Mao of this
+possibility, the plan continued. The result? High quality metal,
+turned into pig iron.
+
+My grandmother starved and her entire village almost died of
+malnutrition. They starved because of bad farming policies, and a
+complete inability to automate or move up the abstraction
+hierarchy. Mao ordered sparrows to be killed because they were pests
+that ate crops. The result?
+*The locusts that sparrows preyed on grew enormously in population, and they ate all the produce. Everyone starved.*
+But it doesn't matter anyways, because communism is cool. Because an
+ideology that created generational trauma for two generations is
+/fashionable/. People who have never experienced direct or indirect
+influence from this communist regime still have the audacity to
+believe this set of failures was caused by the CIA.
+
+After China reverted its socialist policies, it became an economic
+powerhouse. The modern day CCP lifted almost a billion people out of
+poverty, which is the greatest quality of life improvement in human
+history. It is my opinion that the USA attempted to destabilize China
+during the Tienanmen Square protests, but this didn't fundamentally
+alter China's ability to become capitalistic.
+*In spite of possible CIA involvement in destabilizing China, China's new economic policy reflected unforeseen progress*.
+What changed in Deng's period? It turns out that /foreign investment/
+and /private equity/ doesn't destabilize nations, and capitalism isn't
+always a CIA plot. But hey, maybe it's not real socialism. Maybe the
+idea is still good and that was just one /really bad/ implementation.
+** Cambodia
+The Khmer Rouge was one of the deadliest regimes within its lifespan
+in human history. They smashed babies' heads in en masse, and they broke
+up families on the basis that people should value their /nation/ more
+than their families. Within three years, they orchestrated the deaths
+of /two million/, making it one of the deadliest three years in history,
+reducing the Cambodian population by 25%. Cities were emptied, and
+anyone that resisted the regime was executed. It was almost a /fifth/ of
+the Nazi regime's total death count, and ran for one /fourth/ of the
+time. After Pol Pot's death, none of the leaders were formally tried
+for their crimes. The leaders' remaining lives were spent comfortably in
+their home country, while American academics such as Chomsky, one of
+the most cited public intellectuals in linguistics,
+/denied the genocide occured/. The /Nazi/ regime was /de-nazified/ and all their
+collective fiction was turned into /pulp/. The Khmer Rouge regime's
+leaders were at large until they /died of natural causes/, and their
+Western defenders faced no consequences. But hey, maybe... that's just another unlucky instance?
+** North Korea
+What started as a proxy war in Korea turned into one of the most
+brutal modern day regimes. Their propaganda today is a genuine
+preservation of cold-war era mentality. So let's look into their
+modern day regime, and maybe we can reconstruct what it was like
+living in all of these countries.
+
+Their prisons are torture camps, where prisoners catch mice and snakes
+to eat because they have /nothing/. Nobody can leave their
+country. North Korea's biggest money makers today are in fraud and in
+extortion. The people are desperately poor, and the bureaucratic class
+are living it large. And let's not forget that there's a natural
+experiment that played out in Korea. There's the other side of the
+DMZ, where, despite its problems, people have economic freedom and are
+happier, despite living in a /dystopian, cyberpunk/ state. Let's not
+forget that there's always the other side of the wall. Speaking of which...
+** Russia, the Berlin Wall
+The first and foremost thing one can look at for quality of life is
+people voting with their feet. The Berlin wall wasn't built to prevent
+people from getting in; it was to prevent people from escaping. The
+West side and East side were split by this wall. On one side,
+consumers had all the choice in the world, enormous wealth for the
+middle class and even the poor. On the other side, almost /everyone/ was poor.
+** Other Regimes
+It isn't just in Europe and in Asia that Communism has proven to be a
+failed system. It failed in many rogue militant regimes in Africa. It
+has failed in south America in Venezuela. Venezuela /should have/ been
+rich like the OPEC countries. Instead they nationalized their oil
+industry and now they are desperately poor. It failed in Laos. It
+failed in Vietnam. It has failed in almost every continent. One of
+these failures alone was almost as bad as
+the Nazi regime. When failures happen like this, we usually scrap the
+idea, not just the practical implementation. Most intellectuals think
+that it's only a bad idea in practice, without considering that it
+might just be based on /bad principles/.
+
+If communism isn't about centralization and brutal dictatorship,
+how come it plays out in the same predictable way, /every time/?
+** Economic Calculation
+And we know that all these ideas are bad in practice, but what about
+in theory? We know, according to modern day neoclassical economics and
+public choice theory that Communism as an ideology is /broken/. The
+labor theory of value doesn't hold up inasmuch as it doesn't describe
+the /subjective/ value placed on goods by individuals, which is the
+basis of the original Marxist scientific socialism. We know that
+private individuals allocate capital more efficiently than governments
+do on average, and nobody denies this simple fact.
+
+Communism is built on a foundation of collective ownership, but also
+it is a rejection of the idea that hierarchies in capitalism are
+justified. The core tenet of the idea is that /equality/ in economy
+ownership is of utmost importance because of dirty capitalist
+exploitation. So we see the reason: academia is in a civil war with the
+capital owning class, and although they aren't communist anymore, they
+share the same principles (/"it's bad in practice but good in theory"/)
+-- what if the theory should be scrapped? And how are academics, who
+are the smartest people in the world, so /wrong/? What does it say about
+these people that the /smartest people/ in the world cling onto this
+failed theory? And what does it say that our entire urban society is built
+on a milquetoast version of these ideas, after the ideas outright
+didn't work?
+
+Communist arguments usually involve pointing out both the exploitation
+of the working class by the managerial class, and arguments based on
+universal access to public goods. When liberal democracies presuppose
+the universal access to goods, they are making the exact same arguments.
+The end result is similar. Instead of centrally planning the
+production of wheat, you are subsidizing wheat production in order to
+guarantee universal access. But this model has the same failure mode:
+it just happens in 100 years instead of 10.
+* The Stark Reality
+Harvard is just as deluded, and our public consciousness is just as
+deluded about these ideas as neo-nazis and white nationalists are to
+their previous regimes. But at least Nazism only /failed once/. That was
+enough for us to learn from our mistakes. What if the smartest people
+never learn from their mistakes? What if the ideology that equality is
+a universal good -- is actually wrong?
+
+Our society directly /forks/ the same ethical opinions of communists --
+while discarding the /theory and application/ of communism in everyday
+life. But in my view, the /worst idea in history/ shouldn't be discarded
+solely on the practical and the theoretical basis. Imagine if we lived in a
+society where everyone thought that /Nazism/ was a good idea in
+theory, or that it had ethical ideals. Some attribute this imbalance to the fact that communism was
+about equality which is a lot less offensive than explicitly espousing
+a genocidal view. However, it's not true on first principles that we
+/should/ have a more positive view of equality and a less positive view
+of nationalism. Nazis sold their ideas to the nation by using slogans
+like "living space" and "restoring our strong nation".
+The truth is,
+*you can make any ideology sound good if you have a good enough salesman*,
+but we don't have to make communism sound good. We were just trained to.
+And too often, communism (or its ideas such as equality) don't sound
+morally repulsive in the first place because
+/people don't sell it that way/. So why do we sell communism as a noble
+cause gone wrong, when we sell Nazism as the worst idea in history --
+something that isn't remotely true in comparison to Communism?
+
+In my view, academia, and by extension communism, may not have won the
+cold war, but it has won the culture war. It won the culture war
+because although we may not adopt their application or even Marxist
+theory, we adopt their ethical framing of equality as a moral good. We
+adopt their framing because we have uncritically looked to these
+institutions for guidance historically. We have given them unchecked
+cultural power. These people set trends -- and what's in fashion 20
+years from now isn't decided in elections. It's decided in a Harvard
+thesis today. But this begs the question -- if they're so wrong
+about communism, what else could they be so wrong about? If we can't
+trust them on the worst idea in history, why must we trust them on
+anything at all?
+
+Though, even in our society, we have a sector of unrivaled
+economic productivity, making products for people that allow them to
+live better lives. But this sector doesn't care about equality. It
+doesn't care about anything. Or in other terms, it does care about
+people -- as economic units. It cares not who you are, only
+/what you can do/. And yet, it treats its subjects better than empathy
+can treat its subjects. When /individual/ incentives are aligned with
+/collective good/, you can be an /angel/, and a ruthless /investor/. Here,
+international criminals thrive. International criminals create
+international cooperation. Here, governance is a part of the system,
+not adversarial -- we accept a couple of "lobbies" here and there, but
+let's just call it a public-private partnership instead! It isn't a
+utopia -- but it's /real/.
+* The New System
+Elon Musk and Donald Trump are capitalizing on the rot of the United
+States. What if, instead of propping up this fragile rot in the first
+place, we actually designed governance like a systems engineering
+problem? Democracy can be optimized -- but as a systems engineering
+professional, you know that optimizing something is no use if it can
+be /deleted/. Here, we don't value peoples' opinions equally -- we have
+a city-state model where /almost every city/ is a SEZ. We optimize
+everything in governance, following neoclassical economic principles
+and using public choice economics to tell us when we're micromanaging
+(when we would cause a government failure). There are no zoning laws,
+except in tourist attraction hubs, and the only taxes are land value
+taxes, as well as sin taxes and carbon taxes. All wealth
+redistribution is done with a negative income tax. Regulations that do
+not constantly justify themselves get /removed/. Courts
+/manufacture truth/, rather than adhering to preconceived notions of
+"fairness" (professional jurors? Betting markets? A system where
+voting on the jury means you put up money, so if you're wrong you have
+something to lose?). Our police are here to enforce /laws/. Remove all
+laws from the books that aren't enforced. Enforce every law on the
+books equally and with /zero tolerance/. Riots and violent social upsets are not
+tolerated here. Crime and gang violence is treated as domestic
+terrorism. Harming public infrastructure development and private capital is
+strictly forbidden. Climate activists blocking pipeline development
+would simply not be required -- our economists and climate researchers
+have already priced that in with a carbon tax. Sorry, but if you're
+going to keep blocking this pipeline, we're going to remove you. /Forcibly/.
+Freedom of speech doesn't give you a mandate to destroy taxpayer-funded infrastructure.
+
+In this new regime, the old regime's staff can be reused -- if they
+can prove their worth. They get rehired in central bank positions, and
+in governmental planning positions, but they get paid in call options of a standard
+basket of local companies, meaning they get performance pay. In this
+new regime, we replace ideas of democracy and equality (including
+democratic voting, in say, courts) with ideas that /work/. If a
+philosophy is truly shown to work, we optimize it to its logical
+conclusion.
+
+** The Efficiency Doctrine
+The world isn’t held together by sentiment. It’s held together by
+incentives. Governments, corporations, and institutions can preach
+about fairness, justice, and equality all they want, but at the end of
+the day, none of these ideas survive unless they align with reality.
+And reality is governed by efficiency.
+
+Every major human rights movement that succeeded -- whether it was civil rights,
+women’s suffrage, or LGBTQ rights -- didn’t win because it was morally
+right in some abstract sense. It won because it became economically
+impossible to ignore. The same businesses that once refused service to
+black customers now fight for diversity. The same corporations that
+once wouldn’t hire women now push for gender parity. The same
+industries that once ignored LGBTQ rights now celebrate Pride Month with
+corporate sponsorships. Not because they cared, but because it made sense.
+
+You can moralize all you want about what’s right, but the world runs
+on what works. And when something works, you don’t need to force it.
+It wins on its own. Progressives spend so much time trying to
+manufacture empathy that they fail to ask whether their solutions are
+actually efficient. Do LGBTQ rights need to be forced onto businesses,
+or do they emerge naturally because an inclusive workforce is more
+productive? Does it make sense to give away land to Indigenous groups
+based on historical guilt, or does it make more sense to integrate
+them into the economy with productive incentives?
+
+A system that forces people to care is a system that doesn’t trust
+efficiency to do its job. If your worldview depends on mandating
+compassion, then maybe it was never that compassionate to begin
+with. The truth is, the most compassionate thing you can do in such a
+situation is to tell them the truth -- that you don't care about them
+at all.
+
+The great irony is that when efficiency is maximized, humanism
+emerges as a side effect. A prosperous, innovative society needs
+people who are educated, mentally stable, and free to explore their
+talents. It needs diversity -- not because of some ideological quota,
+but because different backgrounds provide different solutions. It
+needs to reduce discrimination -- not because of sentimental morality,
+but because a workforce that hires the best talent regardless of
+gender, race, or identity is simply better at producing results.
+
+If we get rid of the false god of “equality” and replace it with a
+system that selects for results, we don’t become less human. We become
+more human -- because caring for people is no longer a top-down
+directive. It becomes the inevitable consequence of doing things right.
+
+The best part? Most humans want to be compassionate anyways, when
+they're not constantly forced to. They'll give every excuse to
+themselves to be compassionate to you, if they
+like you, even if they're convinced they're doing it for self
+interest. At the end of the day, every efficient system is comprised
+of feeling human beings. And at the end of the day, what's the more
+compassionate system? The one that tells you it doesn't care about you
+when it does, or the one that tells you that it cares about you -- and
+then doesn't?
+** The Road Forward
+A future built on competence won't come from Elon or Trump. It
+doesn't start with hostile takeovers of the current government. It
+first starts with a collective disillusionment with the current
+cultural narratives around equality by spreading awareness, paired
+with a /new/ belief -- the belief in a deep /Deng style/ practicality.
+And it starts from the ground level -- treating people as individuals
+instead of as ideological symbols in a cultural battleground, and a deep
+commitment towards enriching those around you. Activism in its modern
+form often replaces real solutions with performative change.
+Instead of walking into this progressive trap, we should aim to create
+a culture where our best business leaders, workers, and investors are
+recognized and rewarded for their contributions to greater economic and
+technological progress.
+* Conclusion of the Technocratic Manifesto
+The death of our modern day system is a result of /rot/ -- it is the
+result of a system that is predicated on the myth of equality. Elon
+Musk and Trump are profiteers, they are not builders. They profit more
+off of /gutting/ the current system than from accelerating the
+efficiency and progress of the private sector. What if we got rid of
+this myth of equality -- and started over again, without replacing the
+old, taking our understanding from our past failures -- and finally,
+as humanity, acknowledge the great losses and tragedy of these
+Communist regimes whose leaders /never/ faced consequences?
index f71897fccf947a10df33301584442537a9a361cd..92a3b9c3f4b8d49d864efb2d73f5e495ceeb27df 100644 (file)
   (require 'llm-ollama)
   (setopt ellama-provider (make-llm-ollama
             :host "localhost"
-            :chat-model "phi4:latest")))
+            :chat-model "qwen2.5:14b")))
 
 (use-package elfeed
   :custom
index a962ac23ffb1ceee3990f38bb3119080f5301004..783eaa97b7e84eb052b446903a61f092eae105e4 100644 (file)
@@ -538,7 +538,7 @@ competitive LLM that doesn't cost money.
     (require 'llm-ollama)
     (setopt ellama-provider (make-llm-ollama
             :host "localhost"
-            :chat-model "phi4:latest")))
+            :chat-model "qwen2.5:14b")))
 #+end_src
 ** RSS Feed
 I use really simple syndication (RSS) in order to read news. As a result, I use
index 89e06bab1d750972831f75495a670f3047c5dd23..aea8c30e5967fad331395bd84d13a8dd8959c494 100644 (file)
@@ -478,6 +478,22 @@ Use ollama for serving large language models to my other computers.
       enable = lib.mkDefault config.monorepo.profiles.workstation.enable;
       acceleration = "cuda";
       host = "0.0.0.0";
+      openFirewall = true;
+    };
+
+    services.nextjs-ollama-llm-ui = {
+      enable = lib.mkDefault config.services.ollama.enable;
+      port = 3000;
+    };
+  }
+#+end_src
+** Bitcoind
+#+begin_src nix :tangle ../nix/modules/bitcoin.nix
+  { config, lib, ... }:
+  {
+    services.bitcoind."${config.monorepo.vars.userName}" = {
+      enable = lib.mkDefault config.monorepo.profiles.workstation.enable;
+      prune = 10000;
     };
   }
 #+end_src
@@ -603,11 +619,15 @@ Use postfix as an smtps server.
   {
     services.matrix-conduit = {
       enable = lib.mkDefault config.monorepo.profiles.server.enable;
-      # random comment
       settings.global = {
         server_name = "matrix.${config.monorepo.vars.remoteHost}";
+        trusted_servers = [
+          "matrix.org"
+          "nixos.org"
+        ];
         address = "0.0.0.0";
         port = 6167;
+        allow_registration = true;
       };
     };
   }
@@ -671,6 +691,7 @@ because they enhance security.
       ./i2pd.nix
       ./gitweb.nix
       ./conduit.nix
+      ./bitcoin.nix
     ];
 
     documentation = {
@@ -1170,6 +1191,7 @@ I have many imports that we'll go through next.
            lang-js.enable = lib.mkEnableOption "Enables javascript language support";
            lang-nix.enable = lib.mkEnableOption "Enables nix language support";
            lang-coq.enable = lib.mkEnableOption "Enables coq language support";
+           lang-haskell.enable = lib.mkEnableOption "Enables haskell language support";
 
            crypto.enable = lib.mkEnableOption "Enables various cryptocurrency wallets";
            art.enable = lib.mkEnableOption "Enables various art programs";
@@ -1219,6 +1241,7 @@ I have many imports that we'll go through next.
                                                          bun
                                                          yarn
                                                          typescript
+                        typescript-language-server
                                                          vscode-langservers-extracted
                                                  ]) else [])
                                                  ++
@@ -1247,6 +1270,12 @@ I have many imports that we'll go through next.
                                                          bash-language-server
                                                  ]) else [])
                                                  ++
+                                                 (if config.monorepo.profiles.lang-haskell.enable then (with pkgs; [
+                        haskell-language-server
+                        haskellPackages.hlint
+                        ghc
+                                                 ]) else [])
+                                                 ++
                                                  (if config.monorepo.profiles.lang-coq.enable then (with pkgs; [
                                                          coq
                                                  ]) else [])
@@ -1289,6 +1318,7 @@ I have many imports that we'll go through next.
                                        inkscape
                                        kdenlive
                                        kicad
+                        reaper
                                                  ]) else []);
 
       monorepo.profiles = {
@@ -1308,6 +1338,7 @@ I have many imports that we'll go through next.
            lang-js.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
            lang-nix.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
            lang-coq.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
+           lang-haskell.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
 
            crypto.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
            art.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
@@ -1651,6 +1682,7 @@ as an org file which gets automatically tangled to an emacs-lisp file.
           epkgs.general
           epkgs.gptel
           epkgs.gruvbox-theme
+          epkgs.haskell-mode
           epkgs.htmlize
           epkgs.irony-eldoc
           epkgs.ivy
@@ -1659,6 +1691,7 @@ as an org file which gets automatically tangled to an emacs-lisp file.
           epkgs.latex-preview-pane
           epkgs.lsp-ivy
           epkgs.lsp-mode
+          epkgs.lsp-haskell
           epkgs.lyrics-fetcher
           epkgs.magit
           epkgs.magit-delta
@@ -2111,17 +2144,23 @@ the yaml file specified. Yes, this is safe to include in the repo.
       age = {
         keyFile = "/home/${config.monorepo.vars.userName}/.ssh/keys.txt";
       };
-      secrets.mail = {
-        format = "yaml";
-        path = "${config.sops.defaultSymlinkPath}/mail";
-      };
-      secrets.cloudflare-dns = {
-        format = "yaml";
-        path = "${config.sops.defaultSymlinkPath}/cloudflare-dns";
-      };
-      secrets.digikey = {
-        format = "yaml";
-        path = "${config.sops.defaultSymlinkPath}/digikey";
+      secrets = {
+        mail = {
+          format = "yaml";
+          path = "${config.sops.defaultSymlinkPath}/mail";
+        };
+        cloudflare-dns = {
+          format = "yaml";
+          path = "${config.sops.defaultSymlinkPath}/cloudflare-dns";
+        };
+        digikey = {
+          format = "yaml";
+          path = "${config.sops.defaultSymlinkPath}/digikey";
+        };
+        dn42 = {
+          format = "yaml";
+          path = "${config.sops.defaultSymlinkPath}/dn42";
+        };
       };
 
       defaultSymlinkPath = "/run/user/1000/secrets";
@@ -2736,7 +2775,7 @@ for these configurations.
         pavucontrol alsa-utils imagemagick ffmpeg helvum
 
         # Net
-        curl rsync git
+        curl rsync git iamb
 
         # Tor
         torsocks tor-browser
@@ -2899,6 +2938,7 @@ Spontaneity is my VPS instance.
         firewall.allowedTCPPorts = [
           80
           443
+          8448
         ];
         domains = {
           enable = true;
diff --git a/journal/20250222.org b/journal/20250222.org
new file mode 100644 (file)
index 0000000..77cc8b5
--- /dev/null
@@ -0,0 +1,13 @@
+#+TITLE: Daily Journal
+#+STARTUP: showeverything
+#+DESCRIPTION: My daily journal entry
+#+AUTHOR: Preston Pan
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+#+html_head: <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+#+options: broken-links:t
+* Saturday, 22 February 2025
+** 02:39 
+I am currently talking to Marissa and Carson again over discord (I
+know, discord sucks but hey, it's normie friendly). It's pretty fun,
+and we do this often.
diff --git a/journal/20250302.org b/journal/20250302.org
new file mode 100644 (file)
index 0000000..aa21e68
--- /dev/null
@@ -0,0 +1,16 @@
+#+TITLE: Daily Journal
+#+STARTUP: showeverything
+#+DESCRIPTION: My daily journal entry
+#+AUTHOR: Preston Pan
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+#+html_head: <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+#+options: broken-links:t
+* Sunday, 02 March 2025
+** 03:51 
+I'm currently done reading my entire probability theory book. I'm
+deciding what to do now, because of course I want to learn some GR and
+some measure theory as well as some real analysis, but I think I'm
+better off doing something else right now with my time. Either
+figuring out how to run my own Ethereum node or otherwise would
+probably be a good idea.
diff --git a/journal/20250305.org b/journal/20250305.org
new file mode 100644 (file)
index 0000000..646fec2
--- /dev/null
@@ -0,0 +1,14 @@
+#+TITLE: Daily Journal
+#+STARTUP: showeverything
+#+DESCRIPTION: My daily journal entry
+#+AUTHOR: Preston Pan
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+#+html_head: <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+#+options: broken-links:t
+* Wednesday, 05 March 2025
+** 03:42 
+Today I spent my time getting another bike. This one should ideally
+not have a stuck bolt, and I should be able to complete the Ebike
+setup tomorrow at least. I also slept like 14 hours today, and I spent
+a lot of my free time drawing in Krita.
index 4dd394e0907c1ac7e77a9b8538ffd23e82d59923..56d7d051eab756867a988691f896d2ad63136de3 100644 (file)
Binary files a/mindmap/lrc_circuit.png and b/mindmap/lrc_circuit.png differ
index 49c4659fae00aa04d352eee147fda5d08b0ef401..0515e11ddce7273a8806d5f4cd257ce6df847d1f 100644 (file)
         ]
       },
       "locked": {
-        "lastModified": 1738148035,
-        "narHash": "sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML+3TKAo=",
+        "lastModified": 1740485968,
+        "narHash": "sha256-WK+PZHbfDjLyveXAxpnrfagiFgZWaTJglewBWniTn2Y=",
         "owner": "nix-community",
         "repo": "disko",
-        "rev": "18d0a984cc2bc82cf61df19523a34ad463aa7f54",
+        "rev": "19c1140419c4f1cdf88ad4c1cfb6605597628940",
         "type": "github"
       },
       "original": {
         ]
       },
       "locked": {
-        "lastModified": 1736373539,
-        "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=",
+        "lastModified": 1739757849,
+        "narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "bd65bc3cde04c16755955630b344bc9e35272c56",
+        "rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
         "type": "github"
       },
       "original": {
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1738277201,
-        "narHash": "sha256-6L+WXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk=",
+        "lastModified": 1740743217,
+        "narHash": "sha256-brsCRzLqimpyhORma84c3W2xPbIidZlIc3JGIuQVSNI=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "666e1b3f09c267afd66addebe80fb05a5ef2b554",
+        "rev": "b27ba4eb322d9d2bf2dc9ada9fd59442f50c8d7c",
         "type": "github"
       },
       "original": {
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1738142207,
-        "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
+        "lastModified": 1740695751,
+        "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
+        "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4",
         "type": "github"
       },
       "original": {
         "treefmt-nix": "treefmt-nix_2"
       },
       "locked": {
-        "lastModified": 1738362438,
-        "narHash": "sha256-EO2dVkMVLThWqv4hobEZEZGWBEuH2Z9SYqQDrbLSclU=",
+        "lastModified": 1740915906,
+        "narHash": "sha256-29HktIztPUFv9MQA9afzVnWnUMdmmu0nqK7z8Q9givY=",
         "owner": "nix-community",
         "repo": "NUR",
-        "rev": "95ddad0ff0e67c90314c6ca46324dce5f9a910d2",
+        "rev": "24505e0253c0ea54d50355c53bfd7a8d55c9cf4b",
         "type": "github"
       },
       "original": {
         "nixpkgs": "nixpkgs_3"
       },
       "locked": {
-        "lastModified": 1738291974,
-        "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=",
+        "lastModified": 1739262228,
+        "narHash": "sha256-7JAGezJ0Dn5qIyA2+T4Dt/xQgAbhCglh6lzCekTVMeU=",
         "owner": "Mic92",
         "repo": "sops-nix",
-        "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7",
+        "rev": "07af005bb7d60c7f118d9d9f5530485da5d1e975",
         "type": "github"
       },
       "original": {
diff --git a/nix/modules/bitcoin.nix b/nix/modules/bitcoin.nix
new file mode 100644 (file)
index 0000000..bd014bb
--- /dev/null
@@ -0,0 +1,7 @@
+{ config, lib, ... }:
+{
+  services.bitcoind."${config.monorepo.vars.userName}" = {
+    enable = lib.mkDefault config.monorepo.profiles.workstation.enable;
+    prune = 10000;
+  };
+}
index 623cb7f616285132c53ea1e56ff636877d408b1c..ce2c23e688af4218597be1944a0ebf6e2a96819c 100644 (file)
@@ -2,11 +2,15 @@
 {
   services.matrix-conduit = {
     enable = lib.mkDefault config.monorepo.profiles.server.enable;
-    # random comment
     settings.global = {
       server_name = "matrix.${config.monorepo.vars.remoteHost}";
+      trusted_servers = [
+        "matrix.org"
+        "nixos.org"
+      ];
       address = "0.0.0.0";
       port = 6167;
+      allow_registration = true;
     };
   };
 }
index bd37c7743e58e185ee81ef56c9c6f0f8c74f960d..e8e3fb0007a046486c73b87548266d4c2742db66 100644 (file)
@@ -16,6 +16,7 @@
     ./i2pd.nix
     ./gitweb.nix
     ./conduit.nix
+    ./bitcoin.nix
   ];
 
   documentation = {
index d2277da72a5e4ed71c7125fabf549b16c82c755e..4f1e7d406b8eee3e62c6ad60e0eee141651b32d6 100644 (file)
@@ -37,6 +37,7 @@
            lang-js.enable = lib.mkEnableOption "Enables javascript language support";
            lang-nix.enable = lib.mkEnableOption "Enables nix language support";
            lang-coq.enable = lib.mkEnableOption "Enables coq language support";
+           lang-haskell.enable = lib.mkEnableOption "Enables haskell language support";
 
            crypto.enable = lib.mkEnableOption "Enables various cryptocurrency wallets";
            art.enable = lib.mkEnableOption "Enables various art programs";
@@ -86,6 +87,7 @@
                                                          bun
                                                          yarn
                                                          typescript
+                      typescript-language-server
                                                          vscode-langservers-extracted
                                                  ]) else [])
                                                  ++
                                                          bash-language-server
                                                  ]) else [])
                                                  ++
+                                                 (if config.monorepo.profiles.lang-haskell.enable then (with pkgs; [
+                      haskell-language-server
+                      haskellPackages.hlint
+                      ghc
+                                                 ]) else [])
+                                                 ++
                                                  (if config.monorepo.profiles.lang-coq.enable then (with pkgs; [
                                                          coq
                                                  ]) else [])
                                        inkscape
                                        kdenlive
                                        kicad
+                      reaper
                                                  ]) else []);
 
     monorepo.profiles = {
            lang-js.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
            lang-nix.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
            lang-coq.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
+           lang-haskell.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
 
            crypto.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
            art.enable = lib.mkDefault (true && config.monorepo.profiles.enable);
index 5f39e8719454a60dcc51c780e690f62676b574dc..4358ca36f15dd58a40e2d5f045b2823eee511275 100644 (file)
@@ -37,6 +37,7 @@
         epkgs.general
         epkgs.gptel
         epkgs.gruvbox-theme
+        epkgs.haskell-mode
         epkgs.htmlize
         epkgs.irony-eldoc
         epkgs.ivy
@@ -45,6 +46,7 @@
         epkgs.latex-preview-pane
         epkgs.lsp-ivy
         epkgs.lsp-mode
+        epkgs.lsp-haskell
         epkgs.lyrics-fetcher
         epkgs.magit
         epkgs.magit-delta
index 7872d53c58ed832f52b2afd6eb167d226ade9826..d0ce5cdb14e6991304818b6a337e720e9cb7e557 100644 (file)
@@ -43,7 +43,7 @@
       pavucontrol alsa-utils imagemagick ffmpeg helvum
 
       # Net
-      curl rsync git
+      curl rsync git iamb
 
       # Tor
       torsocks tor-browser
index 96ee9182bda49c9cd3adb4b960bfc917381b80db..3ac1a52159e62ba1473bd9f5684ed26d80e74c7e 100644 (file)
@@ -4,5 +4,11 @@
     enable = lib.mkDefault config.monorepo.profiles.workstation.enable;
     acceleration = "cuda";
     host = "0.0.0.0";
+    openFirewall = true;
+  };
+
+  services.nextjs-ollama-llm-ui = {
+    enable = lib.mkDefault config.services.ollama.enable;
+    port = 3000;
   };
 }
index d7a229f03d6415ac515819d12853ba348fd41781..2f8defcf8fad4dd3010e698fecb3d223b6bab1cc 100644 (file)
@@ -5,17 +5,23 @@
     age = {
       keyFile = "/home/${config.monorepo.vars.userName}/.ssh/keys.txt";
     };
-    secrets.mail = {
-      format = "yaml";
-      path = "${config.sops.defaultSymlinkPath}/mail";
-    };
-    secrets.cloudflare-dns = {
-      format = "yaml";
-      path = "${config.sops.defaultSymlinkPath}/cloudflare-dns";
-    };
-    secrets.digikey = {
-      format = "yaml";
-      path = "${config.sops.defaultSymlinkPath}/digikey";
+    secrets = {
+      mail = {
+        format = "yaml";
+        path = "${config.sops.defaultSymlinkPath}/mail";
+      };
+      cloudflare-dns = {
+        format = "yaml";
+        path = "${config.sops.defaultSymlinkPath}/cloudflare-dns";
+      };
+      digikey = {
+        format = "yaml";
+        path = "${config.sops.defaultSymlinkPath}/digikey";
+      };
+      dn42 = {
+        format = "yaml";
+        path = "${config.sops.defaultSymlinkPath}/dn42";
+      };
     };
 
     defaultSymlinkPath = "/run/user/1000/secrets";
index be4c8cfffda4ba0e5d4ab1c0b9dcd30064e52d65..0513f7c96b646c5d6341a43a5856aa0c8b6b8677 100644 (file)
@@ -2,6 +2,7 @@ hello: ENC[AES256_GCM,data:SyGz4JsQGWYBSsn59/iy2jtF5LxcLqvuYlJa9Ng30TYHZLjGHLFnF
 mail: ENC[AES256_GCM,data:IFJnuVbshByUh5S3HoSnX5AyOg==,iv:gF0JlnBGAMLduMIG/hZtssdkHVL9/RDmDwBw/WoMDwQ=,tag:adDgcz/VrAN6/kfYTKa5XA==,type:str]
 digikey: ENC[AES256_GCM,data:U1c2HYB/YjwlyHvD3XVTqWJdb9/8BeS6,iv:DNsBoaqgUPdfO9knQLCMeJVO8kctQ9XNvcY2xcpI0NM=,tag:kuJ9BYqVx0GeTBSW5EsItg==,type:str]
 cloudflare-dns: ENC[AES256_GCM,data:Gztc/M+r/eRO2DwyLxlIBxS7B7MpOXimbFkQwlYhq9SzGG/fLl6Xqw==,iv:aDyNwbc8EyrNyhucULUkeg7VM7BmqNQTndSTh1SWqq0=,tag:HvysjKquD1g2PCrCgX2swg==,type:str]
+dn42: ENC[AES256_GCM,data:xSYssg7ReFjmf7LvmqmH/A==,iv:Gj/LZrxzRJLOLbP5rumjmViYWP6ufW3ocngektBW3V8=,tag:SA4f1vAnMFUO5Yk6NTr81Q==,type:str]
 sops:
     kms: []
     gcp_kms: []
@@ -17,8 +18,8 @@ sops:
             OFFNeEtOTk5FSm9RaDFad0UyeWZ2WDgKIwGoB4a5WAIkE93gzqdUzNlo5vgQ1zLy
             yhEFrE1NbhyItnZIg/yRhqFG0dv7D3pEP3pq2Seew6pKJg/s9UTJ8Q==
             -----END AGE ENCRYPTED FILE-----
-    lastmodified: "2025-02-19T03:58:58Z"
-    mac: ENC[AES256_GCM,data:C/0ufsPwj/cpaIoJA8PyNkqMp1zOmaFW/B3UQScoDBS0Nq34NrY3+qp42wnbX+wzP2D6spBIqBwtE/ASTqY8fM5IWRKIFlADepkWzX/zKAmT1JOlXhLb73+nt9c11DP76PPUNQ92DOWqLdS1OuPJlnQip2Kyr15q0S925il2+30=,iv:372DZxF64PdSER7dQE0rg5KB8ekQXgsNSi1KDD5e1sg=,tag:t97PhMb4GqaSqWpwOkid/g==,type:str]
+    lastmodified: "2025-03-02T12:09:49Z"
+    mac: ENC[AES256_GCM,data:Uk29XBkAVIMiAsVfQ4sMhVE8QKdTFWB1jYCnn7WmjumB9o4GPlNZAIlAn43Ja456/SkGlxaZm7HlqPRD8Rgzu1HdudHHhDgRoO7IDzc/Lu+ick7eR5BtnmotNQLe3vPVwmc8l8O2px5x3xMoYtzhbm5H6Om6s3AeI50hGBdK0EQ=,iv:PQD2APLPY6IiAes76QF1t5YL1ZW4vlnU28XR4D3XfnY=,tag:bZp0wh3+EkByGQ2kIO5BWw==,type:str]
     pgp: []
     unencrypted_suffix: _unencrypted
     version: 3.9.4
index 759782bd85c50112c8ca4751c44a64983622ec23..c64448a25c8004ae657b471dc2a4133f16515282 100644 (file)
@@ -19,6 +19,7 @@
       firewall.allowedTCPPorts = [
         80
         443
+        8448
       ];
       domains = {
         enable = true;
index 4c167d478d13469d787225c1dfb329ab21c16356..cc3e15269df4eebfea930c0af54cf885b419d308 100644 (file)
--- a/style.css
+++ b/style.css
@@ -89,6 +89,7 @@ input:focus {
     color: #d8000c;
     background-color: #ffd2d2;
 }
+
 h1,
 h2,
 h3 {
index 260e7de0e7ed8fd54bd9b4fae72a1c5313dd336d..39899fb9dc990f275d83d8510ea5c1f33c8062f8 100644 (file)
@@ -13,7 +13,7 @@
 #+html_head: <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
 #+html_head: <meta name="msapplication-TileColor" content="#da532c">
 #+html_head: <meta name="theme-color" content="#ffffff">
-#+html_head: <meta name="viewport" content="width=1000; user-scalable=0;" />
+#+html_head: <meta name="viewport" content="width=1000;" />
 #+language: en
 #+OPTIONS: broken-links:t