A furry, developer, encryption, operating system and everything else
35431 words

Day 71/365 or day 28/28 for Singing Phoenix

Singing Phoenix

Well, I did it and I definitely saw an improvement! I flubbed two parts the recording for today and I took more than an hour to have a recording which I was happy with.

Here's day 28 recording of the song:

Here's day -6 recording of the song:

As a bonus heres what I sounded like 6ish days from the end:

That's it for Singing Phoenix. I absolutely loved doing it and will continue to hone my singing (probably not every day though).

Threats to Democracy, steps and core requirements

The biggest threat to democracy is believing that it can stand alone, democracy only survives if we as people around the world protect the institutions that define democracy such as our courts, laws and fair process. I am saddened to see places where they are outlawing encryption or requiring backdoored access. Part of democracy is the right to have private thoughts, a private life and secrets. When all of those could be layed bare at any point, we become more hesitant, less willing to speak up both in our own private writing and in the real world.

Here is a common misconception that I would like to address:

If you have nothing to hide, you don't need encryption and privacy.

This is just not true, privacy isn't just for criminals or terrorists, they exist for you and me. They exist to allow ourselves a space to think private thoughts, have private conversations and not worry about it being used against us possibly some time in the future.

Imagine that everything you did, who you had sex with, who you talked to, how you talked to them, what you wrote in your journal, all of that being accessed at any time by a small group of people. Those people with their opaque algorithms get to choose to declare you an undesirable or get extra tracking attention.

That's not right at all, you'd make yourself as generic as possible, to fit in.

When people stop speaking out and willing to take stances on issues, willing to be out there, that's when democracy dies.

However you can't be out there unless you have some privacy, it's a balance. You need a safe space to think, enjoy and exist. Others such as Timothy Snyder said that having a private life allows one to exercise control over what others know and don't know. Totalitarianism removes such distinction of public and private life.

When governments assure us that this access to our most private innermost thoughts are for our own good, think and say no.

Day 70/365 or day 27/28 for Singing Phoenix

Identity Migration

Today was a mental failure at all levels. Why? Because I've stopped running two lives and basically I'm severally overdrawn my energy. However I should be back online by Monday.

So now that I've stepped into myself and feel more at home than ever before, I feel like I'm discovering everything again. Like a puberty without the akward voice change or other bodily self test programs.

I was speaking to a CF today and I was telling them about my name change and they asked me a good question:

"Why didn't I enforce my identity with them?" This was a really good question to which I answered:

"I was already running two identities and I didn't want to inconvience my parents and I therefore no reason not to allow them to use my dead name".

Later on I told them the full name I was changing to and they said "I'm breaking boundaries" which felt good, I don't need social validition for my decision but having a core friend agree really means alot and provides energy for those who don't support me or not fully.

I told them about that I'm wearing makeup and I was so worried that was going to be something that we disagreed upon but they're not just for it, they said "I'm bridging to the next generation".

<3 <3

I had another extremely positive feeling when I came out to another group of friends and I said something like "...this won't change our friendship at all.". To which they responded ".... I'm kinda insulted that you think this would lol"

Obviously I've hurt them and I'm going to rectify that tomorrow when I interact with them.

One of the things that I'm looking forward to in a few years is going to a job interview with a beard and eye makeup and having the interviewer ask "Are you a male or female?", to which I'll answer "Does it matter?".


