Start where you are. Use what you have. Do what you can. ~ Arthur Ashe
A Quick-start Guide for People who want to build awesome apps.
The world is not perfect.
We have all worked somewhere we didn't love.
We have all experienced using products that had/have flaws.
Rather than waiting for someone else to solve our "problems"
we are taking on the challenge ourselves.
And we are making Everything Open Source along the way,
so that you too can Do What You Love!
We simplify. We enable people to get through their need-tos efficiently so they can get to their want-tos.
If you'd like to know more, please read our manifesto.
And if you haven't read Simon Sinek's book,
we highly recommend you watch his Ted Talk on Start with Why:
http://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action
Everyone should be doing on something they love.
For now the people working on dwyl are just four people: @iteles, @nelsonic, @edwardcodes and @hyprstack
Join us in finding something you want to solve and will love working on.
We are building the tools we need to help us (and the people we care about) get things (they love) done.
- Time [track any time based activity]
- Doing [track what you are working on ...]
- Next [record, prioritise, share & collaborate on your ideas]
- When? [sync calendars and selectively share availability with your work colleagues, friends & family to discover when the best time for an activity/event is]
- Birthday/Special Event Reminder [AKA The Card & Gift App]
- What question do you want to answer...?
We believe in scratching our own itches. Scratching your own itch means solving a problem you (or someone close to you) personally have. If you (or someone close to you) don't have any personal experience in a field you aren't going to do a good job of spotting/solving a problem in that area.
Read: https://gettingreal.37signals.com/ch02_Whats_Your_Problem.php
- Curiosity - "I have no special talent. I am only passionately curious." ~ Albert Einstein
- Enthusiasm - "Enthusiasm spells the difference between mediocrity and accomplishment." ~ Norman Vincent Peale
- Shoshin (Beginner's Mind)
- "I'm not young enough to know everything" ~ J. M. Barrie
- “Your mind is like a parachute; it only works when it is open.” ~ Anthony D'Angelo
- Persistance - “If you wish to be out front, then act as if you were behind.” ~ Lao Tzu
- Time (work super hard ... every waking hour)
- Awareness of how you're spending your time and learning to work to your productive hours and habits
- Great Google Skills - the ability to formulate a good question (so you can get a useful answer from Google) is (more than) half the challenge in any coding task.
- Self-reliance: when you get stuck on a task, knowing when to ask for help and when to persevere through to find the answer yourself.
- A computer (preferably a recent one ... Chromebooks are Great!)
Installing software is 100% optional. You can use Cloud9 to develop completely online: https://c9.io/
If you prefer to develop offline or have a faster response, you will need:
We have listed the skills you need to know in the order you need to learn them. Here is a checklist: https://github.com/dwyl/start-here/blob/master/new-developer-checklist.md
If you don't feel confident using a computer, don't despair! We've all been there. There's no "secret" to becoming an expert, just experiment! If you get stuck, Google, if you're still stuck after an hour, ask for help! If all else fails, restart your PC and try again! (that's what everyone does)
Before you dive into programming, learning how to touch-type on your computer is the single best investment you can make. All this means is practising typing with the "correct fingers" until you don't have to think about where the keys are. Some of the best programmers we know can type faster than most people can think ... take a moment for that to settle in.
You need to be able to type blindfolded to become a true maestro (at anything computer-related).
A few touch-typing tutorials:
- Keybr: http://www.keybr.com/
- Typing Club: http://www.typingclub.com/typing-qwerty-en.html
- BBC: http://www.bbc.co.uk/guides/z3c6tfr#zg8nsbk
If you've never heard of Markdown, get started now: http://markdowntutorial.com/
You can learn 90% of what you need to know in HTML in a couple of hours (from scratch):
- HTML Tutorial for Beginners in 1 Hour: https://www.youtube.com/watch?v=5TBU_jLZuG4
- Learn HTML5 from Scratch in 1 Hour: Learn HTML5 in 1 Hour: https://www.youtube.com/watch?v=s37GTK6JFcI
The rest of HTML5 you will learn just-in-time (as & when you need to know it).
Cascading Style Sheets (CSS) is what makes the web attractive. If you want to see the power of CSS, visit ZenGarden: http://www.csszengarden.com/
Complete Beginner (or refresher) Tutorial:
- CSS Tutorial for Beginners in 1 Hour: https://youtu.be/hChVrWENonE?t=9s
- CSS3 Tutorial (in one hour): https://www.youtube.com/watch?v=CUxH_rWSI1k
Love it or hate it, JavaScript is Ubiquitous. Becoming a JS Ninja is essential. Ines has prepared some great notes on JavaScript The Good Parts Keep "The Good Parts" in mind while you are writing (and reading) JS.
Watch this 1 hour intro tutorial: https://www.youtube.com/watch?v=fCa7yTZV4tQ
If you are completely new to Git (Version Control) and/or GitHub, we suggest you checkout @NataliaLKB's Tutorial: https://github.com/NataliaLKB/learn-git-basics
- What is Node.js and why is it useful? https://www.youtube.com/watch?v=pU9Q6oiQNd0
- Download: http://nodejs.org/download/ (all platforms)
- Beginners guide: http://www.nodebeginner.org/
- Udemy Tutorial: https://www.udemy.com/nodejs-tutorial-from-scratch-by-examples
- Node.js (books): https://github.com/Pana/node-books
- Node.js style guide: https://github.com/felixge/node-style-guide
Investigate: http://tableflip.io/building-a-dnode-rpc-server-in-50-lines-of-code/
Testing is often left as an afterthought or ommitted completely from "beginner" tutorials or books. That will not be the case here. You will learn why testing is not just a "nice-to-have".
We will be building our apps with RESTful Service Oriented Architecture Backend. This has several advantages:
- Each piece of functionality is run as a service (so its easy to isolate, test and scale)
- The client we build (web app or mobile app) both (independently) "consume" the same service via REST API (which means that the font-end is completely decoupled from the backend of the app - easier to change/itterate)
- If our app/product gets popular we already have an API built and can allow 3rd party integration/extensions.
I'm busy preparing a detailed tutorial for doing exactly this using Hapi.js at: https://github.com/nelsonic/learn-hapi You can already get started reading it and the supporting links And watch as the tutorial progresses.
Watch: https://www.youtube.com/watch?v=uDzME15UxVM (Share.js)
Angular.js - Mature and full-featuredBackbone.js - Well-structured and minimalist- Riot.js - Minimalist and Reactive (learn it in 2h)
We are using Riot.js because its Tiny and compares favorably to Polymer and React: https://muut.com/riotjs/compare.html
Also it does server-side rendering out-of-the-box: https://muut.com/riotjs/guide/#server-side which we need for progressive enhancement.
Ultimately we want to wrap our JS as PhoneGap app (see mobile below) so that the app can be run as a semi-native app (download from app store, local/offline storage, etc.) and it makes sense to keep it as small as possible.
In the past we have used:
- Postgres - The best relational dabase for
- MongoDB - Good balance of features, performance and ease of use.
- CouchDB - Great reliability, master-master replication and simplicity.
- RethinkDB - we love RethinkDB, but sadly there's no "free tier" on heroku...
But for this project we are going to be using:
- Redis for its speed, flexibility and pub-sub
- ElasticSearch for full-text near-real-time search.
If you are new to either of these please checkout our tutorials:
- Redis: https://github.com/docdis/learn-redis
- ElasticSearch: https://github.com/docdis/learn-elasticsearch
We are using PhoneGap to rapidly prototype "hybrid" mobile applications.
- PhoneGap Tutorial: http://www.smashingmagazine.com/2014/02/11/four-ways-to-build-a-mobile-app-part3-phonegap/
- Jacob Nielson explains Native vs Hybrid: http://www.nngroup.com/articles/mobile-native-apps
- Is Hybrid ready? http://venturebeat.com/2013/11/20/html5-vs-native-vs-hybrid-mobile-apps-3500-developers-say-all-three-please/ (the short answer is Yes!)
A good (but long) intro tutorial to PhoneGap V.3 was recorded @LXJS in October 2013: http://phonegap.com/blog/2013/11/12/lxjs-workshop/