An Esoteric Language

So last night at about 11:00, a friend and I had the brilliant idea that we wanted to write our own derivative of the esoteric programming language brainf**k, and we wanted to implement the interpreter in Rust. Our tired minds devised the masterful scheme that we just had to make every command an emoji. By the end of our 24-hour programming extravaganza, we have a fully working brainf**k dialect where every command is an emoji, and a website hosted at emotifuck.rs.

Read More

The OS is Done

Yeah, that OS project didn’t last long at all. Neither of us really being system programmers and neither of us really having time to work on something that would be that big of a time committment got in the way of it a little bit.

Read More

More on That

As you might expect, debugging anything when it doesn’t even know how to use its own hardware is a challenge. It’s been a couple of weeks since any work was done on the OS. A number of other projects kind of took over and writing an operating system wasn’t much of a priority. The most progress we’ve made is getting the Pi’s status light to blink a Morse code SOS. That doesn’t sound like anything at all frankly but when it’s the first time you’ve even begun to try and write ARM assembler code, it’s exhilarating when that stupid light finally blinks. The code is not yet hosted on Github for the simple reason that we don’t have enough of a codebase to warrant making it any kind of public. Hopefully in the coming weeks we’ll have more than just a blinking light.

Read More

Operating System

This week, and friend and I decided to write an operating system from scratch. We’re using GRUB as a bootloader and hopefully managing to get it to boot on a Raspberry Pi. This is probably going to be a glorious disaster. More on that later.

Read More

Programming Contest

This past weekend, I had the opportunity to participate for the first time in an online programming contest. The event itself was open for 5 hours, and we were given twelve problems to solve. My team chose to solve most of the problems in Python, which turned out to give us one of Python’s classical downfalls – Even with the ease of implementing the algorithms in Python, most of them ran far too slowly. We were given anywhere from 1-10 seconds for our scripts to execute, and on some of the larger sample sizes our scripts did not perform fast enough to fit in the relatively short allowance for runtime. I did, however, take away some valuable insight into the Python runtime. Python is very much my favorite language to work in, and I’ve begun to do some research into the efficiency and optimization of a reverse factorial algorithm in Python. More on that later.

Read More

Redstone Computer

I haven’t posted anything in a while. I’ve hit a small developmental roadblock in Akvanta, namely that I have no idea where to take it next. So my recent project has been development of a redstone computer in Mojang/Microsoft’s Minecraft. Just so we’re all clear- it’s not a simple prospect. I expected it to be complicated, but the sheer amount of detail that is actually involved in manipulating redstone signals is mildly absurd. After three days of research, watching how other people had made it work, building components, tearing things down, and even following a tutorial through to completion, I have made several loops back to the beginning. I built the entire system following a tutorial on YouTube and found out during programming that something was extremely wrong in multiple parts of the system. A program designed to test the “goto” commands on the processor, which basically tell the processor which line of the program it should be reading, lead to a program designed to count upward from one flashing lights in a pattern that I think I can safely say was just nonsense. I then tested a program that would add two numbers together, then output them onto a four-bit binary display. That program just crashed. The goto commands involved in moving from line to line jumbled the program terribly, so I decided it was probably better to just start from scratch. Tonight I spent about two hours assembling an arithmetic logic unit (ALU) consisting of a four-bit adder circuit with a five-bit display. The operator simply pulls the switches representing the number they want on two panels, one for each number going into the operation. The system is not the most efficient design ever created. It takes about a second and a half for the five-bit display to change to reflect new input, and the only current operation is addition. My next project will be adding a subtraction operation to a similar ALU. From there I plan on trying to construct a computer again from the ground up.

Read More

Don't Dumb It Down

