Profile: ffe18389...
That's wonderful news!
I'm not vegan and don't expect to ever become vegan, but I can understand that it can be difficult to ensure you only eat foods that fit your ethics.
Yes, vegans can be irritating, but your actions help ensure that others can order their own special foods without being thrown out of the restaurant.
That's Hindu-Arabic numbers.
But, yeah. I can see that this will get people angry. Over nothing.
The body's defenses still fight the foreign tissues, even with immunosuppressants, so I wouldn't expect that organ to last a long time.
Neither of the two people I knew who received transplants even made it to a decade.
I, for one, appreciate your work, jb55. I also appreciate all the promotional work Derek does.
On socials like XTwitter, I long ago stopped paying attention to famous or popular folks, but y'all are legit.
If you’ve missed any of my Vibe Coding Jam Sessions, have no fear, the recordings are here!
Well… except for that one session I totally forgot to record. So maybe just a little fear. 😅
Anyway, here’s the full YouTube playlist:
https://www.youtube.com/playlist?list=PLTQJ1TiXFu43a2sb2CPznFM2E8TdxP621
I haven't seen one yet, but I'll watch some now.
Livin' the "college student" life. That and instant ramen noodles.
My wife said: Probably nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6 has no wife 😁😁😁
He has a wife.
Thank you all for the replies. Both the mocking memes and the serious stuff. You guys have no idea how much I needed it today. 🫂🫂
nostr:nevent1qqswx8vvtfxfcthlxgmxk98jsrtmscgt40yfgdsewynmxeqwh59d8zgct20cx
Grow older. I know that my grandkids will get up at 05:45 and start banging on my door, so there's a natural limit.
nostr:npub16c2fsg7fp3yxte9ugd9yhcdpa68h924asv5d6pvm5nc37a3nkzmqd2xaj2 someone in the Fediverse is exploring Reticulum. Since you're the only user I know, I linked to your Soapbox account.
Or maybe something a little closer to what the old appdotnet was trying to do.
I remember 1979, so I understand. But if he wasn't willing to replace their regime, he should not have attacked in the first place. Save it for a time when that's on the table and has credible internal support.
https://www.ccn.com/news/crypto/california-bill-seize-inactive-crypto-wallet/
California bill allowing state to seize "inactive" crypto wallets after three years passes Assembly, awaits Senate action. Not believed to affect self-hosted 'cold' wallets, just exchange wallets.
nostr:npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m Why stay CEO of Block when you are so dispassionate about product? Let someone else drive the company, someone that has a spirit of competition and like to win? Giving product to a bunch of people working from home and phoning it in has led to your products falling behind competition in every dimension. I know you’re excited about codename goose but look at what Meta and X are doing, lol…. get out of bed!
I don't know what is going on with Square/Block/Cashapp, but remote doesn't have to mean disinterested or low-effort. In $FORMER_EMPLOYER, during the lockdowns, productivity soared when people didn't have to come to the office every day.
You should unplug everything except one lamp. Sometimes there are surges when the power returns.
I think of retirement as freedom from pursuing moneymaking tasks so one can pursue tasks that promote one's internal values.
Hopefully your friend isn't just going to sit in front of the TV all the time.
It was a marvellous time. I honestly expected more and faster user growth than we got.
I don't have a link, but there was a religious leader claiming that Trump is almost equivalent to Jesus. I don't know whether people in other countries are doing this with their own leaders, but it's really worrisome.
No, I wasn't saying use only their routing. I'm saying use multiple ways. One might say it can be agnostic to the underlying connectivity provider.
I still think Reticulum should try to interoperate with Meshtastic or even allow its stack to ride atop Meshtastic. Just because that would greatly expand its reach.
I'm not much of a _"new years resolutions"_ type of guy in fact I think those sort of things
are incredibly stupid and lead to you getting **no where in life**; so _it's best you stop that_
if you are currently engaged in such a bizarre tradition that oofloads what you _could do **now**_
onto a future date. If you can start now, there's no excuse.
Before I get into what is to come in the next year and indeed what I have been working
on so much this year that I haven't "written" a single blog post, I first need to give
a little bit of an explanation for the first paragraph.
So here goes nothing...
# On procrastination
Now you may be asking as to why I started off with such a brazen statement? It has to be said;
we have **all** fallen to the devil of _procrastination_. I remember it hogging me down multiple
times (months even) before I actually started working on my compiler. Guess what, now and then
it tries to rear its head but I am getting better at controlling it.
How did I stary controlling it? I don't have some cookie cutter _buy me a book_ answer to this
actually. What I realised was that I was _scared of the endeavour_ at hand. So, for the example
of my compiler project: "I was scared that I wouldn't be able to take on such a huge task of
writing a compiler from scratch entirely". So in my case it was being scared of an academic
hurdle of sorts. However, I had experience in writing a basic one already from my second year
of computer science - so what gives? I clearly could have laid the basic foundation for the
compiler and worried about the next challenges as they rolled in. No, I was worried about
even writing the first few lines of the code structure I _already knew_ - **the basics!**
The reason? Well, I was scared that I wouldn't be good enough. I was worried that I wouldn't
be able to claim any of it for myself because I would probably require having to reach out
online consistently and if that became a pattern then how would I be able to claim the majority
of the code written as my own? Luckily, however, I didn't need any help. Let me stop here for
a moment - I am in _no way_ saying that reaching out for help should stop you from completing
your dreams. You could argue that my second year of CS was preconditioning for me having the
knowledge to be able to write my compiler almost a year or so later - I think so!
Anyways... let's continue. So I began writing the lexer for my compiler and that started
to go well, then I started work on the parser and declaring all the AST types that I needed
as I wrote the compiler for a language design that was being built concurrently. As time
went on I actually started to surpase the capabilities of the compiler I had written for
my second year computer science module. I had to hit many challenges head on, those of
which I had never faced before in my undergrad course. Therefore there was no one to rely
on. Just an aside, as I stated earlier, yes I could have gone online and searched for
answers but this was against my ideology _then_ and still **now** for this particular
project - I wanted to go through the motions myself.
>Put simply, I wanted to learn **not copy**
As things kept on this line of progression I had to re-write the dependency generator
about three times until I realised it was doing what I wanted it to do. This was a great
success for me. I remember looking at the de-cycled graph output (a visitation-marking
sort of graph traversal) for the first time when it started working and I was immensely
happy. I knew how important it was to get this particular algorithmn/mechanism implemented
correctly because I knew it would solve all future problems generally - it was integral
to the compiler. Even though I had nowhere near the features in my language implemented
as I do now - I could still tell that:
>I need not worry now, anything I _need_ to implement can _easily_ be done just with
a few lines of code since this mechanism will allow me to build out advanced features
too and not just simple ones.
---
Long store short, procrastination can be over come. All that is required is for you
to take the initial risk. Don't worry that you _may_ need to reach out for help
and if you try to do it all yourself (to a degree, nothing is done in solitude)
then take the risk too and spend the time it takes to overcome challenges. Remember
how I rewrote a particular component three times until it did what I wanted it to
do? That was me figuring out not just how to get it to work but what it should be
doing in the first place as well. I was truly thinking for myself instead of
getting someone else (or ChatGPT) to do it for me.
# What have I been up to
Well, there is just so much and it feels rather hard to prove too ever since I
have taken on the "work on it, talk later" mantra. So there's quite a few
things per project but let's start with a few in roughly chronological order:
## My homelab
My word, have I put in hours of work, debugging and documentation into this.
I had decided a while back already that I want a multi-router homelab, complete
with my own self-built rack and with a setup that was fully Dockerized. The
Docker part was very important as I wanted easy-to-deploy containers and I
wanted a declarative approach to stating what I wanted and how I wanted
it deployed. Dockerizzing (yes, I have immense rizz).
On the networking side of things I wanted to also get my DNS resolver back
up _along_ with it running as a nameserver so that I could have records
resolved via it whenever people wanted to reach certain domains hosted
in the `*.deavmi.assigned.network` region.
I also wanted to deploy OSPF (open shortest path first) to my routers
and learn that. Now, I didnt have the most advanced setup for it but
I got the basics done as that was all that I needed. I was very happy
with the dynamism of the results.
>Add a route to `fd77::420/69` here on `router1` and it appears a few
seconds later on `router2`
## The T compiler
I have been working on the compiler for my **T programming language**
quite a lot. I have been working on the following:
1. Enumeration type support
* And yes, my enums beat that of C's as my enumeration type names
do not need to be globally unique but rather follow the `EnumType.MemberName`
format.
2. Struct support
3. Comment support
* Specifically within the parser as that is where I last stopped
working on such support
4. Clean ups here and there
* There has been quite a lot of code-churn (the good kind) due to
me reworking a lot of the code; this has meant getting rid of code
as well - this is the best type of churn!
5. Internal API changes
* Cleaning up of the `CodeEmitter` API to remove the stuff relating
to `SymbolMapper`(s) which are no longer used and are rather internal
to the given code emitter _implementation_ such as the C emitter `DGen`
6. Dotting support
* This took majority of the type and was actually required before
I could get to work on struct support or enumeraiton type support.
* What it amounts to is the treating of the `.` operator (the `SymbolType.DOT`)
as an actual operator. This is still being worked on but for the
most part it is probably done and the other things that rely on
it like enumeration types and struct types just have to have
their additions added to it.
There are probably many other things here and there that I can't
remember right now as I type this; however all I can say is that
between those 6 items there has been **a lot** of work done.
Oh, and a surprise! I have been working on a package manager
for T! It can both fetch and build packages along with generating
documentation:
### Docgen

