First
So let’s get started. This place I’m using because I think messenger is too easy to lose stuff in and this was easy to setup in like 5 minutes. Over spamming this on messenger I think this would be a better format and this helps in my goals since a lot of this I will recycle into other tutorials and stuff I make for the general internet (I know many who have been begging me to write this sort of thing for a while - you have no idea)
Go on below. It’s long, mostly reading and you can kinda skim that for now. I made this a page so that you can go back. I suggest programming first, but like whatever order works for you. Requirement you get things done.
Reading is long and lots of things I’ve already said to you, but to get my point across.
Programming
This one is light programming and mostly reading. But a starting point.
Install python 3.x
See if it’s already installed, so on your terminal open it and type python3
and see if something appears. Otherwise set it up quick.
Tutorial to install python3 on mac
That’s a possible one that works. Otherwise just google osx install python3
and look through a couple and do that.
It doesn’t matter which that you do so long as you have somewhere that you can type python and run code in. You might already have it so just check the version.
This step isn’t really important, so if you’re stuck I’ll guide you around and basically help you set it up or do it for you (I can’t have you stuck on installation). Having a working setup that runs is all that matters.
If this takes longer than 20 minutes than repl.it works. It’s a website with a web environment that has the basic environment set up.
Hello world
A rite of passage.
Easier compared to a lot of languages (ahem Java, C, god forbid Assembly)
print("Hello world")
Here is how I did it on my computer (yours may differ).
In my terminal
❰harsh183❙~❱✔≻ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello world")
Hello world
That’s it?
Yes.
Start small and grow big. But still do this even if it feels too basic. Mostly this ensures you’re setup and next lesson I build on from here.
Read below to understand some of my goals.
My goals
Go about this differently. By now it’s obvious the normal ways of approaching things aren’t really working for you, but hey I’m not too great within them.
Once you start getting used to the baics and fundamentals you’ll be able to follow along existing material and styles quite well, but for building your base of knowledge and practice I think taking a different approach is better.
Learning by doing things
Python
One big issue with Java is that it’s not immediately useful for anything, and it takes a while before even getting started with the most basic Android. I want this to be different so I’m using python.
Python is pretty different. It’s a scripting language with the focus on doing things fast and rapidly changing. You don’t really have to worry about classes or functions, imports or main args, they exist but all hidden away. You don’t have to worry about the types of things right away and these are quite flexible.
Projects
Python is also setup in a way that you can actually do things. Like a very wide variety of things. And many useful things. And it makes a lot of seemingly hard things kind of easier to do and getting basic proof of concepts and prototypes up earlier.
So my focus is going to be on small different applications that you are going to do in a variety of areas. Heck you can build on more from what I show and each of these are really cool areas that you can go on and explore if you like.
The goal is to learn the concepts through that, so you end up realizing
- what the concept is and why does it matter
- intutively where to use this
- how you can do surprisingly cool things while still knowing very little
(the last one is what I did a lot of things, despite knowing almost nothing I was still trying to do shit while people who knew more were not. This made a difference)
So what can I make?
-
Chatbots - Discord, Slack etc. These can go from quite simple to quite interested. And all sorts of interesting applications can be made into these.
-
Websites - like actually functioning things that have proper databases and can do things, it can range from simpler things (like this blog itself), or to more complex sites resembling the ones we see today. These can be quite diverse
-
APIs - like websites but the backend bits that other programs, web interfaces and our own apps can use - this can go in very interesting directions (I can go into app development, how to connect other apis, how to scale, cache)
-
Bots and automation - Life has a lot of terribly designed and annoying things to do. Things that take time, sanity, will to live, and boredom. I particularly had this one bad but bots and automation helped me quite, quite far because of a lot of my exec dysfunction. This can be quite fun, and can range from the very simple to the complex giving a very good path.
-
Machine learning - Python is pretty much the goto for machine learning now, and not something to start off with right away but like lots of interesting exploratory work can be done here.
-
Statistics and visualization - This can do what R did pretty well plus more. Again, people are surprized by how much can be done in how little of python code and how effective statistics can be. Might be hard to imagine now but trust me you can do interesting things.
-
Games - games are very hard to make and I have mad respect for the ones out there doing this. But we can make simple-ish ones in pygame. I had a friend Derek who just transferred over from CMU and he told me their intro to CS had pygame as their final project and people did make pretty interesting shit.
-
Computer vision - this can get hard quick, but throwing in a few libraries and techniques together you can put sometimes seemingly cool things.
-
Hollywood style hacker output - Very easy to do but you’d be surprised how impressed people were around me when I put it together during a school presentation and I was bored.
-
Combine them - I can keep listing more and more, but you get the point. Remember this: once you learn something it kind of can work anywhere, like example of the top of my head: a discord bot that uses statistics to figure out the most relevant words from each channel, and displays that on a website and app.
Well I haven’t decided the order and how I do things but that I can make up as I go along. This is all subject to change and my goal is to take you along and “show you a bit of everything and everything about something”.
Programming is soo diverse. It takes forever to find your thing but when you do it really starts becoming fun.
Uuuuh I think you have the wrong person, this looks too complicated I just need to know simple stuff not complex stuff like that
No.
I am going from the ground up and the goal is that the complex stuff is really just simple things put together. Knowing how to put together something useful, learning how to connect things - the learning can go far and the general principles will apply anywhere lifelong.
Absolute basics, like I won’t even assume you know how to print strings, or add two numbers. When it goes too slow tell me to go on faster, when it’s fast likewise. End goal is learning things, and at a pace that works. The more prior knowledge you have lets me go on faster and the kinks and issues you are stuck at.
Everyone good started at this exact point. They got better doing things. So will you.
This is not too ambitious. I know what I am doing. Trust me.
Commitment
I really liked your idea of having actual sessions. At first I was hesitant because I am terrible at following up with this sort of thing but the more I thought about it could work. No garuntee that it does work.
Some sort of reward/punish system may work. I don’t know, this is something that takes a while to figure out but once there is a setup that works then things start going faster. Initially things will be really slow.
There is one reality though: work. There is a gap that exists, and it’s not as much work as you think, but if there is no or negligible work done no matter what you try, you will never get through. And it’s not just here, but any field, there is work. The good news is that work can be fun, it can be all over the place, it can be interesting, it can be applicable to real life scenarios all the way. It can be done in 15 hour bursts with a week of no work, or it can be regular. Work in the way that defines you, people who haven’t experienced work that doesn’t suck in their whole lives will think of work as something that sucks until something actually works.
Give this one summer. I dare say this will be one of the more important things you do and I’m sure you can do with one or two less hours of Netflix and social media here or there.
I commit to making an effort to help you learn, and I need you to give the same. I do this solely out of my desire to help and see you prosper, but this is my help to you. I can only show you the way and light the path, but you are the one to step forward.
If you don’t want to - say no now. So long as you put in work and have the forward momentum I can promise this will work. You have asked for something serious and I will actually respect a no. What I won’t respect a yes and you don’t honor it.
Different
This is different. I always wanted to do this but never really had a shot to do this with you. I have done things like this with other people and it’s worked. It will be accurate to say this is how I learnt things - in a way it’s the harder path but the better one.
Trust me. You have not tried this. At least not done well. Colleges or schools don’t teach this way at all. As much as I love online courses (Control+F to find me) they can’t really do this type of things. Only a few I see online actually do this right. I will adapt towards you, so at first you won’t feel a fit but over time I do that.
Education has this weird idea that there is a standard path for things, that there is only one way to do it but actually the best of the best work on their own ways. My goal is to help you find your own path which works for you, you won’t work on the exact path I did or nor will anyone else.