While talking to my less technically-interested friends I’ve noticed more and more that it is a common belief among this extraordinarily digital generation that the tools that they use every day are simply too advanced for them to understand. Just today I was telling a few friends about the work I was doing on this website and was immediately told to ‘dumb it down’ for them. I absolutely understand that there are words and phrases and concepts that are particular to computing that other fields don’t use because they honestly just don’t have any need for them. But being told to dumb it down got me thinking- and I think that the belief that computing is ‘too complicated’ for anyone to understand is just untrue.
Notice in the opening that I referred to my friends as ‘less technically-interested’ rather than ‘less technically-inclined.’ Sure, some people might tend to have more aptitude with computing than others. However nobody is incapable of understanding. High schools straight on down to grade schools spend so much time memorizing and regurgitating things for standardized examinations, we’re used to very cut-and-dry, fact- and memory-based study. Application tends to be placed outside the realm of what is considered relevant until college age. Most people tend to be far more comfortable with taking a biology or chemistry class than they are with taking a computing science class. Each of these fields have their own arcane jargon and applications that branch off into hundreds of subsidiary fields. Why, then, are we requiring some and not the others? The fact seems to be that people have this image (perpetuated by the media for years) of someone who spends hours of their lives locked away from human interaction mastering strange and confusing skills that allow them to get into your computer and steal your personal information. Just recently I saw a television commercial that featured the ‘hacker’ deviously sitting at a laptop in a dimly-lit room gleefully pressing buttons. Most people look over my shoulder at the masses of code I write and inform me that they could simply never do it. But wait.
Who’s stopping you?
Maybe it’s not a skill that you’ll need for your life. Most people probably won’t be writing software for a living. A good portion of the population won’t need to code or fix a computer by hand; people study for years to learn how to do these things for them. However, having a basic grasp of how it works can be an incredibly valuable skill. Consider this blog post- I’m clearly not a writer. I don’t have an extensive background in writing things like articles or blog posts, I’m hardly going to be doing it for a living, but here you are reading my post. Having a decent understanding of how to manipulate the English language is a skill that is widespread. My point is that understanding and manipulating the language(s) of the computing world can be just as helpful. While working a minimum wage customer service job which had absolutely nothing to do with coding and which required me to quickly and accurately check and compare large volumes of financial information, I noticed that I was tending to carry out the same set of very repetitive tasks, mostly simple math. I found that the number of oversights and general errors was decreased drastically by automation. I worked out the exact algorithm I was following, and condensed it into a program I could run through an app on my phone. It’s nothing intensive, it’s only about twenty lines of Python for you other coders in the audience. It’s the most basic programming instructions written to process simple arithmetic.
Even if you’re just learning to record simple macros in Microsoft Office or programming your calculator to do financial calculations for you, an understanding of computing can be useful for automation. There are simple computer problems that can be fixed in minutes without a call to tech support. A basic understanding can help to tell you why that button isn’t a good one to click on. Anybody can get the resources. We just need to start making them available. If we start integrating now, our next generation will be able to handle the tools we pass on to them that much better. We can create whole new areas of skilled work we never even imagined. These are just my personal thoughts on the matter. I might be a bit biased, but I strongly believe that by integrating an understanding of computing into our social consciousness we can begin to remove the barriers surrounding the computing workforce and begin to change the way we do things in unprecedented ways. Let’s keep the world on the path to learning how to build and develop and expand and help. One code monkey might not be an answer to world hunger, but it takes a lot of different people to make the world a better place. Who knows what kind of people might tackle the worlds issues in the years to come? So when you’re talking about your passions, not just computing or science or engineering, don’t dumb it down. You might wake up new curiosity in somebody who never knew it was there.

Read More

Akvanta Help

Every time the Akvanta game itself is updated, the help pages need to be modified to reflect the changes. As the game progresses, it becomes increasingly easy to overlook things while updating the help pages and the wiki. This is a solo-developed project- if you’re reading through the help or the wiki and notice something that doesn’t seem quite right, or notice a bug in the game, drop a comment on one of my posts! If you’re a GitHub user, feel free to file an issue or a pull request.

Read More

Cached App

A few weeks ago, I decided that I wanted to write a web application to target mobile devices in particular. I’ve written very basic web pages, JavaScript functions, and even a few PHP scripts before, but this was going to be the first really large project I attempted for the web. At first, it was going to be a simple local-network app served from a LAMP (PHP) stack. But as I began writing the app I realized that for as much time as the LAMP stack spent powered off, which was far more time than it spent running, the app would be kind of pointless. From that realization, I started to work on caching the application so it would run offline. The cache itself took far longer to work out than it should have (all of the tutorials had a lot of other tasks wrapped up alongside the cache). Once I finally made the necessary adjustments to my .htaccess file and figured out how the cache.manifest thing worked, it was fairly smooth sailing from there. Due to the fact that PHP files are serverside and you can’t actually cache them, I started writing the app itself (Akvanta) entirely in JavaScript. Surprisingly enough, the JavaScript part was not nearly as difficult as arranging everything out (using HTML5/CSS) for multiple screen sizes. Once I had a good portion of the application written in HTML5/CSS/JS I decided to go public. GitHub pages is probably the easiest way to serve web applications that I’ve seen anyone try to use. Because I was avoiding server-side execution, I didn’t even have to refactor the project. Everything that I wrote executes entirely browser-side once it’s loaded. If you’re interested in GitHub’s web hosting features (which is where this page is served from, incidentally), check out GitHub Pages. If you’re a beginning web developer, like myself, I’ll be posting more about the project and what progress I’ve made. If you’re interested in contributing to the Akvanta project in any way, the GitHub repository is located here. Feel free to make pull requests, file issues, and make suggestions on how we might improve the game. It doesn’t have graphics at the moment, and the UI isn’t exactly beautiful, but for a two-week project it’s making progress. Thanks for reading! If you have any questions regarding the process I outlined in this post, feel free to drop a comment.

Read More

Stylesheet

The SASS rendering built into Jekyll now is kind of tricky. I’d never used it before. I expected most color names to work out of the box, like CSS colors. However if I’m seeing this right, the $ before the color’s name acts the same was as it does in PHP- as a signal that a variables being referred to. Because I didn’t have the names I was using assigned to, the build failed several times before I just gave up and started using conventional hex values for the colors.

Read More

First Post

Welcome!
This blog will contain updates and comments on the various projects hosted on the main body of the romulus10.github.io website. Currently, the stylesheet for this page is not right.

Read More