<commit_before><commit_msg>add newbie guide<commit_after>---
layout: post
title: "Newbie Guide to Hacking/Programming"
date: 2016-12-30
comments: false
published: True
categories: newbie noob beginner tutorial hacking programming coding
---

I very often will encounter those who wish to enter the world cyber security or coding.
They want to learn about computers, programming, hacking, hardware or anything of the sort.
I can't say that I am an expert in any of these fields, but I feel that I have collected some excellent sources of information that could prove to be useful.
I hope to use this page as an excellent start in those wish to pursue these career fields.

---


**note that this is a living document**


# Purpose

The first thing to consider is your purpose for learning any such thing.
**Technology is a means to an end**.
In other words, I believe computing should serve a greater purpose than JUST computing.
What are you in this for?
To hack a friends Facebook account? To assist those in need? To build an solution to a problem? To make lots of money? To satisfy a curiosity and learn?
Understanding this purpose is vital to your success.
Coding will be more enjoyable and educational if you have a goal/purpose in mind.

# Be Fearless

[Imposter Syndrome](https://en.wikipedia.org/wiki/Impostor_syndrome) is rampant in this field.
There are so many things to learn that you will never possibly learn them all.
Remember that every 1337 coder started with their first baby steps too.
Always ask [smart questions](http://www.catb.org/~esr/faqs/smart-questions.html) and continue to learn, eventually you will get there.

# Study Up

Before you do ANYTHING, read <NAME>'s [How to Become a Hacker](http://www.catb.org/esr/faqs/hacker-howto.html).
This document is extremely well written, respected, and living; it's relevant to ANYONE interested in any kind of tech.

I want to give my personal treasure troves I have found across the internet for newb hackers and coders.

If you are into books, watch the [Humble Bundle for books](https://www.humblebundle.com/books/) closely, they have been known to offer some excellent books regarding tech education.

I love to watch videos to learn, here are some personal videos/channels that I enjoy that provide varying types of tech information:

- [Computerphile](https://www.youtube.com/user/Computerphile)
- [Defcon Media Server](https://media.defcon.org/)
- [Eli the Computer Guy](https://www.youtube.com/user/elithecomputerguy)
- [Gray Wolf Tech](https://www.youtube.com/user/GrayWolfTech)
- [Hak5](https://www.youtube.com/user/Hak5Darren)
- [Live Overflow](https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w)
- [Techquickie](https://www.youtube.com/user/Techquickie)

If you are interested in interactive programming tutorials, I strongly recommend:

- [Free Code Camp](https://www.freecodecamp.com/)
- [Codecademy](https://www.codecademy.com/)

In most cases, you should learn how to code, I think that for most, Python is an excellent language to start with.

Go and network with others!
Try using [meetup.com](https://www.meetup.com/) to meet other programmers and tech enthusiasts in your area.
Join your local clubs, help others and you will be helped.
This entire community is built on supporting each other.
If you interested in hacking or security in any capacity try to make it to the annual [Defcon](https://www.defcon.org/).

I think that using the Linux operating system is one of the best ways to learn about computers.
Life will be harder for a while, but you will absolutely learn a ton of information relevant to any real tech field.
I have been using [Linux Academy](https://linuxacademy.com/) for a month now and I am extremely impressed.
I think that the site is well suited for beginners and experts alike.
Otherwise, there are tons of other resources on Linux out there.
I recommend starting with Ubuntu as a beginners distro, but the jury will always be out on that one.

My personal opinion, I think you should be on Reddit.
There are a lot of great reddit communities with highly experienced individuals, here are some of my faves:

- [/r/homelab](https://www.reddit.com/r/homelab/)
- [/r/datahoarder](https://www.reddit.com/r/DataHoarder/)
- [/r/cscareerquestions](https://www.reddit.com/r/cscareerquestions/)
- [/r/coding](https://www.reddit.com/r/coding/)
- [/r/programming](https://www.reddit.com/r/programming/)
- [/r/compsci](https://www.reddit.com/r/compsci/)
- [/r/linux](https://www.reddit.com/r/linux/)

If you are looking for a more formal education in comp sci, everyone seems to recommend [MIT Open Courseware](https://ocw.mit.edu/index.htm)

I think every techie should assemble a simple pc at least once in their lifetime.
I know I learned a lot from it, and you get a computer you are really proud of and understand.
Check out the [/r/buildapc](https://www.reddit.com/r/buildapc/) to get started.
If you need help picking parts for your rig, look at [pc part picker](https://pcpartpicker.com/).

If you don't think that all of this is enough, this [awesome list](https://github.com/sindresorhus/awesome) should keep you busy for a lifetime (no, seriously). The above links are what I give to beginners, for my more curated and advanced links, check out my other [learning resources article](http://tylernakamura.com/2016/05/12/learning-resources/)

# Retain Your Information

Now that you have gathered all of this awesome information, focus on retaining it in your noggin!
There are a variety of ways to do this, but I recommend a few.

1. Flashcards
2. Teaching Others

Flashcards are what I believe the best way to retain your information, see [here](tylernakamura.com/2016/08/16/my-flashcard-solution/) for my flashcard solution.
Teaching others what you know is another excellent way to give back to the community and reinforce your knowledge.

Happy Hacking <3

{'fraction_non_alphanumeric': 0.08399931984356401, 'fraction_numerical': 0.005781329705832341, 'mean_word_length': 4.294329432943294, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 4, 'https://': 25, 'lorem ipsum': 0, 'www.': 21, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7237588', 'n_tokens_mistral': 1695, 'n_tokens_neox': 1622, 'n_words': 788}