I Finished Harvard's CS50x (Computer Science Intro)

CS50x stands as a renowned computer science course offered by Harvard University, and it’s available for free on edX. Officially named “CS50’s Introduction to Computer Science,” this course aims to offer a comprehensive introduction to the world of computer science. It caters to both newcomers without prior programming experience and those who have some background in the field. As someone who’s always eager to learn, I’ve had this course on my to-do list since 2017. Finally, this year, I found the time to dive in, and after several months on and off, I’ve successfully completed the course! ...

2 min · 346 words · Chris

Retro Film Date

Nostalgia is a big business, especially with photographers. Whether it’s Fuji Films film simulations, TikTok trending Digicam users, or film camera enthusiasts, We yearn to re-create the joys of the past. I recently gave in and bought a very subpar, compared to today’s standards, CampSnap camera just because it lacks a screen and mimics the feel of a disposable camera. It’s a blast to use despite the picture quality of a mid-2000s digital camera. However, it lacks the old-looking date stamp. Presenting a very niche tool: RetroFilmDate. ...

2 min · 214 words · Chris

SHA, Secure Hash Algorithm 🔒

I’ve been thinking a lot about password security and data integrity lately. I remembered learning about hash functions and have used them in past roles for transferring files. I even thought using SHA-256 was standard practice in hashing passwords. This was until I Googled SHA (Secure Hash Algorithm) and learn something. Here’s what I found: First, what is a SHA (Secure Hash Algorithm)? A secure hash algorithm is a mathematical function that takes input and produces a fixed-size string of characters called a hash value or hash code. The hash value is then used to ensure data integrity and provide a way to identify data uniquely. But How? ...

4 min · 720 words · Chris

Let’s try something BASIC.

A few years ago I had the pleasure of going to Cambridge, England for work. While enjoying some free time, a bunch of colleagues and I went to the The Centre for Computing History. Aside from learning about the history of tech from knowledgeable staff, I really enjoyed playing with the old computers. Below is an Apple II. I think it’s clear I had no idea what I was doing. ...

1 min · 168 words · Chris

C to Python

The Harvard CS50x course is really interesting. One assignment is to create a program in C that prompts the user for a message and then outputs the text in binary with dark and light emojis representing 0 and 1, respectively. It’s fun to play around and create different “messages”. I wanted to translate my solution code from C to python, so thats what I did here. The CS50 course provides a C library, CS50, which includes some types that aren’t native to C, like string and get_string(). In my C code example below, I will omit the CS50 library so that it’s easier to compile and run without having to link the library’s binary file. ...

3 min · 571 words · Chris

ASSEMBLY FUN 💾

After spending some time programming in C I wanted to explore the world of assembly. Naturally, I went to YouTube and searched for assembly code. I found some excellent resources like, Fireship’s Assembly Language in 100 Seconds. I decided to install Netwide Assembler (NASM), an assembler for the x86 CPU architecture. I’m on a mac with an intel chip. To install the assembler I used HomeBrew: brew install nasm Below is the code for hello world. If interested check out my GitHub repo: assembly_fun with more details on how to get it run. ...

1 min · 175 words · Chris

About Me

Software Developer / Software Quality Assurance As a Software Developer/Tester with over 6 years of experience in commercial settings and academia, I have successfully contributed to the quality assurance and software development efforts across various cross-functional teams. My expertise lies in supporting Engineering teams, ensuring top-notch quality and adherence to industry standards. With a strong background in QA methodologies, I am adept at driving effective testing processes and collaborating with diverse stakeholders to deliver high-quality software products. ...

Not to bash on Bash.

My job out of college was working on the UCSC Genome Browser QA team. One of the first things I had to do was get comfortable with the Born again shell (bash). I found it really helpful to have a quiver of one-liners for repetitive tasks. For example, I can create a dummy data file with 1000 lines: for((i=1;i<=1000; i++)); do echo "data_point_$i" >> data_munging.txt; done Let’s say I needed to add each entry in an SQL query (for some reason) I’d need to remove the new lines and add a comma as a separator with each data_point in single quotes. I wouldn’t want to do that manually! ...

2 min · 389 words · Chris