Am I a furry? ~~I don't believe so~~,YES, but about a month and a bit back in work, someone made a disparaging comment about them. I really wish that I had done alot more, I followed what two other people did which was use the "Yikes" emoji but since that day I've thought about what I could do more. A few days later, I posted something in another channel a few days later where I mentioned that "they're a furry and really cool person" regarding Soatok (https://soatok.blog/).

Actually it was Soatok's blog that made me realize this. That's actually what prompted me to create the Fursona that you see on this blog. I don't think there's anything wrong and I want to show others that it's alright. I'm just following on Soatok's steps in his words:

"People who feel nervous being open and authentic about who they are (especially junior developers) will feel even more pressure to remain hidden (to their own detriment) if no one is relatable to them.

So, I promise, I’m not being loud about my identity or interests to spite you. I’m doing it to comfort people like me. And that distinction matters."

What prompted me to come out? Well I was talking to a CF and I was telling them how excited I was to the makeup I'm soon to get to create a subtle wolfish look. They responded with "You gosh darn furry", it was said with absolute love and caring. That follows on the heels of another CF saying the same thing a while back.

Up till this point I had allowed myself to believe that I shouldn't be, because I was teased really bad during high school.

Thank you Soatok <3. Thank you to CYMKat (Kat Adam-MacEwen) for creating my fursona.

Overall I wish I could go back and redo that momenet. I could have turned their joke into a serious thing. Maybe saying 'Oh, I would love to join the Furry Channel. I'm a furry and I find furries some of the most kind, intersting and well developed people. I hope this retroactively helps, even though it doesn't. I don't want people to be afraid of who they are. There are things people should never be (anti feminist, anti abortion, climate change deniers...) but outside these restrictions (which really aren't restrictions in the normal sense, these give everyone more freedom, not just now but for future generations.

Day 69/365 or day 26/28 for Singing Phoenix

Who am I and what do I want for this short time that I am here. This is the question that I've been grappling for the last 2 or so weeks. It fills almost my every waking breathing when I'm not doing something or spending time with my friends.

I've figured out the first part the who am I part. Ironically that was the easier part. I've gotten so good at building software, building systems and ultimately mechanizing myself that I stopped focusing inwards and did an outwards focus. I believed that if I built the right company or I achieved the right thing some part of me that until now I didn't consciously that was broken would somehow be fixed. I was filled with this almost manic energy, sharp, powerful but ultimately extremely draining.

The first step to discover was when I wrote about dark energy and not filling every moment of my day with something to do. The second step was realizing that I was unhappy with certain people in my life and realizing that I was trying to be who they wanted. This was a very hard thing to directly confront them and discuss via email. I had tried many times to do it in person but each time was meet with some form of invalidation. This as you can imagine hurt. What first gave it away was beginning around 3 weeks ago I mentioned to a CF that I was getting upset when I was called by (what is now my dead name), they gave and support that I needed to move forward and to question my own self deceptions and worst case events.

I've come out to everyone in my different areas of my life and have had no issues correcting people when they use my dead name. I'm done trying to be what someone else wants and be what I want. It's like being having things fully fully work togeather correctly, for the first time ever. My energy is gone for now, I've spent it all excavating who I am, but what energy is tricking down is a softer and more varied, less OMNI, less harsh and less self abrasive. I love wearing makeup and I love connecting and feeling completely at home in a way that I have never before realized that I was missing.

There are a few unanswered questions that I'm still figuring out such as:
- What do I do with Sapphire Pack

Who do I want to spend my life with is now an easy answer (it wasn't easy answer three days ago). Those who accept and love me and I want to spend time with.

It's that simple.

I would like to formally reintroduce myself:

My name is Cubes, I use they/them pronouns and I ready to help democracy.

Dau 68/365 or day 25/28 for Singing Phoenix

Singing Phoenix

30 minutes singing

Nothing else that I want to write about.

Day 67/365 or day 24/28 for Singing Phoenix

What I did today

  • 61 minutes working on SN search functionality.

Singing Phoenix

Basic singing and more practice being on beat.


I'm figuring out alot right now, when I'm not writing much it's because something big is approaching.

Not for you because this is just really so I can think and contemplate, but I'm happy that you enjoy my words.

Day 66 or day 23/28 for Singing Phoenix

What I accomplished today

  • Worked on code for [158]

Singing Phoenix

Argeee I praticied singining on beat and I'm off by at least a beat. Good new I'm on tempo. Bad new I'm not all the way on the correct beat. Progress and I'm really happy about that!!

Day 65/365 or day 22/28 for Singing Phoenix or session 2 and 3 of 12 for Project Whitefang

What I accomplished today

Alot, I'm proud of myself. I started work at a new dream job.

I was so worried that I was going to have to keep living two lives, that they wouldn't accept me for who I am but they had a similar case awhile back and everything went well.

So I'm going to take the leap tomorrow.

Let me explain:

My parents don't accept me for who I am and it's lead to me continuing to wear a mask around them. Wearing this mask is just purely exhausting. I'm shaking physically from the amount of energy I'm using to keep basically two lives running. I'm done with that. It's scary coming out but I'm giong to do it. It's going to make my life loads better.

Singing Phoenix

I focused on setting up Audacity for the day and recording myself singing.
Aside from still being offkey, what really killed me was that I wasn't on beat. It made it much worse. So the rest of time will be spent recording and practicing on BEAT.

Project Whitefang

Made serious progress. Found a few agencies and working to see if I should pursue any one of them. Waiting for Whitefang's response.

Day 64/365 or day 21/28 for Singing Phoenix

What I accomplished today

  • Finalized long term plan for Sapphire Pack pivot [20]
  • Took down deep work from Thinkific and SapphirePack [13]
  • Planning the four targets for fedration including how each will work [87]

Singing Phoenix

I just song 4 seperate songs and didn't do theory. I'll get back to theory tomorrow.

Multiple Keyslots and key exchange and sharing notes and bilateral communication

Here's how the current encryption is used:

Your passphase -> derived password

Derived password -> password for specific note

So what we need to do is provide multiple "keyslot" that is multiple:

Derived password1 -> password for specific note
Derived password2 -> password for specific note
Derived password..-> password for specific note

Here's the beauty of this modification:
1) Current and older SN systems will still run and should completely ignore "extraneous" fields (just like CSS does)

2) We can implement filling in these extra keyslots by using some sort of key exchange protocol that won't expose the derived password.

So the biggest problem is that:

1) We need to know which key to use to decrypt the "derived password" to get to actual password to modify the note.
2) We don't want to reveal the derived password since this is the key to all of the persons own private notes

