Monday, January 16, 2017

Pinecone v0.1.0 released!

The first usable version of Pinecone is ready! Clone the GitHub repo get coding! Everything you need to know is in the tutorials directory. There is also now a Pinecone subreddit.

Friday, October 14, 2016


I have begun classes at Make School Product Academy, but that doesn't mean I don't have time for side projects. One such project is Pinecone, my custom written programming language. You can read more about it, as well as see/download the source code on its Github page. As for my other stuff, I have been bouncing between projects. This summer I made progress on the RasPi robot (in fact the hardware is now working beautifully). I did some work on my Chess AI (that can also be found on my Github). I tried to do GPGPU programming again (this time with openCL). There are probably more, but I can't think of any. Most of my energy now is split between classes and Pinecone.

Wednesday, August 10, 2016

What I did during Make School

Make School summer academy is coming to an end. Over the last few months I have made a bunch of stuff, both in and out of Make School. These include:

  • Some primitive attempts at mobile VR with the open source Godot game engine
  • The start of a Pokemon GO companion app for Android. I suspended this project because priorities, but I might get back to it when I have more time, especially if PoGO stays so popular. I'm not going to go into details now, just know it wouldn't be like any companion app you've ever seen.
  • A player vs player chess game and GUI. This was done in C++. Right now it only supports human players, but I'm working on an AI, which was my original goal
  • A fourfour AI with a CLI. If you don't know what fourfour is, thats because it was invented by someone in Make School. It's basically an advanced version of connect four. You can find it on the IOS App Store. The game is simpler then Chess, but still quite a challenge. The capped dynamic depth recursion I used in this helped me a lot planning for my Chess AI.
  • Finally, my main Make School app is a Morse chat, which is exactly what it sounds like. It allows people to send each other morse code signals over the internet. I used Firebase for the backend, so it is very snappy. It is currently in review and I will hopefully get a version in the App Store by Friday.

I began work on the Android version of Morse Chat, but I may not have time to complete it in the near future. I plan to spend the remainder of the summer working on my Raspberry Pi robot. Hopefully, with my dad's help and a bit more money, I'll be able to quickly get past the hardware issues that have been plaguing it for the last year. Then it'll be all computer vision and path finding. Who knows, maybe I'll even get started with machine learning.

Friday, May 20, 2016


Wow, I just realized it's been over 2 months since I last posted. I'm not sure where all that time went, but I have been really busy with non coding things (like finishing up high school and enrolling in Make School). I've been programming here and there, but I haven’t completed anything or made anything flashy.

My natural language processing system got held up when I realized my internal data structuring needed to be completely redesigned. My attempts to do this led to some interesting but highly abstract philosophical questions like 'are things and events fundamentally different?' and 'can a property have its own properties?'. I could have probably worked through these problems eventually, but about this time I also realized that what I was trying to make wouldn't be useful for anything whatsoever without at least 4 years of work on it. I like to work on big projects, but I'm going to college in a month and I don't have time for that now.

Anyway, since then I've been bouncing between a handful of projects. These include rewriting and modernizing a bunch of my old C++ code and building a Google Cardboard VR headset for my phone. I tried to use Unity3D to build a Cardboard app, but the Linux version of Unity is hella glitchy. I ordered a Macbook (requirement for school) and when it comes I'll put Unity on it and try again. Hopefully I'll have more to show off in the next 2 months then the last 2.

Friday, March 11, 2016

Ideas and Nodes added to WidapMind

[Click image to enlarge]

My natural language processor, WidapMind, is finally approaching the point where it will be able to parse sentences of arbitrary complexity.

Sunday, February 21, 2016

WidapMind update

So close and yet, so far.

First of all, if you think the above program is simply parroting back what I tell it, take another look. You will see that it is changing the forms of the words and the structure of its replies are independent of how I gave it the info. This can only be accomplished by interpreting the meaning behind the actual words.

