Skip to content

Essential Maker Skills

Lawrence Wu edited this page Feb 10, 2015 · 3 revisions

Mankind's most exceptional ability is it's aptitude for creating and using tools to improve our lives. Yet relatively few people in our modern world actually understand the process of creating or improving upon these tools.

Civilization advanced when the laymen learned how to read and write. Wouldn't our people be better off if everyone knew how to repair existing machines, and make new tools? Maker Literacy is important to our modern age, and it is a shame that most people lack such skills.

Order of Operations

These are the five categories of critical skills for makers, by ascending order of difficulty, cost, and accessibility.

  1. Computers & The Internet - The Computer is the most powerful and prevalent tool that is available to the modern world. Computers can emulate natural models, and use basic electronic logic to solve any complex task. Best of all, the only thing a maker needs to tap into the power of the computer is a keyboard; and their mind.
  • Basic Computer Interaction (GUI, Google, Forums)
  • Intermediate Computer Interaction (CLI, Shell Scripting, )
  • CLI Programming (Python -> C -> Java -> C++)
  • GUI Programming (Qt, .NET/Mono, Android SDK, iPhone)
  • Maintenence
  1. Electronics - Electronics drive the machines that make up our modern lives. Many electronic peripherals can be hooked up to a computer to add extra sensors and functionality. Nowadays, it is significantly easier to get into electronic prototyping thanks to the introduction of the Arduino, which emulates electronic logic in software.
  • Breadboards
  • Arduino
  • Soldering
  1. Robotics - This category combines electronics and computers with moving machinery, to complete physical tasks with electronic logic.
  • LEGO Mindstorms - If anyone can build a house with LEGO; couldn't everyone build a robot with LEGO? What if we applied the solid LEGO brick and Technic stick structure to machine prototyping? The result is LEGO Mindstorms. This robot building hobby kit is the best way to reduce the complex methods and expense of building robot machines to it's most basic form.
  1. Carpentry - Since the dawn of civilization, the simplest and cheapest way to build any structure, big or small; was to use wood. Whether by carving, sawing, screwing, or even a computer-controlled CNC router; wood allows makers to build nice structures, casings, or furniture.
  • Screws and 2x4s
  • Sawing
  • Carving
  1. 3D Printing - The new category of 3D Printing allows any layman to create cheap, intricate, and strong plastic parts; right from their desktop.
  • CAD Design
  • 3D Printer (PLA, ABS, Liquid, Professional)
  • Threaded Rod Structures
  1. Metalworking - A logical extension of carpentry; just replace wood with metal, screws with bolts, and glue with welding. Metalworking is useful for creating durable, strong, production casings and structures for projects; as well as durable tips and gears.
  • Bolts and Steel Plates
  • Welding
  1. Blueprinting - Draw out your designs, to convey your concepts, and maybe others can replicate them.
  • Concept Sketching
  • Multiple Angles
  • Flowcharts
  • Quick 3D Design (Use simulations?)
  • Flat UI Gripping Video Presentation
  1. Graphical Design - As a main course. This gets into the art field, though we try to make it accessible to all and easy to do.
  • 2D Pixel Art - Easy to start, hard to master.
  • Easy Animation - GoAnimate, stick animator
  • 3D Movie making - Garry's Mod, Source Filmmaker
  • 3D Modeling for Anyone - Spore/Sims, Kerbal Space Program, MMD/3D Custom ****

Software / The Internet

The Computer is the most powerful and prevalent tool that is available to the modern world. The Computer can easily process piles of information, solve any problem with surprisingly simple logic, run simulations of any model (from a processor to an entire universe), and interact with the Internet.

Despite the power that exists at mankind's fingerprints, most people merely "use" their computer with preprogrammed apps, and almost never create new ones.

Basic Computer Skills

Just the basics for working with computers and the Internet. It may be "common sense", but it is sure isn't common.

  • Search Engine Skills - Google and Bing both have special, little-known, but easy to use options that help users create narrower searches.
  • Linux (Graphical) - Linux is a free, libre, open-source operating system. It has a variety of purely graphical systems. Windows has tons of driver issues, a weak, lackluster CLI shell, so Linux is often the OS of choice for developers.
    • Mac OS X - If Linux just isn't your cup of tea, you may be surprised to know that Mac OS X is actually a UNIX-based (BSD) operating system. With just a few modifications, Mac OS X becomes a powerful and competent development platform.

Intermediate Computer Skills

These skills are easy pickings with adequate practice

  • Command-line/Shell Scripting - While it may seem antiquated and arcane to modern users, the command line shell is still the simplest, most efficient way to tell the computer what to do. Better yet, shell commands can be wrapped together in a "batch" script file, so the commands can be repeated over and over again; almost like a "program".
    • Windows PowerShell - A significantly improved command-line shell for Windows. Inspired by the power the Bash Shell, PowerShell attempts to bring UNIX command line innovations to Windows itself.
    • GNU Bash - The GNU Bash Shell is the most powerful and most popular command line interface around. Bash is the default shell on Mac OS X and Linux.
    • Windows Command Prompt - A poor little DOS "emulator" for NT systems. PowerShell has totally supplanted this vestige of the past, but it's usually the first command line that comes to mind.
  • Development Forum/Wiki Reading