A way to solve this:
1) Using a keymanagement extension of some sort.
This extension is part of the sharing notes system and what happens is:
1) Someone creates the note and shares it to one or more other people
The shared note extension figures out where the other people are and submits a DIME like email to our homeserver.

This is a really big design decision. Should the home server be trusted? Mostly. Should other home servers be trusted? Not to much. Why is this important, we want the person using a home server to not reveal who they are talking to (this is a fundamental right). Having a point to point communication makes it easier to figure out who is talking to who. Making it optional means that most people will likely opt for the quickest option, meaning the DIME protection is redenered moot. Therefore forcing all inter server communication to occur via DIME protects everyones communication patterns. However endpoint analysis can still occur which can be addressed using several counter techniques. I'll list just one such as:

1) Sticky endpoints communication.
When a home server recieves a message, it'll send it to multiple devices (most of which will just discard the data). This makes endpoint correlation attacks slightly harder to do. However once a home server has people using the server globally, endpoint attacks become almost impossible since many people will be using the home server at all times around the clock.

2) Our homeserver doesn't know who we're inviting or communicating with. Just that we want the homeserver to send a message to another homeserver.

At this point we could have the protocol receive a delivery report from the other home server. This delivery report would just be the envelope hash which we can then be assured our home server actually delivered the message.

3) The other people recieve the unencrypted notes content and drop it into a note they create on their side. The beauty of this system is that each person has their own UUID that refers to the same note, making it hard to track which note is shared with who.
The person would generate a random encryption key and store that encryption key in some sort of "key ring". This means that in the event that encryption key is figured out, the only thing the adversary would have gained is access to only that note.

Basically we generate a random encryption key and that encryption key is used to code one of the keyslots. After the keyslot has been coded keyslot is send back.

Now all further updates are done encrypted (if not online at same time, just like regular syncing) or using websockets (if online at the same time).

The note is treated like a regular note, except we can establish websocket connections and synchronize the note in realish time. The exact protocol is something that still needs to be fleshed out. However in the event that the synchronization extension isn't used it should be just a regular note and editable as such.

Why not use something like PGP or something? That would involve adding unnessecary cryptographic code and giving SN a bigger attack surface

The websocket connection will occur as such:

Person ----- Home server 1 ----- Ohter home server ---- Other person

This means that as more people are sharing notes at the same time it's harder to see which people are editing the same note. The protocol will likely use a fixed block and fixed transmission interval to make this even harder to correlate.

