<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[BD Tinsley]]></title><description><![CDATA[Only the thoughts I think are marketable.]]></description><link>http://localhost:8000</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 19 May 2025 17:06:51 GMT</lastBuildDate><item><title><![CDATA[Weekly Project Update #12]]></title><description><![CDATA[Overview With the final aspects of the API wrapped up, I was able to diagnose the true issue to the  command only occasionally working…]]></description><link>http://localhost:8000/blog/2025/04/16-weekly-project-update-12/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/04/16-weekly-project-update-12/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Wed, 16 Apr 2025 19:26:10 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;With the final aspects of the API wrapped up, I was able to diagnose the true issue to the &lt;code class=&quot;language-text&quot;&gt;press&lt;/code&gt; command only occasionally working. There was a mismatch of transaction, content and request hashes and the API would confuse them with each other. Now I have a full fledged CLI for pressing that hits the &lt;code class=&quot;language-text&quot;&gt;/press&lt;/code&gt; endpoint, which generates a transaction hash that can be observed and verified on etherscan, and a request hash that the CLI will take and poll the &lt;code class=&quot;language-text&quot;&gt;/status/:requestId&lt;/code&gt; endpoint every 10 seconds until the transaction returns with a success or failure status. If it fails, it will give some guess as to why it failed, most likely the transaction hit the gas limit; if it succeeds, it returns the final content hash to be shared for releasing.&lt;/p&gt;
&lt;p&gt;The final bits now come down to building out the &lt;code class=&quot;language-text&quot;&gt;release&lt;/code&gt; command, so that a recipient of a bit of content can decrypt it. There are some unexpected issues with my current implementation and how I want the release command to work, which primarily comes down to the wallet address not being a reliable key to encrypt content with. I think I have a workaround that will incorporate the access layer dream, which will neatly wrap up all the final bits into the end result. Beyond that, it&apos;s some ergonomics in adding interactive mode to certain commands and documentation and this proof of concept is done.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Finish up the work on the pressing functionality, finding a consistent way to press content [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/6&quot;&gt;CLI#6&lt;/a&gt;] (&lt;em&gt;almost done with this&lt;/em&gt;)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Merge in the pressing functionality [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/6&quot;&gt;CLI#6&lt;/a&gt;]&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Completed the storage functionality for pressed (&amp;#x26; TBD released) content [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/4&quot;&gt;CLI#4&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Built out a &lt;code class=&quot;language-text&quot;&gt;list&lt;/code&gt; command to see all the prior pressings [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/5&quot;&gt;CLI#5&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;p&gt;This upcoming week will be scant due to some pressing matters in my life. I can&apos;t commit to full feature builds but will spend some time figuring out how the releasing [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/8&quot;&gt;CLI#8&lt;/a&gt;] methodology will work. Likely, I&apos;ll have to wrap the access layer functionality [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/36&quot;&gt;PRESS#36&lt;/a&gt;] into it, which will be the last remaning high-priority issues to build. I can come up with the plan now and execute when I have more time to dedicate.&lt;/p&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;It seems like I&apos;m at the last clearing and I see one last glimpse of the end goal, and it&apos;s closer and bigger than I&apos;ve seen before. There are more perils in front of me, some known, some unknown, but it feels like I&apos;m finally nearing the end.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #11]]></title><description><![CDATA[Overview I hinted at the need for a refactor last week, and that's what I ended up doing. Diagnosing the issues in the API were tricky…]]></description><link>http://localhost:8000/blog/2025/04/10-weekly-project-update-11/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/04/10-weekly-project-update-11/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Thu, 10 Apr 2025 16:26:10 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;I hinted at the need for a refactor last week, and that&apos;s what I ended up doing. Diagnosing the issues in the API were tricky, which could be summed up as it would only occassionally work. Breaking it apart helped me realize a few things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The wallet connected to the API, which was only there to verify &lt;code class=&quot;language-text&quot;&gt;curl&lt;/code&gt; routes were working, was taking precedence for transactions, not the wallet connected to the CLI.&lt;/li&gt;
&lt;li&gt;The transaction hash generated was not a valid Ethereum transaction hash, so verifying the transaction completed was impossible.&lt;/li&gt;
&lt;li&gt;The gas fees were, in fact, too low to prioritize the transaction on chain, so it was stuck forever in the mempool.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&apos;m glad I did this, as it makes the API more robust, easier to diagnose and much simpler to add to in the future. I&apos;ve gone from an api directory structure of:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;api/
├── contract-abi.json &lt;span class=&quot;token comment&quot;&gt;# decxpress functionality abstracted into JSON&lt;/span&gt;
├── server.ts         &lt;span class=&quot;token comment&quot;&gt;# all the functionality&lt;/span&gt;
└── test-client.js    &lt;span class=&quot;token comment&quot;&gt;# all tests for the API&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;to &lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;api/
├── controllers/
│   ├── balanceController.ts  &lt;span class=&quot;token comment&quot;&gt;# logic for /balance endpoint&lt;/span&gt;
│   ├── hashController.ts     &lt;span class=&quot;token comment&quot;&gt;# logic for /hash/:hash endpoint&lt;/span&gt;
│   ├── pressController.ts    &lt;span class=&quot;token comment&quot;&gt;# logic for /press endpoint&lt;/span&gt;
│   ├── releaseController.ts  &lt;span class=&quot;token comment&quot;&gt;# logic for /release endpoint&lt;/span&gt;
│   ├── statusController.ts   &lt;span class=&quot;token comment&quot;&gt;# logic for /status endpoint&lt;/span&gt;
├── middleware/
│   ├── errorHandler.ts       &lt;span class=&quot;token comment&quot;&gt;# consistent formatting for errors&lt;/span&gt;
│   ├── requestLogger.ts      &lt;span class=&quot;token comment&quot;&gt;# consistent formatting for logged messages&lt;/span&gt;
├── routes/
│   ├── balance.ts            &lt;span class=&quot;token comment&quot;&gt;# definition for /balance endpoint&lt;/span&gt;
│   ├── hash.ts               &lt;span class=&quot;token comment&quot;&gt;# definition for /hash/:hash endpoint&lt;/span&gt;
│   ├── press.ts              &lt;span class=&quot;token comment&quot;&gt;# definition for /press endpoint&lt;/span&gt;
│   ├── release.ts            &lt;span class=&quot;token comment&quot;&gt;# definition for /release endpoint&lt;/span&gt;
│   ├── status.ts             &lt;span class=&quot;token comment&quot;&gt;# definition for /status endpoint&lt;/span&gt;
├── services/
│   ├── transactionStore.ts   &lt;span class=&quot;token comment&quot;&gt;# comprehensive logic &amp;amp; logging for a transaction&lt;/span&gt;
│   ├── walletService.ts      &lt;span class=&quot;token comment&quot;&gt;# comprehensive logic &amp;amp; logging for wallet connection&lt;/span&gt;
├── contract-abi.json         &lt;span class=&quot;token comment&quot;&gt;# decxpress functionality abstracted into JSON&lt;/span&gt;
├── server.ts                 &lt;span class=&quot;token comment&quot;&gt;# minimal init file to call the API&lt;/span&gt;
├── test-local-storage.js     &lt;span class=&quot;token comment&quot;&gt;# tests for local storage&lt;/span&gt;
├── test-performance.js       &lt;span class=&quot;token comment&quot;&gt;# tests for deduplication verification&lt;/span&gt;
└── test-client.js            &lt;span class=&quot;token comment&quot;&gt;# tests for the connection&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I had heavy LLM help in defining how I&apos;d break things apart and the best practices for storing the concerns across multiple files. But the big takeaway was I was doing 19 files worth of functionality in 3 files, so now it&apos;s much easier to make small, isolated changes and feel I&apos;m having the maxium amount of impact with the least amount of consequences.&lt;/p&gt;
&lt;p&gt;As mentioned above, the gas fees were too low, which means that I&apos;ve made decx.press too effecient. I&apos;ve added some multipliers so that it at least hits the gas fee minimum to be incorporated on-chain. However, I know that Sepolia, which is the testing environment I am using to test my functionality on, has much lower gas fees than the Ethereum mainnetgit . It will be something I&apos;ll keep my eye on once I deploy to production.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Finish up the work on the pressing functionality, finding a consistent way to press content [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/3&quot;&gt;CLI#3&lt;/a&gt;] (&lt;em&gt;almost done with this&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Merge in the pressing functionality [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/3&quot;&gt;CLI#3&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Start building the storage functionality for pressed (&amp;#x26; TBD released) content [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/4&quot;&gt;CLI#4&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;Things are moving much slower than they were at the beginning of the semester. All the decisions from the past are piling up and making each continued step harder and harder to move forward on. I read an article once that (I cannot find currently) that made the case that the last 20% of the work takes up 80% of the time, and I&apos;m finding that to be true now. I do feel like the end is in sight, or at least a satisfactory stopping point with &lt;em&gt;robust enough&lt;/em&gt; functionality, so I&apos;ll keep hacking away at the vines.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #10]]></title><description><![CDATA[Overview I've continued the process of peicing together my CLI proof of concept for decx.press, but I'm noticing strange behaviors that are…]]></description><link>http://localhost:8000/blog/2025/04/03-weekly-project-update-10/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/04/03-weekly-project-update-10/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Thu, 03 Apr 2025 16:10:10 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;I&apos;ve continued the process of peicing together my CLI proof of concept for decx.press, but I&apos;m noticing strange behaviors that are burning more of my time than I would have hoped. There&apos;s a ton of elements working together that are making it difficult to diagnose what the problem may be. I&apos;ll do a quick rundown of what I&apos;ve done and list off the dependencies and where I think the issue is.&lt;/p&gt;
&lt;p&gt;I&apos;ve put together a basic CLI that has various commands: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;init&lt;/code&gt;: initialize the decx.press CLI, which includes configuring it and setting up a wallet &lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;config&lt;/code&gt;: further fine-grained control over the config file, which is stored in the user&apos;s system where it allows you to get and set network, gas priority and other minor details &lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;wallet&lt;/code&gt;: see current wallet details, add a new wallet, set a default wallet &lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;health&lt;/code&gt;: check the health of the decx.press API, which in the current state is being run in a different terminal window on localhost&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;help&lt;/code&gt;: list out all available commands, what they do and some examples of how to use them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So to initialize the CLI, after downloading, the user would type:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;$ decx init&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and it would walk the user through the minimal steps to ensure they can work with decx.press.&lt;/p&gt;
&lt;p&gt;I&apos;ve began working on the &lt;code class=&quot;language-text&quot;&gt;press&lt;/code&gt; command and the strange behavior I&apos;ve noticed is I can easily press 1 or 2 small bits of content in under 2 minutes for less than a penny. Nice! But anything beyond that, the network hangs and the pressing never goes through. I have some theories why this is happening, but diagnosing it is proving to be difficult. I do have a timeout setup so that the CLI isn&apos;t hanging forever. Intially I set it for 30 minutes, but the more I played with it, the more I realized that 3 minutes was all I needed to determine if it was going to go through or not.&lt;/p&gt;
&lt;p&gt;I&apos;ve also tinkered with the API endpoints, which initially just took a string on the &lt;code class=&quot;language-text&quot;&gt;/press/:string&lt;/code&gt; endpoint and returned the final hashed content when it was done. Now, I&apos;ve split it into &lt;code class=&quot;language-text&quot;&gt;/press/:string&lt;/code&gt;, where the user sends a string to be pressed which automatically closes once it has a transaction ID; &lt;code class=&quot;language-text&quot;&gt;/press/status/:transactionId&lt;/code&gt; where the user provides the generated transaction ID and checks in on the status of a pressing; and &lt;code class=&quot;language-text&quot;&gt;/press/hash/:hashId&lt;/code&gt; where the user can get the details of a completed pressing. I&apos;m still finding it hanging after a few pressings, but at least I have better control over where in the process it is. &lt;/p&gt;
&lt;p&gt;Where I think the real issue lies is in the network requirments. I think the gas fees are too low for my pressings to be prioritized on-chain, and they are ignored by the validators because it&apos;s not worth the effort for them. This may be a big liability because decx.press &lt;em&gt;has&lt;/em&gt; to be inexpensive in order to be valuable. I won&apos;t add unneccessary computing just so it will transact. I&apos;ll keep working at it.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Finish the wallet solution [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/2&quot;&gt;CLI#2&lt;/a&gt;]&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Start work on the non-iteractive pressing functionality [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/3&quot;&gt;CLI#3&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Finish up the work on the pressing functionality, finding a consistent way to press content [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/3&quot;&gt;CLI#3&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;I&apos;m back into the swing of things post spring break. Things feel quite murky at the moment, but I&apos;m optimisitic in the process. It feels like I&apos;m so close to breaking through.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #9]]></title><description><![CDATA[Last Week What I Said I'd Do Initialize the CLI [CLI#1] and get the changes up for PR Start work on integration with MetaMask so Ethereum…]]></description><link>http://localhost:8000/blog/2025/03/20-weekly-project-update-9/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/03/20-weekly-project-update-9/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Thu, 20 Mar 2025 20:01:25 GMT</pubDate><content:encoded>&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Initialize the CLI [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/1&quot;&gt;CLI#1&lt;/a&gt;] and get the changes up for PR&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Start work on integration with MetaMask so Ethereum wallet details can be managed in a secure place [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/2&quot;&gt;CLI#2&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Finish the wallet solution [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/2&quot;&gt;CLI#2&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Start work on the non-iteractive pressing functionality [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/3&quot;&gt;CLI#3&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;Everything is clicking. It&apos;s spring break for my kids but not for this program, so this week&apos;s work was front-loaded and this update will be scant.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #8]]></title><description><![CDATA[Overview Last week's accomplishments, which included building a suitable off-chain encryption scheme, had me very excited. However, I got…]]></description><link>http://localhost:8000/blog/2025/03/13-weekly-project-update-8/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/03/13-weekly-project-update-8/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Thu, 13 Mar 2025 17:25:25 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Last week&apos;s accomplishments, which included building a suitable off-chain encryption scheme, had me very excited. However, I got some feedback from my team that things are moving fast for them. I spent time this last week breaking the accomplished work and remaining work into some milestones, so it&apos;s easier to get a top level look at the categories of tasks remaining. I&apos;m not making these time-dependent, rather just a good way to get an easy look at the status of the vision. &lt;/p&gt;
&lt;p&gt;I&apos;ve also spent some time reflecting on what I&apos;ve done thus far, what&apos;s left and how I feel about it all in a &lt;a href=&quot;/decx.press_project_update.pdf&quot;&gt;project update&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Get &lt;a href=&quot;https://github.com/decx-press/decx-press/pull/37&quot;&gt;#37&lt;/a&gt; merged &lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Begin work on building out the CLI [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/35&quot;&gt;PRESS#35&lt;/a&gt;].&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Written &amp;#x26; posted my Project Update&lt;/li&gt;
&lt;li&gt;Broken tasks into a &lt;a href=&quot;https://github.com/orgs/decx-press/projects/1/views/7&quot;&gt;Roadmap&lt;/a&gt; where I can easily filter by Milestone&lt;/li&gt;
&lt;li&gt;Wrote &lt;a href=&quot;https://github.com/orgs/decx-press/projects/1/views/1?filterQuery=milestone%3A%22Proof+of+Concept%22&quot;&gt;11 new&lt;/a&gt; Proof of Concept tickets to categorize work for the CLI, including 6 high priority MVP tickets&lt;/li&gt;
&lt;li&gt;Moved the CLI code to a &lt;a href=&quot;https://github.com/decx-press/decx-cli&quot;&gt;separate repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Initialize the CLI [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/1&quot;&gt;CLI#1&lt;/a&gt;] and get the changes up for PR&lt;/li&gt;
&lt;li&gt;Start work on integration with MetaMask so Ethereum wallet details can be managed in a secure place [&lt;a href=&quot;https://github.com/decx-press/decx-cli/issues/2&quot;&gt;CLI#2&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;This was a low week in code but a good pause to plan the back portion of the semester. It will be tight, but I know I can get this done by semester&apos;s end.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #7]]></title><description><![CDATA[Overview After a few dark nights of the soul, I was able to work through how the encryption/decryption can work off-chain. It still has some…]]></description><link>http://localhost:8000/blog/2025/03/07-weekly-project-update-7/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/03/07-weekly-project-update-7/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Fri, 07 Mar 2025 16:10:07 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;After a few dark nights of the soul, I was able to work through how the encryption/decryption can work off-chain. It still has some flaws, but I think it&apos;s a good step to handle something not natively done on Ethereum. &lt;/p&gt;
&lt;p&gt;The quick version: it will handle the pressing of content in a wrapper process command line interface (CLI). This will coordinate creating content on the block via a Solidity contract, the contract will emit an event that goes into its transaction log, the CLI process will listen for this event, read the logs and encrypt the data along with it&apos;s unique path to each item on the blockchain and produce a final hash representation of all this work. The final hash produced will be the unique fingerprint of the entire content and when it&apos;s time to decrypt, the final hash will be used with the sender&apos;s private key and it will be able to trace through the block paths to reconstruct the original content in order.&lt;/p&gt;
&lt;p&gt;The main flaws in this implementation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actual&lt;/strong&gt; The sender&apos;s private key must be passed around to decrypt. In the Additional Accomplishments section below, I&apos;ve outlined a potential workaround for this. To sum it up, a Meta-Agreement Layer should be built to grant access, and its private key should be used to decrypt, not the Creator&apos;s private key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Potential&lt;/strong&gt; If the Ethereum network is moving slowly, the delay may cause the off-chain solution to hang or never complete. I&apos;m not sure how to test this, but it&apos;s a bridge that will be built when the chasm is discovered.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actual&lt;/strong&gt; If the final hash is lost, the content is lost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A quick comparison of synthetic gas fees:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;┌─────────┬──────────────────────────────────────┬──────────────┬───────────┬───────────┐
│ &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; │              Operation               │  Gas price   │  Gas fee  │  In USD   │
├─────────┼──────────────────────────────────────┼──────────────┼───────────┼───────────┤
│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │  &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;Hello, world!&quot;&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;1016994671&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1143597&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$2.6248&apos;&lt;/span&gt; │&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In the above, prior to any attempt at encryption you can see the fees associated with pressing the phrase &quot;Hello, world!&quot;, assuming none of the characters or pairs of hashes exist, cost about $2.62.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │  &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;Hello, world!&quot;&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;1017446225&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;4705166&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$10.7920&apos;&lt;/span&gt; │&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Above is from my dummy encryption encryption venture last week, where I roughed out where encryption may go in the flow of the contract, but did it all on-chain. Naturally, it&apos;s much more expensive due to the computing required by the sender. You can see it&apos;s over 4 times as costly to press the same &quot;Hello, world!&quot; phrase, assuming none of the characters or pairs of hashes exist.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │  &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;Hello, world!&quot;&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;1017446225&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1713408&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$3.8680&apos;&lt;/span&gt; │&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Finally, in my off-chain encryption implementation, the fees return to much closer to what they were initially. As you can see, it costs about a dollar more in USD costs, which is due to the extra event emitting happening in the contract in comparison to the first example, however a ton of computing is done off-chain so it saves the sender a good amount of money.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Finish and merge in the &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/29&quot;&gt;refactoring of the HashRegistry contract to handle encrypted content ticket&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Come up with an off-chain encryption solution and document it in a ticket &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/34&quot;&gt;#34&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Iceboxed Priorities&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Build out a method for retrieving the DecxDAG hash from the contract via an API endpoint and viewing the original string (3 weeks week ago)&lt;/li&gt;
&lt;li&gt;Deploy the built contracts to a testnet (from 4 weeks ago)&lt;/li&gt;
&lt;li&gt;Plan how the API will work, what endpoints and methods it will have, and which tools I should use to implement it (from 4 weeks ago)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Built out off-chain encryption solution (dEKS) and put it up for PR &lt;a href=&quot;https://github.com/decx-press/decx-press/pull/37&quot;&gt;#37&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/decx-press/decx-press/wiki/Technical-Architecture#encrypting-and-decrypting-with-deks&quot;&gt;Documented how dEKS works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wrote a WIP ticket to idenfify access layer for decryption &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/36&quot;&gt;#36&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Get #37 merged &lt;/li&gt;
&lt;li&gt;Begin work on building out the CLI &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/35&quot;&gt;#35&lt;/a&gt;. Additionally, this will encompass many of my iceboxed priorities.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;I&apos;m putting in more time to this than the 3 hours this class suggests. I&apos;m definitely starting to feel the burn of it. It still feels very exciting and there&apos;s tons of unique things to think about and problems to solve, but I do wonder what will happen to my motivation if I get stuck in a big task for over a week and I can&apos;t figure it out. This project beckons me on a deeper level, but I wonder how I will feel about it at semester&apos;s end.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Mind Map: Feb 2025]]></title><description><![CDATA[In the past month, I did a little bit of thinking on this The reason we are repulsed by snakes is they look the closest to any 3 dimensional…]]></description><link>http://localhost:8000/blog/2025/02/28-mind-map-feb-2025/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/02/28-mind-map-feb-2025/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Fri, 28 Feb 2025 16:31:00 GMT</pubDate><content:encoded>&lt;h2&gt;In the past month, I did a little bit of thinking on this&lt;/h2&gt;
&lt;p&gt;The reason we are repulsed by snakes is they look the closest to any 3 dimensional creature moving in 4 dimensions. It&apos;s pushed me to do some thinking on interdimensionality and what a 3 dimensional being moving in 4 dimensions may look like to a 4 dimensional being that moves in 5 dimensions or vice versa. It&apos;s hard to comprehend a higher-level dimensional being we observe from our dimension. We understand the shape of the 3d world but if a 2 dimeninsional being saw us, as a cross-section of our bodies passing through a plane of existence, we would look frightening and nothing as we believe we look. Likewise, any 4 dimensional being, trapped in our understanding of time would be truly horrifying.&lt;/p&gt;
&lt;p&gt;The shape of our entire life, from the moment we are born to the moment we die is our form in 4 dimensions, not the shape of our body now. When observed by a 4 dimensional being that moves in 5 dimensions, do we move or are we just stationary objects? Thinking back, the film Annihilation did a fascinating look at what a &lt;a href=&quot;https://www.youtube.com/watch?v=mAB-hSPmzjk&quot;&gt;4 dimensional being interacting with a 3 dimensional being may look like&lt;/a&gt;, and the resulting scene of the 4 dimensional being &lt;a href=&quot;https://www.youtube.com/watch?v=Gi3K-CApAS4&quot;&gt;creating a 3 dimensional being to interact with another 3 dimensional being&lt;/a&gt;. Both clips spoilers.&lt;/p&gt;
&lt;p&gt;Is dance, specifically circular dance (around a fire, maypole, etc), so universal to the human experience because it is a way to create loud, defined 4 dimensional patterns? Is the reason we are intrinsically drawn to dance because it&apos;s calling us from a higher dimension to be in communion with it? Is the secret to happiness and longevity dance because it&apos;s the only way 4 dimensional beings can understand and appreciate our lives?&lt;/p&gt;
&lt;h2&gt;Slow Reader&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://bookshop.org/p/books/the-body-keeps-the-score-brain-mind-and-body-in-the-healing-of-trauma-bessel-van-der-kolk/6679040?ean=9780143127741&amp;#x26;next=t&amp;#x26;next=t&quot;&gt;The Body Keeps The Score&lt;/a&gt; (2014) - Bessel Van Der Kolk&lt;/p&gt;
&lt;h3&gt;Stats&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Started reading&lt;/strong&gt; Nov 17, 2024&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finished reading&lt;/strong&gt; Feb 13, 2025&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total days reading&lt;/strong&gt; 88&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total pages&lt;/strong&gt; 358&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pages per day avg&lt;/strong&gt; 4.068&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why it took me so long&lt;/h3&gt;
&lt;p&gt;I thought it was going to be more about physical trauma, but ended up being emotional and psychological trauma. A good book that made me think about many things, seeing myself in some of the discussions, but definitely a harsh book with some disturbing accounts of trauma. It’s a hopeful book though!&lt;/p&gt;
&lt;h3&gt;Key Quote&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The greatest sources of our suffering are the lies we tell ourselves.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Fad Habits&lt;/h2&gt;
&lt;p&gt;I&apos;ve been doing a ton of psoas stretches with a lacrosse ball. Lots of issues perhaps - leg length discrepancy, posture seems wrong, etc. Could it all just be due to one side psoas muscle is tighter than the other? If so, I love easy solutions. If not, maybe I should take a more deliberate look at it.&lt;/p&gt;
&lt;h2&gt;Good Buys&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Acupuncture-Manual-Massage-Meridian-Relief/dp/B09YYG9QV4&quot;&gt;Acupressure pen&lt;/a&gt;: I&apos;m a hard gainer, so I have to have lots of theories on why. Does posture and small muscle tightness close up the large muscles with tons of knots to prevent muscle growth? It can be hard to notice how skewed you are until you put Zoom on with flipped camera view to see yourself as others see you in real time. The brain filters all that out when seeing yourself in the mirror. I&apos;ve been using the acupressure pen to really dig into those knots and I&apos;m noticing legs are looser, almost to a degree where it seems weak in muscles around the joints. Am I putting those muscles to work for the first time or am I ruining my body?&lt;/p&gt;
&lt;h2&gt;Dreams Worth Following&lt;/h2&gt;
&lt;p&gt;I love dreams with songs. Some song formed in which the only words were “I got out from the waterfall” to a chord progression somewhere between &lt;a href=&quot;https://www.youtube.com/watch?v=KBwZu798wM0&quot;&gt;Breakthespell&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=nkumhBVPGdg&quot;&gt;Sweet Jane&lt;/a&gt; with a tone closer to Sweet Jane and a seriousness closer to Breakthespell.&lt;/p&gt;
&lt;h2&gt;Link of the Month&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://johnkerl.org/doc/ortho/ortho.html&quot;&gt;Tips for mathematical handwriting&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Album of the Month&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.discogs.com/master/2753054-Leisure-Sunsetter&quot;&gt;Sunsetter&lt;/a&gt; (2022) - LEISURE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Song&lt;/strong&gt;: &lt;a href=&quot;https://www.youtube.com/watch?v=jhqvX_K3a1Y&quot;&gt;Dipping &amp;#x26; Diving&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[CliftonStrengths Evaluation and the Continuing Prophecy of Being Who a Test Says You Are]]></title><description><![CDATA[To better understand myself, I ended up taking the CliftonStrengths assessment. While I am wary of these personality/proclivity assessments…]]></description><link>http://localhost:8000/blog/2025/02/26-cliftonstrengths-eval/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/02/26-cliftonstrengths-eval/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Wed, 26 Feb 2025 19:35:00 GMT</pubDate><content:encoded>&lt;p&gt;To better understand myself, I ended up taking the &lt;a href=&quot;https://www.gallup.com/cliftonstrengths/en/252137/home.aspx&quot;&gt;CliftonStrengths assessment&lt;/a&gt;. While I am wary of these personality/proclivity assessments, I find myself falling prey to them time and time again. My main issue with them is how you are feeling in any particular moment dictates how you perform, much like the &lt;a href=&quot;https://en.wikipedia.org/wiki/Hungry_judge_effect&quot;&gt;Hungry Judge Effect&lt;/a&gt;. Instead of re-evaluating your outcomes over, say, 1 month or 1 year, and taking the averages to determine the &quot;now&quot; you versus the &quot;persistent&quot; you, it only captures one instance of your mental state and reflects that back to you as if that&apos;s always who you were and always who you will be. This in turn creates an internal bias in yourself where you always think you should or do act in certain situations based off what some uninvolved test that assumes no responsibility said about you. It&apos;s like the people who are into astrology and will throw in a &quot;that&apos;s such a Cancer thing to say!&quot; or &quot;that&apos;s the Taurus in you!&quot; to forever trap people in a web of expectation based on something that may or may not actually be an honest assessment of this person&apos;s true nature.&lt;/p&gt;
&lt;p&gt;I went into this test with best intentions and quickly remembered why I don&apos;t like them - they throw a ton of questions at you, all covering the same ten-or-so topics over and over, until you are totally mentally exhausted from it. They also seem very easy to fake. For example, if I could convince myself that a certain outcome made me more desirable for whatever goal I had, it would not be difficult to reach that goal, or at least close to it. Either way, I tried to take it earnestly, but my fatigue and irritation set in, which may or may not have affected my outcome.&lt;/p&gt;
&lt;p&gt;Ok, enough overthinking. My top 5 outcomes were: Strategic, Adaptability, Ideation, Relator, Connectedness. I don&apos;t necessarily think these are bad, and likely Strategic is one of my core competencies because I couldn&apos;t help but notice that the results mixed nouns (Adaptability, Ideation, Relator, Connectedness) with adjectives (Strategic). Also there are 2 actual words (Strategic, Adaptability) and 3 made up words that could easily have been replaced with a real word (Ideation -&gt; Imagination, Relator -&gt; Empathy, Connectedness -&gt; Relatable). It may seem petty that I&apos;d focus on that, but when I see things like this, I can&apos;t help but fixate on how underdeveloped the entire thing may be if something as simple as a correct grammar hasn&apos;t been managed correctly, especially for something that costs $60 to participate in.&lt;/p&gt;
&lt;p&gt;My results fit into 2 categories of the 4 total: Strategic Thinking (Strategic, Ideation) and Relationship Building (Adaptability, Relator, Connectedness). I sound like a likeable guy, I think: probably pretty smart with some good ideas, but I can&apos;t help but think about the categories I don&apos;t have in my top 5 with Executing, or anywhere in my top 10 in Influencing. I read this as I&apos;m an ideas guy that struggles to do the work and struggles to convince other people to do the work either. So where does this put me?&lt;/p&gt;
&lt;p&gt;This brings me back to my above point about the internal bias. Do I let this bother me? Do I start seeing myself as someone who is trapped with his ideas, his desire to be around other people, but can&apos;t follow through or enlist help? What kind of career or life is there for me with that? &lt;/p&gt;
&lt;p&gt;Or do I chalk it up to me just being in a certain mindset when I took the test and assume if I took it again in 3 months, I&apos;d probably get a better result, that I may or may not be trying to game the test for?&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #6]]></title><description><![CDATA[Overview Without really having a plan for what I'm about to write, I can feel that I'm going to write a lot. The last few weeks have been…]]></description><link>http://localhost:8000/blog/2025/02/26-weekly-project-update-6/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/02/26-weekly-project-update-6/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Wed, 26 Feb 2025 17:22:00 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Without really having a plan for what I&apos;m about to write, I can feel that I&apos;m going to write a lot. The last few weeks have been somewhat murky in terms of where I thought I&apos;d be and where I have to be. To sum it up, I was off in my initial project plan by thinking that hashing and encrypting did the same thing. Hashing is a one way function, meaning whatever you hash cannot be reversed to regenerate whatever is stored there, while encrypting is. Solidity, the language for building contracts on Ethereum, has built-in hashing, but not encryption. Encryption must be done off-chain. &lt;/p&gt;
&lt;p&gt;A real quick note about &quot;on-chain&quot; vs &quot;off-chain&quot; in case you are unaware: the chain in this scenario means blockchain, and any operation done on-chain means the person, or sender, of the contract is paying for the computing as it is done on the Ethereum network as a gas fee. Because encryption algorithms cannot be run on-chain, it means I&apos;ve got to come up with a solution to figure out where the computing needs to happen. Some ways people handle this is running some decentralized app (dApp) that integrates with the contract, or sometimes a centralized app running on AWS or Heroku. The ultimate goal of decx.press is to bypass any centralized application and building a dApp feels like it would be a big ticket item. So I am electing to build out a minimal CLI (always part of the project plan) to utilize free computing on the sender&apos;s machine to handle the encryption and decryption. Eventually we will need to shift to a dApp to handle this, but for the sake of this class, I&apos;m going as minimal as I can.&lt;/p&gt;
&lt;p&gt;You may have noticed I have 2 somewhat concurrent and circular issues to handle - building a CLI to handle the computing needed for encyption and an encryption algorithm to properly store the content. It sort of feels like a snake that&apos;s eating itself. Or, a better metaphor: chain that links to itself. What&apos;s the starting link? I&apos;ve decided to move forward with the encryption first, in a solution I&apos;m calling decx Encryption Key Service (dEKS), which will pass the encryptions generated back to the contract as it awaits to create the transaction in a batch, rather than having to recreate hashing algorithms off-chain or get the sender to sign off on every single hash created. &lt;/p&gt;
&lt;p&gt;If you aren&apos;t following this, don&apos;t worry! I&apos;m hanging on by the seat of my pants here and I&apos;m supposed to be the guy with the plan. Hopefully next week&apos;s report will have a much clearer description of how this all works, due to me actually building the thing out and seeing how it works.&lt;/p&gt;
&lt;p&gt;Last thing, I must mention that I got the encryption roughed out last week by throwing a dummy non-encryption encryption algorithm on the contract to prepare for integrating with a more substantial solution. As expected, fees were much higher due to the additional computing happening:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before dummy encryption fees&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;┌─────────┬──────────────────────────────────────┬──────────────┬───────────┬───────────┐
│ &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; │              Operation               │  Gas price   │  Gas fee  │  In USD   │
├─────────┼──────────────────────────────────────┼──────────────┼───────────┼───────────┤
│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │  &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;Hello, world!&quot;&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;1519812028&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1038681&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$4.3171&apos;&lt;/span&gt; │
│    &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;hashing attempt of &quot;Hello, world!&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1459334849&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;428272&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;$1.7092&apos;&lt;/span&gt; │
└─────────┴──────────────────────────────────────┴──────────────┴───────────┴───────────┘&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;After dummy encryption fees&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;┌─────────┬──────────────────────────────────────┬──────────────┬───────────┬────────────┐
│ &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; │              Operation               │  Gas price   │  Gas fee  │   In USD   │
├─────────┼──────────────────────────────────────┼──────────────┼───────────┼────────────┤
│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │  &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;Hello, world!&quot;&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;1519812028&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;4705166&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$19.0037&apos;&lt;/span&gt; │
│    &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;hashing attempt of &quot;Hello, world!&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1459334849&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;428272&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;$1.7092&apos;&lt;/span&gt;  │
└─────────┴──────────────────────────────────────┴──────────────┴───────────┴────────────┘&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can see the novel hashing of &quot;Hello, world!&quot; is almost 4.5 times as costly with the encryption, but once a novel hash is stored, reusing it costs pretty much exactly the same in both. My hope is that by moving the actual encryption onto the sender&apos;s machine and getting free computing with that, the fees go back down to what they originally were for the novel hashings. Let&apos;s see what actually happens next week!&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Finish and merge in the &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/29&quot;&gt;refactoring of the HashRegistry contract to handle encrypted content ticket&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Come up with an off-chain encryption solution and document it in a ticket [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/34&quot;&gt;#34&lt;/a&gt;] / Figure out off-chain encryption for the DecxDAG (same priority from 2 different weeks)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Iceboxed Priorities&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Build out a method for retrieving the DecxDAG hash from the contract via an API endpoint and viewing the original string (2 weeks week ago)&lt;/li&gt;
&lt;li&gt;Deploy the built contracts to a testnet (from 3 weeks ago)&lt;/li&gt;
&lt;li&gt;Plan how the API will work, what endpoints and methods it will have, and which tools I should use to implement it (from 3 weeks ago)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Wrote out a few tickets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update dependencies [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/32&quot;&gt;#32&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Emit a Novel Hashing score to denote the uniqueness of the string pressed [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/28&quot;&gt;#28&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Research and Add license [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/30&quot;&gt;#30&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Implement CLI for Pressing &amp;#x26; Releasing Content [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/35&quot;&gt;#35&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Finish and merge in the &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/29&quot;&gt;refactoring of the HashRegistry contract to handle encrypted content ticket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Come up with an off-chain encryption solution and document it in a ticket&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;I&apos;m in the rough of it now. There&apos;s no blockers but I&apos;m seeing threats from all sides.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;I&apos;ll just mention working with the team here. &lt;/p&gt;
&lt;p&gt;Carlos has requested to work on a ticket pertaining to keeping track of the uniqueness of the pressed content due to how many novel hashes are created [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/28&quot;&gt;#28&lt;/a&gt;] and Noah took on the task to update dependencies with critical or high vulnerabilities [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/32&quot;&gt;#32&lt;/a&gt;] off the backlog without telling anyone and already got it up for PR [&lt;a href=&quot;https://github.com/decx-press/decx-press/pull/33&quot;&gt;#33&lt;/a&gt;]. Even though things are feeling shakier in terms of next steps, the fact that I don&apos;t feel alone is helping me stay on task.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #5]]></title><description><![CDATA[Overview This last week was a sort of a pivot from my original project plan due to the need for some sort of encryption solution. I may come…]]></description><link>http://localhost:8000/blog/2025/02/20-weekly-project-update-5/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/02/20-weekly-project-update-5/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Thu, 20 Feb 2025 22:17:00 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;This last week was a sort of a pivot from my original project plan due to the need for some sort of encryption solution. I may come back to where I left off in a week or 2, but the encryption aspect of storing content should be solved, or much of what I&apos;m doing is just moving forward without purpose. The team met on Sunday, I told them what I was thinking and wanted to do and they think it all sounds good, albeit we are all a little unsure how it will  work altogether. &lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Figure out off-chain encryption for the DecxDAG&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Iceboxed Priorities&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Build out a method for retrieving the DecxDAG hash from the contract via an API endpoint and viewing the original string (from last week)&lt;/li&gt;
&lt;li&gt;Deploy the built contracts to a testnet (from 2 weeks ago)&lt;/li&gt;
&lt;li&gt;Plan how the API will work, what endpoints and methods it will have, and which tools I should use to implement it (from 2 weeks ago)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Merged in the &lt;a href=&quot;https://github.com/decx-press/decx-press/pull/27&quot;&gt;DecxDAG contract&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Had a meeting with the team to discuss focusing on encryption, which is a pivot from my original project plan&lt;/li&gt;
&lt;li&gt;Wrote several tickets for the next phase of work [&lt;a href=&quot;https://github.com/decx-press/decx-press/issues/28&quot;&gt;#28&lt;/a&gt;, &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/29&quot;&gt;#29&lt;/a&gt;, &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/30&quot;&gt;#30&lt;/a&gt;] as well as some draft tickets covering &lt;a href=&quot;https://github.com/orgs/decx-press/projects/1/views/1&quot;&gt;gas savings and off-chain encryption&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Finish and merge in the &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/29&quot;&gt;refactoring of the HashRegistry contract to handle encrypted content ticket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Come up with an off-chain encryption solution and document it in a ticket&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;After moving toward the encryption decision from last week, the new path is before me, albeit a much unsteadier one than it used to be.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;I think I&apos;m going to have to be less ambitious about what I can accomplish in a week from now on. I&apos;m limiting myself to 2 main items from here on out because of all the times I haven&apos;t quite gotten to what I wanted to do. I&apos;m also adding an icebox section to show tasks that I set out to do and pivoted away from, but I intend to get back to in the near future.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #4]]></title><description><![CDATA[Overview The big accomplishment is building out the DecxDAG logic to handle the process of converting a string into a single representative…]]></description><link>http://localhost:8000/blog/2025/02/13-weekly-project-update-4/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/02/13-weekly-project-update-4/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Thu, 13 Feb 2025 16:41:00 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;The big accomplishment is building out the DecxDAG logic to handle the process of converting a string into a single representative hash. The tests checked the fees for possible transactions and it was fun and a relief to see the results were not astronomical.&lt;/p&gt;
&lt;p&gt;From the test suite:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;command-line-prompt&quot;&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;span data-user=bdt data-host=dev&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$npm&lt;/span&gt; run &lt;span class=&quot;token builtin class-name&quot;&gt;test&lt;/span&gt;


  DecxDAG
    Deployment
      ✔ Should deploy successfully
    Storage and Lookup
      ✔ should reject empty strings
      ✔ should store the same data &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; the same string &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; different transactions
      ✔ should store mixed multi-byte and single-byte characters
    Gas Optimization
┌─────────┬──────────────────────────────────────┬──────────────┬───────────┬───────────┐
│ &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; │              Operation               │  Gas price   │  Gas fee  │  In USD   │
├─────────┼──────────────────────────────────────┼──────────────┼───────────┼───────────┤
│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │  &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;Hello, world!&quot;&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;1519812028&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1038681&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$4.3171&apos;&lt;/span&gt; │
│    &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;hashing attempt of &quot;Hello, world!&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1459334849&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;428272&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;$1.7092&apos;&lt;/span&gt; │
│    &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;hashing attempt of &quot;hello, world!&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1403557329&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;479370&apos;&lt;/span&gt;  │ &lt;span class=&quot;token string&quot;&gt;&apos;$1.8400&apos;&lt;/span&gt; │
└─────────┴──────────────────────────────────────┴──────────────┴───────────┴───────────┘
      ✔ Should optimize gas usage by avoiding duplicate hashing
┌─────────┬──────────────────────────────────────────────────────────────────────┬──────────────┬───────────┬────────────┐
│ &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; │                              Operation                               │  Gas price   │  Gas fee  │   In USD   │
├─────────┼──────────────────────────────────────────────────────────────────────┼──────────────┼───────────┼────────────┤
│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;JUMPY DWARF FOXES BLITZ QUICKLY IN A NIGHT VEX!&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1519812028&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;3061503&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$12.7245&apos;&lt;/span&gt; │
│    &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;jumpy dwarf foxes blitz quickly in a night vex.&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1468097242&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;3737810&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$15.0068&apos;&lt;/span&gt; │
│    &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;    │           &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;INKLY KLARF JUICY QUIG VIC!&quot;&apos;&lt;/span&gt;           │ &lt;span class=&quot;token string&quot;&gt;&apos;1424165575&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1145214&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$4.4603&apos;&lt;/span&gt;  │
│    &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;    │           &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;inkly klarf juicy quig vic.&quot;&apos;&lt;/span&gt;           │ &lt;span class=&quot;token string&quot;&gt;&apos;1375192882&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1043683&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$3.9251&apos;&lt;/span&gt;  │
│    &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;    │       &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of &quot;WOOO!!! LETS GO!!!! MAHOMES BABY!!&quot;&apos;&lt;/span&gt;        │ &lt;span class=&quot;token string&quot;&gt;&apos;1331556959&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1797339&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$6.5449&apos;&lt;/span&gt;  │
└─────────┴──────────────────────────────────────────────────────────────────────┴──────────────┴───────────┴────────────┘
      ✔ should optimize gas usage by avoiding duplicate hashing &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; longer strings
┌─────────┬──────────────────────────────────────────────────────────────────┬──────────────┬────────────┬────────────┐
│ &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; │                            Operation                             │  Gas price   │  Gas fee   │   In USD   │
├─────────┼──────────────────────────────────────────────────────────────────┼──────────────┼────────────┼────────────┤
│    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;    │ &lt;span class=&quot;token string&quot;&gt;&apos;novel hashing of 555 characters from &quot;The Old Man and the Sea&quot;&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;1519812028&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;17413057&apos;&lt;/span&gt; │ &lt;span class=&quot;token string&quot;&gt;&apos;$72.3737&apos;&lt;/span&gt; │
└─────────┴──────────────────────────────────────────────────────────────────┴──────────────┴────────────┴────────────┘
      ✔ should optimize gas when storing extremely long strings&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It works by taking a string, converting it into a character array, while ensuring that &lt;em&gt;single-byte&lt;/em&gt; (&apos;o&apos;) and &lt;em&gt;multi-byte&lt;/em&gt; (&apos;ö&apos;, &apos;ợ&apos;, &apos;🅾️&apos;) characters are all handled correctly. Then it converts each character into a hash and then goes through the resulting pairs of hashes, converting them into a single hash, which iteratively reduces the hashes until there is only one. &lt;a href=&quot;https://whimsical.com/decx-press-merkle-dag-6FiFNjkeb3GnDY1wYm7nQX@2bsEvpTYSt1HjKbJuPa5AhxuGswWcvZ3iXv&quot;&gt;I diagrammed this Merkle Tree reduction&lt;/a&gt;, if you wanted to take a peek. The final hash is then stored in the DecxDAG contract and is the representation for the string.&lt;/p&gt;
&lt;p&gt;In the above output, you can see the novel and replicative hashing attempts of certain strings and the gas fees associated with each. In the first table, the novel hashing attempt of &quot;Hello, world!&quot; means that none of the characters or pairs of hashes exist and must be computed. The replicative hashing attempt of &quot;Hello, world!&quot; and slightly modified &quot;hello, world!&quot; have much lower gas fees because they are able to reuse the existing hashes.&lt;/p&gt;
&lt;p&gt;The sentence &quot;JUMPY DWARF FOXES BLITZ QUICKLY IN A NIGHT VEX&quot; contains all the characters in the English alphabet, so the following strings attempted can reuse the existing hashes. However, case sensitivity is not handled, so &quot;jumpy dwarf foxes blitz quickly in a night vex.&quot; has a higher gas fee because it must compute all the hashes again, with a new puncuation mark. I don&apos;t exactly know why the fees for the upper case string are less than the lower case string in the &lt;em&gt;jumpy dwarf&lt;/em&gt; strings but more in the &lt;em&gt;inkly klarf&lt;/em&gt; strings.&lt;/p&gt;
&lt;p&gt;Finally, just to test it out, I wanted to find where we run into the gas limit. I used &lt;a href=&quot;https://github.com/decx-press/decx-press/pull/27/files#diff-42379e4b23b69b83874749600e299bb7e5269eb35ba31b1641d414e84fad4cbaR7-R8&quot;&gt;an excerpt from &quot;The Old Man and the Sea&quot;&lt;/a&gt; which was able to handle the first 555 characters, but I ran into the limit somewhere above.&lt;/p&gt;
&lt;p&gt;The fun thing to note is the more this is used and the more characters and hashes are added, the cheaper the computation becomes, which means strings will be able to get longer and longer.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; (carried over from 2 weeks ago) Refactor Solidity contracts for handling character-to-hash contracts and hashes-to-hash contracts&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Ensure hashes-to-hash contract refactoring is complete &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/18&quot;&gt;#18&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Merge any outstanding PRs&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Build out the DecxDAG logic to handle the process of converting a string into a single representative hash &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/21&quot;&gt;#21&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Deploy the built contracts to a testnet (check out my blockers below)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Plan how the API will work, what endpoints and methods it will have, and which tools I should use to implement it (related to the above)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added an &lt;a href=&quot;https://bentinsley.dev/rss.xml&quot;&gt;RSS feed to this site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Built in some &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/25&quot;&gt;basic formatting guidelines and enforcement&lt;/a&gt; for the codebase, using &lt;a href=&quot;https://prettier.io/&quot;&gt;Prettier&lt;/a&gt; for formatting and &lt;a href=&quot;https://typicode.github.io/husky/#/&quot;&gt;Husky&lt;/a&gt; for pre-commit hooks.&lt;/li&gt;
&lt;li&gt;Participated in Open Hours and PR Monday&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Figure out off-chain encryption for the DecxDAG&lt;/li&gt;
&lt;li&gt;Build out a method for retrieving the DecxDAG hash from the contract via an API endpoint and viewing the original string&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;Deploying to a testnet seems more complicated or expensive than I anticipated. I need to do some more research on the topic and get it out there so I can move forward.&lt;/p&gt;
&lt;p&gt;In building out the original implementation of the DecxDAG, which &lt;strong&gt;hashes&lt;/strong&gt; characters and paired hashes into a single hash, I&apos;ve relized what I &lt;em&gt;actually&lt;/em&gt; wanted to do was &lt;strong&gt;encrypt&lt;/strong&gt; the characters and paired representations into a single encrypted hash. Looking into this, Solidity doesn&apos;t support encryption on-chain, so I will need to do some research on how to do this off-chain and then store the encrypted hash on-chain so it can be used as a means to exchange data. I think I can move forward with the current implementation (hashing, not encrypting), but it won&apos;t be the vision of decx.press at all. This is more of a philosophical blocker.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;Last week both the PR Monday and Open Hours went well and the team took them seriously.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #3]]></title><description><![CDATA[Overview I've spent a considerable amount of time this week ensuring that I can relate to the team members on the project and ensure I'm…]]></description><link>http://localhost:8000/blog/2025/02/05-weekly-project-update-3/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/02/05-weekly-project-update-3/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Wed, 05 Feb 2025 21:17:00 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;I&apos;ve spent a considerable amount of time this week ensuring that I can relate to the team members on the project and ensure I&apos;m setting them up for success when they want to work on the project. I was able to finally put fingers to code and pair with Noah and Carlos to refactor the Character2Hash and HashRegistry contracts. I&apos;ve also set up a few recurring events to help the team find an optimal flow despite all of our busy schedules.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; Refactor Solidity contracts for handling character-to-hash contracts and hashes-to-hash contracts (hashes-to-hash contract refactoring is not yet implemented)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Integrate a Hash Registry to handle deduplication across units&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Add a &lt;a href=&quot;https://github.com/decx-press/decx-press/wiki/Technical-Architecture&quot;&gt;Technical Architecture&lt;/a&gt; section to the wiki, with a basic &quot;Glossary of Terms&quot; and &quot;Technical Decisions&quot; sub-sections&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Attend the Slambox talk&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added a &lt;a href=&quot;https://github.com/decx-press/decx-press/wiki/Working-on-decx.press&quot;&gt;Working on decx.press&lt;/a&gt; section to the wiki&lt;/li&gt;
&lt;li&gt;Added a &lt;a href=&quot;https://github.com/decx-press/decx-press/wiki/Git-Flow-Guidelines&quot;&gt;Git Flow Guidelines&lt;/a&gt; section to the wiki&lt;/li&gt;
&lt;li&gt;Paired with team members (&lt;a href=&quot;https://github.com/noahkawaguchi&quot;&gt;Noah&lt;/a&gt; &amp;#x26; &lt;a href=&quot;https://github.com/caga5719&quot;&gt;Carlos&lt;/a&gt;) to refactor the Character2Hash and HashRegistry contracts &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/17&quot;&gt;#17&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Better incorporated team members into the project (Carlos), allowing him to take specific refactoring task for hashes-to-hash contracts &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/18&quot;&gt;#18&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set up a few recurring terminal events over the next month to help the team have more opportunities to work together and review each other&apos;s code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PR Mondays&lt;/strong&gt;: Every Monday, team members will commit to &lt;a href=&quot;https://github.com/search?q=org%3Adecx-press+is%3Aopen&amp;#x26;type=pullrequests&quot;&gt;reviewing any open PRs&lt;/a&gt; (Feb 10th, Feb 17th, Feb 24th, Mar 3rd)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open Hours&lt;/strong&gt;: Every Friday, we will have an open Zoom call to chat about the project, pair program, or have unstructured conversations (Feb 7th, Feb 14th, Feb 21st, Feb 28th)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First Sunday Retrospective&lt;/strong&gt;: In place of our usual Sunday team call, we will have a retrospective on the first Sunday of the month to reflect on the process of the past month and keep things that are working and drop things that are not. (March 2nd)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ensure hashes-to-hash contract refactoring is complete &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/18&quot;&gt;#18&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Merge any outstanding PRs&lt;/li&gt;
&lt;li&gt;Build out the DecxDAG logic to handle the process of converting a string into a single representative hash &lt;a href=&quot;https://github.com/decx-press/decx-press/issues/21&quot;&gt;#21&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deploy the built contracts to a testnet&lt;/li&gt;
&lt;li&gt;Plan how the API will work, what endpoints and methods it will have, and which tools I should use to implement it&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;I&apos;m happy Carlos took on the hashes-to-hash contract refactoring and trusting him to accomplish the task. Getting more members involved in the project is great, but I anticipate it will cause some initial slowdowns. In the long run, I know it will pay off.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;I&apos;m curious to see how the events I set up will go. I think they will help the team get more comfortable with the project and each other. But I&apos;m also aware that I need to be careful not to overwhelm the team with too many events. This is why I&apos;m only committing a trial phase of 4 events and then automatically ending them by default, that way they can die quietly versus needing a conversation.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #2]]></title><description><![CDATA[Overview The project proposal for decx.press was a big step towards creating a plan for the semester. It was a way to set clear goals for…]]></description><link>http://localhost:8000/blog/2025/01/29-weekly-project-update-2/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/01/29-weekly-project-update-2/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Wed, 29 Jan 2025 20:01:00 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;/decx.press_project_proposal.pdf&quot;&gt;project proposal for decx.press&lt;/a&gt; was a big step towards creating a plan for the semester. It was a way to set clear goals for myself and to communicate with the decx.press team about what I need from them. They were very helpful in reviewing my proposal and providing feedback. We also discussed that it would be helpful to have a knowledge repository for the project. It&apos;s something I won&apos;t let creep the scope of the project, but it will be important as a first pass of documentation, motivation and best practices for the project.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;h3&gt;What I Said I&apos;d Do&lt;/h3&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Create and post my project proposal&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Review at least 2 classmates&apos; project proposals&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Share my project proposal with the decx.press team and articulate what I need from them&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Additional Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Made necessary edits and submitted my project proposal&lt;/li&gt;
&lt;li&gt;Created an outline for the &lt;a href=&quot;https://github.com/decx-press/decx-press/wiki&quot;&gt;decx.press project wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Merged all open PRs into &lt;code class=&quot;language-text&quot;&gt;main&lt;/code&gt; on &lt;a href=&quot;https://github.com/decx-press/decx-press/commits/main/&quot;&gt;decx.press&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Refactor Solidity contracts for handling character-to-hash contracts and hashes-to-hash contracts&lt;/li&gt;
&lt;li&gt;Integrate a Hash Registry to handle deduplication across units&lt;/li&gt;
&lt;li&gt;Add a &quot;Technical Architecture&quot; section to the wiki, with a basic &quot;Glossary of Terms&quot; and &quot;Technical Decisions&quot; sub-sections&lt;/li&gt;
&lt;li&gt;Attend the Slambox talk&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;None! Let&apos;s get going.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;This week I added a &lt;strong&gt;What I Said I&apos;d Do&lt;/strong&gt; subsection to my Last Week section as a way to remind myself if I&apos;m accomplishing the things I said I&apos;d do. I&apos;d like to continue this practice for the rest of the semester. Otherwise, this week was still a lot of planning and not a lot of actual working. Next week, I&apos;ll have a better idea if the plan I set for myself is realistic and if there are changes to the process I need to make.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Weekly Project Update #1]]></title><description><![CDATA[Overview Last week, I met with Prof. Guinn and other members of the class in CU's CSPB 3112 Professional Development course to discuss our…]]></description><link>http://localhost:8000/blog/2025/01/22-weekly-project-update-1/</link><guid isPermaLink="false">http://localhost:8000/blog/2025/01/22-weekly-project-update-1/</guid><dc:creator><![CDATA[BD Tinsley]]></dc:creator><pubDate>Wed, 22 Jan 2025 17:14:00 GMT</pubDate><content:encoded>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Last week, I met with Prof. Guinn and other members of the class in &lt;a href=&quot;https://online.colorado.edu/applied-computer-science-bs/academics&quot;&gt;CU&apos;s CSPB&lt;/a&gt; 3112 Professional Development course to discuss our prospective projects. I discussed the history and intention of &lt;a href=&quot;https://github.com/decx-press/decx-press&quot;&gt;decx.press&lt;/a&gt; as well as work done thus far. One of the main takeaways from the meeting is that given what the goals of decx.press are, it may be difficult to isolate the scope of what I can get done in the next 14 weeks. Prof. Guinn mentioned that this is a project that could worked on for years, so making sure I set clear milestones in the project proposal for myself will be important.&lt;/p&gt;
&lt;h2&gt;Last Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Met with Prof. Guinn and other members of the class to discuss our projects&lt;/li&gt;
&lt;li&gt;Diagrammed a &lt;a href=&quot;https://whimsical.com/decx-press-merkle-dag-6FiFNjkeb3GnDY1wYm7nQX@2bsEvpTYSt1HjKbJuPa5AhxuGswWcvZ3iXv&quot;&gt;Merkle Tree reduction algorithm&lt;/a&gt; for storing content&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Next Week&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create and post my project proposal&lt;/li&gt;
&lt;li&gt;Review at least 2 classmates&apos; project proposals&lt;/li&gt;
&lt;li&gt;Share my project proposal with the decx.press team and articulate what I need from them&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blockers&lt;/h2&gt;
&lt;p&gt;As decx.press is a team project, the main challenge I&apos;m facing is getting everyone to contribute to the project, even in minor ways like reviewing PRs or showing up to meetings consistently. But these are minor issues, and I know that this is an issue that can be solved with my own communication and organization skills. I think a way to solve this is to show the team what I hope to accomplish once I&apos;ve created my project proposal and be clear about what they can do to help me.&lt;/p&gt;
&lt;h2&gt;Reflections on Process&lt;/h2&gt;
&lt;p&gt;It&apos;s too early for me to have a good sense of how to speak to this. I think once I&apos;ve created a map for the semester in the project proposal, I&apos;ll easier be able to find a way to both reflect and improve my process. A big question mark I hope to solve is how to fold the decx.press team into my process. I&apos;m optimistic that I&apos;ll be able to do this.&lt;/p&gt;</content:encoded></item></channel></rss>