Programming

There are four critical programming languages that you should learn, in order; Python, C, Java, C++. We chose this order since it gives a natural "stepping stone"-like progression, each language fits a different field, and each of them are cross-platform.

  • Python - A modern programming language that is great for beginners and advanced devs alike, since it looks the most like pseudocode; cutting down on the syntax, and laying bare the logic. This way, you learn the basics of programming, not the intricacies of a language. It also has a nice little IDLE for testing statements in real time. Most of all, it is cross platform.
  • C - After you've got a good grip on Python, C is the next step. The C Programming Language is the most popular and most fundamental language for modern operating systems, since it is a good mix of low level memory manipulation and higher-level logic. The vast majority of programming languages are based on C's 80's style syntax.
    • We recommend learning C before Java, since we consider Object-Oriented Programming a topic for advanced users. OOP easily gets confusing for the beginner, and is unnecessary in most cases.
    • For the most part, you should use Python for most tasks and interfaces; C should be used when maximum performance is paramount, since it is a lower-level language. In fact, you can call C modules from Python itself, so you only code in C for the calculation functions.
  • Java - After learning C, jump into the Object Oriented Java Programming Language. Java's syntax and OOP design is based on C++. However, like Python, Java is a high-level programming language that runs everything in a garbage-collected virtual machine, so no need to deal with pointers (for better or for worse). This cross-platform virtual machine has made Java the language of choice for Android smartphones.
  • C++ - Java was designed as a simplified version of C++, the ultimate object-oriented beast. Most games and graphical user interfaces use C++, since it combines low-level memory manipulation, native compiled code, and object-oriented programming. However, it's OOP capabilities can result in horrific spaghetti code, so get acquainted with Java before jumping into C++.
    • Objective-C - Alternatively, if you plan to develop for Mac OS X or iPhone, it's worth looking into Objective-C. This C variant uses Smalltalk style communication between modules, which makes for more elegant code. Though that is a matter of preference.

Here are some other useful tools that will significantly assist in your programming experience.

  • A Text Editor - All you need to write a program is a simple text editor; IDEs are overkill for basic command-line programs. But you can do better than Notepad; these text editors have IDE-style features like syntax highlighting, indenting, and regular expression searching.
    • Sublime Text - The best editor for Windows/Mac (works on Linux too).
    • Notepad++ - It's Notepad, but significantly enhanced.
    • KDE Kate - The best graphical text editor for Linux, in our opinion. It's simple and easy-to-use at first glance, but packs in a massive array of powerful tools that you can use; or not use. Comes with the KDE Desktop Environment; which gives it an optional built-in terminal and file manager.
    • Vi - If you're really looking for something revolutionary, try Vi. This blast-from-the-past.
      • If you're not quite ready to jump into the world of CLI text editors, you can try GVim or the Kate Vi Plugin, as graphical "training wheels".
  • Bash Command Line + GNU Userland (GCC, Make) - The C Programming Language was explicitly designed for UNIX-style shells. There is no better C development environment; just use GNU GCC or Make to build your apps. If you're using Windows, you should run Linux in VirtualBox.
    • KDE Dolphin + Konsole - One interesting capability of KDE apps is tight API integration. Just press F4 in any Dolphin File Manager session, and a Konsole will pop out on the bottom. In fact, you can navigate using the file manager, and the terminal will follow it around; no need to use cd or pwd any more. This is the most interesting fusion of GUI and CLI I have ever seen.
  • Git/Github - Share your open source code on the internet for free. Github also provides wiki, documentation, binary release storage, and website hosting capabilities. Also free.

Graphical Programming

Once you've learned the basics of programming, it's time to make some lovely graphical user interfaces for typical users to enjoy. Here are some of our recommended libraries:

  • Cross-Platform - It is very important to choose cross-platform libraries for development. Why repeat your work multiple times?
    • Qt (Python, C++) - Qt is a powerful cross-platform, OOP GUI library that supports Windows, Linux, and Mac. It is designed for C++, and has PyQt/PySide API extensions. Technically, since C++ is a superset of C, you can program in just plain ol' C code, but OOP is the most efficient way to work with GUIs.
      • PyQt/PySide - Probably one of the simplest GUI libraries out there; designed for Python. It only takes a text editor to make a simple GUI (though you probably want to use Qt Designer for more complex forms). And it's cross platform, too!
      • Android and iOS support is under development.
    • .NET/Mono - A cross-platform, multilanguage GUI library based on Windows APIs. If you are forced to use WinForms, please use .NET at the very least; and try to stay compatible with Mono! Mono runs on Windows, Linux, and Mac.
  • Mobile Apps
    • Android SDK (Java) - Obviously, there's not much other than Java on this platform. Though Android Studio does have some nice Form builders.
    • iPhone SDK (Obj-C) - Unfortunately, Mac OS X is required to program iPhones.

  • Integrated Development Environments (IDEs) - An IDE is a necessary evil for Graphical User Interfaces. Obviously at this point, a plain text editor just doesn't cut it; it takes a GUI to make one. Each GUI Library has it's own IDE, so choose the right tool for you.
    • Qt Creator - Simple, easy, beautiful IDE for Qt and C++.
      • Qt Designer Amazingly, PyQt/PySide is simple enough to make with just a text editor. But for more complex designs, you should probably use Qt Designer. Tutorials for PyQt and PySide
    • Eclipse - A horrifyingly complex and performance intensive IDE. It supports every language, in theory. If you can ever figure out how to use this monstrosity, you might be able to unlock it's full potential.