Here's how a fixed block and fixed transmission interval works:

1) We transmit 1 KB of data encrypted every 100 MS.
2) In the event that we have nothing to transmit we transmit an empty 1KB of data.

This leads to the max data transmission of 900 characters per 100 ms or around 9000 characters per second.

This means that if you decided to paste in all of War and Peace, everyone you're live editing with would get the entire book in just 67 seconds. However there a few sneaky ways to make this data transmission even faster such as arbitrary transfer of binary data between home servers. (Which again will likely be fixed at 1MB size transfer blocks.) Since transfering data between home servers could become REALLY expensive that is one person transfering 4GiB file would take 6.8 hours.

What we do is have a series of binary blobs which range in size from 10 MB to 1TB in fixed sizes that are stored on BinaryAssets servers. These servers are extremely simple in that they recieve data, generate an access key and the first home server sends that access key to the other server via DIME. The second home server would download that data and store it until the person can handle the data. Similar to mail and a post office.

# Peer to peer human based trust

1) We aren't robots. Our federation shouldn't treat us like ones.

We'll assume that each federation maintains a 14 day backup of notes and if they are running a Binary Assets Servers that data is backup for 14 days as well.

In the event that a server is compromised we have 14 day recovery window.

2) Asking to verify keys and other long hexadecimal string are stupid.

What we'll do is use telegram's idea of showing a series of emojis and words.

So if I want to join the federation, I would speak to one of the members and obtain a federation joining key (FJK) this is done by telling them the 5 words my server is showing me. They enter that into their server and get back the words I enter on my system as a confirmation.

This basically does a secure bridge, transfers the federation keys used for authenticating other federated servers and taps into the web of trust.

Each federated server can ask for updates on servers within the federation by querying any server with that servers last status.

A status includes dump of keys and other key infrastructure support systems such as changes, revokations and such.

By removing the key from DNS management we open ourselves up to one type of attack but the keys prevent such an attack from succeeding since our servers will realize we're speaking to the wrong server and stop communicating.

Day 63/365 or day 20/28 for Singing Phoenix

What I accomplished today [120]

  • Our current development station is failing in multiple ways. So we're finalizing efforts to get the new system built and deployed
  • Planning out the final goals for TheGrid. Ambitious repivoting of Sapphire Pack that will place Standard Notes and Federalization at the forefront of privacy, longevity and maintainability in a quiet way.

Singing Phoenix

Again not today. 30 minutes of silence staring at the screen. Maybe I overextended myself? I want tomorrow to be much much better.

The Grid Day -181

The main issue with highly advanced or secured decentralized systems is that you either really need to know alot about very specific topics such as DNS, network topology etc or really really trust the people who implemented the code.

We want to move remove that forced trust because you don't understand what they're doing. Note we're not trying to make a "anyone can program" or "anyone can modify this product" since those products fall short and really you're giving them alot of jumbo building blocks.

Here is what we're going to be doing:

1) Providing peer to peer people based trust system.

2) Provide encrypted bilateral communication based off of DIME of arbitrary data

3) Provide encrypted server to server communication and automatic management of federation keys.

4) Provide a dual key encryption system.

The first 60 days will be spent learning aggressively. Everything we can, how it works, where SN thrives and where it falls short. How the extensions are built, how extensions communication, limitations of extensions. Does it do multi threading, what type of threading does it use, in the event local storage fills up how does it handle that. Can SN provide partial downloading of notes? How is the synchronization engine impacted by such a change?

Here is what I do know:

Extensions are messaged based. I've implemented an extension for SN called SNAT (it was at the time something I was extremely embarrassed about and quietly published with no one else knowing). Now looking back, I'm really proud, I managed to duplicate Tasks (an android application) UI along with implementing one of my proudest UI things which was the auto expanding and contracting sub task list. If I could find that code, I would publish it, it represented over a years work.

Extensions must explicitly ask for certain capabilities and the person must accept. At the time I build the SNAT extension, the API was async and I don't believe promise based. I ended up at the time implementing a SPIN lock, which delayed continuation of the code until data was retrieved from SN.

Finally the beauty of the extensions was that (at least mine) worked both in standard notes and in a plain webbrowser page.

