Blog
Creating a Password Manager
June 16, 2019
I have personally always had a hard time deciding how to store my passwords. I mostly have relied on copying and pasting them into an unencrypted plaintext file over the years. There are lots of existing password managers; desktop programs, web apps, and mobile apps. I have tried some, but I had trouble trusting these external services with my data. I also find a lot of the existing password manager apps are more complicated than I want.
I thought ...
Read More
Analyzing Stocks With NGrams
December 28, 2018
Trying to model the stock market involves a lot of interesting problems. Beyond just being interesting, it's also potentially profitable. If you could perfectly predict how the prices will change each day you could make a lot of money.
I've been learning Golang recently and trying to come up suitable personal projects to use it for. Stock analysis seemed like a good candidate. It will involve a lot of networking to fetch stock ...
Read More
Date formatting in Go
November 22, 2018
I've been learning golang, it's been fun! It's simple, fast, fun, and even nostalgic. It has a nice standard library and wonderful language features for handling concurrency.
Go as a language is well thought out and cleverly designed. Many decisions made by the language designers are surprising breaks with tradition. These are mostly refreshing and positive changes. For example explicit error passing instead of exceptions, only one kind of loop ...
Read More
How My Site Has Changed
December 23, 2017
The last few weeks I have been working on restyling my website. This is something I've done a lot in the past (look at the past articles I've written). I thought it would be fun to compile some screenshots of how my website has changed over time. I didn't have screenshots of this but was able to get them from WayBackMachine, a website which archives the internet. It's pretty cool!
It ...
Read More
Numbers to Words with JavaScript
January 2, 2016
I recently encountered something in a project I was working on where I needed to convert numbers in Javascript into actual English words. Here are some examples:
Read More
2 -> two
1001 -> one thousand one
922 -> nine hundred twenty-two
I looked around for libraries that supported that kind of thing and I did not find many options. There were almost none that converted all numbers correctly.
I thought it would be fun and useful to write ...New Website (Again)!
May 29, 2015
I have once again entirely redone my website. This time it is written in Python and the source code is available on my GitHub.
I am not using Python web framework or any CSS frameworks. I thought it would be more interesting to do everything from scratch. Right now all requests for pages are handled via CGI, but hopefully that will change soon.
It is interesting that the last article I wrote was ...
Read More
New Website!
August 2, 2014
I have learned a lot since I first created this website. Naturally, I didn't do everything the best way the first time. Over the past two weeks I have totally rewritten the site. It looks different (better, hopefully), but where it is most different is behind the scenes! All of the changes I have made should allow me to change my website much faster in the future, and publish more content!
My website ...
Read More
Factoring Small Integers Quickly
March 27, 2014
Integer factorization is a problem of great interest to me. It is the process of breaking a number up into a product of smaller numbers. More exactly, the problem is as follows:
Given an integer N, find integers A and B such that N = A * B
This is generally considered a difficult thing to do. In fact the security of modern cryptography depends on the presumed difficulty of this problem.
An inefficient but simple ...
Read More
Adding High Scores to Avoid the Shapes
January 5, 2014
When I published my "Avoid the Shapes" game in August 2013 I said that I planned to add a high score system to the game when I got around to it. I finally did get around to it. In fact I have just finished working on it earlier this week. Now players have the choice to submit the score they obtained after they die. I have also added a "High Scores" button to the main menu which allows players to see the top 5 high scores anyone has gotten in the game ...
Read More
Factoring Integers Using Digit Strings
September 21, 2013
I have been interested in the integer factorization problem for some time. There is a large variety of very interesting algorithms that have been proposed to factor integers. Despite the research done, it remains a very difficult problem. Recently I have been thinking about how the digits of a number are related to what divisors it has. I wrote a short paper exploring this.
What I considered was quite simple. As everyone knows, integers ending in ...
Read More
A Star Field With HTML5
August 21, 2013
It seems that there are quite a few interesting visualizations that people have produced using HTML5 and JavaScript on the internet. Collections of this type of work can be viewed on Chrome Experiments. I found this visualization of space particularly compelling. In the spirit of these web applications, I created an interactive visualization of stars using these technologies.
Similar ...
Read More
Sound Effects for HTML5 Canvas Games
August 8, 2013
Game development with HTML5 definitely presents a lot of challenges. JavaScript can be a messy language to write large programs. Cross browser compatibility issues are also problematic. Finally, there simply aren't good tools, frameworks, and support for game development for this platform yet. Something most games need is sound effects. Sound effects for HTML5 games are a challenge but certainly possible, albeit with some limitations.
So far I've ...
Read More
Retrieval Times of Java Data Structures
July 28, 2013
If you have ever programmed in Java or any language you are probably familiar with some basic data structures. In particular, arrays, linked lists, and array lists are used very frequently. These three data structures largely do the same thing. They all store an ordered list of objects. However, they certainly do not all work the same. They also do not all perform the same. Understanding the strengths and weaknesses of each data structure is essential ...
Read More
Creating a Simple Chat Bot
July 24, 2013
Chat bots are web applications which use artificial intelligence to carry out believable conversations with human users. I have always found chat bots interesting, and decided to create my own using Java. The chat bot I created was very simple and did not work terribly well, but gave reasonable responses to common conversations. While it could in some sense learn, the bot I made had no understanding of the English language and was effectively hardwired ...
Read More
Tracking Down Memory Leaks in Java
June 14, 2013
I recently finished programming my side-scroller game "Fluffy Chicken Adventures" and launched it on my website. You can play it here! Oddly, I found some problems occurred while running the game on the website that did not occur when I tested the game on my computer. I found that the game would always crash before I could complete all the levels. The applet suddenly just froze and stopped working altogether. The Java Console also disappeared immediately ...
Read More
Digital Signatures and Signing JAR Files
June 8, 2013
When a Java applet runs in a web browser there are certain security restrictions imposed for your safety. For example, Java applets are normally not allowed to read, write, or modify files on your computer. This is a good thing, without this type of protection harm could be done to your computer from any website that has Java applets. However, sometimes these security restrictions get in the way. What if your Java applet actually needs to access files ...
Read More
Teaching a Computer to Play Tic Tac Toe
May 10, 2013
After seeing the movie "Wargames" I thought it would be fun to make a computer that plays Tic Tac Toe. So I wrote a very basic Tic Tac Toe game in C Sharp using Visual Studios 2012.
At first I gave the computer a very simple strategy. I had the computer randomly pick one of the free spaces available to place it's "X". Obviously, this is not a very good strategy and the computer can do much better. However, since Tic ...
Read More