Skip to content

💡 A Quick-start Guide for People who want to dwyl ❤️ ✅

Notifications You must be signed in to change notification settings

dwyl/start-here

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Start Here

dwyl-logo-wide

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.

Why? start with why

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

Who?

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.

What?

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...?

Scratching Your Own Itch

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

What do I need?

  • 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.

What tools will I need?

  • A computer (preferably a recent one ... Chromebooks are Great!)

Software

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:

  • A text editor. e.g. Atom
  • Node.js for building server-side apps.

Web Development _Fun_damentals

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

Basic Computer Skills

have_you_tried_turning_it_off_and_on_again_tshirt-r15b877ba3b4142bba14c938377e7fed7_v9uic_1024

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)

Touch Typing

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.

playing piano blindfolded

You need to be able to type blindfolded to become a true maestro (at anything computer-related).

A few touch-typing tutorials:

Markdown

If you've never heard of Markdown, get started now: http://markdowntutorial.com/

HTML5

You can learn 90% of what you need to know in HTML in a couple of hours (from scratch):

The rest of HTML5 you will learn just-in-time (as & when you need to know it).

CSS

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:

JavaScript

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

Git + GitHub

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

Server-Side = Node.js

Investigate: http://tableflip.io/building-a-dnode-rpc-server-in-50-lines-of-code/

Testing

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".

Service Oriented Architecture with (REST) APIs

We will be building our apps with RESTful Service Oriented Architecture Backend. This has several advantages:

  1. Each piece of functionality is run as a service (so its easy to isolate, test and scale)
  2. 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)
  3. 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)

Which Client MVC Framework?

  • Angular.js - Mature and full-featured
  • Backbone.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.

Which Database?

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:

Mobile

Phonegap

We are using PhoneGap to rapidly prototype "hybrid" mobile applications.

What is the Difference between Native and Hybrid Apps?

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/

Releases

No releases published

Packages

No packages published