The above shows the output of doing documentation generation
for an example single-module program `simple_comments.t` (which
is actually part of the T test suite).
### Fetching a package

We can see in the above how a search is performed with the
regular expression `tsh*` and how a matching candidate is
found for `tshell`. This is then fetched over the network
in chunks (hence the usage of a progress bar). It comes
in the form of a `.zip` archive. This is unzipped and stored
and some basic checks are performed.
I was quite proud of the callback-based (using a delegate/closure)
approach to fetching using D's `libcurl` wrapper. You
firstly make an _HTTP HEAD_ request to get the `content-length`
field of the resource (the `.ZIP` archive) you want
to fetch. Then you do a chunked fetch of that whereby
after each chunk you call a method (your callback)
that consumes the just-received bytes. You then use
this to update the progress bar as `numberOfBytes/expectedTotal`.
### Building the package

Once the package has been stored, a `StoreRef` is returned,
this is then used to actually setup an instance of the `Compiler`
such that we can trigger the `compile()` method on it. After
which the compilation process begins and we get information
about how long the procedure took and then also the path
to the created executable.
## Reticulum, LoRa, radios and serial adaptors

I have had a bit of a foray into the [Reticulum Network Stack](https://reticulum.network/)
and I have decided I want to extend the testnet physically into
my area. This will be a long term project of acquiring some
relatively inexpensive hardware but then for the type of
installation I want to do - some of it will be more expensive
and require longer term savings (for outdoor enclosures of
the type I may be looking at).

That's the one part, but as for the software side I helped
add IPv6 support ([here](https://github.com/markqvist/Reticulum/pull/601) and
[here](https://github.com/markqvist/Reticulum/pull/545)) to
Reticulum - something that was desperately needed.
I the decided I wanted to try IPv6 over `tncattach` (which
is a program that let's you use your [RNode](https://unsigned.io/software/RNode_Firmware.html)
as a TAP/TUN interface). So I went ahead [and did some
C programming for that](https://github.com/markqvist/tncattach/pull/16).
There is just **so much** I have in store relating to this.
# What to expect
I do have some blog posts pre-written for the upcoming year
that I will be releasing shortly. It's a mixed back as to
what they're about but nonetheless some of them will give
you a greater understanding of each of the things I have
mentioned and what exactly I was so busy with.
---
## Have a blessed Christmas, be with your loved ones whilst you still can.
### See you in 2025
Great to see this, Deavmi.
The goal is to reach the point where we can almost entirely dump the banking system with its gatekeeping middlemen. I'd never want the bankers messing with or taking fees from any zaps I'd send or receive.
And to think that all my friends and family wanted me to sign up for that.
Nearly all of the thousands of Fediverse instances are hosted and funded by individuals out of their own pockets.
There are lots of issues there, just as there are lots of issies here. It doesn't mean that I'm not going to celebrate every time I make a contact across decentralized networks instead of having to join big corporate socials to reach my contacts.
If you can't see the benefit, that's only an issue for you. When you have to run back to TwitFaceGram because you need to connect with someone that isn't here, you'll understand.