I've been working on a natural language processor/AI in Java for a week or two now. Yes, I'm making an AI and I'm doing it in Java. If you know me well, you'll know that the latter is the more surprising.

Wednesday, February 3, 2016

My First Android App!

This is Widap Language Processing v0. As you can see, despite its AI sounding name, its feature set It does, however, technically process language and its capabilities will only improve.

I wrote it over the last few hours (most of the time was spent reading and watching tutorials). I was actually quite surprised by how easy it was. I had very little trouble designing the UI and attaching the code to it even though I have practically no experience with XML.

The reason it's called Widap Language Processing is because my eventual goal for this project is an automated SMS response program. I realize that trying to beat the Turing test probably isn't the most efficient course of action for someone too lazy to respond to texts, and I highly doubt this project will be a 'success' in the normal sense but I might end up with something interesting and at the very least I'll get familiar with Android development.

Tuesday, January 26, 2016

Some animations


These didn't really involve any programming, but I made them and they look cool so I'm posting them to this blog.

Monday, January 4, 2016

FluidSim 3D update

I just successfully implemented 3D voxel data rendering on my nVidia graphics card using CUDA. This is the first step in drastically speeding up many aspects of FluidSim (not just graphics) using the power of GPU computing. Right now I can go about twice as fast on my GTX 970 GPU as my Intel i7 CPU, but when I get more features switched to CUDA and do some optimizations, the speedup should be significantly greater.

Saturday, January 2, 2016

FluidSim 3D Initial Development

These are the best video clips from throughout the development of FluidSim 3D. I wrote FluidSim 2D in the spring of 2015 and I started 3D in July. It, like 2D, is written in C++ entirely by me. It uses a combination of voxel based and particle based algorithms to compute the aerodynamic properties of complex 3D shapes as well as rendering its results. As the video progresses, you can see the addition of more and more features, including .stl loading, dynamic wall coloring based on force and perspective rendering.

Sunday, December 13, 2015


This is RobotSim v3.1, a PC game I wrote in C++ as both a fun contest and an easy way for beginners to learn programming. Instead of playing themselves, each competitor writes C++ code to control their robot. The robot code gets limited information about the arena it's in via sensors. The goal of the game is to reach 12 checkpoints (the squares of the same color as the robots that are looking for them). Each time a robot reaches a checkpoint they get a random power-up that can be used to move them faster or slow the competition down. The matches can get a bit long if you are not personally invested in the outcome so I sped things up a bit.

the source code, a demo windows executable and the detailed developers manual can be found in this Google Drive folder.

Thursday, December 10, 2015

Best of Widap FluidSim 2D

This is a compilation of the the best exports from the old 2D fluid dynamics simulator. All of the code to run the simulation and render the result was created by Widap (aka me, William W Wold) in C++. I used SFML for the GUI but other then that, no external libraries or code was used. The open source program Blender was used to convert the program's output (a series of uncompressed images) into .mp4 clips and it was also used to edit this video and make it look nice.

I started working on FluidSim at some point early in 2015 (my junior year in HS) after seeing a friend do drag calculations in Solidworks. I worked hard on it for a few months, and then fiddled with it from time to time afterword. In the Fall of 2015 I did a nearly complete rewrite of the code to be more focused on the voxel data structure and less on individual particles (the last two clips come from after this rewrite). I never got this version fully functional, however, as I soon made the jump to 3D and stopped development on the 2D version.

I will probably soon post a similar video with clips made from FluidSim 3D. Both versions of FluidSim calculate fluid/gas flow with a combination of particle and voxel calculations. In both versions collision walls can be added (lines detected from a loaded bitmap image in 2D, triangles from a .stl file in 3D) and the simulation can approximate the drag of the objects.

As you can see, a verity of different types of fluid and gas can be modelled. Most of the clips you see here are not one particular substance, but rather the result of tweaking until it looked good. I never put in enough time to set it up to accurately simulate any real fluids. This was partly because there were always going to be limits to the 2D simulation. I hope to overcome many of these limitations in the 3D version