Skip to content

Instantly share code, notes, and snippets.

@natepisarski
Last active December 8, 2016 16:26
Show Gist options
  • Save natepisarski/85b30f1347e047f972b9bc89e1a67165 to your computer and use it in GitHub Desktop.
Save natepisarski/85b30f1347e047f972b9bc89e1a67165 to your computer and use it in GitHub Desktop.
Ideas for the Winter semester code-a-thon between natepisarski, rypriori, and anyone else we can convince to waste their time off doing work.

We've got work to do, fam. Is that going to be a website? A desktop application? A IOT-integrated AI to take over the world?

Nobody knows. So, to organize what COULD be done, we've got this list with some ideas to shoot around. Not natepisarski or rypriore? Don't even want to work?

Doesn't matter. Leave ideas, and they WILL be done by the end of the winter semester.

Team structure and branching model is at the bottom of this document, so this will be like our bible throughout the winter.

Order of ideas so far (easiest to hardest): Wolf, Hissyfit, Codebattle, Playground

Web Ideas

Hissyfit

** Technologies**

  • Javascript
  • Jquery
  • CSS
  • HTML
  • Linux (digitalocean droplet)

There is something out there that (very accurately, mind you) reads text, and tells you the basic idea of what you wrote.

I gave it "I told you we should implement that with a base class, not an interface" and it said it was "95% angry, subject: Java".

So the idea here would be to develop a google chrome extension that hooks up to that service, and analyzes when you're typing. It will show a live update when clicked saying how angry / sad / joyfully what you just wrote was, and maybe the subject.

Playground

Technologies

  • Linux / BSD Unix
  • Compile Utilities (gcc, javac, ghc, all the compilers)
  • Sandboxing (jails? docker?)
  • CSS
  • HTML
  • Javascript
  • Jquery
  • C#
  • ASP.NET
  • Sqlite

When you create a (true) command line application (like we would have in 112 / 216 if it wasn't for BluJ (*sigh*), you can pass it arguments. So, git add is the git program with the "add" argument. Playground would host programs written by users, and let you hook up the outputs to inputs. So, you could do "git (echo add)" through a web interface, by just clicking boxes. "echo add" would just print "add", and then that would be passed to git.

This involves N-tree.

Codebattle

Technologies

  • CSS3
  • Sqlite
  • Jquery and AJAX
  • Java
  • ASP.NET / Spark

Programming challenges are posted onto the website. Users must make programs to match the specification of the problem, just like in the Advent of Code challenges.

However, users are scored based on how fast their program runs. The fastest user is crowned every week.

Something like this wouldn't be hard to get users for either.

Wolf (Only called this because it's based on a program called Wulf)

Technologies

  • Java
  • HTTP
  • HTML, CSS, Javascript, Jquery

You can upload any file, but as soon as it's downloaded successfully once, it's removed from the server without a trace. This makes it like a one-time-use dropbox or flashdrive.

The advantages are: privacy for the user, cost for the people hosting it (us), and maximum convenience.

It's the most doable out of any of these ideas.

Programs / Apps / Other

StackMachine

Technologies
Java OR C#

A simple virtual machine. Originally, it allows us to create (and program in) our own version of binary language. Eventually you can make your own language that runs on the VM, like Java.

PBE

Technologies
Java OR C#+F#

Pretty-bad-encryption is a model of key-based encryption (based on the popular PGP program - "Pretty Good Privacy"). The encryption doesn't rely on huge prime numbers like PGP, but rather on translation strings. So you could define a string that works with

book

To generate a string like

gi4m

With a translation string along the lines of ai(5)di(5)antd(13)ai(2)

ai = Alphanumeric Increase, di = Alphanumeric decrease, antd = Alphanumeric-numeral translation decrement

CompressionMaster

Technologies
C# would be best, Java... passable.

Compression is the act of shrinking a file. So, when you make a .zip file, it not only bundles the files together, but it actually makes them smaller. It does this by doing checks, like converting UTF-8 encoded bytes to simple ASCII integer values where possible, removing all duplication, etc.

Of all of the compression algorithms ever created, none have ever used the approach that CompressionMaster would use.

Everything on your computer is a string of binary values. I.e, 1 and 0. Oftentimes, since they are made of simply 1 and 0, they repeat. So, this following string is 10 bytes:

1110110001

Notice the repeats? We can recreate that binary string with:

310213014(10)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment