love how this class is basically just "recreate a subset of ocaml, using ocaml"
wrote a recursive descent parser (that handles left-recursion) in ocaml for my PL class! functional programming is fun
outernet internet :peefest:
Wrote a simple scheduler in C++ for my microcontroller project, it allows me to schedule runs of some "work" function by giving it a delay or a timestamp when I want it run. you can have multiple jobs scheduled, each with different parameters for the function!
I should go to bed and stop writing terribly broken state machines
routing done!! not my greatest work ever but (hopefully!) it will do
now I need to figure out what to do with the silkscreen, suggestions are appreciated
It's awful and buggy and segfaults at the slightest provocation, but I'm finally getting things rendered with my weird UI library! Decided to use Yoga to handle the flexbox math which saves me so much effort, it takes up a lot of flash but hopefully will be worth it
learning about synthesizer design!
Dear ImGui running on a teensy!! Just need to get the hardware write time down somehow, but even as is it's quite usable
Pretty lights on the keyboard 🎹Finally got rails :rails2: set up to my liking for working on the #oblong-dev admin panel! Also ft. Tailwind :tailwind: which is kinda growing on me? I still think theme UI is better for things that aren't just quick prototypes and can use React but tailwind isn't too bad
#oblong-dev design coming along nicely!
Writing MIPS assembly for CS - pretty interesting, although it would be more fun if I didn't have so many other assignments to do this week
Made a terrarium today! It's an entire little world in there 🌱
GTK/Adwaita theme now matches my IDE's color scheme and my firefox theme!
Made a simple blahaj (or any ikea product) stock tracker, built in google sheets + apps script
Since I have this week off (fall break) I'm finally learning rust, after >4 years of wanting to do so
Day 10 of #10-days-in-public - not a very satisfying ending (yesterday's post would have worked better) but I made a lot of notes for writing my essay. Wish I could have been on the celebration call but had to do this instead :(
Overall, I made so much progress these past 10 days in my academic skills - I am almost completely caught up with classes and feel way more prepared to take on whatever comes next! Even though I didn't work on a concrete project I still think I kinda shipped something, just for my own personal use - strategies and understanding to get through college.
Day 9 of #10-days-in-public - I did it. I completed and submitted my homework assignment on time. I used the resources available to me and overcame (at least a large part of) my anxiety, I am so proud of myself that I was able to get to this point.
Now time to write a 1500 word essay in 1.5 days :peefest:
Day 8 of #10-days-in-public - I met with the academic support person at my college and got so much incredible advice on how to get through my anxiety. I actually feel like there's a chance I can do this
Day 7 of #10-days-in-public - couldn't get a whole lot done today, anxiety is still pretty bad, but I'm reaching out to people to get help. I will get through this
Day 6 of #10-days-in-public - was able to meet with the DAR to get more resources for my anxiety! Also it turns out my ram has failed so I need to RMA it :peefest:
Day 5 of #10-days-in-public - we briefly interrupt your scheduled programming to bring you MAKING A BERET
(also I feel much more prepared for math class tomorrow!)
Day 4 of #10-days-in-public - trying to catch up in math and learn about fields
Day 3 of #10-days-in-public - finally turned it in! Super exhausted, going to get to bed early
Day 2 of #10-days-in-public - might actually complete all of this by the deadline! I've been working on techniques to get unstuck, primarily recognizing that I am getting stuck and trying to identify the cause/other things to do
(also, the number of latex errors keeps going up, idk why but the output seems to be what I expect so 🤷)
Day 1 of #10-days-in-public - Finally making some more progress on my take-home midterm! Had to cover up the questions unfortunately since I can't share them, but I was able to talk with my professor a bunch and he helped resolve my confusion about some of the problems. Overall I feel much more confident in my ability to finish this, and with that comes somewhat reduced anxiety (which itself allows me to get more done). I'm going to try to learn from this for the future; when I get stressed, I can try to make a list of questions
I'm going to Impersonate Linus Torvalds. calebconf 2022.
Finally got the drawer animation working, it is so fun to play withHorribly broken state machine time :no-thoughts-fest:
not quiteFor some reason I decided to add Babel transform error handling to Reflection editor - now, when Babel throws an error in the service worker, the worker returns a fake React component that throws an error client-side so it can be caught by the error boundary
(also wrote a tic tac toe game with it)
Manual image manipulation and gibberish code
Starting to think I'm going to need a "hide tags" buttonWriting my own JS module system is more difficult than I thought (also wow I've really gotten sidetracked, this started by trying to make Vite build my project faster)
I love framer motion it is so so cool
Speedran the Hacker Challenge on hard mode, got 2:38:26
Speedran the Hacker Challenge on hard mode, got 2:38:26
Speedran the Hacker Challenge on hard mode, got 2:38:26
Hacking at the #gamelab-dev editor!
Xonsh scripts: a bit cursed but so much better than writing a bash script
My PR to kbar was merged!
Working on reflection editor using itself
For #codejelly I made reflection editor, a self-hosting web code editor. This means that it edits its own code, and runs everything entirely in the browser using service workers and IndexedDB!
Try it out here (only works in Chromium):
:twglobewith_meridians: : reflection-editor.netlify.app:github: : github.com/Merlin04/reflectionMonaco works now! It's surreal to be able to edit this thing's own code from itself
More codejelly project work - I can now edit the editor from itself and load pages from indexeddb with a service worker!Starting the #codejelly project
Made a nice interface for a script I'll probably only ever run once
A thing I am working on
Designed and 3d printed a new knob for my mom's salt rock lamp that's easier to grip onto! (old knob in the background, it's completely smooth which is an awful design)
I made some cool wallpapers in Photoshop in photography class today
Some pattern matching stuff in TypeScript for a logic proof builder
Are you ok snowpack
Who needs variables when you have functions that can return a value
The parser works, I can now run code from source!
Making a parser with Ohm
I wrote type definitions for an AST for the weird type language I was discussing in #benjamin- and a working interpreter for programs written in that AST; I tried making a parser for source code but it doesn't work, I'll try to fix it tomorrow. Code is available at github.com/Merlin04/experimental-type-lang
I got codex access!
Working on a new keyboard PCB
Fixed the filesystem, had to run testdisk to recover the partition table then run fsck to fix the actual filesystem, then I could mount it. Still need to figure out how to write it back to the sd card (I've been working from a local image)
File system recovery :peefest:
Switched to xonsh, who needs POSIX compliance anyway
I made a short demo video for KobraWorking on rewriting that Australian Government API in TypeScript and Express so @sampoder can run it on Vercel
I wrote some code to bypass the TypeScript recursion limit by undoing the recursion (replacing the place where it references itself with a copy of itself) for a specified number of levels. It produces really long type definitions but it is functional. I'll try to make a webapp for it then I'll #ship itWhy does the typescript AST have to be so confusing
Setting up MediaWiki to mirror ArchWiki on #zephyrnet
I tried to replace my laptop battery but the replacement I got from iFixit was 0.5mm too tall and when I screwed it in it blocked the trackpad from going down far enough to clickWorking on programming my new trackball (ploopy.co)
The apollo client cache can be annoying sometimes, this is the cache update code for a mutation
I soldered a QFP chip for the first time, once I figured out what the proper technique was it wasn't too hard
Installed CapRover and set up a PostgreSQL database
Added a light bar to my 3d printer
Prisma is amazing, now I don't have to have my database models in three different places, all slightly different
Needed a brim for a 3d printed thing to work but the brim configuration options weren't flexible enough so used a bunch of weird settings for support material instead
I 3D printed my GitHub Skyline! (forgot to enable private repositories in my contribution graph so this is slightly inaccurate, oh well)
Added my website to the webring! I wrote a react component with Next.js server side data fetching instead of using the premade JS so there is no JS needed to run the component on the browser
Couldn't get 3d acceleration working in QEMU/MacOS so switched to Windows in Virtualbox
Fusion 360 through Wine/Lutris didn't work so I'm installing it in a MacOS VM
The new Arduino Pro IDE is really nice, way better than the old java based thing
Got feedback from people in #design about how I am displaying images in cards
Did some more work on my GitHub profile thing
Worked on a GitHub Action to update my profile readme from data in Contentful, layout is a bit weird right now
I have been playing Ben Awad's new game stripcode.dev, at one point I was able to get to first place but now I am at second (and probably will continue to slide down because I am not constantly playing it)
I spent the day working on homework so no time for coding
I was able to get some electronics parts from DFRobot for free with a $5 coupon for completing a survey and a $10 shipping coupon for my first order
Couldn't do much coding today but I helped a friend with getting jquery and fomantic ui running in a codesandbox
I used useImperativeHandle for the first time today
Almost forgot to put something here today, I worked on getting Auth0 to work in a Next app
I designed a microcontroller board (ATtiny1614) with a bunch of other things (button, Qwiic connector, LEDs, capacitive touch controller) shaped like the hack club logo
Worked on a PCB today but don't have a picture so here's my cat
My package.jsonscripts section keeps getting longer and longer
Tried to get Fusion 360 running on Linux but failed, if anyone has a working method please let me know
Successfully upgraded my SSD! It turns out that my original SSD wasn't corrupted, it was just the drive enclosure, and getting a better one (with a cooling fan) fixed the issue
Setup GitPod so I can keep working on my website from my school issued laptop while I wait for a new NVME to USB adapter. I don't have a screenshot of the actual ui so here's my config file
Upgrading my laptop's SSD to a 1TB one (no idea why it is so slow, they are both NVME)
Had to modify my masonry component to use client side JS because I couldn't find a cross platform CSS solution
It turns out that the method I used for the masonry layout on my website (making the container with the items a flexbox with flex-direction set to column, and adding break-after: page to the places where I want to start new columns) only works on Firefox, so I spent the entire day trying to figure out alternatives. The first one I found is to set the writing mode of the container so text (and span elements) flows vertically, and then reset the properties for the children elements. The second one is to rotate everything 90 degrees so the rows are actually columns, and then rotate each item -90 degrees to be in the normal orientation. I'm not sure which of these is better, I am leaning towards the writing-mode one because I would guess that css transform takes longer. I put together a test site using these at css-columns-force-break.glitch.me, I'll try to do more testing with it tomorrow
Also here's my GitHub commit graph for the year, it becomes a lot more dense when I started learning React and working on more projects
Merged all the graphql queries for the index page into one query because there is no point in having them separate, and started working on more types of information to display
Improved the project pages, switched to using getStaticProps and getStaticPaths for them, and set up Vercel (see a prototype of my website at benjaminsmith.vercel.app, content not final yet)
I finished getting typescript to work well with GraphQL, added separate pages for projects, a nice 404 page, and a loading screen while Next.js is loading the next page
I am using Contentful as my website's headless CMS and its GraphQL API marks all properties as optional even if you have set it to required on the web interface, so to use the TypeScript code generated by graphql-code-generator you need to do a lot of null checks. This is for a good reason but I'd rather have that edge case to deal with than have to write a bunch of checks, so I wrote a CLI tool to get the GraphQL schema, modify it so that the types match the data from the Contentful management API, and write it to a file that the codegen tool can use