One of things I wanted to accomplish when I began learning more about electronics was to build a small device from the ground up. This would include sourcing all parts, writing the necessary code, and designing and 3D printing an enclosure for the device. Given the state the world at this time, as my first foray into electronics design, I decided to make a little device to keep track of US COVID-19 stats.
"Blue noise" is a term used in computer graphics to describe noise that is uniformly distributed. It is often used in procedural generation techniques to place objects during terrain generation that require a roughly even distribution across a landscape. This post will go into an implementation of Poisson Disk sampling, a super straightforward blue noise generator that I've been using on recent projects. ๐
What started as an attempt to demonstrate how interrupts and grayscale rendering works on the TI series graphing calculators turned into a full-blown attempt at writing an emulator that would be runnable in a modern browser using a combination of Rust ๐ฆ and WebAssembly ๐ธ. The idea came to me while walking through the Rust + WebAssembly tutorial, where I realized that many of the same abstractions could apply to an emulated system.
Through some backups, I recently re-discovered a folder with some high school/college projects that I thought had been lost to the sands of time. One of them was an early attempt at a small RPG written in Z80 assembly for the TI-86 graphing calculator. I know what youโre thinking -- what did I do wrong to be tortured in such a way?
My second project in Rust is a little more practical than my first (which you can read here). This project involves creating a command-line utility that is able to interact with the Bear Writer application, an OS X app that I use for taking notes, writing blogs, and generally keeping my life organized in a single, cloud-synced place.
As part of an Arduino hobby project, I wanted to set up a development environment that steered clear of the Arduino IDE and gave me an easy-to-use toolchain that fit in with my existing tools. While the Arduino IDE is useful for simple sketches, once I moved into anything remotely complex I yearned for the features provided by modern day text editors such as Sublime Text or VS Code. This post documents my journey to the almost perfect (for me) dev environment for Arduino and other micro-controllers.
In an effort to do more fun side projects, I've been learning Rust, a wonderful systems programming language developed by the Mozilla Foundation. It's been a while since I've touched a compiled language as my day-to-day often deals with Python and Javascript variants. I was inspired after seeing a lot of interesting articles about Rust usage and decided to dive into learning Rust by creating a very basic 2D game, inspired by the classic Defender arcade game.
As a fun side project, I've been gathering data on bills that are going through the U.S Senate. So far, the site itself is a pretty simple web app to display bill status information in an easier to digest format. This is the first step of many in my goal for an in-depth analysis of the different of bills that are going through the Senate (and eventually House of Representatives). Through integration with other publicly available data hopefully we can gather some interesting insights that are not normally readily available to a layperson.
A long-awaited continuation of my previous post, in this one we will go into the exciting intricacies of:
Many moons ago, I worked on a college project that required procedurally generating a "realistic" planet in 3D space. The original implementation created a mesh in the form of the UV sphere and then applied a particle deposition to create the terrain.
With all the talk about deep learning and neural networks, I thought it'd be fun to revisit one of my favorite applications of artificial neural networks (ANNs) -- dynamic branch prediction.
2015 has come and gone in a hurry and we are already 1/2th of the way into 2016. Reflecting on the past year it seems as if the list of things I wish to accomplish has grown larger and the time in which to accomplish them seems to have grown shorter. Startups tend to do that.
In an inspirational and aspirational speech to a crowd of 35,000 on September 12, 1962 John F. Kennedy outlined his goals for the nation's space effort.
Climbers who lead routes often speak of having good "lead head" (lead as in leader), a mental state that lets you break through plateaus in training or climb challenging routes without that irrationally rational doubt and uncertainty plaguing your mind. There are even classes where the very purpose is to mentally train those who wish to push their limits.
Amid the flurry of preparation for a new year, I sat down to reflect upon the one that has just passed. Every year I enter the next a little more optimistic and a little more excited. Part of it due to the potential of unknown unknowns (be it good or bad), and part of it due to thought of spending another year with those that I truly care about and those that I enjoy being around.
There would be those who see a lot of glamour in start-ups and the whole concept of entrepreneurship. It is romanticized by the media who broadcasts million dollar valuations and billion dollar acquisitions. And for many, it is the ultimate meritocracy, appealing to those whom other cracies never appealed. The meritocracy was a guarantee that those with the smarts and know-how were adequately rewarded while those who fell short of godliness, failed. It evened the playing field for all, so much so that even the most out of place could still find a place.
If you didn't know, Google has a really useful search
feature that allows you to
find the definition of any word or phrase when using the define:
prefix on
your search term. This along with the built-in OSX dictionary provides an
incredibly useful set of tools to find any definition as quickly as possible.
Hemingway recalled his experiences as a young man living in Paris as a moveable feast. The people he met, the skills he learned and refined, and the ideas he was exposed to during those times stuck with him until the very end. It molded him into the person he would become.
For as long as I could remember I have always wanted to create. To create programs, to create art, to create ideas -- to just create! And these creations never had to be in any creative or even practical capacity. Hell, they don't even have to be good or useful in anyway. There lay an incredible feeling of joy in my ability to make something that did not exist before.
The end of another year.
Recently I have been involved in the process of designing and creating an academic poster detailing portions of my research in a manner that conveys it in a clear, meaningful way. This turns out to be very difficult task.
Another year in closing, another one of those fantastic yearly recaps that I have the joy of writing. If I had these printed, why I could almost hear the sweet crumple crumple as people turn my riveting tales of adventure into a jump shot.
Every December I make a list of my favorite songs from the past year. Or at least I try. My musical tastes are eclectic and sometimes a little quirky which makes creating a list and checking it twice not so very nice. But enough talk! On to the music! Most of these picks were released this year, but there are the occasional that are not.
Recently, it dawned upon me that I haven't sat down and wrote down anything of substance for a while. Oh sure, there's the occasional research paper that I spearhead, but that often feels like work. Additionally, I can't just put it up somewhere for everyone to see while it's under review. And even after review, who wants to read some random research paper anyways?
Yesterday, if you weren't aware, was Mother's Day. As the years go by I find that my mother doesn't quite enjoy my hand paintings and macaroni encrusted picture frames as much as she had when I was five. Nowadays I simply opt for her favorite candies, which are so much her favorite that it has become almost mandatory with whatever else I intend to get. This candy has become so prevalent in holidays that I consider it a tax, an 'Andrew' tax if you will, that I'll be paying for years to come due the hassle of raising me.
Woohoo! Well it's been a while hasn't it? I had such delusions of blogging grandeur, but alas it's been a good 6 months since my last post. Let's remedy that, shall we?
After a week of hard work and dedication my partner and I finally completed our final project for our Computer Graphics class. Below is the description we sent in to our professor as part of our project describing what we did.
Update #2 on our CSE 167 Final Project
CSE 167 is a course I'm taking this quarter having to do with Computer Graphics. We've been working with OpenGL creating cool scenes while learning more about the underlying concepts. It's loads of work, but loads of fun as well.
Finally another update to our Multitouch project!
After months of planning and preparation, we are finally ready to get the project rolling. The major bottleneck was getting a project room to store all of our equipment (which took nearly a quarter to get =[ ), but now that that's out of the way, we're good to go! (See picture for a glimpse of our great view of the engineering courtyard!)
For those who don't know, I'm currently the President of the Computer Science and Engineering Society here at UCSD. We have multiple projects that we run each year and numerous events (such as programming contests, game nights, etc).
So a little background on my implementation (feel free to skip this)....
In my freshman year at UCSD I was recruited by CSES to work on a small game project. It was supposed to be generic enough so that the frontend (my game engine) could connect to a back-end that could be written in any language as long as it conformed to a set of standards we had. Things like retrieving player position, setting player position, getting maps, etc. So long story short, I needed a pathfinding algorithm for the game engine, and my experiment with the A* algorithm began.