lainchan / Ω

Where to start

A newb · 2019-02-05 02:16
I'm probably going to be posting this many places but i thought that I would start with here. Lets begin with my lack of knowledge. I'm pretty stupid when it comes to computer stuff. I can probably work my way through doing XYZ with google but that is about it. I want to be able to do stuff better with computers. I know that it doesn't take a powerful computer to do lots of stuff but im running xubuntu off an external hardrive usb booted from a port on my laptop with an i3 core and 2 GB of ram. Not a lot of power to work with. Probably more than enough to have fun. I'm sure lots of people are into hacking and stuff. I like getting stuff to work more. Where do I start? I know an understanding of a programming language would help. I've started, stopped, and returned to programming many times. My library system provides a pretty good resource for learning a lot of computer languages. I'm bad at learning it but i haven't figured out why. I do enjoy figuring out how to type commands into a bash terminal. Feels more like game commands I'm used to and is very cut and dry one might say. So with that in mind, where do I start with computers? I don't care much for 'hacking' as much as just getting things to work and setting stuff up. I guess that is also considered hacking seeing as hacking is a hell of a broad term. I'm a little overwhelmed when it comes to computers. SO much to learn. Should I start focusing on certain things or just read over stuff until I start having a fragmented but general understanding of a lot of things? I am reddit scum and will delete the post if it turns out that I have made a horrific error in judgement of where to post this.
Hacker · 2019-02-05 02:25
Once you know basic control flow and whatnot, try to make something marginally useful for yourself. Some backup script is a common start. Read through projects you like. For example, if you use youtube-dl, take a peak and try to understand how it works.
Dox · 2019-02-05 02:40
Can you be more specific? I can't tell what topic exactly you want to know about.
A newb · 2019-02-05 03:01
>>15527 More specific... everything. More so where to start. For example, I get on this chan and read about different torrents, scripts, how old stuff works, what linux system to use, how to get a pi working, what X system is missing, what preferred GNU. General knowledge gets me in the door of knowing what the titles and stuff means, maybe more based on what ive had to do to get my own computer stuff working. But computer stuff is... overwhelming to say the least. to be honest I'm sure this reply only made things more confusing but again, where to start when it come to computers. I'm sure there is no shortcut to that kind of knowledge but it would nice to get a general direction of where to start.
Six · 2019-02-05 03:07
I learned linux by installing arch(for the driver support, initially)
Unidentified · 2019-02-05 03:40
>>15528 Honestly I'm not a computer expert either, but just as general advice, I think it's easier to learn something if you have a specific goal in mind. "I want to do x", then you can begin to research the steps necessary. Even if it's only following instructions, you will still learn something. As I understand it, computers are tools used to accomplish tasks. So what tasks do you want to accomplish? I would start there.
Netrunner · 2019-02-05 03:58
>>15525 I'm in a similar position but I've been working on it for a bit now. Here is some advice I have based off my own self-learning. >Find friends I am lucky to have a few friends who are as tech-interested as me. They pushed me to understand more about computers, but primarily programming. Good friends are hard to come by. Try making friends with people who like to teach and seem way better at this stuff than you. >Vary languages I didn't learn how to program very well, but learning how to read programs is not as hard. Once you get that down, it's mostly just taking the libraries to heart. But it seems you're past that. What I like to do is spend one week on one programming language. Then I will spend another week on a different one. Then I will come back to the first. It's worked for me so far. >Do projects Insanely useful for helping you learn. Undertake a project that could take a week or so to align with your programming learning. Back onto friends, at your stage it's more about knowing what you can do with a certain language. Too often I'll try to needlessly complicate a program because I'm not familiar with the methods of the language I am using. Unfortunately, knowing what methods are available to you is best learned from other people I've found, since you can't really put a search query in for some way to do things that you have no idea about in the first place. >Read a book lainzine has some recommended reading. usually it's pretty niche. one great thing about here is that people drop tons of super informative PDFs. reading them is very helpful. >Networking I would highly recommend you lurk /sec/ for this. There's lots of information there on networking protocols and the like. Alternatively, read a book. >Depth vs breadth eventually, you'll have to figure out exactly what you want to do. "computers" is a very broad area, so someone who is good at one thing will often be clueless about some other area. you can be a great programmer with little networking knowledge, and vice versa. if it's hacking your after, you're going to have to be a jack of all trades, master of none. unfortunately, that's a very time-consuming thing. >Stay motivated Learning is supposed to be fun. If you aren't having fun learning about something, or you aren't having fun with your projects, stop. You'll sponge up way more information when you're having fun. Friends are also a great source of competitive motivation, they're a good goal to shoot for, especially if they're way more savvy than yourself. >Explore Play around with stuff. You can learn a lot by approaching an interesting topic with no set goal in mind. This is also a key to exploits. If you approach something with a concrete goal of what you have in mind, that can actually work against you. Similar to how you might go to desmos and play with math to conceptualize it better, play with computers. I'm not very good with computers. This is just how I approach my personal learning. Take from it what you will. Fragmented knowledge is fine, but make sure you have something to stand on. You don't want to get too fragmented, to the point where you know bits and pieces of information but never how to actually apply them. There is no shortcut. It will take thousands of hours to get where you want to be. And if you're a good learner, you will never be where you want to be. Good luck.
Wintermute · 2019-02-05 04:44
>>15528 It's not beneficial to learn about software for its own sake; however, software you use you should know. To this extent you should read the documentation, for cli applications get started by typing "man man" in terminal. When you're trying to solve a problem which your software fails to solve or fails to solve well make sure to access the options available before picking one. This will make your computing experience productive. If you're interested in learning to program might I suggest "The Little Schemer" from a purely pedagogical perspective it's a great way to get into things (I wish it was what I learned from).
Dox · 2019-02-05 23:19
Setting yourself huge but achievable goals that you can easily make yourself passionate for is how I got all the basics on linux administration. I've been doing software development in school, nothing exciting, just lame C# and Java and dated programming paradigms. What really bugged me the most was tooling. Back then you were basically forced to use unnecessarily big environments like Visual Studio, it was unthinkable to develop C# software otherwise. Visual Studio was way too bloated for my taste. As soon as we picked up Java the same ensued, we download our IDE and get some useful insight on how to develop Java as well as some of its quirks, but I never, and this is the point, understood how any of the technologies I was using worked. Everyone in class became dependent on some tools that may or may not be actually productive for a task at hand, no one ever opened a good old command prompt to compile a basic application with javac. In fact, no one knew what javac even was. Take their fishing rod and they never catch fish again. After playing around with the command line, installing several linux distros and running into heaps of issues, I had researched and solved enough of them to get a good understanding of how linux systems look like as well as some basic and rather barebones tooling for several programming languages. I spent some months on elementary OS (after a pathetic attempt and first experience with debian) and lived there. I was dual booting, but I was happy to have offloaded a big chunk of my workflow to more simple alternatives on linux. That's when my autistic senses kicked in and signalled me that my system is still too bloated to be comprehended and properly administrated, without having to turn to the webs to troubleshoot literally any problem. In reality, I was bothered by debian specific nuances, like their package manager I didn't understand to use, cumbersome PPAs and such. It was only then that I was about to embark on my journey throughout arch linux. I'm not going to say the whole process of dual booting it on a laptop with soykaf support and optimus/nvidia bullsoykaf wasn't tedious, let alone my managing to properly go through the installation process. I failed that install many times, mainly because I couldn't reason the differences between MBR and GPT, or about the EFI ecosystem and grub. I do understand that difference now, more thoroughly than I could have ever asked for, even if forcibly. I went through countless grub repairs after experiencing the typical issues of dual booting, winblows being authoritative yet again. The grub rescue screen doesn't scare me anymore, I know how to mount a bootlader myself now. It's all these little problems standing in your way that make you go through the learning process, lest it was for me. So I had arch now, happier than ever to be able to be able to install it and repair issues I encounter. Unbeknownst to me, the configuration was really fuarrrking tricky. I would argue my countless hours playing with graphics drivers on linux with an optimus-utilizing laptop were wasted, but the rest was not. I learned to write little scripts that set configuration options for my touchpad, multi screen setups and automated some routines I was too often doing manually on a terminal. I slowly learned shell, making my productivity within the terminal skyrocket. Without me paying much attention to it, all my tooling was shifting from huge bloated graphical to little command line utilities I could somehow combine using shell. My autistic tendencies reactivated as soon as I stumbled upon suckless.org. I just KNEW what I was going to do next, replace all my bloated software! I was stuck up with gigantic browsers, terminals with crappy performance and tedious configuration, difficult-to-reason window managers. Not long after my new idealistic setup was based on many recommendations of the software purists over at suckless.org and http://harmful.cat-v.org/. I agree most software is like kicking dead whales down the beach. And the reason it is like kicking dead whales down the beach, something I synthetisized within my brain long before turning to the software purists, was sheer complexity. No wonder nobody understands all this crap when it's this humongously complex. With simple *nix utilities and suckless software, I didn't even have to turn to the internet anymore to accomplish what I want, be it fixing issues or configuring it to my needs, because the man pages are sufficient. My ultimate endeavor was to make my entire system, my entire workflow controllable efficiently without a mouse. I mean everything. I code and write in vim (vis actually, https://github.com/martanne/vis). My browsers (qutebrowser, luakit, surf) have vim bindings (not even secondary vim support by extension, like for ff and chrome). My WM is entirely keyboard based. My music player is a curses terminal application with simple intuitive vim-like shortcuts. I browse files with terminal based vim-like file browsers, on the rare occassion I can't just cd ~ && ls . I can even view pdfs with only the keyboard. People tend to say playing the keyboard warrior is retarded, but it's a much cleaner and hassle-free environment for me, and a gigantic improvement to when I "developed" on winblows. Getting to this point required tons of configuration and experimenting and my dotfiles repo is perhaps the repo with the most contributions by me. The time investment is considerable too, one could argue I didn't get my worth for the time I invested. If I was actually future oriented I could've put all this time into getting into the machine learning biz or w/e, or so they say. But I would still be a winblows users with the efficiency of a monkey only patching unnecessarily huge frameworks together and praying the ones behind the frameworks would one day make my work easier. Maybe I did blow a lot of time on needlessly perfectionist and purist configuration for my less bloated system, but it was a hell of a lot of fun getting to this point. Whenever my system breaks irreparably, like the one time I removed void's base-system package (the next best thing to rm -rf / ), I can just partition /, reinstall void, pull my dots, execute my scripts, compile my suckless utilities and install a list of packages, and I am up and running again. Not considering installing packages (fuarrrk netspeeds here), my system is up and running in half the time of a winblows install, with less effort too. To me, it's a thing of beauty. I encourage you to do the same!
Apoc · 2019-02-08 00:05
I suggest a more radical approach to learning, but it does require real interest and lose the fear of making mistakes. As stated above, the software is swollen, full of dependencies, hundreds of commands and several layers of abstraction. The layers of abstraction are a giant problem to learn how a computer works, because they purposely hide many things that would be fundamental to understanding. You can keep a Debian desktop, but you will not understand 50% of what is really happening. It's much worse to learn from Windows. What I recommend to learn HOW a computer does what it does is chose an old 80's system and learn how to program it, it can be a Commodore 64, Nintendo, GamBoy, Apple 2, etc. Do not be shocked to hear "Assembly is only for geniuses" because that is a lie. Make small programs and you will learn in a simple and direct way how memory REALLY works, how the video works, how the input works. By working with a simple system you remove a lot of unnecessary load that hinders understanding, and it will become clear the concepts that make modern systems work, is like learning Latin. There is a lot of material on the Web for the old systems, try it out and you will discover a new world. (Obviously, you can write a program on your PC and run it on an emulator) For Linux systems I recommend the same approach, the fewer abstractions and the cleaner the system the better to understand it completely. Try Slackware (http://www.slackware.com/), it's a very clean distro that will allow you to have full control of settings and see how each part of one distro interacts with the other. The system manual is very informative and you have many FAQs and HOWTOs in the directory "/usr/share/doc/Linux-HOWTOs" Finally learn the main Unix commands, and always use 'man' when you need help.
The Plague · 2019-02-09 08:43
>>15525 I'd say you are already on the right track. "Computers" are broad area of expertise and getting good with them takes a lot of time. One thing you can do is getting involved with some community sharing their projects, knowledge and tips. Tracking Linux news sites such as It's FOSS via RSS is also a good idea. As for programming, if you're bad at it, maybe try Python?
Marly Krushkhova · 2019-02-10 12:21
>>15531 >>15543 good soykaf good soykaf. thank u
Tank · 2019-02-10 17:59
>>15579 I disagree. It's just as well to go through the long confusing annoying route mentioned in >>15543. Even if you start with assembly, you still won't understand the intricacies of hardware. Better to do whatever is most enjoyable than trying to do things "right".
Joey · 2019-02-14 23:01
>>15526 backup script is a great idea. Easy enough to learn (depending on your skillset might take 1-5 hours) and incredibly good to have.
Pris · 2019-02-14 23:03
>>15532 To add to that, I highly recommend https://www.cs.cmu.edu/~dst/LispBook/ I wish I'd had this book a few years ago. Moves very slowly, but teaches a broad (and deep) overview of CS topics, along with a very useful programming language
Void · 2019-02-15 14:56
>>15525 Just find a topic you like, and start digging in. If you try to force it just because you like the idea of being a hacker or something there is an okay chance you wont have the motivation to keep going. A pretty cool place to start is buying a little bit of hardware (motion sensor, speaker, rpi) and building out an alarm or something. You'll be forced to learn a bit, and have something physical to use when your done. Designing your own backup system is good, assuming you have your own hardware to back it up Learning how to write an IRC bot or discord bot would also be a useful tool that would force you to learn (assuming you actually write the code ) Anyway, just try to have fun with it. Checkout leet.club Cool community with alot going on, if security is your thing.
Tequila · 2019-04-09 19:25
>>15531 >Find friends This so hard. I used to have a ton of personal projects during college when I was surrounded by other aspiring devs. Now I'm doing enterprise soykaf where no one cares about coding beyond copying and pasting things for the job, and most of the friends I still have only watch anime or play video games during their spare time, and it's been indirectly discouraging me from doing my own coding on the side because if I make something then I'm the only one irl who'll cae at all about it
Hacker · 2019-04-09 20:46
>>15603 >Even if you start with assembly, you still won't understand the intricacies of hardware This is correct. Software is just APIs. Even at the very bottom of the stack you're just poking bits in and out of registers according to what the hardware datasheet says. People meme about learning assembly just because they're unfamiliar with it and unfamiliar things must be cool.
Y.T · 2019-04-10 08:07
>>15528 You gotta narrow your focus dude. it's all about practice. What do you want to make?
藤原純一 · 2019-04-26 01:24
>>15528 hey anon, I'm a total lay-person too, I've started with learning how my OS works, then I think I'll pick up a programming language, and finally start developing some software/scripts to accommodate my desires. In the meantime(see: fragmented knowledge) I read over books on how stuff works(like android for instance, or how some of my programs work, like VIM, or some of the nuts and bolts of the audio editors I use.) Good luck, I hope we all make it.
Tequila · 2019-07-14 03:59
This is a robbery. Hand over the thread and nobody gets kissed. Is "computer stuff" really the future? I lust for power, or more accurately I want to take it away from Them and give it to people who love themselves and Lain. Is technology the way? I'm bad with computers but think being good at them might be the way to get what I want. I'm not busy so I can probably find out how to make them do what I want if you help me.
Lain Iwakura · 2019-07-14 05:14
>>15525 >>15531 I want to reinforce what was said about >Do projects Possibly the most important step. Actually having a concrete goal with a pass/fail condition is going to be what forces you learn various languages and core concepts. It'll introduce you to the problems you never even knew the names of, which are out there lurking and are often massively interesting if you encounter them in proactive exploration, yet hugely frustrating if you run into them on a time crunch and have to behave reactively. And if you don't have the self-starting willpower to tackle a personal project, it's unlikely you'll have the willpower to actually master a language. So do it. Don't just do software projects either. I know this maybe be controversial in certain circles, but pure software people often lack creativity and instinct because they're stuck inside the box (for lack of a better term). Make hardware projects. Building things with real matter and no undo button is intimidating at first, but you'll be surprised what you're capable of if you just jump into it and don't worry too much about failure. Hardware often forces you to properly learn the fundamentals instead of just enough of a superficial high-order understanding to complete a specific, abstracted task--you have to do the whole thing. It also introduces you to more varied software problems than you'll run into if you confine yourself to cyberspace and essentially get to pick and choose what problems you run into. Hardware introduces you to black swans and makes you deal with them, which is incredibly rewarding. I honestly think that working on motorcycle engines has taught me more about programming than a lot of textbooks have. There is a limit to this, of course--you still do need to work on software a lot. I've found that switching back and forth on both helps me to avoid burnout--when I get fed up with one world, I leave and enter another. Somewhat related, but never make your hobby exactly the same as your work. I know they say you should do what you love, but if you really do exactly what you love for money and then do it more at home for entertainment then the net effect will be that work will never stop and your life will have no boundaries or seasons. Work is work. Play is play. Keep it that way. Get the hell off reddit and use the insane amount of time that craphole sinks into learning and building things. Endlessly refreshing websites like that and Twitter and Facebook are boredom-crack, beware of all of that soykaf. Boredom exists for a purpose, and that purpose is to encourage you to explore. Not refresh a feed of memes eight hundred times. A decent forum should behave like Lain in that you interact with a few interesting threads and then run out of content and have to wait until tomorrow for anything new. Slow can be good. Try projects that you think will interest you, but pay close attention to the parts that actually interest you deeply and consistently and specialize from there. But be wary of people who emphasize specialization too much, or try to scare you away from generalism with spooky stories about differences in salary. Unless you want to integrate into assembly-line development as well as possible and be the best cog you can be, there is value in breadth and well-roundedness. It's also a longer-lived skillset in my experience. "Specialization is for insects," after all. But you should find something in particular to get really serious with; I'm not saying your field of experience should either be a lake a mile wide and an inch deep or an inch-wide borehole a mile deep. It should be like an inverted bell-curve. One deep spot that tapers out to include some other areas too, and at least a touch of experience all across the board if you can manage it.
Lunch · 2019-07-14 10:24
follow your bliss, and you'll learn everything you need to know along the way. set a real goal that can actually be accomplished. make sure it's something that really turns you on, so you'll keep returning to it when you get frustrated. your cursing will improve, too! let us know about your progress. good luck!
Chan Siu Ming · 2019-08-11 13:48
Start with HTML, CSS and continue on there
Molly Millions · 2019-08-11 14:42
>>18612 This. Basic webdesign is a good entry. It's immediate visual feedback, quick results, actually always useful because it's arguably the best way to get a quick gui and it's easy to learn. You need about a month to master html&css. From there enter javascript and you will have something that allows to make quick usable projects. When you got time and endurance learn C / old basic C++. C is not the best language for all problems but it's the best choice to learn what's under the hood because it doesn't hide anything like other languages and contains all important concepts.
Judge Fang · 2019-08-11 20:22
>>16586 well... at least they don't weird out on anime. maybe go to some hard core libre software or security conferences listen and pick up good ways to meet people.
Cowboy · 2019-08-12 00:10
You can read this simple manual about using command line on GNU/Linux, it's always something. http://write.flossmanuals.net/command-line/introduction/
The Oracle · 2019-08-12 14:27
Alright, since someone here recommended Common Lisp, I've decided to start learning it alongside C because it seems fun and I want a change. What do I need to get? Is Portacle a good starting point?
Jean Dupont · 2019-08-13 22:19
Realise not everyone is an expert, and you may have strengths in some areas others do not have. It take a long time to learn many different things but don't be overwhelmed or distraught, many different subjects piggyback or take elements from others. Like others have said focus on one thing at a time. Also for a beginner I would recommend becoming familiar with the hardware of a PC and then move onto understanding the OSI model.