Secondly, I also understand how SN's encryption works and have implemented a primitive at rest encrypted file system based on the SN's encryption scheme. Adding a N slot encrypted note wouldn't be TOO difficult.

Here's how the current encryption is used:

Your passphase -> derived password

Derived password -> password for specific note

So what we need to do is provide multiple "keyslot" that is multiple:

Derived password1 -> password for specific note
Derived password2 -> password for specific note
Derived password..-> password for specific note

Here's the beauty of this modification:
1) Current and older SN systems will still run and should completely ignore "extraneous" fields (just like CSS does)

2) We can implement filling in these extra keyslots by using some sort of key exchange protocol (which I'll riff on in an upcoming post) that won't expose the derived password (which is the weakpoint of the shared encryption).

I'm out of time for today but I'll detail more about it all in the upcoming days!

Day 62/365 or day 19/28 for Singing Phoenix

What I accomplished today

  • Working on planning pivot in detail [120]

Singing Phoenix

I really tried for 30 minutes but I just couldn't summon the energy to sing.

Day 61/365

What I accomplished today

  • Acquiring correct tools for new pivot [20]
    Since we've pivoted into a new launching that deals with programmings. It's time that we get the best cutting edge tools that we can. Wallaby.js such a tool that provides ability to do everything we need from real time testing, value exploration, back in time and story mode (reading tests and what was run like a big story).

  • Planning our new targets and milestones [100]
    Here is our new targets:
    1) Federated system with bridges.
    2) Calendar, Contacts and Shared Synchronized Notes
    3) Omega Protocol and Alpha Protocol

    We're so used to the network effect. Something that only grows in value the more that people use. What if we can do something completely differently? Something so radical, something that someone with a business degree would look at and cringe. Some would say that running a company where your product is open source is impossible but we've seen successes. Now we want to take that one step further:

    - Interoperate with closed systems.

    WHAT??? Imagine your friend uses Google Keep another friend uses Evernote and we use the super duper app. Imagine if we could all "JUST" work togeather. Wouldn't we be loosing money? No, because we'd be using a relay which requires the application. So we would be able to interoperate with any of our friends but our friends would only be able to interoperate with US. So the Google Keep couldn't work with the Evernote person. However we could work with the Google Keep and Evernote and even work with them both on a single note!

    Why is this valuable? Because we are reducing the barrier to actually switch. If you're able to continue working with your friends who use app X and you use app Y, then you would be happier and we would have gained at least one happy customer instead of zero. Migrations sound good in theory but often when the notes must interoperate with others, we need to provide a bridge. This bridge will server as a short term stopgap (hopefully) until the rest of their friends switch over to the super duper awesome app. This brings us to the next radical idea.

    - Interoperate with other instances of the awesome app. Here's the really really rough idea:
    A person doesn't have one place they only hangout, they have many. We should make the software the same. Furthermore, how we refer to such a person may change. We may refer to them as HybridLove but they might refer to them as SinkingVampire. There is no reason to force a person to have one identity online. What if we can create a single identity but they can choose which parts and how to show off to different people? Let's imagine HybridLove using servers Storm, Phoenix, Horizon as their home servers. That means that their data is synchronized to all said servers (there are multiple ways of doing this, some including some neat load software emulated load balancing from client). HybridLove loves sharing data with their best friends IconicLilly and DumbTurtle. However HybridLove chooses that they wanted to keep their Horizon home server membership a secret. That sounds completely fair, we all have places that are just our safe haven. So Hybrid love shares some content from Storm with IconicLilly and shares with both some content from Phoenix.

    Now if you've been following along and see that we want to protect HybridLove's memberships, isn't that all thrown away by synchronizing data between the different servers? Sure the servers can promise to NEVER EVER EVER share that information (pinky promise), however that doesn't help much. The best way is to make tracking whose is sharing with who anon. How can we possibly do that?

    Luckily, we found the answer at our acquaintances at Lavabit with their DIME protocol. No we won't be implementing DIME but we'll be implementing something quite similar. The idea is that the sender encrypts their message with the recipients key and home server target. This means that the sender's server only see's the destination server and not the specific user. The destination server see's which home server and whose it for but not whose it's from. The only case the home server will see whose it's for and from is if it's being sent to another person on the same home server. Our five eyes will only see that home server sent a message to another home server and nothing about the people communicating.

    This is important. Privacy is really a human right and we've got to make sure that we implement a federation protocol correctly, or it'll leak more data than we can possibly imagine in terms of meta data.

    Finally, how are we going to manage multiple identities? That's easy: we'll use a doubly indirect identity derivation. So let's say you login to one of your home servers, you share some form of a username and password. That's used to derive an identity. That identity is used to derive one or more sudo identities (these identities basically wrap a "mailbox" and provide access to notes stored under that identity). This means you're not accidentally leaking meta data to two different people that they are communicating with the same person.

