Project Ideas

From Code Self Study Wiki
Jump to: navigation, search

This page is for brainstorming ideas for programming projects to work on with other people in the group. Feel free to edit this page and/or choose a project from the list to work on.

Adding Projects

Feel free to use this page for brainstorming. See also the Group Projects category page for more.

Ad Injection Detector

A few companies like AT&T and Marriott are starting to inject ads into other webpages. Besides being obnoxious, this is dangerous for multiple reasons and also violates the copyright of websites by creating and profiting from derivative works of copyrighted content.

The idea here would be to create a script that websites could add to their pages that would detect whether unwanted code is being injected into the pages. We could talk about how to do that at one of the meetings.

Possible Features

  • Detect whether an ISP is injecting ads into a webpage.
  • Notify the webmaster.
  • Allow the webmasters to track and save detailed information about each copyright violation.

Interested

Add your name here if this project interests you:

  • Josh

Systemwide Ad Blocker

A tool that uses public lists to block ads and trackers at the system level rather than just in browsers.

It could also scan cookies for unwanted trackers.

One example of something like this: AdAway does blocking on Android by editing the hosts file. The code is available and could be modified or adapted to other platforms. AdAway on F-Droid

Spycam Detection System

An application that can detect hidden cameras with a button click. There have been cases of guests being filmed secretly by accommodation providers (airbnb, apartments, hotels, hostels). I think that the application would be popular with travelers.

See this and this for ideas.

Facebook "Fake News" Warning System

Build a Facebook app that warns the user with a link to Snopes.com before they are allowed to post links. Certain untrustworthy websites would be completely blocked by the app and could only be overridden with a special code sent by SMS to their phones. (Use the Twilio API: "ARE YOU REALLY SURE THAT YOU WANT TO LINK TO THAT WEBSITE?")

Hacked Website Fixer

A tool to help with cleaning up hacked sites. The first stage would be for WordPress cleaning. Second stage would be for Drupal. Third stage could be for other kinds of sites. Starter repo is here.

Programming Puzzle Grader

A tool that runs tests against a set of programming puzzles. The tool could be created so that any user could add a programming puzzle in a simple format.

Text Adventure Game Engines

Build a text adventure game engine from scratch that can read in different text adventure scripts.

Feature Ideas

  • Generate adventures by reading in text files written in a custom format.
  • Display graphical maps in the console, but only show rooms/locations that have been visited.
  • Turn the console version into an API that could be developed into a webpage version with JavaScript.

Alternate Ideas

Build something like Sanctuary RPG (gameplay) or the old Ultima games -- like Ultima IV or early Bard's Tales. Different worlds could be plugged into the engine, from dungeon crawlers to Gamma World-type environments.

Piet Transpiler

Write a program that converts simple code into Piet code. For more about Piet, see this page and this video tutorial.

One idea is to create a simple language that would transpile to a Piet image, for example:

print 'Saluton, Mondo!'

Pomodoro Style Timer for Groups

Build a tool something like this that starts a timer that goes in 25-minute pomodoro-style sessions. A special URL lets anyone in a group view the timer. Users can login and keep track of their study sessions. Ideally this would be in Python or JavaScript and integrated into the CodeSelfStudy.com website so that members could focus together.

It might be interesting to try to build this with Elixir.

Custom HTML5 Calculator

Build a calculator app in HTML5.

  • It should be responsive.
  • It should work offline (front-end only, though you can add backend functionality later, if you want).
  • Ideally, it could be exported to a mobile phone app with a tool like AppGyver or Cordova.
  • Bonus points: scientific calculator with graphing and other features. (example)

Conlang Tools

Build a tool that helps people learn a conlang like Esperanto, Lojban, or Ithkuil. It could include a dictionary, translator, or other functionality. Lojban is interesting, because it is designed to be machine readable. Esperanto's grammar is perfectly regular and should be relatively easy to translate by computer.

Esperanto-English Dictionary

This would be an interesting project, because Esperanto is perfectly regular and is built from root words with prefixes and suffixes. This should make it easy to parse.

Example root words:

  • hund- = dog
  • kat- = cat
  • manĝ- = food (similar to "munch" in English)
  • rapid- = speed

Example suffixes:

  • -o = noun
  • -a = adjective
  • -e = adverb
  • -j = plural
  • -ej- = place
  • -ebl- = possible

Combine them:

  • hundo = dog
  • hunda = canine
  • kato = cat
  • katoj = cats
  • kata = feline
  • manĝo = food
  • manĝejo = dining room (a place of eating)
  • manĝebla = edible
  • rapida = fast
  • rapide = quickly

Words can also be combined in unusual combinations with prefixes and suffixes, so the challenge would be to correctly extract the prefixes and combined words and then construct the meanings. Example:

  • iom = some quantity
  • -et- = diminutive
  • -e = adverb

Combine: iomete means a little bit (adverb) as in "I speak a little Esperanto" -- Mi parolas Esperanton iomete.

