Skip to content

lewhacks/hacker-resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

hacker-resources

Stuck not knowing what to do? Here are some gr8 resources for the aspiring developer!


Table of Contents

  1. What is a hackathon?
  2. Beginner Resources
    1. Using Git and Github
    2. Linux? What is that?
    3. Python
    4. Web Development
    5. Game Development
    6. Data Science
    7. ...more to come!
    8. HTML/CSS
    9. Bootstrap and Responsive Web Design
    10. How to publish your website
    11. Great domain and hosting providers
    12. ...more to come!
    13. Ruby
    14. Javascript
    15. Tips and Tricks
    16. What should I use to write code?
    17. What operating system should I rely on?
  3. General Resources

What is a hackathon?

"Hacking"? I don't like the sound of that.

A hackathon is an event where developers, makers, and designers come together, and build amazing technology in a very short amount of time, usually 12 to even 48 hours. With these projects, not only are they able to win prizes, but create something revolutionary that can help change the world. Usually occuring during the weekend, hackathons provide free swag, great food for all, and a great environment for developers.

Wait, do I have to meet other ... people???

When you go to a hackathon, you often form teams with others, whether they are with people you know, or strangers you never met. Although this may seem daunting and scary, forming a team is an integral part of a hackathon, and through it, not only can you network with amazing people, but also learn a thing or two from them.

But what if I'm only in high school?

Student hackathons are usually the most prevalent. One of the most prominent organization / league for hackathons is Major League Hacking, help sponsor hackathons big and small, providing them the resources to become an amazing event.

Whether you decide to attend a small hackathon (like lewHacks()) or a large hackathon (like Pennapps), always make sure to have fun, and let your creativity run wild!


Beginner Resources

With the growing impact technology has in the world, getting into coding and programming has never become easier. With the vast availability of not only great, but also free and open-source resources, it is nearly impossible NOT to learn code.

Using Git and Github

You see all these programmers and developers using this "Github". What is Github? What is git? What does this all mean?

Git, developed approximately a decade ago, is what is known as a version-control system. Linux Torvalds, the father of the Linux Operating system, built Git so that other developers could work together and push code to the Linux kernel, as it was an open-source project. Git made sure that developers who worked together on a single project could effectively make changes to it, and fix any conflicts that occur when they do.

Eventually, Github would come. What's the difference between Git and Github? Essentially, Git was developed as a program and application, specifically for Linux systems. However, Github was developed as an online hosting service for Git projects. Each project was known as a repository. In fact, what you are reading right now is documentation that is part of a Github repository.

Here is this process shown visually. Alan and Derek are two developers working on the next Twitter app. They both live in different parts of the world, and they find that emailing each other files of all the code was not only inefficient and time-wasting, but it also lead to problems in the code. Alan was clearly a better developer than Derek, as he had a different (better) style of writing code. Their partnership in the project lead to disastrous results in the app, and it didn't work out. However, in Git, that was different.

When you initialize an empty repository on Github, you start on what is known as a master branch. This master branch is where you push all the changes you made to your code.

Let's say Alan writes one file. He then writes a commit, which essentially is a message stating what has been changed, and pushes it onto that master branch.

Alan (file.js) Commit: Added file.js file.
      |
----------------------------------------

After he pushes it, he enables Derek to have access to that repository. Derek clones the repo, meaning he takes the code on Github's servers, and essentially downloads a copy of it so that he can access it locally. He adds several files to it, writes a commit and pushes it onto the master branch.

Alan (file.js)    
      |             
----------------------------------------
                  |
                Derek (blah files) Commit: Added new files

Alan wants to work on that again. Therefore, he does a pull on the code, meaning that he grabs the most recently pushed copy of the code, and replace it with the one he has currently. Of course, Alan may need to do a stash, or merge with a prior commit, but I won't get into that today.

Overall, git + github are great tools for developers who want to work with other developers, as well as make their code available online as open-source, enabling others to utilize it, and send issues and pull requests, which are essentially commits from developers who do not have access to the project, but want to provide code fixes, or any suggestions for improvement.

Still confused? Here are some additional resources.

Linux? What is that?

Python

Created by Guido van Rossum, Python can be considered one of the most beginner-friendly languages out there. Perfect for beginners who want to get involved into programming, and does not want to get trapped into the horrors of object-oriented programming.

There are definitely people with experience in Python, and want to build some cool stuff with it.

Want to make websites and applications with Python? Flask and Django got you covered.

Flask

Django

Interested in building games? Python also got you covered with their pygame library!

Want to work with data and build applications that work with data? Python is a suitable language for data, comparable with R and MATLAB.

HTML/CSS

So you decided to go the path of the Hyper Text Markup Language. Interested in building websites? We got you covered.

Hmmm, I mean, I can build a simple website, but how do I add design and flavor to it?

Introducing Bootstrap.css. Bootstrap is a great framework in CSS that enables you to make responsive website designs. Not only are your websites going to look beautiful, but they are also responsive, and will not look like poop on a mobile phone or tablet.

Now I have a good website. How do I deploy it so that it has a URL? Of course, what you may have built is a static website. A static website is a site that does NOT have login forms, as well as anything that will require you to setup databases and storage systems for data, like user login. Of course, that does not mean that a static website is useless. They are perfect for people who want showcase their portfolio, their projects, and themselves. Building websites with a focus on design (such as with Bootstrap), and not really all the extra server and database gunk, is known as front-end web development. Those who focus on building the stuff that happen in the back, such as the servers and the data from users, are known as back-end developers. People that have expertise in BOTH front and backend development are known as full-stack developers.

What about domain and web hosting? What is the difference between those?

Web hosting is basically any server where you can plop your website. Of course, there are various types of hosting, and services that enable you to host a website. Amazon Web Services is a quite popular one, but you can even host your own website on your own physical server. Web hosting is great for people who are full-stack developers, and have a website that has a lot of functionalities, such as login forms.

A domain is basically an address that identifies your website. It provides the URL and DNS that makes your site accessible to the public. When people often have web hosting, they also need a domain that points to the web hosting, so that when people visit the site, they don't have to type wwww.something-webservice-blah-blah.webserverprovider.com, but instead mywebsite.com.

If you want deploy a static site without having to pay for hosting and the domain, doing it through Github Pages is a good option.

Of course, if you want to have a cool official domain name, there are a few great and hackathon-friendly providers.

...

Ruby

Javascript


General Resources

Looking for inspirations? Maybe developer tools? Free stuff? Resources to help with your next project?

About

Stuck not knowing what to do? Here are some gr8 resources for the aspiring developer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published