jessicard

jessicard

0-day streak
Some exciting news! All of the guide content for <https://github.com/hackclub/some-assembly-required|Some Assembly Required> is in, and we are ready for some eyes on it. Some Assembly Required is an approachable introduction to assembly that Hack Clubbers and I have been working on. You don’t need to have any experience with low level systems to read it, but it assumes you’ve done a bit of programming before, as examples are written in JavaScript. I’d love to get a few volunteers who are open to reading it and giving feedback on the guide by Monday. I’d also love to know how long it took you to read through the guide, so we can add a time estimate to the introduction section. You don’t have to finish it all in one session, but just keep a timer going when you’re actually sitting down and working through it :) If you’re interested, feel free to hop into #some-assembly-required and pop a message in there. Feedback can be given on a thread in the channel. Thanks so much! 💖
https://cloud-a9w96wvh7-hack-club-bot.vercel.app/0screen_shot_2022-06-16_at_9.56.05_am.png
Spent today working through the code examples and organization of the #some-assembly-required. Woohoo! Things are really starting to solidify 😄 Looks like we’ll be at about 24 pages, not including the READMEs for the individual assembly languages and the code example files. Kinda cool!
https://cloud-jxxykouz5-hack-club-bot.vercel.app/0screen_shot_2022-06-09_at_3.55.08_pm.png
Every new assembly language I learn works approximately the same way, but somehow every time I see code for one I haven’t used yet I get totally intimidated lmao :flushded: Today I worked on fully understanding @belle’s hello world 6502 example (which is awesome!!), and adding some clarifying comments to help people like me understand what’s going on! github.com/hackclub/some-assembly-required/pull/26/files
https://cloud-ex0ogutlg-hack-club-bot.vercel.app/0screen_shot_2022-06-08_at_4.14.48_pm.png
I’ve been working on making the code part of #some-assembly-required more conversational and less list-y! Also added in JavaScript examples to show conceptually “equivalent” code in higher level languages
https://cloud-j91s53ajm-hack-club-bot.vercel.app/0screen_shot_2022-06-06_at_4.32.23_pm.png
today @belle and I got commodore 64 emulators running so we could write assembly programs in 6502! we followed github.com/Esshahn/acme-assembly-vscode-template, but had to make a few tweaks to make it work. first, their application path to VICE is different than ours was - ours was /Applications/vice-x86-64-gtk3-3.6.1/x64sc.app/Contents/MacOS/x64sc second, when assembling the program, our vscode setup didn’t automatically open VICE for us. so we had to manually open the .prg in VICE after we created it
https://cloud-5ab0vtz8t-hack-club-bot.vercel.app/0screen_shot_2022-06-02_at_1.57.16_pm.pnghttps://cloud-incqsi49h-hack-club-bot.vercel.app/0screen_shot_2022-06-02_at_3.29.36_pm.png
https://cloud-o36c0gvt7-hack-club-bot.vercel.app/0image_from_ios.jpg
https://cloud-6vpsgh20i-hack-club-bot.vercel.app/0screen_shot_2022-05-31_at_3.27.35_pm.png
was working with @belle on some assembly required, and this funny RISC-V assembly fact came up today! some background: • RISC-V is a simple assembly language made for academic use • when you want to save numbers for later use in assembly, you save them in something called a register so here’s the funny bit. let’s say you want to store a number into a register! should be easy, right? wouldn’t it be nice if you could do something like:
# Load the number 30 into register 18
LOAD x18, 30 
well, you totally can’t!!! which confused me for awhile! but it turns out, if you use an unrelated command in a funny way, you can get the same effect.

enter the `ADD` instruction. `ADD` adds a number from *one register* to a *second register* and saves them to *third register*.
# Add the contents of register 2 to register 3 and save that into register 1
ADD x1, x2, x3
now let’s enter the `ADDI` instruction. it stands for `add immediate`, which adds a number from *one register* to a *number* you provide and saves that to a *second register*.
# Add the contents of register 2 to the number 30 and save that into register 1
ADDI x1, x2, 30
now let’s introduce our final actor, the `x0` register. this register is special - it’s a 0 constant, meant to be used whenever you need a 0. why not just use a number 0? great question - often, these commands require registers, so this register can act as 0 for us whenever we need it. for example, in the case of `ADDI`, at least one of the numbers to add has to be from a register.

now that we have all this set up, here’s what we can do.
# Add 30 to the contents of register zero, or x0, and save that into register x18
ADDI x18, zero, 30
so, to repeat that: let’s add the contents of register 0 (which is 0) to 30, and add that into register 18. 30 + 0 = 30, save that into register 18. we did it!!! 🎉 anyways, come hang out with me in #some-assembly-required, where development of some assembly required is happening!
https://cloud-l2efs41v7-hack-club-bot.vercel.app/0screen_shot_2022-05-26_at_3.01.32_pm.png
babby’s first C program. someone give me a trophy lmao!! 🏆 it was a breath of fresh air to go from writing this program in assembly to writing it in C. it was really cool mapping how assembly is working to how C is working, like how command line arguments are passed through to both of them the same way! check out the differences between the assembly uppercaser and the C uppercaser: github.com/hackclub/assembly/blob/main/x86-intel/uppercaser/uppercaser.asm github.com/hackclub/assembly/blob/main/c/uppercaser/uppercaser.c it would be nice to write out the strlen function myself since that’s how i’m doing it in the assembly program, but i’m just using the built in function for that for now 😇 there’s also hello world examples in each directory if your curiosity strikes you but you want smaller examples!
https://cloud-m762ph3s7-hack-club-bot.vercel.app/0screen_shot_2022-05-25_at_12.09.03_pm.png
it took me all weekend to write a program in assembly that just prints back out the command line arguments you pass into it. that’s it. LOLLLL. this is really making me appreciate how much higher-level programming languages simplify for us! next step, doing something with those arguments.. maybe uppercasing them? the number of written instructions is only like 60ish, but the file itself is over 300 lines because it turns out I can’t write assembly without documenting it HEAVILY, or my brain breaks! github.com/hackclub/assembly/blob/5c9fdbe1e1b5673c1434af90197f6c10dff9a7ce/x86-intel/cmdargs/cmdargs.asm
https://cloud-js8l91brg-hack-club-bot.vercel.app/0screen_shot_2022-05-23_at_10.57.56_am.png
got my first x86 assembly program compiling after some xcode drama! woohoo! x86 assembly language is just a particular assembly language that works with some types of processors. there’s 2 different syntaxes for x86 assembly, intel and at&t. i’m starting with the intel syntax. i followed a guide to compiling a simple “hello world” program, so i’m not sure how this code is working yet (it looks so much different than the risc-v i was doing before). today i’m dissecting how it all works. it’s wild to me that two different assembly languages can feel so different! github.com/hackclub/assembly/blob/main/x86-intel/x86-intel.asm
https://cloud-elbn02c5y-hack-club-bot.vercel.app/0screen_shot_2022-05-19_at_3.39.57_pm.pnghttps://cloud-2vxgz372j-hack-club-bot.vercel.app/0screen_shot_2022-05-19_at_3.40.53_pm.png
while I wait for xcode to do an install, I will share a fun fact @carrot taught me about logic gates recently :and: you only need the NAND gate (AND gate followed by NOT) to do every single possible logic operation ever. that means that every possible logic circuit can be made to use only NAND! in fact, a physical NAND transistor takes up less area than an AND transistor. to make an AND, you’d actually make a NAND and then invert the output. en.wikipedia.org/wiki/NAND_logic
https://cloud-p4lynabbi-hack-club-bot.vercel.app/0screen_shot_2022-05-18_at_11.07.07_am.png
i’ve always wondered how my computer works, but i went straight to web dev when i started coding. so, i’ve been taking the past week to backfill my knowledge and learn how cpus and assembly language work! as i’ve been learning, i’ve been writing down my learnings, of which I just pushed to GitHub :github: it’s still very WIP but i’d love it if you could take a read and give your thoughts! i’m hoping for this to end up being the accessible guide that I wish I had, as most resources I found were quite dense and a bit over my head. hopefully this also helps answer the higher level question of “how are we able to talk to our computers anyway?” github.com/hackclub/assembly
https://cloud-jh4443uuy-hack-club-bot.vercel.app/0screen_shot_2022-05-17_at_2.50.02_pm.png
firming up a metaphor about RAM and CPU registers.. thank you @carrot for helping me 📫 ✉️
https://cloud-f39nacdie-hack-club-bot.vercel.app/0screen_shot_2022-05-16_at_3.08.27_pm.png
writing assembly in a google doc. it’s… some sort of version control! lmao
https://cloud-j22jijokv-hack-club-bot.vercel.app/0screen_shot_2022-05-13_at_12.20.22_pm.png
https://cloud-6fst0wt1o-hack-club-bot.vercel.app/0image_from_ios.jpg
https://cloud-cn93wsrmn-hack-club-bot.vercel.app/0annoying.gif
worked on some ideas for politescript, a very useless but very polite language i would like to make. because sometimes i want javascript to not feel like i’m so demanding, you know?
https://cloud-h3r9lnwjy-hack-club-bot.vercel.app/0screen_shot_2022-04-13_at_11.26.31_am.png
https://cloud-njvwuitg7-hack-club-bot.vercel.app/0screen_shot_2022-04-07_at_5.38.52_pm.png
https://cloud-mr17ol0kk-hack-club-bot.vercel.app/0screen_shot_2022-04-08_at_4.48.11_pm.png
it’s been a minute since I’ve written a graphql query (actually, not since I worked at github, lmao), but i wrote up a query for an api endpoint to use on contribute.hackclub.com. the query part wasn’t the hard part, but figuring out how to auth with a github app was a little tricky! we got there in the end though 🙂
https://cloud-25usvkdle-hack-club-bot.vercel.app/0screen_shot_2022-03-29_at_9.57.42_am.png
excuse the double ship/scrapbook post, but I need to record this on my scrapbook 🙂 I made my first game lab game yesterday! I was having too much fun making sprites of my golden retriever, and ended up making Samantha Training Simulator. There’s a bunch more I want to add, but how it works is you have to perform a series of commands, and every one you get right is a point! gamelab.hackclub.com/?id=d6945ae1a9a64ba1dab3e3915904ffcc
gamelab
-
https://cloud-1unlpz92j-hack-club-bot.vercel.app/0sam.gif
please send help i cant stop writing docs. here’s some for the ol scraps
https://cloud-6f47xl5op-hack-club-bot.vercel.app/0docs.png
smol update, but added our CSS repo to the /branding page and gave a blurb on our UI components
https://cloud-2t5t16c6i-hack-club-bot.vercel.app/0screen_shot_2022-03-09_at_3.00.42_pm.png
example post for scrapbook!
https://cloud-oucknexpu-hack-club-bot.vercel.app/0cookies.jpg
expanded the docs on scrapbook about how to create one, post on it, and all the slash commands available :scrappyparrot: so meta
https://cloud-7rmrqmqkj-hack-club-bot.vercel.app/0screen_shot_2022-03-03_at_10.53.52_am.png
added instructions to the scrapbook readme on how to run the project locally :scrappy:
https://cloud-3srkryppy-hack-club-bot.vercel.app/0image_from_ios.jpg
babby’s first hack club workshop & scrapbook post. went thru the personal website workshop to try it out! might replace my actual website with this tbh
https://cloud-ko01jx46d-hack-club-bot.vercel.app/0screen_shot_2022-02-15_at_6.48.20_pm.png