The challenge: since root words, prefixes, and suffixes can be combined, you may end up with long words like komencopaleontologiokonservatoriaĉestriĝontajn, which have to be sliced into their individual components.

Space Photos

Build something interesting with these 8,000+ public domain photos from the Apollo missions.

Board Game System Generator

A software tool that creates printable game boards. It also generates cards, and guides you through several types of rule creation systems.

I got the idea while playing Candy Land, which is a random-outcome boardgame that doesn't promote ideal eating habits. Why not have kids do math problems or answer trivia questions as they play games instead? It would be easy to print out boards and cards, and to make custom rules with guidance.

It looks like there are some, but generators for game boards, but maybe nothing exactly like this yet. It might be fun to build it.

Link to the repo

Function Machine Game for Kids

A simple game that teaches kids how function machines work.

Stage 1

A simple function machine game something like these:

Stage 2

Add a way to take non-number inputs. Examples: a pseudocode function called grow that transforms a kid who is 4'2" into a kid that is 4'3", or a function called change-season that takes the current season (e.g., "autumn") and returns the next season (winter).

Stage 3

Build on that to show how to write functions in a programming language that run on a computer.

Web-based Genealogy Software

There is desktop software for genealogy like Gramps, but it would be more useful if multiple people from a family could login to a central database and collaborate on data entry.

Maybe we could create a web-based version that was compatible with the Gramps database, or even a server that would serve a Gramps database over the Web.

Edit: there may already be something like this in development: https://gramps-project.org/wiki/index.php?title=GEPS_013:_Gramps_Webapp

Interactive Design for Garbage Trucks

Little kids love garbage trucks. They like to run outside and watch the trucks.

What if there were open-source plans available to help turn garbage trucks into works of art via microcontrollers and flashing lights? The trucks could be painted with interesting colors/designs and lit up with LEDs.

Maybe the lights could be triggered by a POST request to an open API via an app. That way the kids could push a button to interact with the trucks.

The plans could be posted online and sent to truck companies and makerspaces.

Feel free to brainstorm more ideas about it by editing this section.

Buzzword Text Generator

Take lists of buzzwords and create a script that auto-generates resumes and business text that uses the buzzwords. Maybe something like a corporate resume generator or LinkedIn profile generator.

Artificial Synesthesia for Music

Based on these kinds of ideas, create an application that displayed Scriabin's music on the screen in the way he intended. Alternatively, it could print sheet music with the notes colored according to Scriabin's color scheme. See also the studies mentioned here.

Google Sheets Powered Structured Mapping

As an exercise or starting point, I have a Minecraft server where I play. On it, we have 3D coordinates in different interlinked virtual worlds for mechanisms we use to get around and provide quick transport. Within the game, we use signage and environmental design to try to make the navigation simple, but to be honest, an outside-game map would also be quite helpful.

The nascent map data gathering spreadsheet lives here (commenting is enabled, FYI): Sheets Link

The server is called "Killer", and the two worlds I'm mapping are called "Nether" and "Overworld". In the game, x and z coordinates are horizontal, and y is vertical. The way the two worlds map to each other are that in the Nether, 1 unit of x or z equals 8 units of x or z in the Overworld.

In the spreadsheet, I've recorded places and their Nether Gates (places where the Overworld and Nether correspond, roughly) in 3D coordinates.

Another integration point that would be useful if possible is that the server's Overworld has an online map (similar to Google Maps, but in isometric view) here: Map Link

Another player on the server has suggested using LeafletJS; Main Link - Quick Start

For me, the outcome here is to learn the right ways of accessing, integrating, and collating information from Google Drive/Google Docs, and also of using Google Maps and Google Maps APIs, and some structured drawing API to dynamically create a map layer against either a static or dynamic map.

There's no strong pressure to get this done - it just seems like an interesting coding and integration project.

Video Library

I need some help picking out the best coding method for me to use. I dont know how to code but am learning and I'm a quick learner. There will be different parts to the app. One part is I need to be able to send scripted question to individuals where they do a selfie to answer the questions like what is your profession, were you a good student in grade school etc, I need to build a library of profession so the professional can answer the questions and it can be retrieved by the users at will.

I need to be able to build on this because it has many parts to be added later.

Morse Code Trainers, Translators, Senders

Write a program that does any or all of the following:

  • Train people how to learn Morse code. (See Koch's Method and Farnsworth Timing)
  • Translate characters to Morse code and back.
  • Send and receive Morse code via the Internet.

Q&A Site

Quora has gone downhill, since they increasingly make it difficult to participate anonymously. I think that it would be interesting to build a site like Quora that actually protected users' anonymity, yet still had high quality.

  • Anonymity participation is respected. (real names are still allowed)
  • Quora's quality is marred by listicle answers. A new site should discourage that behavior.
  • Citations should be encouraged. Each source could be given a trustworthiness rating.
  • Code friendly -- users could embed snippets from Github Gist, codepen, YouTube, etc.

Meeting Site

Meetup has gone downhill with the new design and app. I think that it could be done better.

Next Project

[Add your project ideas/brainstorms here.]