Maintenance

Basic computer maintenance should be as easy as repairing a bike; you just disassemble, replace parts, and put it back together.

While this was not hard with desktop computers (pop the lid open), the smaller, thinner size of laptops and smartphones have made computer maintenance a specialized skill, akin to watchmaking. In addition, modern laptops and smartphones have increasingly less standardized parts. Worse, the manufacturer often resorts to soldering CPU, GPU, RAM, and even storage to the motherboard to decrease thickness, cut costs, and introduce planned obsolescence to keep the consumer cycle flowing.

It's almost like the car industry with laptops and smartphones these days.

  • Desktop Maintenance - The basic unit of the PC is the Desktop tower. This is still used today for gaming rigs, since powerful CPUs and GPUs demand
  • Laptop Maintenance - Laptops are thinner, more proprietary, and somewhat less serviceable than desktops. The result is that consumers almost always buy new laptops, and never upgrade old ones. Generally, switching the Hard Drive, RAM, MiniPCI slot, and keyboard is just a matter of removing a few screws. However, the CPU and GPU are often soldered onto the motherboard. The board and screens themselves are no easy task to replace, and are usually custom built for the model.
    • Many ThinkPads have similar motherboards, and a few can be cobbled together into a FrankenPad with some difficulty. Older ThinkPads have the ability to use Libreboot/Coreboot, and a beautiful IPS Flexview display with high resolution still unheard of on computers (which have not budged from 1366x768). However, most ThinkPads usually did not come with such screens by default, so ThinkPad fans often replace their screens.
  • Smartphone Maintenance - The smallest, thinnest computer form factor of them all. Smartphones are infamous for their difficulty of maintenance, about as hard as fixing a watch.
    • Screen Replacement - Almost every smartphone uses glass, and smartphones are usually carried in hand. This is a recipe for disaster; if the phone drops onto concrete, the screen will shatter. Thus, the most common and lucrative repair is screen replacement.
      • Usually, the LCD doesn't break, and the glass digitizer still works fine despite cracks. Unfortunately, to

Electronics

  • Solderless Breadboard - Easily build and learn the basics of prototype electronics, without the hassles of soldering.
  • Circuit Board Marker - An interesting, easy PCB prototype solution. You either draw a circuit with marker, or print one out with an inkjet printer. Now on sale from AgIC or CircuitScribe.
  • Soldering - The fundamental skill for building or hacking production silicon chips.
  • Arduino - Significantly simplifies electronic projects, by simulating much of the logic in software.
BA Logo

Bibliotheca Anonoma

BASLQC Wiki

  • Introduction - A quick intro to the rationale and ideals of this guide, and modding in general.
  • Essential Maker Skills - Essential Skills that every maker should have.
  • Archivist Tools - All the tools an internet archivist needs under their belt.

General Guides

  • Android Development Codex - All kinds of Android smartphones.
  • Business Class Laptops - Computers that last: The ThinkPad, the HP EliteBook, the Dell Precision/Latitude.
  • EBook Readers - A good eInk screen remains the best way to read literature comfortably.
  • Game Consoles - Homebrew development scenes have made it possible to unlock the full power of your game console's computer chip.
  • Graphing Calculators - This is the last vestige of the age of 80's Home Computers; where programs were simple and graphics were minimal.
  • Home Server - Why buy cloud storage when you can build your own cloud? For media streaming, torrenting, and VPN access (to bypass blocked internet).
  • Routers - Amazingly, your ordinary router probably runs Linux on it's little embedded CPU.
  • Authentication Wallets - Manage your plethora of accounts, passwords, and RSA public keys using a GPG-encrypted wallet.
  • LEGO Mindstorms - The easiest way to build functional robots and machines; using good ol' LEGO and Technic bricks.
  • Vintage Computers - Amiga, Apple ][, and all the other random home computers that defined the 1980s.

Research

  • Genetic Programming - Programs that mutate and evolve by themselves, like Genes. It's a very difficult concept to grasp, but a very powerful method that transcends math or algorithms.

Content Guidelines

  • General Guidelines - The ideals that you should uphold while working with and editing this guide.
  • Device Guide Templates - Templates and general guidelines for creating customized guides for a device.
  • Linux - Run a full desktop OS on your little mobile device; research is being made to make it comfortable to use in the mobile space.

Reference

  • Glossary - Contains all the crazy acronyms and word soup that you'll need to wade through when using this guide.
Clone this wiki locally