All Projects → tombh → human-computer

tombh / human-computer

Licence: other
A computer that uses nothing but human resources

Programming Languages

ruby
36898 projects - #4 most used programming language
coffeescript
4710 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
Makefile
30231 projects
HTML
75241 projects

Projects that are alternatives of or similar to human-computer

Tenyr
Simple, orthogonal 32-bit computer architecture and environment
Stars: ✭ 24 (+50%)
Mutual labels:  cpu, hardware
hardware
Get CPU, Memory and Network informations of the running OS and its processes
Stars: ✭ 70 (+337.5%)
Mutual labels:  cpu, hardware
Iglance
Free system monitor for OSX and macOS. See all system information at a glance in the menu bar.
Stars: ✭ 1,358 (+8387.5%)
Mutual labels:  cpu, hardware
community
ROS 2 Hardware Acceleration Working Group community governance model & list of projects
Stars: ✭ 34 (+112.5%)
Mutual labels:  cpu, hardware
Neorv32
A small and customizable full-scale 32-bit RISC-V soft-core CPU and SoC written in platform-independent VHDL.
Stars: ✭ 106 (+562.5%)
Mutual labels:  cpu, hardware
CSCv2
Version 2 of my Crazy Small CPU
Stars: ✭ 53 (+231.25%)
Mutual labels:  cpu
sarviewer
Generate graphs with gnuplot or matplotlib (Python) from sar data
Stars: ✭ 60 (+275%)
Mutual labels:  cpu
SDR Matlab LTE
📡 Using Software Designed Radio to transmit LTE downlink signals at 2.4 GHz
Stars: ✭ 21 (+31.25%)
Mutual labels:  hardware
audio-digitization-toolkit
A list of resources for setting up an audio digitization workflow
Stars: ✭ 13 (-18.75%)
Mutual labels:  hardware
SystemMonitor
Python script and a PyQt5 program to monitor ram and cpu usage along with disk usage.
Stars: ✭ 22 (+37.5%)
Mutual labels:  cpu
espism
A low cost ISM radio to wifi gateway
Stars: ✭ 38 (+137.5%)
Mutual labels:  hardware
PsxNewLib
Playstation controller interface library for Arduino
Stars: ✭ 81 (+406.25%)
Mutual labels:  hardware
dashcam-rs
Prototype car dashboard camera developed using embedded Rust.
Stars: ✭ 28 (+75%)
Mutual labels:  hardware
3d printed keyboard
A fully 3D printed computer keyboard
Stars: ✭ 31 (+93.75%)
Mutual labels:  hardware
Hardware.Info
Battery, BIOS, CPU - processor, storage drive, keyboard, RAM - memory, monitor, motherboard, mouse, NIC - network adapter, printer, sound card - audio card, graphics card - video card. Hardware.Info is a .NET Standard 2.0 library and uses WMI on Windows, /dev, /proc, /sys on Linux and sysctl, system_profiler on macOS.
Stars: ✭ 238 (+1387.5%)
Mutual labels:  hardware
etos-facedetector
Simple and Effective Face Detector, based on Progressive Calibration Networks (PCN) which is an accurate rotation-invariant face detector running at real-time speed on CPU, published in CVPR 2018.
Stars: ✭ 23 (+43.75%)
Mutual labels:  cpu
arduino-midi-footswitch
USB MIDI Pedal built with Arduino
Stars: ✭ 24 (+50%)
Mutual labels:  hardware
rainviewer-api-example
How to use RainViewer API: simple HTML + JS code which render an animated weather radar overlay on the map
Stars: ✭ 56 (+250%)
Mutual labels:  leafletjs
Leaflet Cluster Example
🗺 Example of using the clustering plugin with Leaflet
Stars: ✭ 26 (+62.5%)
Mutual labels:  leafletjs
spectre-attack-demo
Reproducing malicious memory reading on Intel i5 and Intel Xeon using a Spectre attack
Stars: ✭ 87 (+443.75%)
Mutual labels:  cpu

Build Status Code Climate Test Coverage

A Human Computer

This is an application to facilitate a Turing Complete human computer. The guiding principle is that the functioning of this computer should be possible without an actual electronic computer. For example using just pieces of card and a pencil.

A human should not have to do anything more complex than the following tasks:

  • Compare 2 symbols: are they the same or different?
  • Derive the opposite of a symbol.
  • Fetch cards from a specific position on a large grid.
  • Place cards onto a specific position on the same grid.

Therefore this application should do no more than enable these tasks in an efficient manner and to make the tasks available to a global audience.

The computer's architecture is based on a One Instruction Set Computer using the SUBLEQ operation. SUBLEQ stands for Subtract and Branch if Less then or Equal to zero. All other commands like; addition, moving bytes, etc, are built up from this single command. A slightly modified version of SUBLEQ is used here, where negative memory addresses are understood as indirect addresses, or pointers. This modification (and many other insights) is thanks to Lawrence Woodman from Tech Tinkering.

Currently this computer can only operate through its test suite. The road map includes an API where you can request instructions, submit results and view snapshots of memory. Once there is an API then we can create a web-based GUI to allow humans to easily carry out single CPU cycles.

Things to consider for development;

  • Means of overcoming human errors. Require each instruction to be carried out by 2 humans?
  • Improving the efficiency of the CPU. Hello World is currently 155 cycles.
  • What programs can this run? Is something like Tetris possible?
  • How should output be displayed? In the main memory, or through a seperate 'monitor' grid?

Motivation

My original reason for building this came from a desire to inject more of the open source spirit into hardware. Whereas creating software from first principles is relatively easy in the modern age, creating hardware from scratch is hard. If more people know that computers can be created from simple building blocks, maybe it will improve the chances of open source hardware.

The other big reason is educational, both for myself and for the wider world. The Human Computer is Turing Complete (citation needed!) and so demonstrates the fundamentals of computer science.

Usage

API server
TBD guard

Tests
rspec

Running Human Computer assembler on the CLI
TBD rake

Frontend
See frontend/README.md

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].