Now you're probably wondering how do we synchronize calendars and contacts without doing what ProtonMail did which was require a custom client and prevent interoperability with preexisting systems?

That's some thing to discuss about tomorrow.

Singing Phoenix

Basic rhythm and tone practice.

Day 60/365 or day 17/28 for Singing Phoenix

What I accomplished today

  • Pivot [120]
    Major change in what Sapphire Pack is going to do. This came after a life changing opportunity that we were offered.
    Sapphire Pack was always about providing cutting edge help. What does that mean? Means providing the best improvement and best environment as possible.

    There's still alot more that must be figured out but Sapphire Pack isn't deep work anymore. We are saddened but at the same time exhilarated. Yes there is the sunk cost of the microphone and camera. However we really believe we're making the right decision. At this point we've decided to stop living so absolutely strictly and beating ourselves up when we don't "achieve" something that was a massive endeavour. We're here to be fluid and flexible. That's what we're doing. We've achieved alot more than we've every done in a previous 60 day period. We've managed to get a company registered, process of writing and researching curriculum, learning to record, audio. However there is still 305 days of Sapphire Pack. We promised we were going to launch it and we will.

Singing Phoenix

6 minutes. Making rest up tomorrow.

What real success is

You want it now but realize that since your just starting now you'll have to settle for later
You will be putting in the hard work and actually asking and doing the hard work and questions
You are willing to make sacrifices
For example for whatever your escapist behaviour(s) are : be willing, wanting and actually giving up immediate transmutation of any feelings into a better feeling. We feel horrible emotions but that transmutation costs us some of the best emotions that we can ever feel. We suffer, but the bearing out of the suffer makes you realize just how beautiful the emotions are. All of them. You stop trying to run away, you embrace the swirl of emotion. It's alright to grasp for one, but don't make a point of chasing it when it disappears. You'll feel that again, we promise.

Not only that, you begin to see the impossibly subtle differences in your own emotions and others. You stop trying to turn to others to tell you what you're supposed to be feeling. You stop trying to rationalize that you should feel X or you shouldn't feel Y. You start to discover what really makes you happy, you start to discover what really makes you sad. You begin to notice these tiny emotional tremors, how your thoughts can impact your emotions and how your emotions can impact your thoughts. You learn to become almost like a cultivator, cultivating your mind, learning that you can control to a certain extent what occurs more often. You can't force, but you can create the conditions. However, just like soil, things will change, you'll have to rediscover. It's a never ending journey. There's something new to understand regarding our relationship between us, our thoughts and our emotions.

Some days you will stop trying to be so diligent and give yourself more slack, because the emotions are more wild or powerful and other days, you'll have to prop up the emotions and care for them like you would a wounded plant. Never do you attempt to completely claim them, they are ephemeral things, here for a short time and gone again. There is no point in claiming them. What you do is name them, greet them with reverence and love. Feel how it feels to feel that emotion, what is just stress from emotion and what is just mechanical stress from existing and moving.

Embrace the emotions, let them just exist, but don't let them grow in areas you don't want. It's about balance. Some emotions that you consider "bad" may be bad for you at this time, but other times may be your most necessary emotion. Stop labeling.

Emotions, feeling, sensations, thoughts, pressure. Feel and embrace. Exist and love. Accept and reject. There is no perfect answer, what works for us now in this moment, may not work tomorrow or yesterday and perhaps not ever for them. What works for them may be exactly what we don't need.

