Giter VIP home page Giter VIP logo

nodeschool.github.io's Introduction

nodeschool.github.io

Please fork it and send us improvements! Read our CONTRIBUTING.md guide for more details on how to send a great PR.

If you are an owner on the nodeschool/Owners team please do not edit this repo directly but instead send your contributions as pull requests.

We ask that you make pull requests because changes to this repository will get deployed onto the live production site immediately and it's best if you get feedback on your pull request first before it goes live.

Running the entire app locally

This is a static site with a build step. The build step uses a GitHub Personnal Access Token that you need to generate and put in a .env file. Actually you don't need to configure any authorization on this access token, it just serves the purpose of unleashing the GitHub API Rate Limit.

cp .env.example .env
// then put your GitHub Personnal Access Token in the .env file

After that, simply run npm start:

npm install
npm start

Installing and running individual nodeschool workshop packages

Please refer to the nodeschool site for detailed instructions. In short, there are two ways to install the workshop modules :

  • Globally (easiest)

    Depending on the npm version, npm packages get installed in different routes. To have access to them globally. Do

    npm install -global package_name or npm install -g package_name

    If you get a permission denied error. Run the previous command with sudo.

    sudo npm install -g package_name

    Now just run it by simply calling it. For example :

    npm install -g javascripting (installs it)

    install_module

    javascripting (runs it)

    run_module `

  • Custom directory (a bit more configuration)

If you would like to keep all the node_school workshop packages inside a custom directory while you work through them. Using our previous example :

~ mkdir -p node_school
cd node_school
npm install javascripting

From within the node_school directory now run node_modules/learnyounode/bin/javascripting to start it.

This is because you need to run the executable from within the directory itself since it's not available globally in your $PATH

Please refer to this discussion for more info.

Stickers, Badges and whatnots

These are in the /images directory, feel free to use for your events. In images/make-a-sticker there is a template for making a sticker too. Woop.

Translations

If you would like to translate the NodeSchool site into another language please make a pull request adding languages/<language code>.json.

To generate a new language file template automatically, run the following commands inside a clone of this repository:

npm install
npm run generate-language

This will prompt you to enter a language code and will generate your language file in the languages/ folder with English placeholder text. Now just translate each line. You should also add your language to the languages/languages.json list.

When picking your language code, please use the correct code from the first column of this spreadsheet: http://en.wikiversity.org/wiki/ISO_639-1_language_matrix

The way translations are implemented is building static pages using Codeship (see ./scripts for details).

Translation files are a mapping of translations IDs to the translated strings. There is a separate file called languages/selectors.json which maps CSS selectors in markup to the translation IDs.

The good things about this approach:

  • Every language is indexed by search engines.
  • The site remains a static site. This means that contributing to the site is really easy as the entire site is just flat HTML, CSS, JS and JSON files
  • When PRs get merged they are almost immediately deployed live to GitHub pages. This makes maintenance really nice as there is no manual deploy step.

The drawbacks of this approach:

  • Default branch is source as we can't use master anymore.

Update Translations

Are you not sure what translations is missing? Don't worry! :) Just run this command:

npm install
npm run generate-untranslated-lang

You will find untranslated IDs in languages/xx.untranslated.json.

nodeschool.github.io's People

Contributors

a0viedo avatar arianeai avatar bencodezen avatar brianloveswords avatar cfsghost avatar claudiopro avatar denysdovhan avatar dominhhai avatar finnp avatar fmoliveira avatar ivaylospasov avatar jasonrhodes avatar julianduque avatar kcyang avatar kohei-takata avatar krahman avatar lisposter avatar marocchino avatar martinheidegger avatar max-mapper avatar muan avatar nescalante avatar ogsilvaa avatar riyadhalnur avatar rvagg avatar someoneweird avatar sudodoki avatar trott avatar watson avatar zamakkat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nodeschool.github.io's Issues

Fix japanese translation

The current japanese translation of the nodeschool.io site is missing some sections. (and other sections are outdated). Would be good to bring them up-to-date.

今の日本語のNodeSchoolのバーションは穴があいています。アップデートが必要です。

Better chapter discovery

Chapters are exploding like crazy and it's awesome! But now the website is almost always out of date, and more and more when we get chapter requests I'm worried that a nearby or identical chapter may already exist without me really knowing.

Could we make a /chapters folder in this repo where each chapter has a corresponding json file like this:

{
  "name": "Baltimore NodeSchool",
  "website": "http://nodeschool.io/baltimore",
  "location": "Baltimore, MD USA",
  "twitter": "@bmorenodeschool"
}

Then we can ask new organizers to submit a PR here with their chapter JSON file, and the website could read in those files to create the chapter list on the fly, maybe?

I'm open to easier ways of doing this, but eventually we can even hook up the location key to some reverse geocoding and have a map, a "find your nearest nodeschool chapter" tool, etc.

Thoughts? cc: @maxogden @jlord @olizilla @hackygolucky

French translation adjustment

@maxlath, don't you think that this part of the translation is a bit heavy and repetitive :

créer un parcours d'apprentissage de la programmation de grande qualité  et accueillier des évènements d'apprentissage au sein de la communauté.

What do you think of this one (with accueillir correction) :

fournir un enseignement de qualité autour de la programmation et accueillir des évènements d'apprentissage au sein de la communauté.

And sorry for the last commit. I just did not know how to pull a pull request to merge changes ...

recompile chapter list

Hi,

sorry, i may have been a little eager and pushed 48d9a23 directly to the master repo.

Could someone be so kind as to recompile the chapters list.json?

Thanks,
Conrado

Please move event (changed date) at google

Hey,

unfortunately we chanced the date for nodeschool in hamburg.
Can someone please change the Date of "nodeshool hamburg" to 8th november? (currently 1st november)

learnyounode launch

I'm trying to run the learnyounode program. the install worked okay but when I run learnyounode I get this error:

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^

TypeError: Object # has no method 'setRawMode'
at new Menu (/usr/lib/node_modules/learnyounode/node_modules/workshopper/node_modules/terminal-menu/index.js:59:19)
at /usr/lib/node_modules/learnyounode/node_modules/workshopper/node_modules/terminal-menu/index.js:7:12
at showMenu (/usr/lib/node_modules/learnyounode/node_modules/workshopper/menu.js:13:18)
at Workshopper.printMenu (/usr/lib/node_modules/learnyounode/node_modules/workshopper/workshopper.js:112:14)
at Workshopper.init (/usr/lib/node_modules/learnyounode/node_modules/workshopper/workshopper.js:80:8)
at Object. (/usr/lib/node_modules/learnyounode/learnyounode.js:11:4)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:32)
at Function._load (module.js:308:12)

I have node version 0.6.12 and npm version 1.1.71 installed on Ubuntu

stream-adventure: HTTP_SERVER accepts silly solution

The following passes the 'verify' test for HTTP_SERVER in the stream_adventure module.

var through = require('through');
var http = require('http');

var server = http.createServer(function(req, res) {
    res.end('');
});

server.listen(process.argv[2]);

Tech-Tree UI for workshop list

We should start prototyping this on a branch as a separate page, e.g. /workshoppers.html

@substack has some modules for rendering hexagons as a grid

What happens when a chapter is not a city

Right now most chapters correspond to a city, so location is the city and maybe the state/province, and then country is the two letter country code. Then the template is just {{location}}, {{country}}.

But what should happen if the location spans multiple cities, or is itself a country? Right now I've been jamming everything in location and if the location is a country, I leave country off and it doesn't get rendered in the template. But that's a bunch of messy, confusing logic, so I want to think about a better solution.

npm script to detect missing translations

It would be nice to have npm script, something like npm run missing that would list all the missing translations for all the file (e.g. those, that are missing key that is present in selectors.json, or are null). Bonus points for having options to scope it down to a language, i.e.: npm run missing sv to list only missing from sv && option to insert keys missing into the file, i.e.: npm run missing sv --save or similar.

Add a how to get started with node section nearer the top of the site

Right now, for someone completely new to node, taking that leap from installing node to running npm commands etc is fairly considerable - "how do i get node?", "what is npm, why do I need to use it?" - these questions seem simple to us, but to complete strangers to node, and maybe even the command line, going and figuring out what to do at nodejs.org and going and reading about npm might be too much of a barrier.

I'd love to see another section which briefly explains how to install node, what npm is, what the npm client is doing, why nodeschool is making you install a module.

Just a really basic, small section to the site nearer the initial npm install -g learnyounode to explain those fundamentals

Twitter conversation that prompted this:

https://twitter.com/dan_jenkins/status/515469119828017152

look for zh-tw translation before zh

simplified chinese would use zh-cn and traditional would use zh-tw but currently the code in lang.js just looks at the first two characters. we should try the 5 character version first before falling back to the two character

this would also fix e.g. en-us vs en-uk vs en-ca

nodeschool.io in PT-BR?

Guys, have you ever considered translating the nodeschool content to other languages, like Portuguese? Do you think it's a valid effort? You know, if the purpose is to reach more people, it's easier to translate the site and the exercises to other languages than to wait them learn English.

Sticker design as svg?

Dear @jlord,

Can we get the sticker .ai exported as an svg? I tried to open it in Sketch, but it's not happy about it...

screen shot 2014-09-23 at 13 53 28

I would like to propose a change or rather an enhancement to the list.json file format

I would like to propose a change or rather an enhancement to the list.json file format, namely:

Can we add a Last-Modified field to the chapter objects, that states the time that object was integrated into the into the list.json from it's perspective .json file. It should be optional for backward compatibility and the .json file need not have that field, just each chapter sub-object within the list.json.

The reason for this is to track or make it obvious if the change was built or manually added in and also mainly if there is a newer .json file that should be auto integrated.

Who is the authority on this and comment please.

thanks

"npm run language <code>" not working

Hi @maxogden , I was translating nodeschool.io to brazilian portuguese and I was able to translate everything by looking at how the chinese template was designed and comparing it to the original website.

After I was done translating all the content I ran:

npm install
npm run language pt-br

And I got this error:

C:\Users\lucas.costa\nodeschool\nodeschool.github.io>npm run language pt-br
npm ERR! Error: ENOENT, open 'C:\Users\lucas.costa\nodeschool\nodeschool.github.
io\node_modules\language\package.json'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program File
s (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "language" "pt-br"
npm ERR! cwd C:\Users\lucas.costa\nodeschool\nodeschool.github.io
npm ERR! node -v v0.10.31
npm ERR! npm -v 1.4.23
npm ERR! path C:\Users\lucas.costa\nodeschool\nodeschool.github.io\node_modules\
language\package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\lucas.costa\nodeschool\nodeschool.github.io\npm-debug.log
npm ERR! not ok code 0

It happens on a brand new cloned project too.
I did run npm install and I'm using latest node version (v0.10.32).

I think it may be because when you installed the language module you didn't save it to dependencies.

PS.: Your work is awesome

please build the main json file for the chapters and including the ./chapters/bali.json

Hi finnp,

please build the main json file for the chapters and including the ./chapters/bali.json

It is all ready and tested. but I see there is a build process for the main json file for the chapters page. I don't really want to mess around with that and anyway we are suppose to PR's anyway. Let me know if there is anything I need to do to facilitate this.

Regards

tips and tricks for hosting a nodeschool event

I'm planning on writing an in-depth blog post after my next two nodeschool events (both have about 100 rsvps), but here's how i've planned mine:

NodeSchool strives to be a welcoming and safe event for all attendees. Attendees should follow the conf code of conduct.
  • link to the event from nodeschool.io, which is just a github repo (this repo) that you can send pull requests to
  • reach out directly to different groups that you want to see attend -- this means finding existing tech groups like JS meetups, women in tech groups, people of color in tech groups, gender neutral groups etc and inviting them to come and learn node. if you don't reach out beyond who you know personally then your event will likely be less diverse, and nobody likes a monoculture
  • invite existing node.js developers to be mentors. mentors basically hover around the room during the event and try to find people who are stuck and then they help them get un-stuck. i've noticed that many people are too shy to ask questions so you have to have hovering mentors to find those people
  • at the beginning of the workshop you help everyone get the workshop of their choice installed. this means you have to have good wifi. if you can't rely on good wifi then it helps to have some USB sticks with the workshop software preloaded on them (then you just need to unzip and rum npm link inside the folder)
  • for about an hour have people dive into the workshops. show a demonstration on a projector or verbally if you dont have one of how to solve the hello world challenge
  • during workshop time explain to people that they can and should bug the person next to them to help out if they have a question, or to raise their hand
  • I like to force people to throw their hands in the air and yell 'WOOOO!!' each and every time they complete a challenge, as it tends to keep the ambient noise level up which encourages more question asking
  • once or twice during the hour you might pick a random challenge a live code a solution, but this is optional
  • at the end of the hour you can invite someone up to show off one of their solutions in lightning talk format
  • provide half an hour before and at least an hour after of socializing time. the goal isn't to have people complete the workshops, it's to meet mentors and peers and make friends and get their feet wet in the node.js pool party
  • ask local tech companies to throw in a couple hundred bucks to donate to the venue, or to buy drinks/snacks. I've been using this spiel:

"
At some Node conferences around the world for the last 6 months (NodeConf US, NodeConf EU, CampJS Australia) myself and other collaborators have been teaching NodeSchool workshops to conference attendees. Cumulatively we've taught just over 1000+ adults in person, with another few thousands downloads from nodeschool.io directly (people doing them at home on their own time).

I really like the event format because it's highly collaborative, and based on peer learning. Instead of the usual meetup format where everyone listens to a powerpoint, the workshop format we've developed engages everyone simultaneously, while also letting attendees progress through the workshop at their own pace.

We also invite mentors to come and float around the room helping people when they get stuck, in addition to encouraging people to ask questions to the person sitting next to them.
"

Better Home Page Map

Per discussions in #127 and #125 it would be great to have a map style that gave priority to upcoming events while still showing past events (to show just how crazy many there have been and if there has been activity in your area in the past).

@finnp commented here about having a smaller dot marker for past events. I think this sounds like a good option and is probably doable through leaflet/mapbox.

Here is the code where we're creating the geojson for the map, we can probably add a step in here to give old events a different marker.

Incorporate Spreadsheets!

Assigning this to myself but welcome help!

  • I want to create an events calendar page with map, using jlord/sheetsee-calendar
  • Handle all old/new events with a spreadsheet and sheetsee.js instead of manually adding/subtracting them. This will be easier for people to contribute to and help us keep record of past events.

Add anonymous usage data to workshoppers?

I was just thinking that it might be useful if learners were able to opt-in to "anonymous usage reporting" which would basically send the source code and output of all their jobs (falied and successful) to a nodeschool.io server, where the workshop authors could consult it to get an idea of what kinds of mistakes/confusions users are making, so they can use the data to improve their workshops.

Alternatively it could just report the success/fail condition of the verify/run commands, which would still be useful and more anonymous.

split between "core concepts" and "electives" no longer makes sense

...or if it does, it doesn't really make sense that Bytewiser and Functional JavaScript are in core concepts but Expressworks or Going Native aren't. It's probably about time to eliminate the distinction (although having the workshoppers sorted by importance (which I leave to Max or Rod or whomever) is probably a good idea).

add user accounts

proposed flow:

you can log in with Mozilla Persona to workshopper on the command line so that workshops you complete can award you open badges

this means your progress is saved to your profile, which is viewable from nodeschool.io. I'm not sure if we need to have a login for for the web app side of things, but it would be cool if it showed the things you've earned in a way that is shareable

I have an existing auth server abstraction that could work well here:

https://github.com/maxogden/doorknob

We'd need to add a CLI login flow, e.g. with the twitter API you can have the user open a generated link, oauth in, and then copy paste a 4 digit code to their terminal that you then use to get a token

I believe either @toolness or @brianloveswords has already started working a little on the auth side of things

also @jlord has expressed interest in designing some hexagon badges for the workshops

Make translations SEO friendly & Linkable

The current translations are not SEO friendly because the javascript system is hidden for search engine crawlers and because the languages can not be directly linked using URLs. To serve proper html pages the homepage system would need to be changed to address that.

My approach would be to create "storage" repositories for each locale: ja/cn-tw/es/hu/etc. that contains the translations only and a travis script on the main home page that triggers the travis scripts on the localised sites that renders the files to gh-pages using a grunt/gulp/or else task.

Note: This could also solve other issues with the current translation system like flashes of the english text before the localised is loaded or the lack of awareness for the translators if some translation is missing (alert notification email)

add translation maintenance commands to package.json

@watson came up with an idea for a npm run translate command that (I think) would work like this:

npm run translate es would create a new translation file (languages/es.json) pre-filled with the english strings. to implement this he is going to write a cheerio script that uses languages/selectors.json to scrape the various HTML files in the repo to grab all of the english strings for each selector.

In the same vein I think it would be nice to look into simple things we can do to try and catch translation errors or help find translation discrepancies, e.g. to catch things like this fe39a2d#commitcomment-8143148

I have created a issue label called translation needed.

I'm thinking that if we get a PR that changes markup that we can merge the PR without first translating, but we should open an issue to track the translation progress that has a checklist like this:

  • es
  • js
  • zh-tw

These translation issues should get tagged with the translation needed label so that people looking to contribute translations can get involved more easily.

Making these translation issues is the manual way of tracking translation progress, but it might also be cool to have an e.g. npm run missing-translations command that diffed all of the translation files against the HTML and tried to find discrepancies automatically. This might be easier said than done, though, so having a manual process (as described above) is also a good idea IMO.

Any other ideas for simple tools to make maintaining translations more sustainable?

Theres another related discussion here about SEO friendliness of translations: #97

Node School Social Presence

We don't have any official FB page or Twitter Account. I guess we should have one to increase our audience. I can make one right now, as I am experienced in running couple of web pages and twitter account so I can run them too.

Any suggestions? About name?, contact details? etc...

Nodeschool event page not updating

I was under the impression that we were using spreadsheet as DB for the events, but I am not sure its rendering the upcoming events properly? Anyone knows what's up with that:
On the site it is displaying the events from May, and we're in September...is it probably something to do with parsing dates?
Thx

Update DNS settings

I just noticed that the DNS settings of nodeschool.io are outdated. The A record should be updated to 192.30.252.153 from 204.232.175.78. The website still works, but repositories like https://github.com/nodeschool/london/tree/gh-pages are not served as e.g. nodeschool.io/london. I think it would be nice if this would be possible again.

nslookup nodeschool.io
Server:     192.168.147.3
Address:    192.168.147.3#53

Non-authoritative answer:
Name:   nodeschool.io
Address: 204.232.175.78

If you are using an A record that points to 207.97.227.245 or 204.232.175.78, you will need to
update your DNS settings, as we no longer serve Pages directly from those servers.
Github Pages

Best,
Finn

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.