However we don't know until we try.

Welcome to your inner world. You are amazing.

Day 59/365 or day 16/28 for Singing Phoenix

What I accomplished today

  • Planning on transitioning over to self hosted IT infastructure for Sapphire Pack content management and delivery. [120]
    This would allow easy managmenet and steps to what I need while at the same time having the data controlled by people I trust with very clear privacy policies.

    This is an important step since I'm going to move more into a Zed. A. Shaw type of content distribution which I believe is only fair.

Singing Phoenix

I tried and tried and only got very little progress today. That's expected since I've been praticing for 24 days straight now. Future projects will require a day off weekly. I need time to rest.

Infinite time at my age response to @MemoryRepository

We would spend that time caring for others, deepening my friendship and working slightly less. Since we have infinite amount of time we would get involved in the following open source projects and become extremely proficient in them:

  • Qubes OS
  • Standard Notes
  • Linux

We would also spend alot more time with my friends and make new friends. We recently had to decline to friendships because we didn't have enough time to add two new friendships and maintain the quaility of the friendships we currently have.

As much as learning forever would be, we'd want to make something out of it. We'd want to continue to help and to share. So infinite education while appealing won't help, in fact may lead to decision paralysis and inability to actually make big decisions.

So overall we'd spend time involved in the OS (Open Source) community, make and maintain friendship and share what we learn.

Day 58/365 or day 15/28 for Singing Phoenix

What I accomplished today

  • Finishing up module 2 [86]
    It's a really good first draft. I'll probably have to either add or remove items later on but I'm quite proud.

  • Researching module 3 [24]
    Researching prep for Module 3. This is a massive undertaking and involves a really wide and varied search to look for the 1% that is actually usefula and discarding 99.999%.

Singing Phoenix

Continued practicing.

Day 57/365 or day 14/28 for Singing Phoenix

What I accomplished today

  • Working on module 2 [60] Module 3 is addressing issues in deep work. Since I haven't finished module 2 it's not worth doing module 3 because I need to prevent there being overlap.
  • Updating Sapphire Pack Privacy Policy [60]
    I'm trying to figure out how to structure my privacy policy.

    Unfortunatly my website hosting provider tracks information and I'm not aware of exactly what they track.

    Finally, I've come to the realization that I can't in good conscience provide services on systems which continue to undermine democracy by selling people's data and movements to large companies in order to track and manipulate them.

    I'm still figuring out my privacy policy but it's going to be StandardNotes or SmallWeb simple.

Doing it every day for 2 hours is really taking a toll on me. I'm extremely proud of what I have accomplished and how much more I have left to do. However, I'm going to change my interpretation of my rules that I set out just slightly.

I'm still going to do 2 hours every day. However starting this Monday to Saturday, I'm going to work 20 minutes ahead each day. This means that I'll achieve Sunday's 2 hours by the end of Saturday. This means I'm working 140 minutes each day. I'm still going to keep the what I accomplished today section to just 2 hours since that's simplier and continues the spirit of what I intended. But I must face the limitations of continous focus and that I back off now, or my body backs off for me with a big crash. I can't afford to crash so I'll back off.

I need rest, I need a day where I'm not working on Sapphire Pack. I need a day free from Sapphire Pack. Building a buiness is like a relationship, you don't want to be clingly or try to get it all now. It's a long term effort not a short term all out.

Singing Phoenix

Easy day. Nothing much to report.

Difference between stagnant and simplicity

Stagnant software is a disease of complicated software, there is old software that is no longer maintained but still very usable, old software. We're going to assume that stagment means old , no longer usable or "not modern". Not modern" meaning that UI or something is really unusable.

The beauty of simple software like Standard Notes and Listed.to is that the core function is quite simple.

Standard Notes REALLY just encrypts texts and makes it available everywhere. That's it. Everything else is built on top. The beautiful part of this is that we can add billions of extension and the core functionality woudnl't be compromised. Furthremore we don't have to worry about software rot. The core system is SOO simple that there isn't much to rot and built to such a high standard. Simple in terms of functionality and total lines of code. Why is this good? Because just like Standard Notes demonstrated, it's easier to continually upgrade the core system's security WITHOUT impacting the extensions or having odd breakables happen.

Same with listed.to, it's designed to post content to your blog and that's it!! Why is this good? Because let's say we want to add the ability to posting a spreadsheet, we can add a small server extension to post the table and then emmit a HTML blob that the core listed.to server just dumbly puts wherever it goes. Do you see the beauty?

It took a long time for me to realize the beauty of simplicity. Simplicity doesn't mean sacrificing complexity, it means "doing more with less" instead of "less with more".

What do I mean?

So "doing more with less", means that if I want to have the software do complicated thing X, it will take alot more commands to get it done. Good thing though!!! That's were programmers come in, they can automate and hide that complexity thru the use of extensions. Sure it'll take them longer or may have to use a few tricks or sideways thinking, but that's why we pay those beautiful people.

However "doing less with more", is the evernote, you can do everything in a single button or so. Everything is burned right into the software, it's hard to maintain and gets slower and harder to maintain. This is what becomes stagnant, so big and bloated that eventually everything fails. You don't have the option to say yes to X or no to Y. You're forced to take it all. (Do you really need 16 formats of dates to insert, convert from JSON to XML or convert all tabs to 4 spaces?).

Listed.to isn't stagnent. Simplicity also breeds something that I saved for last:

The content and extensibility.

I call this next theorem:

--- SN Theorem ---

1) "The simplier the software the higher quality the users are".

Simpler means you spend less time futzing around and more time actually doing.
This immediatly weeds out the people who would never be happy and crave constant novelty from those who want an actual tool.

Evernote has fallen prey to the second group, those who crave constant novelty, billions of way to organize the notes and thousands of way to format your content.

Standard Notes doesn't allow you to "puff up your content with useless visual eye candy or formatting (just a limited amount)". This leads to better content, more satisfied people and using the software for what it's really good at.

--- SN Theorem ----

2) "The simplier the core, with clearly defined seperate code API the easier to extend"

The simplier the core with API's that can be accessed AFTER compilation (that is extensions or something that can communicate post core compilation), the more the software can do.

Wait... didn't I say simplicity, YES. The system is so simple with extensibility that if everyone wants to store voice recordings, we can build such an extension, then throw it away when it's no longer wanted, with the core no better or worse off.

Finally 2 naturally follows the gist of The Zen of Python:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex. <---- 1
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules. <--- 2
Although practicality beats purity. <--- 3
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess. <--- 4
There should be one-- and preferably only one --obvious way to do it. <--- 5
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea. <--- 6
Namespaces are one honking great idea -- let's do more of those!

Pay attention to the numbered items:

1) Simplicity works. We can build complexity out of simplicity but we can't build simplicty out of complexity. This is why the computer you're using right now is probably RISC (Reduced Instruction Set ...). Yes Intel is CISC but really most Complex instructions actually compile down to RISC instructions.
Simplier means we can optimize for the common cases and have the whatever do phenomenal 97.8% of the time.

2) It's tempting to make a special synchronization for the Preferenes note in SN. However it's treated like a regular note with

3) Special handling. So we don't break the rules but BEND them. It works love and that's why you won't loose anything with simple software.

4) How many times has your computer made the wrong decision? How frustrating is that. If it was a person you'd assume they were stuck up and knew what's best for you. We would be pissed and you would also be pissed. Now if we had a friend that in circumstances where they didn't know what we wanted, they asked us? We'd love that friend. We would find that friend super reliable and not think we're playing a slot machine. There's a reason that we don't hangout with slotmachine friends, their irksome and we often get very frustrated. We would hangout with the non slot machine friend any other day. They geniunly care by stopping and asking us. This is what this line is talking about.

5) In something like SN, there's only one way to create a note. In Evernote there are many ways. This leads to confusion and what if I want to do it like X. Furthermore some of these ways can be turned off and on in preferences. Making the software appear to have a mind of it's own to the non tech person.

6) Need I say more?

So that's a really long partially roundabout way of trying to show the difference between stagnant and simplicity. Though it's easy to confuse stagnant with simplicity if you're the type of person whose more intrested in constant novelty over having something that just works and stays out of your way otherwise.