Best networking & cloud computing books according to redditors

We found 4,418 Reddit comments discussing the best networking & cloud computing books. We ranked the 1,154 resulting products by number of redditors who mentioned them. Here are the top 20.

Next page


Enterprise data computing books
Internet & telecommunications books
Intranets & extranets books
Wireless computer networks books
Computer networks & APIs books
Home computer networks books
Computer network administration books
Cloud computing books

Top Reddit comments about Networking & Cloud Computing:

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/radium-v · 243 pointsr/IAmA

I'm going to be brutally honest here, and I'm probably going to get down-voted, but I'm not impressed with the underlying code for the project. I don't even know where to begin.

You're obviously passionate about Javascript, but runtime engines and best practices have changed dramatically in the last few years. Some things that stick out could easily be chocked up to coding style or preference, but when those preferences aren't well-adjusted to current-day standards, it leads to a perpetuation of those bad practices and hinders the growth and evolution of web development overall.

I'm posting this here, instead of on Github, because these aren't quite bug reports. I'd be more than happy to contribute though.

  1. Syntax and readability are more important than shortcuts.

    Cutting corners in the interest of character count is useless. It's better to be able to read the code than to have to interpret it line-by-line.

    For hinting, I recommend JSHint. It'll be nicer than JSLint, but it'll still likely hurt your feelings.

    Here are some JSHint errors/warnings that popped up:

    > The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.

    > Expected an identifier and instead saw 'arguments' (a reserved word).

    > Expected a 'break' statement before 'case'.

    A lot of syntax errors can be solved by linting or hinting, and following a style guide. Here's Google's Javascript Style Guide. You'll find that most projects on Github follow the same code conventions, and for very good reason. When you make your code consistent and readable, other developers will be more likely to like you and contribute to your projects.

  2. Read Douglas Crockford's Javascript: The Good Parts and Nicholas Zakas' Maintainable Javascript.

  3. Use an AMD-style, modular system like Require.js or Yahoo Module Pattern because Global variables are evil. The basic idea behind a modular system is that every piece of functionality is broken down to its basic form, and no less. It helps to keep things organized. Even if you choose not to use a framework, following a trusted organizational pattern is a good idea. Consistency is key.

  4. Check out Backbone.js or Underscore for data manipulation.

    I really like the project, but the code is unwieldy and confusing.
u/jwaters · 99 pointsr/sysadmin

The "Practice of System and Network Administration"; probably a bit too early in your career but has some strong advice.

There's also a volume 2 which is cloud/site reliability engineering related.

u/cogman10 · 75 pointsr/learnprogramming

HTML and CSS are pretty simple, I would spend almost no time reading about them (Unless this is for some sort of job interview) for the most part you will just be googling "How to I make round borders" until you can do it by rote memorization.

JS, on the other hand, is a tricky beast. I would spend a majority of my time learning not just how to write javascript, but how to write good javascript.

javascript the good parts and Javascript garden is where I would start out learning. Javascript is easy to write, but hard to write well. You need to follow strong conventions otherwise your code will end up looking like spaghetti right quick and in a hurry. If you start playing around with the language, I would suggest using JSLint to make sure you aren't doing anything stupid.

After getting a good strong base in javascript jquery shouldn't be too hard. It is just a javascript library. perusing through the docs and getting a feeling for what it can do is probably all you really need. Just like any library you've used. You didn't learn all of the .Net framework, rather you would google and lookup specifics as you needed them. That is much the way you are likely to use jQuery. It can do a lot and you don't need to know everything it can do to use it effectively.

In short, javascript is where the traps are. The other things you mentioned are "I'm going to google this anyways" so I wouldn't really spend a large amount of time learning them.

u/koeningyou666 · 73 pointsr/netsecstudents

In my opinion; every book in this bundle is a bag of shit.

Here's a list of reputable books, again in my opinion (All links are Non-Affiliate Links):

Web Hacking:

The Web Hackers Handbook (Link)


Network Security Assessment (Link)

Please Note: The examples in the book are dated (even though it's been updated to v3), but this book is the best for learning Infrastructure Testing Methodology.


Hacking: The Art of Exploitation (Link)

Grey Hat Hacking (Link)


Hacking Exposed: Linux (I don't have a link to a specific book as there are many editions / revisions for this book. Please read the reviews for the edition you want to purchase)


I recommend the online course "Metaspliot Unleashed" (Link) as opposed to buying the book (Link).


The man pages. The book (Link) is a great reference and looks great on the bookshelf. The reality is, using Nmap is like baking a cake. There are too many variables involved in running the perfect portscan, every environment is different and as such will require tweaking to run efficiently.

Malware Analysis:

Practical Malware Analysis (Link)

The book is old, but the methodology is rock solid.

Programming / Scripting:

Python: Automate the Boring Stuff (Link)

Hope that helps.

u/LucidIllusion · 67 pointsr/consulting

I’d recommend this book

u/VA_Network_Nerd · 60 pointsr/networking

Consider buying these, or checking them out from local library:

Network Warrior

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition) 3rd Edition


Cisco / Networking

Stanford University Free Introduction to Networking Online Course
Cisco Learning Center - How to Study for CCNA for Free
Professor Messer's CompTIA Network+ Training Videos
Cybrary Free CCNA Training Videos
Cisco VIRL - Virtual Router & Firewall Training Tool
GNS3 Vault - Free Practice & Training Labs for Cisco Equipment
Cisco Live Training Convention Video Portal - Free Registration Required
Cisco Design Zone - Best Practices
PacketBomb - WireShark Training Center
NetCraftsmen - Network Consultants Blog
PacketPushers News & Podcasts
IOSHints - Ivan Pepelnjak's Blog/site
Cumulus Networks SDN Technical Videos
SDX Central - SDN Resources


The Best of Cisco Live

Cisco Live is Cisco's annual Technology expo & training convention.

All of these presentations are available for free here: - Many with video presentations of the lectures.

BRKARC-3001 - Cisco Integrated Services Router G2 - Architectural Overview and Use Cases (2013 Orlando) - 2 Hours
BRKARC-3001 - Cisco Integrated Services Router 4000 - Architectural Overview and Use Cases (2015 San Diego) - 2 Hours
BRKARC-2001 - Cisco ASR1000 Series Routers: System & Solution Architectures (2015 San Diego) - 2 Hours
BRKARC-1009 - Cisco Catalyst 2960-X Series Switching Architecture (2016 Las Vegas) - 90 Mins
BRKARC-3438 - Cisco Catalyst 3850 and 3650 Series Switching Architecture (2015 San Diego) - 2 Hours
BRKARC-3445 - Cisco Catalyst 4500E Switch Architecture (2015 San Diego)
BRKARC-3465 - Cisco Catalyst 6800 Switch Architectures (2015 San Diego) - 90 Mins
BRKARC-2222 - Cisco Nexus 9000 Architecture (2015 San Diego)


BRKCRS-3147 - Advanced troubleshooting of the ASR1K and ISR (IOS-XE) made easy (2015 San Diego) - 2 Hours
BRKCRS-3146 - Troubleshooting Cisco Catalyst 3650 / 3850 Series Switches (2015 San Diego) - 2 Hours
BRKCRS-3142 - Troubleshooting Cisco Catalyst 4500 Series Switches (2015 San Diego) - 2 Hours
BRKCRS-3143 - Troubleshooting Cisco Catalyst 6500 / 6800 Series Switches (2015 San Diego)
BRKDCT-3101 - Nexus 9000 (Standalone) Architecture Brief and Troubleshooting (2015 San Diego)

u/ThatOtherPerson · 52 pointsr/TumblrInAction

I work in web security. For those of you that will be working on the site, please read/have already read/be aware of the lessons found in:

  • The Web Application Hackers Handbook - Everyone that makes interactive websites should at least skim this.
  • SQL Injection Attacks and Defense - Everyone remembers "The Summer of Lulz," right?
  • Web Application Obfuscation - There's more than one way to hide an attack.

    Expect your website to be attacked. Some advice:

  • Blacklists^[1] never work. There is always a way around a blacklist. Whitelist^[2] every input.
  • Never roll your own crypto.
  • If it comes from the user's computer, it can be controlled by the user. No exceptions.
  • Relying on security through obscurity will not work (ex: hiding the key to the building in a fake rock). Obscurity can be part of a strong multi-layered larger approach (hiding the key to the building inside a safe that is bolted to the foundation and hidden in a fake rock on well-lit grounds that are patrolled by competent and well-paid guards on a shorter duration than it would take to break into the safe), but never by itself.
  • Never roll your own crypto.
  • Basic Authentication: Just Say No
  • Digest Authentication: Just Say No
  • Never roll your own crypto.
  • Encrypt-then-HMAC only. Never HMAC-then-Encrypt or Encrypt-and-HMAC.
  • https encrypts the transmission of data, it does not make the transmitted data any more/less "safe".
  • Did I mention "never roll your own crypto" yet? No? Okay. Never roll your own crypto.
  • Never transmit sensitive data as GET requests over http. Use POST body parameter/value pairs over https.
  • Never store the actual passwords, only store salted cryptographic hashes of the password. No, the users do not need to see their own password. If they forget it, email them a single-use time-limited link to a page where they can set a new one. No exceptions.
  • Never roll your own crypto.
  • Do not use MD5/SHA/SHA256/etc. for password hashing. No exceptions. Salted password hashing is a solved problem.

    If you'd like some advice, have any questions, I should be able to get back on reddit sometime tomorrow (unfortunately, I have a lot of work I need to get started on).

    [1] - Blacklist: Allow everything in except for things on this incomplete list of known bad things.

    [2] - Whitelist: Only allow in things on this list of known good things and reject everything else.
u/Nezteb · 43 pointsr/compsci

Some book recommendations:

u/labmansteve · 42 pointsr/PowerShell

Honestly, I'd go with Windows Powershell Best Practices instead. PSIAMOL is nice, but this one focuses more heavily on ensuring you not only get the syntax, but the proper script structure, code re-usability, high performance, and just a ton of other stuff.

PSIAMOL Teaches you how to use PowerShell. WPBP teaches you how to be good at PowerShell.

Once that's done, it wouldn't hurt to check out Code Complete which had such an impact I ended up re-writing several of my larger scripts after reading it...

u/abrazilianinreddit · 41 pointsr/learnprogramming

It seems your problem is not programming, but architecture. Namely, how the client-server architecture that most of the web is based on works.

Unfortunately, I couldn't find something that's both easy to understand and comprehensive enough, and I can't really write it here, as either I would have to simplify it too much or I'd have to write way much more than I'm comfortable writing.

So keep google for client server architecture until you find a book/tutorial/article/video/etc that makes you understand and go from there. Don't worry about languages, liibraries, frameworks and all that mumbo-jumbo for now, just focus on understanding what happens when you interact with a website, from start to end. Once you understand that, choose a language, find a framework that you think you'd like and start learning it (some frameworks, like Django, have very comprehensive tutorials). And then you keep improving that until you're satisfied with your project - or you hit your deadline, that product got to ship someday!

EDIT: Actually, I do have a recommendation: the Computer Networking: A Top-Down Approach book. Reading the first chapter will probably be enough for you, but if you enjoy it, you can read a lot more and really (begin to) understand how the Internet (and computer networks in general) work.

u/goldfire · 38 pointsr/javascript

The bottom line is that, whatever your rationale might be, this code is extremely difficult to read and understand for anyone who isn't you. I had to just skip over the entire tokenizer because I wasn't getting anything out of trying to read it, except for frustration. The algorithm portion isn't much better.

Good names are one of the best ways for an author to communicate how their code works to other programmers. They provide the foothold that the person reading the code needs so that they can begin understanding the algorithms. With what you've got here, the reader must already understand the algorithms before ever seeing the code, so that he can map the concepts he already has in his head onto the uninformative variable names.

I'll give you an example that I paraphrased from Code Complete, which, if you haven't heard of it, is one of the absolute classic works on the topic of how to construct good code. What do you think this code fragment is doing:

a = a - b;
c = d + sales_tax(d);
a = a + late_fee(e, a) + c;
a = a + interest(e, a);

Despite the good function names, it's still extremely difficult to figure out what this code is trying to accomplish; if I have to make a change in something that relates to this module, I don't know where to start. But, after we name the variables:

balance = balance - last_payment;
monthly_total = new_purchases + sales_tax(new_purchases);
balance = balance + late_fee(customer_number, balance) + monthly_total;
balance = balance + interest(customer_number, balance);

See how much easier it is now to see that this code is computing a customer's bill based on their outstanding balance and a set of new purchases from the current month?

Using good variable names allows anyone to just read your code and understand immediately what it is doing. Without good variable names, anyone reading your code has to already know what it is doing.

u/LinuxStreetFighter · 38 pointsr/sysadmin

What do you want to do? "Security" is a nonsense term that doesn't mean anything to employers.

I'd pass on certs, as most of them are worthless and don't teach you anything relevant in the security field. OSCP is good and the SANS FOR 610 is good, but LOL at paying $6,000 for a certification.

Build a lab. For Malware Analysis learn REMnux, IDA Pro, Ollydbg, and look at C++ and C.

For Penetration Testing learn TCP/IP, play with Backbox and Kali when you have a soild understanding of TCP/IP and networking in general. Learn Python, Bash, and PowerShell.

Practical Malware Analysis

Practical Forensic Imaging

Those books are solid for learning IR and Malware Analysis.

Check out /r/netsecstudents

For fucks sake, stay off this sub-reddit for anything Security related. Just lmao at the responses in here. Too many people have read that shit book Phoenix Project and think Security is just policy and process.

u/sold_myfortune · 37 pointsr/cybersecurity


You should be aiming to eventually get a position as a Security Operations Center (SOC) analyst.

A SOC analyst position gives you some insight into a whole range of different information security problems and practices. You'll see incoming recon and attacks, your org's defenses and responses, and the attacker's counter responses. You'll get experience using a SIEM. You'll become familiar with all of the tools in place and start to figure out what works and what doesn't. You'll learn the workflow of a security team and what the more senior engineers do to protect the enterprise. After a couple of years, you'll probably have a much better idea about your own interests and the path you want to pursue in your career.

Here's how you get there:

Step 0: Make a habit of using spellcheck, then proofreading what you've written.

Step 1: Get the Network+ certification (Skip the A+, it's a waste of time for your purposes). You MUST understand IPv4 networking inside and out, I can't stress that enough. A used Net+ study guide on Amazon should be less than $10. Professor Messer videos are great and free:

Mike Meyers has about the best all in one Network + book out right now, you can get that from Amazon. You can also check out Mike Meyers' channel on Youtube, he has a lot of Network+ videos:\_qc-eOU

Step 2: Start learning some basic Linux. The majority of business computing is done on a unix type platform, this will not change anytime soon.

For Linux, I'd highly recommend "Unix and Linux System Administration Handbook" by Evi Nemeth, et al. The information is presented in a way that is comprehensible to regular people. You can get a used copy of the fourth edition for about $15.00. The second edition got me through my first three jobs back in the day :)

Step 3: Get a techie job, probably in entry level tech support or helpdesk. You have to do a year or two here to get some practical experience.

Step 4: Get the Security+ certification.

Step 5: While in your tech support job try to do every security related task you can.

Step 6: Attend Bsides conferences (very cheap), there is almost certainly one within a couple hours of you.

Step 7: Join a local hackers group similar to NoVA Hackers or Dallas Hackers.

Step 8: Network with everyone you can at security conferences and in your hackers group.

Step 9: After you get those certs and some technical work experience, apply for every SOC position you can.

Step 10: Take the free online Splunk class while you're waiting.

Step 11: Keep going until you get that SOC analyst job.

Guess what, you're an infosec professional!

That SOC analyst job should pay between $50K and $60K. You'll stay there for a year to eighteen months and get a couple more certifications, then leave for a new job making $75K to $85K. After five years in the tech/cybersecurity industry you should be at $100K+.

u/Letmefixthatforyouyo · 36 pointsr/sysadmin

Okay. It was /u/iconrad. Here is the thread:

Also, I highly, highly recommend buying "The linux command line". Its a book aimed at beginners that will teach you the why, what and how of linux like no other. Its also free on the authors site in true libre fashion.

u/overflowingInt · 36 pointsr/netsec

Not very specific to those technologies but:

>Web Application Hackers Handbook (2nd edition: is pretty thorough with the vectors of attack, examples, and includes a methodology for pentesters.

>The Tangled Web - a "light" but delightful read from Zalewski on the history and modern security of web apps. He also wrote the

Both are pretty recent and cover some good ground.

u/Turtl3Up · 35 pointsr/hacking

I'm the manager of application security and research at a mid-level software vendor with over 400 developers and testers and I want to recommend you ignore all of the more generic advice currently in this thread. As someone with coding experience and interest, you have a unique path to infosec that so many companies want, but find it extremely difficult to hire for.

Any company that ships software has to consider the security of their application - full stop. Most rely on scanners or annual third-party vulnerability assessments for this, but obviously that falls short. They need people who can build security in from an architectural standpoint. Someone who can actually implement the fixes suggested by the above methods, and ideally, someone who can help implement security as an integral part of the SDLC instead of as a bolt-on premise.

My recommendation is to make your way through 24 Deadly Sins of Software Security and The Web Application Hacker's Handbook. If you can understand the bulk of concepts in these two books, you'll be leagues ahead of almost any developer you find yourself up against in a hiring scenario. For the coup de gras, learn about threat modeling. It's a great way to teach other developers and testers security and to build security into any system during design instead of post-release. Check out this book which is actually probably a little too comprehensive, use this card game from Microsoft (it seems silly, but I promise you it works), and watch this talk one of the guys on my team gave at BSides Cincinnati.

If you have any questions, PM me.

u/keftes · 34 pointsr/devops

Networking is networking. There's no difference who does it.


Regardless, this is a timeless book:

u/robertito42 · 34 pointsr/sysadmin

I'm not sure I'd consider Powershell devops than a core Windows administration tool. Devops to me would be like Chef, Puppet, Ansible, Salt, etc. (Puppet I think would be good for a Windows person to learn.)

You can do Powershell in a month of lunches:

You can do the Microsoft Virtual Academy as well:

Powershell is very object oriented and pipelined, it's not a bunch of "++1, !, +3," style of true programming. It's more of a "get-aduser doej"

A lot of the commands are the same syntax prefixes, like "get" and "export".

Don't be discouraged, envision yourself knowing this inside and out in a year, and your mind will work you toward this goal.

What, specifically, do you work with that you think can benefit from scripting?

u/astro_za · 32 pointsr/PowerShell

Powershell in a month of lunches is apparently quite good, that will cover Powershell from the basics to relatively advanced concepts, although I don't recall it covers AD.

Once you have a grasp of PowerShell, the AD modules are not much trouble to learn at all, MCSA should at least cover some of that.

Also - Take a look under the "resources" tab on the right of this sub.

u/Bardworx · 31 pointsr/learnprogramming

This problem is super easy to solve:

  • Read book "Hackers: Heroes of the Computer Revolution" by Stephen Levy ^[[0]]

  • Come to the realization that you are incompetent when compared to CompSci pioneers.

  • Keep doing what you're doing.

    Every cliche has morsels of truth: "Rome wasn't built in a day", comes to mind. Most folk, like you and I, are just not geniuses. However, that doesn't mean we can't work toward being very proficient in a subject and become contributors.

    Your coworkers are light years ahead of you, even if they started a few months ago. The growth of knowledge is exponential and they just spent more time at "The Craft". As time goes on, levels will even out between proficient coworkers.

    Also, please note, there are 18.2 million developers world ^[[1]]. Every time I can't get something or doubt myself, I always ask if I'm dummer then the whole group who already achieved what I'm trying to do. Usually, the answer is "No" and I continue to Google to fill my gaps of knowledge.

    Presiden Abraham Lincoln once said:

    > "If I only had an hour to chop down a tree, I would spend the first 45 minutes sharpening my axe."^[2]

    That means as a programmer, you will spend 75% of your time learning/reading/searching and 25% coding.

    Edit: formating



u/Roelax · 31 pointsr/AskReddit

Buy a book called "how to disappear," Then you may want to contact this guy: : he will make it close to impossible for someone to track you online.

Then if you and your family move, you will need to move to a different state, and start doing things completely different than what you are doing now. If you're a car sales man, you'll have to find a new profession.

Move to another state and change your name, if you feel your life is in danger, you can contact a lawyer that can help you change your name and seal the records.

Changing a name and Moving states might do the job really, I'm a private investigator and even when I get all of the persons information it is still hard to find them.

If you TRULLY want to disappear, you need to stick to your guns and not say "oh, well I'm going to go back home for the holidays" changing your identity means CHANGING your entire LIFE, and that's why sometimes not even the Witness Protection Program works as intended.

What ever you do, DO NOT buy a firearm if you don't intend to use it. many people get killed with their own weapons.

TL;DR - Change your name, Move, Start a new life

u/FunkyCannaHigh · 30 pointsr/MrRobot

Excellent questions! If you are a CS grad you are ahead of the game. However, it all depends on what you want to do. I suggested learning programming/CS principles for two reasons:

  1. The more you understand how computers, code, compliers, software, stacks, memory randomization, CPU protection rings, and the such work the better you are at hacking. You can find novel ways to get into systems and exploit them, etc.

  2. You can write basic tools on the fly. It is amazing the tools you can create with a few lines of code when you have access to nothing but a GCC compiler in a *nix environment.

    If you want to find zero day exploits, yes learn how low level languages work. It would be very helpful in that case.

    Otherwise, Learn python (or whatever is popular at the time) to write your own exploit tools....or to modify existing ones.

    If you want to be apart of a red team learning lower level languages could make you a better exploiter. However, IMO, I would start with just learning the basics of hacking.

    These two books are old but they are absolute standards for anyone starting off:


    Also, learn as much as you can on how windows/Linux/virtual machines (and containers) work. The more you know about how an OS works the easier it is to exploit.

    Learn to exploit, there are a ton of free sites to help you learn:

    Learn CTF challenges:

    When you are able to hack take part in real challenges:

    Then start your career with a RESPECTED CERT, OSCP:

    The OSCP is no joke and it is a timed, 24 hour cert test. Yes, you read that right, 24 hours.

    Unless you want a government gig stay away from C|EH, it is a joke cert in the community. Again, unless you need to work for a gov agency

    Finally, and I cannot stress this enough.....LEARN CLOUD COMPUTING!!! It is here to stay and on-prem systems are dying a slow death. It will change how you exploit systems and how software is engineered/deployed.

u/two-gun · 29 pointsr/linux4noobs

Sorry for getting all dramatic, but for me you're asking a red pill/blue pill question. I applaud your curiosity and can only recommend you follow your gut and take the red pill. The truth is by asking the question you already know what to do next. Just keep going. However I'll give you a few ideas because you got me excited.

  1. Get in touch with your osx terminal
  2. Get linux ASAP
  3. Learn the command line

    OSX Terminal

    Underneath the shiny GUI surface of your mac you have an incredible unix style OS just waiting to be played with and mastered. A few tips to get you going.

    Download iTerm 2. Press cmd-return, cmd-d and command-shift-d.

    Congrats. you now have a hollywood hacker style computer

    Copy and paste this line into your terminal and say yes to xcode.

    ruby -e "$(curl -fsSL"

    Awesome you now have homebrew. A linux style package manager.

    May as well get cask too.

    brew install caskroom/cask/brew-cask

    Now you can install programs by typing a couple of words.


    brew cask install virtualbox

    Get Linux ASAP

    Linux is relatively easy to get up and running and awesome fun. try any of these options

  • Download virtual box and install a 'virtual machine' to run linux on your mac (see above).
  • Buy a Raspberry Pi.
  • Create a bootable usb and install refind on your mac.
  • Take a friends old laptop and install linux on it from your live usb distro.

    If any of the above seems slightly daunting don't sweat it. Be confident and you may just surprise yourself at how much you can learn in such a short amount of time.

    Learn the command line

    The command line opens up the wonderfully powerful and creative world of unix. Push on.

  • Get the basics down with codecademy
  • Play with some books (this or this for eg)
  • Watch some youtube videos (this guy's good for webdev)
  • Learn a text editor (Try Vim. You already have it. Type 'vimtutor' in your terminal to get started)

    Play, Play, Play

    Do what gets you excited.

    I got a big kick out of learning ssh and then pranking my friends with commands like

    say hello friend, i am your computer. i think your friend two-gun is very handsome. Is he single?


    open -a "Google Chrome"

    Do what you find fun. Oh and check out Richard Stallman. He's a good egg.



    forgot iTerm link


    Wow! Gold! Ha! Thank you. This is so unexpected! I'd like to thank the academy, my agent, my mom...

u/canadadryistheshit · 28 pointsr/sysadmin

I was in your same shoes 3 years ago when I took my first SA internship. I was the only person on site for 8 employees locally, 30 around the country.

I was scared to make actions at first but the first thing you need to do is learn your network in and out and document the shit out of everything before you even make a change. After that, you will be confident and I am sure of it.

1.) Begin a document called "IT Department Handbook" - add everything you find to it, except passwords. Refer to it, love it, it will always save you. Include disaster recovery in it. Make it so that a third grader can understand it. I have one thats 50 pages right now. This will save you as it has saved me so many times. Make it confidential though, because it will end up holding information you don't want people to see on the outside such as IP addresses and your network map.

2.) Keep passwords file but separate from the system and indistinguishable. I actually keep a password file on my phone in my memo's app but I don't have the full account usernames associated with each one. I provide really indistinguishable hints to the username, usually riddles that only I would know.

3.) Get Veeam endpoint backup and find a place to backup your DC (full backup) and any databases at the very least. You can create a standard for backups later.

3a.) Find the Domain Controller's recovery password immediately.

3b.) Create a recovery USB for all your servers and put them in a location where you can find them later.

4.) Get a Network Diagram going, then after that...

5.) List all Roles and Features each server has on the network diagram, what each server stores, what applications run on them and how essential they are to the business. Example: Domain Controller. No domain controller, no work can be done. CRM: No crm, people can't keep of their cases on the webserver but rather locally, they can live without it for a short time. Start thinking about disaster recovery.

6.) Develop a Khanban System. It's an agile project management method I learned from reading This Book -- I highly suggest buying this to help you better your practice. Put tasks in the backlog and move the ones you think need to be done sooner than others to your daily or weekly sprint.

7.) Find out who uses what server for certain tasks. This may take a while but it helps.

8.) Something I do personally before doing any changes to Group Policy or Regedit is I save their current configurations before making changes. Therefore, if something doesn't work right after a setting is changed, you can quickly revert back to it's last state.

9.) If you have the capability and hardware, get clustering going. So if a DC1 fails, DC2 takes over and everyone can still authenticate and work.

10.) If you have the capability and hardware, create a test environment reflecting your live network on a very small scale but enough to test "Ok so if I make this change, can people from workstations still login, can they still access the development server... etc." - you can create a test domain under your current forest and have it remain separate in this test environment.

11.) If it's not already in place (this might take some time) create a naming nomenclature standard. I.E. (domain controller 1),, (production), (webserver), (test env.), (workstation number 1...2...), (virtual machines). This will help when it comes to debugging issues. My boss likes to make personal names for his servers which drives me fucking nuts because we have 20 servers between us and our clients that we manage. It's a lot better for him to mention "yea I cant get into PS1." rather "I cant get into rabbit" - and there I am trying to remember which server rabbit is and what features it holds off the top of my head; which is where a network diagram can come into play.

u/OSUTechie · 26 pointsr/ITCareerQuestions

This book has been suggested a few times so I finally got around to reading it. I think it has some good information in it. I'm only about halfway through it, but I like it so far.

Time Management for System Administrators

Other books would be any of the social books like "How to influence people", "7 healthy habits..." Etc.

I haven't read this one yet, but It has been suggested to me if you plan to go more into management/leadership Start with Why

Other books that have I have ear marked due to being mentioned:

u/APTMan · 26 pointsr/JobFair

Most current information you are going to want to read online. There is no substitute for that. The books I'm currently reading through are:

The Web Application Hacker's Handbook 2nd Ed

The Tangled Web

Metasploit: The Penetration Tester's Guide

Webbots, Spiders and Screen Scrapers

NoStarchPress fanboy all the way :)

Keep in mind, though, that the technical requirements are only half of being employable. You also need to be a good employee, who can work with the client and keep them satisfied. For those, I recommend:

True Professionalism

Trusted Advisor

u/cronin1024 · 25 pointsr/programming

Thank you all for your responses! I have compiled a list of books mentioned by at least three different people below. Since some books have abbreviations (SICP) or colloquial names (Dragon Book), not to mention the occasional omission of a starting "a" or "the" this was done by hand and as a result it may contain errors.

edit: This list is now books mentioned by at least three people (was two) and contains posts up to icepack's.

edit: Updated with links to These are not affiliate - Amazon was picked because they provide the most uniform way to compare books.

edit: Updated up to redline6561

u/feketegy · 25 pointsr/PHP

Every quality software should have tests. So...

Read the unit tests / features tests first. Those will show you how a specific piece of the code works.


  1. Play with composer packages.
  2. Learn about PHP SPL
  3. Learn about design patterns and beyond
  4. Learn TDD, setup PHPUnit, Behat, Mink, PHPSpec
  5. Read PHP The Right Way
  6. Learn about clean code, EBI, DCI and how to put MVC on a shorter leash here: and here and check out the #cleancode IRC channel on freenode
  7. Read a couple of books like: PHP Objects, Patterns and Practice or Code Complete or Clean Code or The Pragmatic Programmer or The Mythical Man-Month
  8. Start an open-source project or contribute to one

    There are a lot to learn and if you really like programming you will never stop learning.

u/cris9696 · 24 pointsr/italy

La mia classe (5° Informatica) ed un'altra (4° Informatica) sono le uniche dell'istituto con la LIM montata in classe e disponibile 24/7. Ne abbiamo anche un paio in altri laboratori.

Noi le LIM le usiamo spesso, sono parecchio utili in diverse materie e rendono la lezione più interattiva e meno pesante (No non sto cercando di vendervele).

Ad esempio in Italiano ci possiamo proiettare i testi degli autori che studiamo (reperibili gratis di solito visto che gli autori sono defunti da un bel po') e la Prof ci appunta sopra tutto quello che vuole, cosi': A) lei è contenta B) tu non ti perdi nulla C) Salvi il PDF e ce lo hai a casa sincronizzato su DropBox

In Storia mettiamo foto/quadri famosi oppure ogni tanto qualche reperto storico preso da YouTube (o addirittura vediamo documentari di Piero Angela).

In Inglese molto spesso usiamo Internet per trovare informazioni/qualcosa di più sugli argomenti che stiamo affrontando (in particolare inglese tecnico e specifico del campo informatico), visto che il libro qualche volta sbaglia (probabilmente perchè è scritto da gente che non ci capisce quasi nulla di informatica / programmazione)

In Matematica viene usata sia per disegnare grafici di studio di funzione / calcolo di limiti con software specializzati (GeoGebra ad esempio) che per vedere lezioni svolte su YouTube o esempi di esercizi affrontati in modo diverso da come li affronta il prof (Consiglio

Per materie più tecniche come (informatica / sistemi & reti / progettazione sw / elettronica) proiettiamo sempre documentazione / testi tecnici scritti da gente che ne sa veramente (ad esempio questo per sistemi & reti), che alla fine rendono inutili i libri di testo che le altre classi usano. Inoltre ci facciamo girare i programmi scritti a casa senza andare nei vari laboratori, oppure le simulazioni dei circuiti per elettronica.

Poi in ogni materia la LIM viene usata come lavagna e non c'è più il problema dei gessi finiti, del cancellino sporco, del "non c'è più spazio, posso cancellare ragazzi?", si salva tutto e lo si rilegge a casa.

Ovviamente poi sulla LIM si vedono bene i Film per le ore buche, si gioca bene a Scacchi/RTS con il touch e c'è anche un ottimo impianto audio per sentire anche dalle altre classi i video di YouTube, ma questa è un'altra storia.

Noi usiamo cosi' tanto e penso cosi' bene la LIM perchè i prof hanno seguito un corso per imparare tutti i minimi segreti, o meglio a raccogliere un pennarello finto e scrivere.

La nostra classe è anche una delle poche che usa il tablet al posto dei libri cartacei, se vi interessa dopo vi posso scrivere anche di questo.

La nostra scuola usa anche un registro elettronico al posto di quello cartaceo, anche qui se volete vi dico i pro e contro.

TL;DR: Abbiamo la LIM, elenco gli usi della LIM, se i prof la sanno usare è utilissima. Infine un TL;DR.

Visto che il commento è stato di gradimento di alcuni allora spiego anche i tablet e i registri elettronici.


All'inizio della terza la nostra classe è stata scelta per questo progetto di usare i tablet in classe, in particolare al posto dei libri cartacei e / o come supporto di lavoro.

La scuola si è offerta di pagare metà tablet mentre noi dovevamo pagarci l'altra metà. Il tablet scelto è stato un Nexus 7 32GB di prima generazione. Un buon tablet. Chi aveva già un tablet a casa (4 o 5 su 27) avevano il permesso di usare il loro.

Consegnato il tablet (dopo aver atteso 1 mese e mezzo circa, forse 2) abbiamo subito acquistato i libri di testo disponibili sulla piattaforma Scuolabook. Il prezzo dei libri digitali è minore rispetto a quello di quelli cartacei.

Il primo problema che abbiamo riscontrato è stato riguardo all'applicazione per tablet di Scuolabook (sia Android che iOS): crashava di continuo, lenta, faceva tutto tranne quello che doveva fare. Ti faceva passare la voglia di studiare. Alla fine ci siamo un po' abituati.

Qui nasce ora la domanda: meglio la carta o il tablet? Sono gusti. E' una cosa personale, c'è gente che non lascerebbe i libri di carta per nulla al mondo, soprattutto se ci devi studiare sopra, ma ad esempio io mi sono abituato abbastanza bene a studiare sui pixel. I quaderni, almeno quelli, sono sempre di carta.

Cosa può servire il tablet? Si evitano fotocopie, si scrive abbastanza veloce con la tastiera, eviti di trovare forme falliche sugli appunti etc etc.

In 3° molti perdevano tempo con giochini vari e cazzate del genere ma anche a causa del wifi scarso della scuola la nullafacenza è via via scomparsa. Ora il tablet viene usato per cazzeggiare solo in lezioni particolarmente noiose, perchè prima o poi i giochi finiscono.

Il problema dell'app scarsa di Scuolabook è stata risolta rimuovendo i DRM dai libri e convertendoli in PDF da aprire con adobe.

Dopo/domani scrivo riguardo il registro.

u/KrogerKing · 23 pointsr/homemadexxx

Learn how to access all service guides and manuals.... Learn unix/linux basics. Maybe build a small home lab, you can buy cheap servers and networking equipment online. Never say "I don't know" say "I will have to do some research". Nobody knows everything... Google is your friend.... When you are at work do not browse this sub.. Start reading up on that things they want you to work on now.......I am not an admin but work in data centers every day fixing servers. Been in the industry for 13 years.... still get worried about people finding out I have no idea what I am doing lol

Great Guide
UNIX and Linux System Administration Handbook

u/wigflip · 23 pointsr/Bitcoin

Well firstly, language is a big choice right now. If you're looking to make a financially fulfilling career in a young company or on your own, I'd recommend learning javascript to later use node.js, and learning ruby. Personally, I'm a node.js developer, so I would recommend moving toward the JS world and using really cool things like and mongoDB. Ruby is a fantastic language overall. It's a bit slow, but it does a great job regardless, and tons of really cool startups use it. At the moment, I would say that these are the two most profitable paths to take in web development. is a fantastic place to start. It does a great job at teaching the fundamentals of programming. If I recall correctly, the javascript courses take you from the absolute basics to building some kind of useful application, such as a calculator or todo list.

Once you've made your way through the tutorials at codeacademy, move on to Their tutorials are a bit more advanced, and leave you with a real application and real knowledge on how to take an idea and turn it into a real product. For node magic after you've moved through Codeschool, check out

Here are a few books I would recommend


u/mu71l473d · 23 pointsr/sysadmin
  • The Practice of System and Network Administration, Third Edition
  • UNIX and Linux System Administration Handbook, Fifth Edition
  • The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services, Volume 2, First Edition
  • Windows Server 2016 Unleashed, First edition
u/brownmatt · 22 pointsr/programming

I think the two suggestions you'll see the most will be:

Code Complete

Pragmatic Programmer

u/abstractifier · 22 pointsr/learnprogramming

I'm sort of in the same boat as you, except with an aero and physics background rather than EE. My approach has been pretty similar to yours--I found the textbooks used by my alma mater, compared to texts recommended by MIT OCW and some other universities, looked at a few lists of recommended texts, and looked through similar questions on Reddit. I found most areas have multiple good texts, and also spent some time deciding which ones looked more applicable to me. That said, I'm admittedly someone who rather enjoys and learns well from textbooks compared to lectures, and that's not the case for everyone.

Here's what I gathered. If any more knowledgeable CS guys have suggestions/corrections, please let me know.

u/sirjamespudar · 22 pointsr/programming

Some very good books on networking basics:

Computer Networks

TCP/IP Illustrated

u/keeegan · 22 pointsr/HowToHack

I have all these except the CEH (which shouldn't be on this list lol...) and they're all pretty good in their own way. Starting over, I'd go through hacker playbook while reading through the art of exploitation. You'll be pretty rounded at this point, blackhat python and metasploit will be a breeze. Do the ceh one if you're getting a job that wants to see embossed paper. Also, check out Web Application Hacker's Handbook, and Shellcoder's Handbook.

u/Glomgore · 21 pointsr/sysadmin
u/reddilada · 21 pointsr/learnprogramming
u/xxdcmast · 21 pointsr/sysadmin

I like a nice ham sandwich for a lunch point.

As far as getting into PS. This is the usual recommendation.

Enjoy your book and sandwich.

u/DucBlangis · 20 pointsr/netsecstudents

Here is a "curriculum" of sorts I would suggest, as it's fairly close to how I learned:

  1. Programming. Definitely learn "C" first as all of the Exploitation and Assembly courses below assume you know C: The bible is pretty much Dennis Richie and Kernighan's "The C Programming Language", and here is the .pdf (this book is from 1988, I don't think anyone would mind). I actually prefer Kochan's book "Programming in C" which is very beginner freindly and was written in 2004 rather than 1988 making the language a little more "up to date" and accessible. There are plenty of "C Programming" tutorials on YouTube that you can use in conjunction with either of the aforementioned books as well. After learning C than you can try out some other languages. I personally suggest Python as it is very beginner friendly and is well documented. Ruby isn't a bad choice either.

  2. Architecture and Computer basics:
    Generally you'll probably want to look into IA-32 and the best starting point is the Intel Architecture manual itself, the .pdf can be found here (pdf link).
    Because of the depth of that .pdf I would suggest using it mainly as a reference guide while studying "Computer Systems: A Programmers Perspective" and "Secrets of Reverse Engineering".

  3. Operating Systems: Choose which you want to dig into: Linux or Windows, and put the effort into one of them, you can come back to the other later. I would probably suggest Linux unless you are planning on specializing in Malware Analysis, in which case I would suggest Windows. Linux: No Starch's "How Linux Works" is a great beginner resource as is their "Linux Command Line" book. I would also check out "Understanding the Linux Kernel" (that's a .pdf link). For Windows you can follow the Windows Programming wiki here or you can buy the book "Windows System Programming". The Windows Internals books are generally highly regarded, I didn't learn from them I use them more as a reference so I an't really speak to how well they would teach a "beginner".

  4. Assembly: You can't do much better than OpenSecurityTraining's "Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration" class lectures from Xeno Kovah, found here. The book "Secrets of Reverse Engineering" has a very beginner friendly introduction to Assembly as does "Hacking: The Art of Exploitation".

  5. Exploitation: OpenSecurityTraining also has a great video series for Introduction to Exploits. "Hacking: The Art of Exploitation" is a really, really good book that is completely self-contained and will walk you through the basics of assembly. The author does introduce you to C and some basic principles of Linux but I would definitely suggest learning the basics of C and Linux command line first as his teaching style is pretty "hard and fast".

  6. Specialized fields such as Cryptology and Malware Analysis.

    Of course if you just want to do "pentesting/vuln assessment" in which you rely more on toolsets (for example, Nmap>Nessus>Metasploit) structured around a methodology/framework than you may want to look into one of the PACKT books on Kali or backtrack, get familiar with the tools you will use such as Nmap and Wireshark, and learn basic Networking (a simple CompTIA Networking+ book will be a good enough start). I personally did not go this route nor would I recommend it as it generally shys away from the foundations and seems to me to be settling for becoming comfortable with tools that abstract you from the real "meat" of exploitation and all the things that make NetSec great, fun and challenging in the first place. But everyone is different and it's really more of a personal choice. (By the way, I'm not suggesting this is "lame" or anything, it was just not for me.)

    *edited a name out

u/archover · 20 pointsr/archlinux

> had any tips for solidifying the foundations.

I strongly recommend the book How Linux Works by Brian Ward, at No Starch Press. 392 pages.

Update: Here's a sample chapter Disks and Filesystems

While published in 2015, most of it is still very relevant. Page for page, it's the best Linux book I've encountered. Topics range from simple to complex, and intuitively organized as well. I found it applicable, of course, to most of Arch.

Good luck.

u/TheGreatMuffin · 20 pointsr/Bitcoin

If I may - I humbly recommend to read a proper book on bitcoin, not some fluff piece.. Just assuming from the way that you chose your post title that you might be interested in a more substantial bitcoin reading :) Please ignore if that's not the case, don't wanna ruin your reading pleasure or anything.

Economic perspective: The Bitcoin Standard - The Decentralized Alternative to Central Banking

Not technical at all, very beginner friendly, but also not a lot of practical information: The Internet Of Money

Gently technical, beginner friendly: Inventing Bitcoin: The Technology Behind the First Truly Scarce and Decentralized Money Explained

Technical deep dives:

u/chra94 · 19 pointsr/pythontips

Automate the Boring Stuff taught me the basics and I recommend it highly. It's free.

If you encounter an error spend about an hour trying to solve it before asking for help. If you get an error with an error message from running the program you copy and paste the error message into a search engine and look for answers there. If the program behaves differently than you expect it too without giving you an error message you have probably made a mistake in your instructions to the program and these can be hard to find.

r/learnpython is great when you can't solve your problem(s), they're helpful as long as you say what you have tried, upload your code to and say what you want the program to do.

also when giving variables names please give them describing names. look at this example:

name = "chra94"

n = 6

name_length = 6

clearly name_length describes itself better than just n. Many beginners me included make the mistake of naming variables poorly which makes the code harder to read. good variables makes reading the code easier.

Be prepared to read documentations for both python but also tools (they're called modules or libraries) written in python for python. One day you might want to make a program that modifies or creates spreadsheets. There are libraries for that and even if you just watch a tutorial on how to use it it's easier to be able to search and read the documentation for the module than finding a tutorial specific for that one little thing you want to do that the other tutorial didn't cover.

Following the Automate the Boring Stuff book you will be able to make a rock, paper, scissors-game, making a number guessing game and such. Should you want more excercises you could look at codingbat over here at CodingBat for that.

Some day you might want to do a project. A program that's useful. Maybe it'll download the ten best wallpapers from r/wallpapers each day. Maybe you'll make a chatbot Slack or Discord or IRC. Anwyay. After having made a couple of programs that can be used over and over again by someone else than me I have realized that I have to plan much, much more ahead. My programs got messy, difficult to read, difficult to change and honestly I've lost control over them. I wish I had read Code Complete earlier. It praises planning your program thoroughly. According to some stats in the book mistakes uncovered after planning are between five to ten times more costly to fix than if they were discovered while the requirements for the program were figured out. (Theses stats are for small companies. Bigger companies can be as much as 100 times more expensive to fix.) TL;DR: Time spent planning is between three to ten times better spent than fixing stuff because you didn't bother to plan enough.

*TL;DR:** Do Automate the Boring Stuff untill you want to make stuff on your own and read chapter three of Code Complete.

Best of luck buddy and remember: Plan your projects ahead.

u/icytrues · 19 pointsr/AskNetsec
  • The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System, 2nd Edition (2012)

    This book covers rootkit development, not analysis, on Windows 7 and x86/IA32. It's a must read, if you're interested in rootkits.

  • Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats (Release date set to january 2019)

    While not yet released, it looks very promising. Over the years, Microsoft has continually introduced better protections against rootkits and malware in Windows. Among other things, the book will cover how some of the rootkits/bootkits seen in the wild have bypassed protections such as Secure Boot, kernel-mode signing, Patch Guard and Device Guard.

    I'd also recommend having a look at the following books:

  • Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software (2012)

  • Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation 1st Edition (2014)

  • The Art of Memory Forensics: Detecting Malware and Threats in Windows, Linux, and Mac Memory 1st Edition (2014)

    Also, Windows Internals for both Windows 7 and Windows 10 is a great reference to have laying around.
u/telnetrestart · 19 pointsr/blackhat

I'm taking it right now. The books I read through or started before the OSCP in no particular order:

u/dreasgrech · 18 pointsr/programming

First of all, for any software development questions you may have, I suggest you post your questions on Stackoverflow because the people there will surely provide you with answers.

Now, for a list of books I recommend:


JavaScript: The Definitive Guide; if you're new to JS, start with this one.

JavaScript: The Good Parts; not a beginner's book, but a must-read if you are going to use JS

If you are going to be using JS, you will most probably be developing using a framework, and for that I seriously recommend mastering jQuery because as they say, you will write less and do more!


CSS Mastery: Advanced Web Standards Solutions

Web Usability

Don't Make Me Think: A Common Sense Approach to Web Usability; the book that shows the users' perspective when viewing a website


High Performance Web Sites: Essential Knowledge for Front-End Engineers and Even Faster Web Sites: Performance Best Practices for Web Developers;if you want to get serious about performance for your websites

u/raarky · 18 pointsr/programming

i recommend code complete 2 as a must read for getting the fundamentals right.

u/dud3z · 18 pointsr/blackhat

The dark side has lot of facets, it depends on what you want to achieve.

If you are already working on web applications and web in general, then you may want to start with the Web Application Hackers Handbook by Dafydd Stuttard and Marcus Pinto.

This is a very valid book and with your existent knowledge it will be a very interesting read: i may also advise you to read The Tangled Web by Michal Zalewski, this instead will give you a very in-depth look of browsers' quirks and their inner working, quirks you'll learn to exploit.. for science!

Then there is the world of binary reverse engineering and exploitation, my preferred literature on this is Hacking: the art of exploitation: keep in mind that the techniques there may be outdated, but the reasoning and much of the concepts are still valid. It's a very specific book with very detailed information and you are required to know a bit of assembler, C and very low-level stuff.

Happy hunting and good luck!

u/fuzzyfuzz · 18 pointsr/linuxadmin

I have the UNIX and LINUX System Administration Handbook It's awesome and has a pirate boat on the front, so you know it's good. It's great for best practices type stuff, and there's a little bit of sysadmin humor mixed in.

I also have the Linux Command Line and Shell Scripting Bible which is good for CLI reference.

Other than that, you can find a ton of stuff on the web. Is there anything in particular you are looking for?

u/sobrique · 17 pointsr/sysadmin

Big fan of that book. New edition due soon too!

u/[deleted] · 17 pointsr/programming

If you liked that, I strongly suggest reading Michael Zalewski's (author or this trick) book The Tangled Web; there are entire chapters on what quircks there are in HTML parsing (some stuff you can't even believe that it's accepted by the browsers).

u/mohabaks · 17 pointsr/unixporn

Thanks ;). Not so skilled on that and my advice might be misleading; though I got a background in cs:This would be my suggestion for someone beginning.

u/jkwuc89 · 17 pointsr/webdev

IMHO, knowing the basics is vital. For JavaScript, I recommend buying and reading, "JavaScript: The Good Parts".

u/v3ded · 17 pointsr/hacking

While Metasploit is a good tool, I would advise you to stray away from it until you learn. (I’m ignoring the fact that you rarely use Metasploit for web penetration testing in the real world anyways...)

You can carry out most of web penetration testing with just few tools like BurpSuite (this is the main one), a directory bruteforcer (gobuster, dirbuster, dirb, wfuzz..) and Nmap. These 3 tools should give you initial idea about the web application and its structure. Then it boils down to your enumeration and ability to spot weird or possibly vulnerable behavior. What is considered as “weird” or “vulnerable” behavior? According to OWASP, countless things. They made a whole web penetration testing guide for that reason - you can find it here:

Alternatively, this book ( covers web based exploitation in great depths and I highly recommend you obtain it. It was one of my first books ever and is definitely among my favorites.

Another useful resources:

Yes, there are other very specific tools which come in handy such as wpscan or sqlmap. While I don’t mind wpscan that much, I strongly believe one should be able to do a manual sql injection before using sqlmap (therefore avoid sqlmap when learning). This way you understand what is happening behind the green terminal ;).

PS: Sorry for formatting, typed this up on a phone. I’m also pretty tired so please excuse my janky grammar!

u/kobakai · 16 pointsr/ItalyInformatica

> Supponiamo che uno (anzi, più di uno visto che siamo tutti componenti di un LUG) voglia iniziare a smanettare un po' in quest'ambito, che cosa consigli?

di farlo :)

> Mettere su un webserver e iniziare a tentare di bucarlo con gli exploit conosciuti può essere una buona idea oppure è meglio prima procedere con altro?

Tutto fa brodo (mi', ventesimo proverbio, mi sto biscardizzando :). Però per prima cosa devono essere chiare le problematiche agli strati più bassi: boot da media esterno, forensics "malevola" (accesso al fs, reset delle password, estrazione delle password, trojanizzazione dell'OS, ..), MITM e i suoi derivati, poi nmap e network/service discovery come se piovesse, analisi di tutti i servizi esposti, poi "finalmente" potete dedicarvi anche alla parte (web) applicativa.. :)

Ci sono moltissimi "playground" per divertirsi ed imparare, sia come vm da scaricare che contest, crackme & co. online, alcuni al volissimo:

u/Snackman11 · 16 pointsr/computerforensics

Digital Forensic workbook is a great source for building foundational knowledge on many of the general computer forensic techniques. It covers info such as file system forensics, acquisition, software write blocking, registry analysis, email analysis, internet history analysis, recovering data in unallocated space, etc. Labs are included with the book so you can test the content learned against sample data.

Learning Malware Analysis Guides you through static analysis, dynamic analysis, using IDA pro, and other dismembers to determine the intent of malicious files.

Practical Malware Analysis

Wireshark Network Analysis

u/drakonite · 16 pointsr/gamedev

You may want to narrow that down a bit, but okay, here are some highlights, with amazon links to help disambiguate.

u/lebootydestroyer · 15 pointsr/HowToHack

Learning to hack, with little knowledge of it, will be a journey. You have some background in CS which will definitely help.

Learning to hack, from scratch, is where things become difficult. Where do you start? How do you learn? Luckily there's a vast amount of resources to learn from online.

To start learning is a matter of what you prefer.

Like watching videos/lectures?

Prefer reading books on the subject?

Most universities have Ethical Hacking / Cyber Security courses, can always check there.

I'd recommend learning Python, SSH, and the Linux Terminal in general to get started. But learning how those apply to hacking is a matter of learning and practice.

Hope this helped, and good luck!

u/ipe369 · 15 pointsr/learnprogramming

Not an expert, but heard this title being bandied around:

u/polypeptide147 · 14 pointsr/HowToHack

Start here.

Read those left to right. You will learn a lot about networking, a lot about Python and how that is commonly used to hack, and then a lot about Kali Linux. You won't learn how to use the tools, but you will learn what they are.

I would also recommend "Operating System Concepts" but it is a bit pricey. I like that book because it doesn't teach you how to use a bunch of commands in linux, rather it teaches you how operating systems work and why they work that way. Very interesting, and there is an entire section on security. Also, "Penetration Testing" is a good one, and it is cheap too. You will learn how to use some Kali tools, but you'll also learn the important stuff. Buffer overflows and format string attacks are what you need to know how to do. You need to know how to look at and manipulate memory.

If you want to figure out how to do it yourself, read the first four books. If you want a step-by-step guide of exactly what to do, read the last book. It is also pretty important, IMHO, to know a bit about operating systems, but honestly you don't need that one. It just tells you why things are the way they are, which is sometimes helpful when you're like "oh I wonder if I can hack in like this" but then you remember that you could, but they changed it because you could.

Good luck on your endeavors!

Edit: I looked at the sidebar and it agrees with me about learning how OS's work. It says: I think the best place to start is to get a solid understanding of OS concepts first. The combo of Linux, C, and ASM are almost essential to really understanding how everything melts together. I like this resource:

u/simonsarris · 14 pointsr/javascript

Read JavaScript: The Good Parts by Crockford. He goes over structuring JavaScript in an OOP fashion. More generally it's a great book that will bring your understanding of JS from intermediate to the beginnings of expert.

u/sfltech · 13 pointsr/redhat

I've mentored several Junior linux team members and I always recommend :

While not RH specific, it is has a wealth of information on Linux in general and serves as a good reference.

u/uzimonkey · 13 pointsr/gamedev

I wouldn't call this game "finished," not even in quotes. Implement scoring correctly with display in the game and disappearing/respawning balls, correct deflection (as if the paddle were rounded), smoother AI motion and correct keyboard input (it's backwards and seems to rely on autorepeat). Then the game will be a "finished" pong game.

I can't comment on the Javascript code really, but if you're just learning Javascript, I really recommend reading Javascript: The Good Parts. It's a very short book on how Javascript really works, with no real attention given to irrelevant APIs (to game programmers) and the like.

I also recommend looking at one of the several HTML5 game libraries out there. I'm using ImpactJS, but it costs money. If you want something free, you could try looking at Crafty. They abstract a lot of things and you can focus on making games, and not with the details of HTML5 APIs.

u/Cantum2 · 13 pointsr/learnjavascript

When I was starting to learn JS which was not that long ago at all and I am still learning I started with this video series:

.then this one

.then this one

.then I read:

.then I read:

.then I read:

When I felt like I had a good enough grasp on vanillajs I started a giant project in Angularjs. Where I advanced my skills with git big time. Other resources I used are:

Rest api with MEN (lol):

Docs are great for js:

These were good for angularjs just incase you were interested:

Honestly I cant link one of this guys videos because they all help sooooo much:

u/_o7 · 13 pointsr/HowToHack

Copy paste from a post I made earlier

Malware RE isn't really all that much voodoo as it seems, you take the executable and break it down into steps.

First check out the PE headers and find what strings you can, characteristics. Figure out if the malware is packed or not.

A quick and dirty way to get an idea of what it does it run it with certain tools on the system and a linux box to intercept all network communications. This is called behavioral analysis.

After that you can load it into a disassembler like IDA Pro and start looking for interesting functions or windows API calls. Things like WriteFile, VirtualAllocEx, ReadFile then figure out that they are doing.

After that you can take it into your debugger (I like OllyDbg) and set some breakpoints at interesting functions to see what the malware is doing in the stack. Like I said, its not voodoo once you look into it further.

Creating the malware is a whole different story and outside my skill set. In fact I hate programming and know only high level programming, basically I can interpret code and what it wants to do. But I have an easier time reading Assembly (lol) than something like C++. But coding malware is just like coding anything else, design it for what you want it to do and get to work. Stuff like Stuxnet had probably at a minimum 10 extremely talented coders behind it.

Here is a great list of learning sources. Malware Analysis Course - Free

Opensource Malware Analysis Course - Free

Dr. Fu's Malware Analysis Course - Free - Free

SANS FOR610 Reverse Engineering and Malware Analysis - Expensive

Practical Malware Analysis

Practical Reverse Engineering

Malware Analyst's Cookbook

u/hell_onn_wheel · 13 pointsr/Python

Good on you for looking to grow yourself as a professional! The best folks I've worked with are still working on professional development, even 10-20 years in to their profession.

Programming languages can be thought of as tools. Python, say, is a screwdriver. You can learn everything there is about screwdrivers, but this only gets you so far.

To build something you need a good blueprint. For this you can study objected oriented design (OOD) and programming (OOP). Once you have the basics, take a look at design patterns like the Gang of Four. This book is a good resource to learn about much of the above

What parts do you specify for your blueprint? How do they go together? Study up on abstract data types (ADTs) and algorithms that manipulate those data types. This is the definitive book on algorithms, it does take some work to get through it, but it is worth the work. (Side note, this is the book Google expects you to master before interviewing)

How do you run your code? You may want to study general operating system concepts if you want to know how your code interacts with the system on which it is running. Want to go even deeper with code performance? Take a look at computer architecture Another topic that should be covered is computer networking, as many applications these days don't work without a network.

What are some good practices to follow while writing your code? Two books that are widely recommended are Code Complete and Pragmatic Programmer. Though they cover a very wide range (everything from organizational hacks to unit testing to user design) of topics, it wouldn't hurt to check out Code Complete at the least, as it gives great tips on organizing functions and classes, modules and programs.

All these techniques and technologies are just bits and pieces you put together with your programming language. You'll likely need to learn about other tools, other languages, debuggers and linters and optimizers, the list is endless. What helps light the path ahead is finding a mentor, someone that is well steeped in the craft, and is willing to show you how they work. This is best done in person, watching someone design and code. Also spend some time reading the code of others (GitHub is a great place for this) and interacting with them on public mailing lists and IRC channels. I hang out on Hacker News to hear about the latest tools and technologies (many posts to /r/programming come from Hacker News). See if there are any local programming clubs or talks that you can join, it'd be a great forum to find yourself a mentor.

Lots of stuff here, happy to answer questions, but hope it's enough to get you started. Oh, yeah, the books, they're expensive but hopefully you can get your boss to buy them for you. It's in his/her best interest, as well as yours!

u/veruus · 12 pointsr/linuxadmin

The Practice of System and Network Administration, Second Edition

UNIX and Linux System Administration Handbook - 4th Edition

[TCP/IP Illustrated, Volume 1: The Protocols - 2nd Edition] (

These should be part of every ops department's library, if not already in your own personal one.

u/Reptilian_Overlords · 12 pointsr/talesfromtechsupport

I'd go read books about the A+ cert (you don't need to certify but it's great material).

For other technical things I recommend a lot of books that are amazing:

u/jgeusebroek · 12 pointsr/sysadmin

UNIX and Linux System Administration Handbook (5th Edition)

I can definitely recommend this book

u/meathead80 · 12 pointsr/exjw

There's a reason why there is a Javascript book (1096 pages) and another called Javascript: The Good Parts (176 pages).

I think the bible could use a similar treatment.

u/PhantomRacer · 12 pointsr/programming

I highly recommend JavaScript: The Good Parts. I'd say to read that one first because it explains how you should think when programming in JavaScript. Knowing the syntax and function names is no good unless you how to use them.

u/phillipjacobs · 12 pointsr/ITCareerQuestions

Pick up Powershell in a month of lunches and grab a free month trial of pluralsight. Two great resources for learning the basics.

For your lab, check on your local craigslist; someone is always getting rid of some gear there. If not there try EBay, can’t swing a dead cat without hitting a CCNA lab kit like these: Cisco Lab Kit

Once you have lab equipment, get some windows servers spun up as that will make learning powershell both applicable and rewarding to you.

u/glymph · 12 pointsr/hacking

Check out the following books:

TCP/IP Illustrated, Volume 1: The Protocols: The Protocols v. 1 (Addison-Wesley Professional Computing)

By Gary A. Donahue Network Warrior (2nd Edition)

u/unix_heretic · 12 pointsr/sysadmin

The Practice of System and Network Administration.

A few general principles:

  • Automate the setup of said servers. Pick a configuration manager: Puppet, Chef, Ansible, Salt. Keep the code for said CM in revision control.

  • Separate your datastore (DB) from your frontend (webservers).

  • Separate your backups from everything else.

  • Set up a scheduled maintenance window in which you patch all of your boxes up-to-date with the latest security fixes. Include reboots where necessary (kernels need love too, and relatively few places have implemented hot-patching kernels).
u/dev_bry · 12 pointsr/learnprogramming

You've already done the first step: admitting that college can only teach the fundamentals while the rest of the things you need to know, you will learn while working.

With that out of the way, here's the next step: apply the Joel Test to your new employer.

If it gets an 11 or 12, you'll be fine. Find a senior developer there to mentor you and you'll be a decent software engineer in 1 - 2 years.

Otherwise, while you might learn a lot of new stuff in your first job, they might be inadequate, outdated, or outright incorrect. In this case, plan an exit strategy ASAP so that you can leave to another company that has a much higher score in the Joel Test. In this fast paced software industry, it makes no sense to spend 5 years in a company where you'd only get to grow the same amount as another guy who just spent 6 months in a better company.

Next step: read. No, not those "Teach yourself [insert language that will be deprecated in 2 years] in 24 hours" books - find the books that teach software engineering, lessons that don't get outdated. Here's the usual suggestions:

u/frenchst · 12 pointsr/cscareerquestions

Three CS fundamental books in the order I'd suggest someone read them if they don't have a background in CS.

u/chickenfun1 · 12 pointsr/ProgrammerHumor

Web dev having trouble finding work? Buy this book and this book, read them and contact [email protected]

u/B_Byte · 12 pointsr/AskNetsec

I'd suggest you first take an ASM course.
This would be a great start
Next, you have two options.
You can get this awesome book
or you can start with this course
which is a reduced version of the book.

After you're done, I think the best thing to do is to find someone who can sponsor you to attend SANS 610 course.

u/badsectoracula · 11 pointsr/Games

If you read Hackers, a book published in 1984 about the people and culture behind the early days of computing, which also contains a large part about the computer game industry of the time and how it was formed up (early history of Sierra, Broderbund, etc) and the people behind it, you'll see that many people (like Ken Williams) were very profit driven from the beginning. Of course there were also people on it doing it because they liked games and computers, just like today.

(also interesting trivia: this book was an inspiration for John Carmack when he was young and probably shaped his desire to share his code and knowledge openly)

u/Caballer0 · 11 pointsr/oculus

Meh.. If you want to know more about Bill Gates and his achievements, you should do some research.

You can start by reading Hackers - Heroes of the computer revolution.

u/Deterministic · 11 pointsr/itsaunixsystem

This really isn't as ridiculous as people are making it out to be. Encryption is commonly employed in malware as an anti-reverse-engineering measure. When you're a malware author and you want to make it harder for a malware analysis lab to figure out what it is that you did with a piece of malware (say you're targeting this malware at stealing credit card information, navigating a corporate network, compromising admin accounts within a company, etc.) you can encrypt your actual program code and include a snippet of code that runs on execution to decrypt the code by reading, decrypting, and writing back the region of memory where the encrypted code lives. This makes it a bit more annoying for a malware analyst to disassemble your malware and figure out what it's doing.

Python 6 is a bit silly though. Python 2.7 will be in use until the end of time.

For anyone curious about reading further, Practical Malware Analysis is a good resource.

u/moofishies · 11 pointsr/sysadmin

For anyone who reads this and goes "Wow! What else can powershell do that I haven't heard about??"

u/OgreMagoo · 11 pointsr/sysadmin
u/8fingerlouie · 11 pointsr/linuxmasterrace

man pages really are good enough once you got the basics down. They were 20 years ago, and I don’t think the quality has decreased. If you want truly great man pages, FreeBSD is the place to go.

To get the basics down, start with something like this

Once you understand that, follow up with something like this

Young people today.. they pick Arch to “learn something” (or just to be cool - I can’t decide), and when the learning part starts, they want the answers served without any effort.
There’s nothing wrong with wanting to learn, just don’t expect to be finished in 4 hours.

I’ve spent 20 years as a Unix system administrator and/or developed systems running on Unix. Before I had kids I spent a few years working on Stampede Linux. My first Linux distribution was “Yggdrasil Plug&Play Linux fall ‘93”. I still learn new stuff frequently, and it usually starts with something I find on the internet, which then get tried on my own machine, and finally i use man pages for troubleshooting/fine tuning.

If that fails, I do what everybody else does, i ask google, and if I still can’t solve the issue, I will ask somewhere. Last issue I had was Debian <-> FreeBSD NFSv4 mounts with Kerberos that would freeze frequently. I spent a couple of weeks debugging that before asking, and learned a great deal in the process. After google started returning only purple links, I finally asked on a couple of forums.

u/william_fontaine · 11 pointsr/cscareerquestions

Code Complete:

Applicable to any OO language you are using.

u/MeoMix · 11 pointsr/learnprogramming

Hey man. Good to hear that you are interested in programming. :)

I don't think "books" is a good suggestions. There is a lot to read and not a lot of time in the world. Plus, programming tends to be more fun.

That being said, however, I am going to go ahead and recommend reading Code Complete. I think that book should be required reading for every programmer. You will learn a lot and it is also a fairly amusing / interesting read.

I would also like to suggest that you use StackOverflow and follow interesting conversations in it. One of the tricks to programming is to become very engrossed in it. Find things you find interesting and read/learn just for the sake of it. If you think you know language 'X' well -- go to StackOverflow, sort by votes, filter by tag and tag the language you want to read about. I guarantee you will find a lot of "Woah, I did not know language 'X' could do that."

One last thing w.r.t all the 'what languages should I learn' hullabaloo. Start a little higher level. It sounds like you want to learn an Object-Oriented language. Do you know what your other options are?

There's a quick overview of the different 'types' you'd expect to see. OO is a clear one, especially for industry development, but functional languages and others may also end up being used for your job. :)

EDIT: A little more on topic. I started with C++ in school. Some concepts were difficult -- pointers, references/pass-by-reference/de-referencing, and to a lesser extent garbage collection / memory allocation.

The main argument for learning C++ first is that it gives you good fundamentals. Every programmer should know what a pointer is. And a double pointer, for that matter! The main argument against learning C++ is that you can blow your foot off much easier than in Python. And that's no fun. And if you're the type of person who isn't ...tenacious enough to try and repair your own blown off foot -- perhaps a higher-level language would be a better choice. In this way you can become more accustom to the frustrations of coding (and how to cope) before introducing more complex issues.

That isn't to say you can't create just as large a clusterfuck with Python. You can. It has its own nuances. It's just that the library support (code already written for you) is going to be more extensive. A good comparison would be driving an old car vs a new car. The engine is harder to repair in the new car (can't get at the parts), runs better, but you don't get a feel for whats in the engine. Its more of a black box. That old '57 Chevy (C++) has its engine laid bare (not as much as C), but if you're no mechanic you might break your car and abandon it.

Just do what you find fun! You're still young :)

u/enricopulatzo · 11 pointsr/programming

Code Complete (haven't yet read ed. 2, but the first edition was tremendous)

u/BeanBagKing · 11 pointsr/HowToHack
  1. Code Academy has some free resources for getting started: Overthewire is also usually recommended. Also, just start using Linux and google solutions as things come up that you don't know how to do. Regarding pentesting methods - There's a lot of resources out there, check the sidebar, but this book lays out the standard methods used: (you can probably find it cheaper with a no starch press discount code)
  2. WSL and python (or just python, but might as well get used to linux at the same time). Also, bash and powershell scripting.
  3. Yes, the book above isn't free, so like I said, sidebar and such. Ask for it for your birthday, do odd jobs, etc. You don't have to make things expensive, but you're eventually going to have to spend a little bit here and there.
  4. Anything. Kali is kind of the standard, which is basically Ubuntu Gnome (actually Debian based) with all the tools installed. Windows is good for some tools though, and just to learn the environment since Windows environments are typically the target.

    Also, second what /u/BigDaddyXXL said.
u/B0b_Howard · 11 pointsr/netsecstudents

(re-comment of a re-comment of a re-comment but...)

One of the books I see come up time and again in recommendations for OSCP prep is Penetration Testing: A Hands-On Introduction to Hacking by Georgia Weidman.

She has also done a video series along the same lines as the book that is available for free from Cybrary.

u/spidermesh · 11 pointsr/AskNetsec

As a pentester you would typically need to follow a methodology of some sort. Here is a well known one

Typically you would first enumerate all open tcp/udp ports using a port scanner such as nmap. Then you would analyze ports one by one to see if they contain any vulnerabilities. If it’s a service running an outdated version of a particular software you would look up exploit-db and see if there is a corresponding exploit. Then tweak it to give you reverse shell to your IP address in metasploit or netcat. If it’s a web service you would use web methodology such as the one from here to look for web vulnerabilities in the web application and attempt to gain a shell that way. After you get a shell you might be highest privileged user or you might need to escalate your privileges. If you are regular user you look for ways to escalate your privileges depending on operating system you are logged in to. Get hackthebox vip account because this will give you access to retired vms and especially windows.

The OSCP certification is pretty much is doing combination of the steps described above on multiple machines. There is a book which goes over this methodology as well

Here is a great resource that many people use as a resource to study for OSCP as well
And if you search for oscp survival guide you can get additional resource to reference. Also rtfm is a good reference book as well.

Edit: here’s a good guide on using methodology with template you can import

u/replicaJunction · 11 pointsr/PowerShell

Learn PowerShell in a Month of Lunches is one of the most widely-recommended books on starting PowerShell. I'd recommend following along and physically typing commands in to see what happens - don't just read it.

Alternatively, if you've got the time, one of the most comprehensive introductions is the Microsoft Virtual Academy course on PowerShell 3.0. Don't worry - even though PowerShell 5.0 has been released, this is still very relevant information. It's long - almost 8 hours of videos - but these guys know what they're talking about and they explain it quite well.

Beyond that, check out the resources in the sidebar of this sub. There are a couple other intro books and guides, as well as a lot of script resources to look at.

Finally, once you have a feel for what the language is, the best way to discover what the language can do is to find something you already do a lot, and figure out a way that PowerShell can automate that process. It sounds like your senior engineers have some examples of this already, but don't be afraid to expriment. I have to produce a lot of Excel reports, so the PSExcel module for PowerShell lets me automatically create those reports.

Hope that helps!

u/alfiedotwtf2 · 11 pointsr/compsci

You're not going to get a better intro than "TCP/IP Illustrated, Vol. 1" by W. Richard Stevens. Ignore the other volumes.

u/sitefall · 11 pointsr/learnjavascript

You're an experienced programmer: this

You're a mathematician/scientist/engineer/etc: this

You are "ok" with another language: this

You're more of a "video tutorial" learner: this (and your local library probably gives you free access, seriously check)

You're completely new to programming: this

You're 9 years old: this

u/ojimeco · 10 pointsr/linuxadmin
u/cabbagerat · 10 pointsr/compsci

The TCP/IP Illustrated series is very good, if you have some basic knowledge. If you are just starting out, then I'd recommend Tanenbaum's Computer Networks. Whatever book you get, make sure it's one that focusses on Ethernet and TCP/IP, for the most part. You can specialize into other networks later as you need to, but those two are the most widely used in industry by far.

Another way to learn about networking is through practice. Set up a home network, write a basic client and server using sockets, play with tcpdump, etc.

u/inerg · 10 pointsr/sysadmin

Worth noting that there is a third edition that is significantly updated. I own both would say they're both good but you'll get a lot more out of the third edition.

u/veeberz · 10 pointsr/netsecstudents

A principle in web app security: user input cannot be trusted.

With that in mind, the following are the kinds of user input you can mess around with: query parameters, post params, file uploads, cookies, http headers, even out-of-band inputs like emails (if they get processed) or all of the above but for a different but related service.

Sometimes user input can be crafted to exploit unexpected behavior. Causing a 500 error may give you interesting error messages. Maybe form input isn't sanitized and you can perform sql injections, XSS, and the like. File uploads - do the files appear to be uploaded to their server (and not something like S3)? Try dropping php files (if it's a php application), try XXE if Word or Excel documents are expected. All sorts of fun possibilities can be explored wherever there is any user input.

Another subject worth studying: attacking authentication. Is there no rate limiting? Usernames can be enumerated? How about a brute force attack? Take a look at the session token in the cookies - can you reuse them? Are they custom-made (does not appear to be generated by a known framework)? Try attacking the token-generation scheme itself. Discovered an XSS vuln and the cookie entry for the session token is not set to http only? Write a script to steal them cookies - that'll be your XSS payload - sit back and wait for someone to bite.

I think exploring these topics is a great start.

Recommended reading:

Edit: to add, the tools you have listed are info gathering tools. That's the first thing you want to use to give you a nice idea about potential attack vectors. Sometimes dirbuster can yield nice results in itself. For example, I found a deployment script sitting on a prod server - with AWS keys!!! Tip for info gathering: you can use builtwith to see what tech the target is using, and tailor info gathering scripts (like dirbuster) for that.

u/Livelol · 10 pointsr/leagueoflegends

Best place to start is: ;)

Additionally, I study Computer Science & Systems Engineering, that helps a lot ;)

u/Llim · 10 pointsr/teenagers

Ok, it doesn't matter why you did it. You did it, and that's what matters. The important thing to remember during all of this is that there's no going back. The best thing you can do to help yourself is just focus on your plan.

Now, what I'm about to tell you is very important: they already now. The NSA. You have, at a maximum, about 48 hours before the FBI kicks down your door and slaps a pair of stone cold cuffs on you.

Your first step is to erase everything: incinerate all your papers, cell phones, hard drives, everything. Anything that could possibly clue them in to where you're heading.

Second step: research. This is a great book to read up on. Obviously you don't have months to put this plan into action, but it'll still give you a good idea of what you're doing.

Now you need to pick a destination. There are two options: either go for the Walter White and hide out in a tiny house in the middle of nowhere for the rest of your life, or the "hiding in plain sight" option and settle down in a nice mansion on a tropical beach somewhere. Due to your extremely likely economic situation I think you'll have to go with Walter White unfortunately. All that's left to consider now is the country: obviously you want a poor, derelict nation, preferably hostile to the United States government - like Canada.

With careful planning, smart movement, and a little luck, you should be able to cross the border a few days. Don't both with credit cards, they'll have your face on INTERPOL within hours. Godspeed, Link_Mau5

u/kotojo · 10 pointsr/IAmA

I'm just two months into my first real job for programming and have a few books I've been going through.

Clean Code is a book not just about writing code, but good code that is easily maintained and passed down to other people to understand.

Working Effectively with Legacy Code was a great read coming into company that has been around for 20 years and is on the third iteration of their product.

I am doing web development so You don't know JS, Javascript: the good parts and then Javascript The Definitive Guide have all been a great help.

If you aren't much a book person, is awesome for info on tons of different technologies and is well worth the monthly cost. Go follow every major name in your preferred technologies on twitter. They will tweet all sorts of cool things to learn about. Also, PODCASTS!!!. I don't even listen to music anymore. If I'm in the car alone I'll be listening to Dot Net Rocks or Javascript Jabber.

Lastly, there are subreddits for every tech imaginable. Go subscribe to them and hit everyone up for where they get all their info!

u/swenty · 10 pointsr/Python

The key to building bigger systems is writing modular code. I don't mean just code made of modules, I mean code in which the module boundaries are in the right places. Code divided into the most meaningful and distinct chunks.

You want to divide areas of responsibility into separate modules, in such a way that each module has a clear, distinct and succinct area of responsibility and the interfaces between modules (the function calls and data passed) are simple and minimal. Finding the right boundaries takes thinking deeply about the problem, and considering different ways to model it. When you get it right, you will find that changing implementation of one part of the code is much less likely to cascade into other areas.

The idea that this is an important way to think about designing a program is called the separation of concerns principle.

Patterns that can help with this include dependency injection which is often required for unit testing, and which forces you to separate modules and aspect oriented programming which deals with modularizing cross-cutting concerns, things like caching, logging and error handling which often show up in many different places in your code and undermine modularity.

Code Complete by Steve McConnell addresses these issues and has lots of helpful advice for dealing with large projects and large systems.

u/SofaAssassin · 10 pointsr/cscareerquestions

> So something that would take in excess of 3 years to master is out, if you catch my drift.

You seem to be misguided on this point - while you can pick up the basics/fundamentals of programming pretty quickly, if you're so inclined, the actual practice of writing software, and writing it well, is going to take a lot of time investment. I look back at code/software I wrote when I was just starting out professionally, and while they worked, I know how poorly they compare to what I can write/design now.

Having 3 years of software development experience when starting from zero would probably leave you at 'junior' or 'mid' level at the end, and if you don't have a more experienced developer mentoring you throughout the process, you may be at a disadvantage. From the sound of it, your school has no actual programmers/developers.

With that said:

  • I would look at online resources to start out, like Learn X in Y Minutes or codecademy. Start playing around a lot and doing exercises.
  • For a beginner, a language like Python or Ruby tends to be easiest to start with, as they are simple to install and experiment with.
  • Additionally, learn about databases. MySQL and PostgreSQL are database systems that are widely used and free. Learn about database modeling, schema design, and how to actually write SQL.
  • Understand that pretty much anything you write or make in the first year or so that isn't very simple will probably be horrible hack jobs. You may not think they are, but trust me, they will probably have poor design, use nasty hacks, employ bad practices, and so forth. This is where on-going improvement is a necessity, and why people read books like Clean Code, The Pragmatic Programmer, and Code Complete.
  • Also, a mark of a good developer - assessing whether or not you have to actually write that code or software. I am not familiar with student management systems, but is it really going to be necessary to write your own, from scratch? Think of the following implications:
    • You are now your own support for your software - anyone in the school that has a problem with your app, you become the go-to person for fixing it or answering their questions, no matter how dumb the questions may be.
    • You become the point person for issues in the supporting system of the software - the database and the machines it runs on, primarily. You may be lucky enough to have IT helping you in this aspect, so hopefully you have an IT department that can do things like back up the database, maintain it, and restore it if something breaks.
    • Your software will likely be a hackjob - I do like to stress this point again, because none of us, starting out, turn out good software of moderate complexity without a couple years of experience. Time and time again I look at code written by fresh graduates or junior developers that are basically hacks or need a lot of cleanup/rewriting. Who will look over your code to tell you that?
    • Someone will have to maintain this software - and this will be you, but eventually, you might leave this job, so who will take over for you? Your school should be prepared for this eventuality.
u/Karzka · 10 pointsr/gamedev

Not game-specific, but these books are definitely industry essential books when it comes to anything related to software development.

In no particular order (though Code Complete should probably be first):

u/mcrask · 10 pointsr/learnprogramming

Code Complete and Pragmatic Programmer are great books about programming as a craft and are both language agnostic.

u/bot_bot_bot · 10 pointsr/learnprogramming
u/javelinRL · 10 pointsr/Python

I suggest this book, Code Complete. It has nothing to do with Python and it's pretty old at this point but by reading it, I know for a fact that it has a lot of the same ideals. knowledge, values and tips that my college teachers tried very hard to impose upon me in what is considered one of the best IT college courses in my country

You can also procure your HR department (or your boss) and share the situation. Tell them you'd like to enroll in some courses to get up-to-speed with everyone else around you, since you don't have the same training as them. Most companies (or at least a lot of them) will offer to pay the entire thing for you too.

u/MuseHill · 10 pointsr/gamemaker

If you haven't read it, I recommend Code Complete. It's a classic for a reason.

You read code far more than you write it, so do whatever you think is necessary to make the code more readable. You seem to be beyond the basics (self-documenting code, etc), so a few advanced tips:

  • Within a script, you can open up additional tabs that let you write more scripts so that they're all bundled together under one script name. You can use this to break a complex script down into smaller and smaller sub scripts without cluttering up your resource tree.

  • Abolish "magic numbers." In your example, if there's a number that you use that could potentially change, make it a macro (constant), enum, or global variable with a descriptive name. Macros and enums are substituted at compile time, so they don't have any "look-up" overhead during run-time.

  • I think you've already discovered why a lot of developers use scripts as often as possible: because it's easier to find and fix them than delving into an object's various events (or a room's creation code). Other than drawing, I usually have an event call a script, and the scripts are named hierarchically, e.g. sc_Creature_player_move

    There are a lot of good practices such as encapsulation, information hiding, and idempotence, that are too in-depth to get into here. IMO, GameMaker makes it really hard to follow some of these good practices, so I hope these suggestions are helpful to you.
u/cajun_super_coder2 · 9 pointsr/csharp

One of the best ways to learn is by studying other people's code. Using book references like the one you have on C# is a great start. Make sure you ask questions to yourself and really study the code. Questions to keep in mind: why is this line before that line? What would happen if these two lines were swapped? How could I make this easier to read? Do all of these lines make sense when grouped together in a function? How can I break this down into a simpler class/object?

Those are the kinds of questions professional developers ask themselves on a daily basis. If you start asking yourself those kinds of questions early, you'll become a very competent programmer.

I highly recommend new programmers to read Code Complete:

The fact that you've submitted this question indicates that you're on the right track. You just need practice.

u/spoon16 · 9 pointsr/java

Clean Code

Code Complete 2

Both are great books. I just finished reading Clean Code and I highly recommend it.

u/achthonictonic · 9 pointsr/sysadmin

cc him on code reviews for your day to day scripts and proactively go over the small ones with him, line by line, a few times a week.

I have a list of exercises(pm me if you are intested) from: -- I assign 4 of these exercises weekly and go over it in 1:1s. Buy him a few books, and explain that you can't send him to a conference because of budget issues this year, but you want to invest in his career development -- it will go along way to building the mentor-mentee relationship.

The thing I like about this book, its age does give a good historical perspective, but the questions at the end of the chapters are easily adapted into good questions to fit a particular environment.

I've used this approach to bring up 3 jr linux sysadmins so far.

u/gotmycheesewizardboy · 9 pointsr/netsecstudents
u/burlyscudd · 9 pointsr/IAmA

Things you should download:

u/kmsaelens · 9 pointsr/ITCareerQuestions

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)


u/bulletproofvest · 9 pointsr/sysadmin

Yep, if you're a Windows admin you need to learn powershell.

This is a great book to get started.

u/0b_101010 · 9 pointsr/learnprogramming

Hi! I recommend the following books:

u/teduh · 9 pointsr/compsci

I heartily recommend Steven Levy's "Hackers". One of my all-time favorites.

u/everythingmalware · 9 pointsr/Malware

If you are debugging you can manipulate the execution path. For example, the IsDebuggerPresent function call returns a nonzero value when the program is running in the context of a debugger. In intel x86 asm, return values are generally stored in EAX. Next there will be a comparison between EAX and zero. If they don't match, the malware will typically terminate.

When using a debugger you can set EAX to 0 before the comparison takes place. This way even though you are debugging, the malware will not know it is running in the context of a debugger.

There are also ways where you can patch the executable to change sections of code. This way you won't have to manually change the register values each time. Instead everytime IsDebuggerPresent is called, it will take the execution path you want everytime.

Sorry if this is confusing, I'm not sure the best way to explain this. This is more advanced analysis techniques / reverse engineering, so if you don't know assembly then it might be over your head.

There are some good resources out there to learn though. Practical Malware Analysis is the go-to book. I've heard good things about the Leena tutorials on tuts4you. There was also a blogger called The Legend of Random (might be down) who made some cracking tutorials. I personally think a good way to learn is to write a simple windows program (using a higher level language) and reverse the binary. This way you know what the source code is and see what it looks like in ASM. (Make sure to do these in VMs or another isolated environment).

u/WellThenScrewIt · 9 pointsr/ReverseEngineering

Learn to write simple C programs. Then debug your own C programs, preferably in OS X or Linux using gcc/gdb. Then disassemble your own C code (learn how to disable optimization in the compiler; try it with no optimizaiton and then with increasing levels). Then look at C++ and (gasp) Visual BASIC and such. Turns out a ton of malware is written in these languages, and the snarl of garbage that you'll uncover that is just part of the auto-generated message handling stuff for VB will astound you, so don't start there...but it's important to understand those structures when you see them.

Then follow tutorials about reversing other programs. There are great books on this.

It helps a lot to know assembly language, but you'll tend to pick it up as you go.

You'll want better tools than just command-line disassemblers. I prefer IDA Pro.

There's a great book that uses IDA Pro with many examples to address precisely your questions.

Here's another great book on malware analysis that covers all kinds of tricks you might bump into when working on real targets.

I see all this as a long-term iterative exercise. It's fascinating.

u/systemd-plus-Linux · 9 pointsr/linux4noobs

”How Linux Works” is one of the better in depth explanations of Linux I've read.

It's written in a way that anyone can read and understand it, but it gets pretty deep into Linux under the hood.

u/beepbupe · 8 pointsr/linux4noobs

2nd this.

The Linux Command Line. Author offers free PDF for download or you can support and buy from amazon.

u/unsupported · 8 pointsr/computerforensics
u/polycarpgyarados · 8 pointsr/ITCareerQuestions

The senior part is more of a technical grade level and not necessarily management... granted I'm in the lead role here, it's my first time as one. All I can say is what help me spring forward at a lull at mid-level was picking up Thomas Limoncelli's books, [the sysadmin one] ( and [the cloud one] ( /r/sysadmin recommends them too. These are your best practice books, these tell you why to do things, not how. It will turn you from being the guy that mops the floor in a burning building into knowing when to yell, "FIRE!"

Cert wise, unless a specific company or contract requires it, I don't bother with the time and money on certs if you already have years of experience on the books. I'd probably go for a Security+ and then go for a Red Hat and/or CCNA certification as they are both prestigious. Red Hat is a big deal just by its practical application test.

If you want to go into cloud related stuff, you might want to brush up on your programming. This is what is limiting me, I have very minimal bash scripting experience coming from military in the Windows world then making a move to Linux.

Honestly, I would focus on being both as they both overlap very often unless you are in really large stovepipe enterprise environments, but you never know if you need to make a move to something smaller where you have the many hats role. I'd get your degree in something Computer science related (CS, CIS, EE, CE, etc) and then go RHCSA/CE and maybe Sec+/Net+ or instead of Net+ just go for something Cisco related. My networking is Net+ strength at best and I resent not doing better when I was younger.

EDIT: Also, if you can do the math, BS is Computer Science all the way... sysadmins are still really kind of not doing well in the degree program department, mainly because were so... trade-like I guess. Honestly, we're the new Millwrights like my dad was. We keep the factory going and fix it when production stops. It's kind of cool actually, it's nice to be able to have some kinship to my dad in that way.

u/TehUberAdmin · 8 pointsr/javascript

But for the love of God, please, please, learn JavaScript itself to a good standard before even touching jQuery.

Even though jQuery makes writing web apps a lot easier and saves you a lot of development time, it is still a JavaScript library and as such, if you don't have a good grasp of JavaScript, you're going to be writing jQuery code that may well work correctly, but you're not going to have any idea why it works correctly and as such, debugging and writing advanced jQuery code is going to be a nightmare.

I appreciate that you might not want to spend any money on learning JavaScript, but if you're really interested in the language and want to know it well (and you already have a solid foundation in programming), then I highly recommend getting JavaScript: The Good Parts and reading through that. It's short (176 pages), you can read it in an afternoon (though the first time round, some of the stuff might go over your head), and although it may be very opinionated, most of what Crockford says is pure gold and at the end of it you will have a thorough understanding of how JavaScript works and how you can write good JavaScript, which will aid you tremendously when you start using libraries such as jQuery.

Apologies for my rantiness, it's just that JavaScript is seen as a 'toy' language by many, a simple language that people can just jump in and use without learning it first, as evidenced by people suggesting diving straight into jQuery, which is a reputation that I think is undeserved. JavaScript may not be the prettiest of languages, but it's here to stay, and if you learn to use it properly, you'll find that beneath the design mistakes lies a simple and beautiful programming language that just wants to be loved.

u/tspike · 8 pointsr/programming
u/shaggorama · 8 pointsr/learnprogramming

Probably the best book on "thinking like a software engineer" is Code Complete.

For now, here are a few general tips off the top of my head:

  • Build your toolkit as you go. Don't just be trying to construct abstractions. You should be hunting for useful abstractions. Write code that is reusable. Whatever code you wrote is solving some sub-problem of your larger solution: are there related sub-problems you could attack with a similar strategy? Can you tweak some piece of code such that it can be reused to make your life easier elesewhere?

  • Code as documentation. You are not just writing code for the purpose of accomplishing some end-goal, you are writing code so that if something breaks down the line, you will be able to figure out what needs to be fixed. This means your code should explain itself. Even if you don't anticipate anyone other than yourself will ever see your code, it might be months or years before you revisit some old code and you should anticipate that you will have forgotten basically everything about how it works. How can you make "future me"'s life easier in the process of building some solution? You should always be trying to name and structure variables/functions/objects such that it's clear what your code is doing and how information and decisions flow through your program.

  • Solve for scalability early. Premature optimization should generally be avoided, but it's often the case that there are small changes you can make very early on to make your code orders-of-magnitude more performant. Are you choosing appropriate data structures for the problem? Are you factorizing your code and dependencies in a reasonable way? Are you excising unused dependencies from your code? Are you limiting i/o? Are you moving large chunks of data around? Can your code be containerized into microservices?
u/enteleform · 8 pointsr/compsci

I've been coding for a few years and for a while was just focused on getting things to work.  Now I'm at a point where I know I'll figure out any given problem with my accumulated knowledge and/or additional research, and I'm noticing that not planning ahead is the most significant (lack of) action that will set me back at this stage in my practice.

To remedy this, I've been looking into architectural patterns (MVC, MVP, MVVM, etc.), and UML diagramming.


Architectural patterns were initially difficult to grasp, as many of the explanations available online dig into topics that might not make sense yet if you are inexperienced with architecture.  The MVC Java Tutorial by Derek Banas is the best introductory explanation of architectural patterns that I've come across (he also has some great videos on design patterns & other topics).
Some books that cover code structure & architecture in more detail:

  • Clean Code: A Handbook of Agile Software Craftsmanship

  • Code Complete: A Practical Handbook of Software Construction

    The author of Clean Code, Bob Martin, has a ton of talks that are a great source of info, and has also produced the CleanCoders series.


    Also check out some Software UML Examples.  I find that mapping out an overhead view of your project before starting to code gives you a chance to make sure the majority of relationships, life-cycles, and high-level details are planned out correctly from the start.  You'll still have to make inevitable adjustments while coding, but it's much more efficient than figuring it all out from the inside while you're building it.
    yEd Graph Editor is a good freeware option for creating UML diagrams.
    If you find that you really like the UML approach, check out Enterprise Architect.  It's definitely worth picking up since it allows you to generate file structures from your UML diagrams, with all of the boilerplate filled out already (class/method/variable definitions, etc.).


    Also related, SourceMaking has some good wikis on:

  • Design Patterns

  • Refactoring

  • Anti-Patterns

  • UML

    (Although their UML material is pretty in-depth and may be overkill if you just want to use UML as a quick way to plan out code.  But it's legit if you want to go all-out UML mode)
u/antininja · 8 pointsr/gamedev

> I first build a very simple prototype that has some basic actions and game principles I want to have in my game. I do not care for design nor code quality.

IIRC, this technique is highlighted in Code Complete. The key point the author made there was that it's OK to take shortcuts while prototyping, as long as you're willing to throw all that code away before doing the real work. (Of course, it's not that black and white.)

u/zwangaman · 8 pointsr/programming

Code Complete 2nd Edition is what you want.

u/perfecthashbrowns · 8 pointsr/linux

This has been one of my favorite books:

And I read through this entire book:

They are both great!

Edit: I can't type much because my internet is going out regularly at the moment, otherwise I'd love to elaborate further.

u/theevilsharpie · 8 pointsr/sysadmin

> windows server/services?

Microsoft's TechNet and MSDN are Microsoft's main reference portals for operations and development, respectively.

For structured learning, Microsoft offers their MCSE Program. Each exam covers a specific topic, and there are learning objectives and links to reference material available. Microsoft Press will usually have a self-study guide available for each exam.

There's also the Microsoft Virtual Academy, but I've never used it and can't vouch for its quality. Of course, it's free, so....

> linux server/common services? (Could be distro specific)

For professional use, the most commonly used Linux distributions are RHEL/CentOS and Ubuntu. (Debian is also popular, but it's close enough to Ubuntu that you can lump the two together.)

Both RHEL and CentOS have documentation available:
RHEL Documentation Page
Ubuntu Server Guide

RHEL's documentation is far more thorough and complete. However, Ubuntu has community support in the form of the Ubuntu Forums and Ask Ubuntu, and I've personally found it easier and faster to find specific information and solutions for Ubuntu.

For structured learning, Red Hat has a certification track available (which is obviously focused on Red Hat technologies), and LPI has a certification track that is more vendor-neutral. There are self-study books available for Red Hat's certifications, but they are all outdated for the current exams, and I don't recommend buying them until they're revised for RHEL 7.

For self-study, the closest thing to a Linux system administration bible that currently exists is the UNIX and Linux System Administration Handbook. However, it's a bit dated in certain respects.

Linux support and documentation, like its development, is spread out over the Internet. If you're looking for how to do something, usually the best place to start is Google. Searching for "[stuff] Ubuntu" or "[things] CentOS" will usually send you to the right place. Stack Exchange is also a pretty good resource:

  • Stack Overflow, for scripting and coding questions
  • Server Fault, for questions regarding system and network administration
  • UNIX and Linux, for questions about Linux in general

    > Networking

    Networking education is split into two worlds: theoretical/academic computer networking, and practical, vendor-specific networking.

    For theoretical networking, your best bet is to pick up a textbook. We recently had a thread discussing recommendations.

    For practical, vendor-specific networking, the big player is Cisco. Cisco has a certification track available with course objective and reference materials. For self-study, anything written by Wendell Odom is gold; however, bear in mind that you really need a lab for self-study to be effective.

    Other companies, like Juniper or HP, also have networking certifications available, but I only recommend them as a supplement.

    Lastly, while I describe Cisco's training as "practical," that doesn't mean that the theoretical aspect of networking is unimportant for a professional. There is an industry-wide push toward software-defined networking, and if your SO wants to get in on that, she'll need to have a firm understanding of computer networking theory.

    > NetSec

    Hardcore NetSec isn't really my field, but /r/netsec has a Getting Started Guide with some resources available.
u/dontgetborn · 8 pointsr/linuxquestions

I've heard that this is the best handbook for UNIX/Linux administration:

u/sandwichboy41 · 8 pointsr/sysadmin

Don't use batch. It's outdated and should only be used for compatibility with very old versions of Windows.

PowerShell is the right way to to do this. I'm assuming when you say "create 20 users in Windows Server 2012" you are referring to Active Directory (AD) users, and not local users. You'll want to use the New-ADUser cmdlet to create the AD users. For importing from a csv file, you will need to use the Import-Csv cmdlet.

I won't tell you how to write the script, you should learn that on your own. The two cmdlets I mentioned should point you in the right direction. If you know nothing about PowerShell and need to learn the basics then get the book Learn PowerShell in a Month of Lunches. The book will teach you everything you need to know to get started with PowerShell.

u/StarSlayerX · 8 pointsr/sysadmin

My buddy used this. He highly recommended it to me.

u/mysticreddit · 7 pointsr/gamedev

To expand upon this ...

  1. In game dev just because a language has a feature doesn't mean it's a good idea to use it. Professional game devs are concerned about the run-time costs. That means knowing the costs of the features your language provides.

    For example, see this talk about how Ubisoft uses C++

  • CppCon 2014: Nicolas Fleury "C++ in Huge AAA Games"

    They avoid most of modern C++ features because there is little, or no benefit, and the (run-time) performance cost is too high.

    To be a great programmer, you should know both the strengths and weakness of every language feature. They were designed and added to the language to solve a certain problem. What is the context? Where does it NOT perform?

  1. As you move from indie to professional game dev you will be more focused on budgets. Memory Budgets. Performance Budgets. Polygon Budgets. Shader Budgets. How how to manage memory with a mid-level language like C is a fantastic skill to have. You should have a grasp of using memory/object pools which can be used in Javascript to further boost, say your particle system performance.

  2. OOP does not scale and leads to terrible performance. For now, don't worry about it.

  3. Javascript is a shitty designed language.

    On the negative side, it has tons of small gotchas. One of the ways to minimize it biting you in the ass is to use this hack at the beginning of your .js file

    "use strict";

    This will prevent the browser from allowing you to use variables that haven't before declared.

    On the plus side, it is fantastic for rapid prototyping.

  • ALL Javascript programmers should have Douglas Crockford's book JavaScript: The Good Parts

    Now I didn't say you shouldn't use Javascript. Whether you write your game in C or Javascript is (slowly) becoming irrelevant as you can compile Javascript to C, or compile C to Javascript.

    Use whatever language you feel fits your dev style.

    All programming languages suck. Some just more.

    The more programming languages you know, the better the programmer you will be.
u/zjs · 7 pointsr/web_design

It's not quite what you asked for, but the parent of this reply answers that.

JavaScript: The Good Parts offers a wonderful Computer Science style discussion of JavaScript.

u/lsd503 · 7 pointsr/compsci

Code Complete by Steve McConnell

u/autophage · 7 pointsr/IWantToLearn

Speaking as someone who was great at reading but bad at retaining, learned to retain while in college getting a liberal arts degree, and has been reasonably successful at teaching himself programming languages since graduating...

Read things twice. Not necessarily the whole book, but for each paragraph you come across, think about what it's saying. If it is introducing something new, then read it a second time.

Read things out loud. Not even stuff you're trying to learn, and not necessarily to an audience. But (if you're taking my advice about reading things twice) do your second go-through out loud. You'll find that often your intonation is wrong - you didn't catch that something was a question, or you thought you were on the last clause of a sentence but you were wrong. Dedicate some small part of your brain to listening as you read out loud, and fixing these problems. This will help you get the structure of a thing - which parts are introductory, cursory, or parenthetical, and thus can be skipped over; which parts are REALLY IMPORTANT, which parts are actually pretty damn funny but you missed the joke the first time...

Don't just read. Explain to people what you're reading. My housemates and girlfriend have probably sponged half the stuff I've taught myself (about programming, musical instruments, bicycles, pretty much anything I've decided to learn about) because I'm constantly asking if they mind if I explain a concept to them. It helps that we're all young, intelligent, curious people.

Have a conversation with the book. When you come across something that seems wrong, don't just plow through - see if you can figure out why it just said what it did. Maybe you read it wrong. Maybe you misunderstood an earlier concept. Maybe you thought the dude was speaking when it was the lady. The point is that after that initial moment of confusion, you'll have a moment when it Suddenly Makes Sense - cultivate your enjoyment of that moment. It's one of the greatest pleasures of reading.

Do the stuff you're reading about. In the case of programming, do the exercises. If you're reading a book about a foreign language, acclimate yourself to the rules of pronunciation. In a work of fiction, hand the part of you that experiences emotions over to the author and let him or her shove you around to whatever he or she wants. If there's a math concept that doesn't quite make sense, pull it up on Wikipedia and read the links that describe any of the fundamental elements that you're missing.

If you want to get into programming, read one of the Head First books. They talk a lot about effective ways to learn things, in addition to putting those principles into practice in how they teach programming. This book started me on my current routine of reading a chapter of (whatever computer book, currently Code Complete) when I first wake up in the morning.

Apologies for the wall of text, I hope that was helpful. I'll edit to add anything that I think of.

u/Tefferi · 7 pointsr/JobFair

Two things: The coursework from my CS degree, and reading books about software engineering.

I've spoken in other places about the former, and for the latter, I recommend The Pragmatic Programmer, Code Complete, and Design Patterns: Elements of Reusable Object-Oriented Software

u/ZukoBestGirl · 7 pointsr/ProgrammerHumor

And you could check stack overflow for question on general programming books. I would always go for a general concept functional programming over how to functional programming in haskell.

But I'll be perfectly honest, I'm a victim of the curse of knowledge so I honestly don't know how one should start. What I do remember is that I had huge problems with syntax (how do I tell language X to do a for (Employee e in employeeList), how do you write a switch and stuff, why would I ever need a ternary operator, and like that.

But once you master the basics of how to write x, y and z in your preferred language, you absolutely need to understand design patterns, you absolutely need to understand how code is supposed to be written, you absolutely need to understand data structures, you absolutely need to understand inheritance and polymorphism, you absolutely need to understand lambdas and functional programming.

Then you can get to the more "neat" stuff like the benefits of having immutables, and "job specific stuff" like how to solve race conditions in threading; sockets and web communication, etc.

u/Kuytu · 7 pointsr/programming

[Code Complete] ( 960 pages, no fluff, essential reading to any programmer.

u/Gankbanger · 7 pointsr/learnprogramming

These are the coding conventions every Java developer should follow:
Oracle's Code Conventions for the Java Programming Language

If there are industry-wide coding conventions for the particular language, follow those. (i.e.: Java , C#); otherwise, most companies will enforce some conventions (i.e. most companies have their own C++, C coding conventions); otherwise, establish some, and stick to it. This book has general guidelines on coding conventions and best practices: Code Complete 2

u/drstranglove · 7 pointsr/AskNetsec

Servers should always be hardened and because everyone likes long guides the National Vulnerability Database actually maintains a lot of information regarding hardening servers. So for the actual server itself can be hardened using the following guide located here. That is for Red Hat Enterprise Linux 5. It will change from distro to distro, but some things are pretty standard. I agree with PalermoJohn as well that learning more about networking will certainly help you in securing your server and network.

For applications running on your web server the link for OWASP Top 10 that Rsaesha posted will help you. If you have more time and would like to learn about Application Security, The Web Application Hacker's Handbook is a great resource to learn a lot about security in Web Applications.

Both application and network level security are required to truly secure your web server.


u/elvinguitar · 7 pointsr/AskNetsec

IMO, these books are the best ones for web pentesting:

The Web Application Hacker's Handbook

The Tangled Web

OWASP Testing Guide v4

u/doss_ · 7 pointsr/linux4noobs

the easiest way is to strictly identify which part is really the variable:


cp $foofile testdir/. # cp: missing destination file operand after 'testdir/.' ($foofile doesn't exist and expanded to null, not enough required params for cp)

cp "$foofile" testdir/. # cp: cannot stat '': No such file or directory ($foofile still doesn't exist, but expanded to '' due to double quotes usage - good practice)

cp ${foo}file testdir/. # will compy 'testfile' if exists

Also it is usefull to access command line params from inside the script if there are more than 9 params, to access 10th param use ${10}

and here is some list i noticed for myself of how to use this braces, while reading this book - would recommend:

Sorry for formating issues, reddit treats spaces and new lines in special way..

variable substitution:

Bash supports various variables substitutions:

$a - will be substituted with 'a' value

${a} - same as $a but could be concatenated w/ string w/o spaces:

${a}.txt - will be expanded in a_value.txt

${11} - 11th positional parameter given to script from shell

${var:-word} - if 'variable' is set, the result will be its value

if 'variable' is unset - the result will be 'word'

$(var:=word} - if variable is set results in its value substituted

if variable is unset, it will be assigned to 'word'

such assignment will not work for positinal params(see 'shift')

and other special variables

${var:?word} - if variable is unset error with reason 'word' will be

generated, exit code of such construct will be 1

${var:+word} - if 'variable' is set, the result will be 'word',

(but variable's value will not be changed)

otherwise result will be EMPTY string


$ echo ${variable:-ls} - variable unset - ls used

> ls

$ export variable=1

$ echo ${variable:-ls} - variable is set- its value used

> 1

$ echo ${variable:+ls} - variable is set - ls used

> ls

$ echo ${variable1:+ls} - variable unset - empty line used


${!prefix} or ${[email protected]} - returns NAMES of existing variables

that starts from 'prefix.


$ echo ${!BASH


string variables substitution:

${#var} - returns length of string in variable's value


$ var=123456789 #this could be interpreted as a string too now

> 9 #string length is 9

${#} or $# or ${#@} or ${#} - returns number of positional parameters

of the script being executed

${var:number} - return string from number to the end, spaces trimmed

variable is unchanged.


$ var="This string is to long."

$ echo ${var:5} #returns string from 5th symbol

> string is to long.

Example: spaces are trimmed:

$ echo ${var:5} | wc -c #count chars

$ 19

$ echo ${var:4} | wc -c #return starts from space

$ 19 #space is trimmed so same number of chars

${var: -number} - return string from end to number, spaces trimmed

NOTE - space between ':' and '-' signs


$ echo ${var: -5}

> long.

${var:number:length} - return string from number till end of lenth


$ echo ${var:5:6}

> string

${var: -number: -length} - return string number between number(from the

end) and length (also from the end)

NOTE: number must be > than length


$ echo ${var: -18: -2} #var is This string is to long.

> string is to lon

${@} - return all values of positional params

leaving spaces inside strings (like "[email protected]" ) - bcs it know how

many arguments script has

} is the same form, it seems

${@:num} - displays values of positional params but from num

$(@:1) - works same as ${@}

${@: -2} works , but starts from the end

${@:num:length} - same as with strings but with positional params

${@: -num: -length} - same as with strings but with positional params

${param#pattern} - finds shortest match and deletes it (lazy match)





${param##pattern} - finds longest match and deletes it (greedy match)




${param%pattern} - same as # but deletes from the end of the file



${foo%.} - note . instead of . in # example


${param%%pattern} - same as ##



Search and replace:

${param/pattern/string} - replaces first occurance of pattern with string

${param//pattern/string} - replaces all occurances of pattern with string

${param/#pattern/string} - replaces only if at the beginning of the line

${param/%pattern/string} - replacesonly if at the end of the line

u/bofha · 7 pointsr/linuxadmin

Tanenbaum's textbook is par for the course THE best low-level exploration of the fundamental concepts of operating systems. It is, however, HIGHLY theoretical, and requires a solid base of knowledge prior to even starting it. It also is not useful for learning specifics about every day tasks.

This is a phenomenal introduction to the concepts and some of the practice of Linux:
And here is a practical-first exploration of how to use Linux:

I would highly recommended reading these two books, then picking up a copy of Tanenbaum's, and finally this:

If you actually study and practice implementing the topics discussed in these four books then you will have a far better understanding than 90% of the Linux users I've interacted with.

u/netscape101 · 7 pointsr/netsec

Learn sysadmin skills (linux sysadmin especially), learn to program in atleast one language can be anything: javascript or even python. Learn to hack web applications. Learn about infrastructure penetration testing. Have a look at and Here are some guides to get your started:

Here is a copy paste of what I sent to another guy. Anyways here is my reading list: Check this too for practice: (List of vulnerable web applications that you can try on) Try hackerone and bugcrowd too. Live sites you can hack. Some Stuff to read: Also read: 1. The Web Application Hacker's Handbook. (800 pages but just browser through it) 2. The Database Hackers's Handbook 3. Android Hacker's Handbook 4 . This book is good if you still very new: Also read this: and this: Also check my subbreddit: /r/netsec_reading Some more blackhat stuff:

u/orispy · 7 pointsr/linux4noobs

This is the best book. Sets a firm foundation that you get nowhere else.

How Linux Works, 2nd Edition: What Every Superuser Should Know

u/cornflakecockatiel · 7 pointsr/childfree

Final Step: Just disappear. Better than giving the bitch the satisfaction of whinging to her cunt buddies the rest of her life that her "chiiildren are viiictims b/c their Daddddy keeeled himself".

Best revenge is to live life to the fullest in some far-off tax shelter without an extradition treaty with your home country.

u/thebitingfaery · 7 pointsr/raisedbynarcissists

Also check out this book: How to disappear by Frank Ahearn.

u/emcoffey3 · 7 pointsr/webdev

I'm a big fan of JavaScript: The Good Parts. I'm not sure if it is quite intermediate, but it is a terrific (and short) read.

Secrets of the JavaScript Ninja is a bit more advanced. It's written by the guy who created jQuery. I found some of the coding style to be sort of strange, but it does have a lot of great information.

u/theanzelm · 7 pointsr/Games

I can really recommend this book: (not an affiliate link ;) )

JavaScript is amazing if you embrace it's prototype-orientation and assorted ugly warts.

u/ClydeMachine · 7 pointsr/sysadmin

Link for those curious. Thanks for the tip!

Also, there's a CBT Nuggets video series on Powershell for those who dig CBT Nuggets kind of learning.

u/TheLightingGuy · 7 pointsr/sysadmin

If you want him to get a firm grasp on it, There's this book as well:

A friend of mine works for one of the guys who wrote it and my understanding is that it's teaches you more than you thought you knew about linux.

u/mickbayne · 7 pointsr/linuxadmin

I suggest getting a copy of the UNIX and Linux System Administration Handbook.

u/Faluzure · 7 pointsr/Futurology

While Munger and Buffet are fantastic wealth generators based on value investing, they're definitely not software engineers. If you want to make a somewhat informed decision on Bitcoin and what cryptocurrecies represent, you should strive to educate yourself and not listen to what these two say about something they don't understand.

Andreas Antonopolos is a great educator:

The book published about his talks is also a fantastic resource:

u/d1sr3 · 7 pointsr/Malware

This site contains a list of sites providing collections of malware samples : If you haven't read any book about malware analysis yet I would recommend you to start with since you could get yourself easily infected as a beginner

u/BinMapper · 6 pointsr/Malware

Some resources which will indirectly help you for GREM

u/xSinxify · 6 pointsr/AskNetsec

That's a good setup you have going on, honestly. If you're looking for more resources, I can think of a few resources to supplement what you're already reading/doing

The Tangled Web -

SQL Injection Attacks and Defense -

Hacking Exposed: Web Application - - At this point, you can probably filter out what's relevant to you or not, this will map out other topics related to what you need to know, and may fill in any gaps you have at this point.

OWASP - [Borderline vital to web app exploitation, Highly recommend if you haven't explored this site yet]

Now, the books and study materials are nice and all, but the most important thing is practical experience, and I see you've identified that by engaging yourself in DVWA. A few additional hands on labs you could dive into are vulnhubs that target the web (Broken Web Applications Project by OWASP is a must):

Wargames (Overthewire / Smashthestack):

SecurityInnovation ( - It will start off with web challenges, feel free to stop when it starts getting into binary exploitation. What you've learned up to this point should carry you through the web application portion of this challenge, although some lateral thinking is required, which is also a skill you'll need for the GWAPT.

Google-Gruyere -

Since you stated that you were going through the WAHH book, the labs over at mdsec may be a good investment for you at this point to follow along (although not exactly required if you properly use the resources above) - Again, filter out what you need to practice here. Lots of good challenges for multiple different areas of study.

CTF's: Be on the lookout for CTF's on and put a focus on the web challenges. These challenges will encourage lateral thinking like the securityinnovation challenge. is an archive of older CTF's if you're having a hard time finding upcoming CTF's with good web exploitation sections. In my opinion, CSAW is especially good when it comes to web challenges, but check most of them out if you get time.

Another recommendation to you is to develop a decent understanding of how a web application is structured. It becomes easier to visualize how to attack a web application, when you can engineer one. So I will recommend that you learn:

HTML/CSS - don't spend way too much time on this, codecademy should suffice here

Javascript: The source of the client side exploits you will find in the future. Get your feet wet in javascript via codecademy, and progress further.

PHP: Source of the majority of server side exploits you will find (RFI/LFI, SQL Injection, etc). As with javascript, get your feet wet through codecademy, and try to progress further from there.

SQL: Important to know for SQL Injection. PHP is responsible for the implementation that leads to SQL Injection, but you should really know SQL to actually manipulate the DBMS to your needs.

With the web languages I listed, the end goal for you, should be to identify vulnerable source code, as well as being able to intentionally develop vulnerable source code, and fix it.

At this point, you should be relatively comfortable with the concepts covered in the GWAPT, however if not, take a look at the bulletin/syllabus of the actual exam, and individually research each topic.

Looking at the syllabus for the actual course that maps to GWAPT may provide some insight as well.

Hope I was able to help. Best of luck to you, and if you have any questions, feel free to let me know.

u/Dreieck · 6 pointsr/HowToHack
  1. Don't start with Kali Linux.

  2. Especially do NOT replace your main OS with with Kali Linux. I'm assuming you are not familiar with Linux, so you will most likely damage your computer if you make a mistake.

    -get a VM and install Ubuntu to mess around and get used to the environment. The VM will keep you from damaging anything and acts as a failsafe.

    -I also suggest reading about how to use BASH. This will help you familiarize yourself with Linux. This book is amazing.

u/CrisisJake · 6 pointsr/ITCareerQuestions

I agree with what the others have said.

However, I'll give you some more direction and encouragement. I'm sort of in a similar position as you (except I'm a senior, and have a few years experience working with systems and networking) who is also looking at Security-focused internships.

The CompTIA certificates are okay, especially as a beginner, but they don't hold much weight. They're great for laying down foundational knowledge, and maybe helping you get an interview, but beyond that, they won't do much else.

If I were in your position, I would put my study time into getting the OSCP (Offensive Security Certified Professional). This thing is intimidating. It's one of the harder certificates to get in the industry, and the main reason for that is the exam is a rigorous 24 hour pentest. The payoff is worth it though; the OSCP has an overwhelmingly positive reputation in the industry (don't take my word for it, read up on other's opinions of it). This certificate doesn't expire, and it's something that can help you in your career further down the road (unlike the CompTIA certs). The biggest reason I'm mentioning it is because you can start as a total noob and still pass the exam (all you need is a basic understanding of networking and somewhat familiarity with linux) - be prepared to spend 300-400 hours in a lab environment until you get to that point, though. Start out with the Georgia Weidman book to see it it interests you, if so, go for it and don't look back. Even if you apply to non-offensive/blue team security positions, the OSCP will still put you and your resume near the top of the stack.

As your interest progresses in the Security industry, know that it's essential to have a thorough understanding of systems and networking - and how everything connects to each other.

Best of luck!

u/flexxoh · 6 pointsr/AskNetsec

IMO Georgia's book covers everything you'll need for the exam (specifically exploit development and POC modification).

The Metasploit book is cool, but since you don't really get to use it in the exam lab (you only get one Metasploit "lifeline" to use) it may not be worth picking up right now.

u/salamanderoil · 6 pointsr/AskComputerScience

It depends on what you already know.


Do you have any prior programming experience? If not, start there. My no. 1 recommendation here would be Allen B. Downey's free Think Python book. Others might come along and recommend something like SICP, which is a good book, but perhaps a bit hard for an absolute beginner. Downey also has a version of his book that uses Java, so if you know for a fact that this is the language your introductory programming class will be using, then that could be a better option (Python is a simpler language, which makes it easier for you to focus on the actual concepts rather than the language itself, but if you know that you'll be using Java, you might as well kill two birds with one stone).


If you do have prior programming experience, you have all sorts of options:

  • You could learn a functional language, like a Lisp (Clojure, Racket, Scheme, LFE, ...) or something in the (extended) ML family (Standard ML, OCaml, F#, Haskell, Elm, ...).
  • Or, you could go the other way and learn something low-level, like C. You could even learn about C and Lisp at the same time by building your own.
  • Or learn a logic programming language, like Prolog.
  • Or, if you really want to understand object-oriented programming (and how languages like Java managed to stuff it up), you could learn Smalltalk.
  • If you don't know what a unit test is or how to write one, you should learn.
  • Learn about data structures and algorithms. As a CS student, you'll be learning about them at some stage anyway, so there's no harm in starting early. Some people might recommended CLRS for this, but for someone just starting out, I'd recommend something a bit friendlier, such as this series of videos from Princeton (presented by Robert Sedgewick, author of one of the most popular books on the subject). If you'd prefer a book, this free one from Allen B. Downey (who also wrote the introductory programming text I recommended earleir) looks quite good.
  • Work your way through NAND2Tetris. It will take way longer than a month, but it will definitely set you apart from the rest of the class. Even if you don't do this now, you should definitely plan to do it at some point.
  • Learn about databases. Again, you'll have to study them eventually, so why not start early? You could start by trying to build something that uses a database, like a simple todo utility.


    Regardless of whether or not you have programmed before, I would also recommend doing the following:

  • Learn some basic Unix skills. It doesn't have to be too much – just enough to be able to sit down at the command line and have a vague idea of what you're doing is fine for now. You'll learn more as you use it more. That said, if you really want to dive in and learn how everything works, then something like How Linux Works could be a good read.
  • Learn some discrete mathematics. As a CS student, you'll be required to learn it at some stage – it's the mathematical backbone of CS, much like calculus is to physics – so you might as well start early. This free, book-length set of notes from MIT is very well-regarded (but don't expect to get through it all in a month!). There is also a set of video lectures if you prefer. If you're keen on learning functional programming, another option could be to integrate that with your discrete maths studies by reading Thomas VanDrunen's Discrete Mathematics and Functional Programming (if the physical book is a bit expensive for you, there's also a cheaper ebook version available).
  • For bonus points: learn to use either Vim or Emacs. There probably isn't a massive practical advantage to using these this early in your career (although they could certainly come in handy later), but if other students see you writing code in one of them, you'll look like an absolute badass. Your teachers will probably be quietly impressed, too.


    if you have any questions about my above suggestions, let me know, and I'll see if I can point you in the right direction.


    Good luck!
u/fromagi · 6 pointsr/linux4noobs

How Linux Works was suggested on another thread. I picked it up, and while I am only on chapter 2, it seems like a good primer.

u/xDind · 6 pointsr/PowerShell

I taught a powershell class at work a few years ago. We went chapter by chapter through "Lean powershell in a month of lunches"

u/ardwin · 6 pointsr/sysadmin

Anything by Don Jones.

Even look up "Don Jones Powershell" on YouTube will bring up a lot of his powershell stuff. He is entertaining and very informative.

Or pick up his book:

u/inaddrarpa · 6 pointsr/sysadmin
u/dmazzoni · 6 pointsr/learnprogramming

One more to add: JavaScript: The Good Parts

(obligatory joke)

In all seriousness, it is a really good book.


u/jhnsnc · 6 pointsr/webdev

First of all, don't worry too much about a single interview. A lot of interviewers don't really know what they're doing / why they are actually asking the questions they are asking. Usually, they're programmers--not experts at hiring people.

Having said that, you definitely want to be familiar with common "gotchas" and major issues in the languages/frameworks you will be using.

For JS, I recommend two books in particular: JavaScript: The Good Parts and JavaScript Patterns. I found these helpful because they cover all the major issues with the language and they are quite concise. These don't cover any frameworks like jQuery or Angular though--that's another matter altogether.

Also take a look here:
There's a good chance the interviewers will straight up copy questions from this list and you researching the answers will be a great learning experience.

u/duskwuff · 6 pointsr/lolphp

Now I'm imagining a book titled "PHP: The Good Parts". (Kind of like "Javascript: The Good Parts".) Only, it's less of a book and more of a pamphlet.

u/rjett · 6 pointsr/javascript



Old, but probably still relevant

Yet to be released, but you can get the in progress pdf from the publisher


The one that everybody recommends

HTML5 spec


Latest Webkit News

Other than that build build build. Make demos and play. Ask questions here or on stackoverflow and read other people's code. Also, lots of great old JSConf videos out there.

u/KidA001 · 6 pointsr/learnprogramming

Check out JavaScript, the Good Parts. Imo the best beginner JS book. No one should be able to save a .js file without reading it :)

You can learn angular without learning JS first, but it sure will help you go a lot further if you understand the fundamentals of JS.

u/PalmerDowneyJr · 6 pointsr/learnprogramming


Like everyone said, it depends. Deep nesting can often be a code smell. This book will help answer your questions:

But more importantly, please don't call yourself (or others!) a bad programmer! I'm sure you're just joking, but there's this weird vibe in the scene where people's worth is evaluated on their code. It kinda sucks. You're not your code.

A better question would be: does this pattern indicate poorly written code? The answer is GOTO: Hmmm...

u/obeleh · 6 pointsr/compsci

Perhaps offtopic but... Some books you should read regardless of CompSci branch

u/aogan · 6 pointsr/programming

I can't believe that no one mentioned Code Complete:

It totally changed my perspective on writing applications, no matter what the language or scenario. HIGHLY recommended - every programmer should read it.

u/Constantine_V7 · 6 pointsr/cscareerquestions

This list isn't about "coding" per-se but is more focused on concepts, sw.en., practices, etc.

Thinking in Java is one of my favorites, the definitive introduction to object oriented programming and design.

Code Complete, Don't know anyone who hasn't heard of this so far

The Pragmatic Programmer: From Journeyman to Master

u/quantifiableNonsense · 6 pointsr/java

The stuff you are learning in CS class is definitely important, but it's orthogonal to the things you will need to learn in the industry.

Read "Code Complete" to get a head start on this stuff. -

As far as some fun interviews with famous programmers, another great book is

u/EughEugh · 6 pointsr/programming

There are several good books on designing good software:

Code Complete

Design Patterns


u/theootz · 6 pointsr/cscareerquestions

TL;DR Improve yourself, invest in your future, don't worry about the the books listed at bottom, and practice!

Few months ago I royally fucked up an interview at Microsoft. A really simple question. But I had no experience doing coding on paper instead of a computer.

I spent a lot of time studying various books and paper coding to make sure it wouldn't happen again.

I then had an interview for another (in my mind at the time) dream job. I did fine for all the phone interviews and they flew me over to the west coast for an in person interview for the day. I did well for the first bit until they started pulling out dynamic programming and integer programming questions on me and expecting me. Once again something I didn't prepare for, and f'd up. Didn't get this job either. For the longest time I was really hard on myself at fucking up on both these interviews one after another. Especially this second one since a lot more was riding on it than just the job (another story).

But then I decided I didn't want to have this sort of experience again and expected better of myself. I made myself further improve and brush up on all those concepts as well. Did a few mock interviews with friends, spent some time working on interview type questions on both the computer and on paper. A month or two later I started interviewing again. By this point I was an interviewing machine - and I'm now able to do just about anything thrown at me. I've had my choice of employers and until just recently, was in the situation where I had so many offers I didn't know which one I wanted most. I'll be heading to silicon valley soon at one of the top tech companies in the world with a fantastic offer considering I just graduated.

The point is - learn from the mistakes and improve yourself. I realize you don't want to be that guy spending heaps of time coding outside of work or whatever... but this is an investment in yourself and your career. Do it once, and then just brush up on your skills from time to time. Get into the interviewing mindset and just rock them so you can have your choice of job - and then you can go about your thing once you have the job locked. The up front investment will be worth it!

Things that helped me:

  • - practiced a lot of questions on here
  • - another great site for questions
  • Cracking the Coding Interview More help on questions, but also some great insights into the interview process for the larger tech companies and many hints and tips on how to go about solving the more complex problems
  • Code Complete A great book for helping you to refresh or learn about software design
  • Eternally Confuzzled Great resource to learn how to think about common data structures and algorithms

    Having trouble with Algorithm design/analysis? These are some of the go-to books for that:

  • The Algorithm Design Manual Probably the defacto for learning about algorithm design and analysis
  • Introduction to Algorithms A great book with many different algorithms and data structures to learn about
  • Algorithm Design A great book if you want to dive deeper into more complex subjects like graph theory, dynamic programming, search algorithms, etc.. etc..
u/IRLeif · 6 pointsr/learnprogramming

Looks like most of your knowledge and experience so far is with imperative/object-oriented programming. You might want to have a look at functional programming, just to get some perspective. Scala, Erlang or Haskell could be some good choices here, or even Ruby (if you make use of blocks and don't use mutable data). Actually, Ruby is pretty cool and very versatile and practical, that could be a good language choice as well, and you would also be able to make use of your prior knowledge with OO programming.

One other thing that you could do with this time is to read some books! There are some wonderful "generic" titles that every programmer should read, in my opinion. Have a look at The Pragmatic Programmer, Clean Code and Code Complete, for starters. These might get you really inspired and pumped up for the undergrad college and computer science classes, as well as give you some good tips on new things to learn.

u/JavaTrainer · 6 pointsr/javahelp

There are a lot of different strategies.

  • UML/RUP (Rational Unified Process) Make lots of diagrams (UML) and lots of system requirements docs.
  • TDD - Test driven development. Make Unit Tests first and then make code that passes the unit tests.
  • CRC analysis - Napkin card type design that helps you figure out what classes you should have.
  • Service based design - SOA type stuff. Define some high-level service APIs that different parts of your application communicate. Great when multiple team members are implementing different layers of your application.

    Basically you asking a methodology question and not a programming question. If you are asking questions like this you should probably start reading books like Code Complete: A Practical Handbook of Software Construction, Second Edition
u/titsybox · 6 pointsr/learnprogramming

Perfectly normal. After 15 years of amateur programming I still make stupid mistakes and have dumb days and weeks when I get or seem to get nothing done. But like the saying goes it's only a problem if you don't learn from your mistakes. I can write a class get it working and come back to it in a week and can't for the life of me figure out why I'd done something a certain way. So my approach now is to break the program into modules and then classes which are independent as possible. Test those classes and finalise them as much as possible so I never need to modify them again and make notes on how they work. In fact I seem to make notes on everything I do. From theory to how classes in an API works to my own code. I've read somewhere programming is one of the most mentally intensive activities a human can do, so don't be surprised if you find it difficult at times, every programmer does I'm sure. Good luck 👍 oh yeah I forgot I'd strongly recommend reading code complete it helped me out more than any other programming book and it's lessons apply to any language. Think it even has a chapter on human factors

u/matty961 · 6 pointsr/uwaterloo

This book should be good enough to last you through undergrad.

u/tdk2fe · 6 pointsr/linux4noobs

Get the Unix and Linux Administration Handbook, 4th Edition, by Evi Nemeth, Garth Snyder, Trent Hein and Ben Whaley.

This book covers both Ubuntu and other Linux flavors, along with traditional Unix. It is my defacto go-to when I need to look up a topic, and goes into incredible detail about not only how to do things, but also some of the theory behind them. A good example is that it explains how to set up a DNS server, but also details how DNS actually works.

For something cheaper - just google the Rute Manual. This also details a wide array of OS concepts and how they are embodied in Linux.

And while your learning - i'd like to throw this tidbit that I absolutely love from the Rute guide:

>Any system reference will require you to read it at least three times before you get a reasonable picture of what to do. If you need to read it more than three times, then there is probably some other information that you really should be reading first. If you are reading a document only once, then you are being too impatient with yourself.

>It is important to identify the exact terms that you fail to understand in a document. Always try to backtrack to the precise word before you continue.

>Its also probably not a good idea to learn new things according to deadlines. Your UNIX knowledge should evolve by grace and fascination, rather than pressure

u/BitpatternDesignator · 6 pointsr/sysadmin

A must read is UNIX and Linux System Administration Handbook (4th Edition):

u/Alives · 6 pointsr/sysadmin

See also:

Read this book:
UNIX and Linux System Administration Handbook (4th Edition) [Paperback] Evi Nemeth (Author), Garth Snyder (Author), Trent R. Hein (Author), Ben Whaley (Author)

u/Knighthawkbro · 6 pointsr/linuxadmin

Honestly, you are never going to find a way to shortcut you out of this situation. No one answer is going to be perfect and get you from A to B if your already at C. I had a similar experience with programming and web development.

I studied computer networking all my adult life and never thought I would be developing as my career at the moment. It is the burden of knowing too much and not having a clear direction. What I needed was more confidence in my skills which can only really develop over the years through experience.

You say you already know a lot of Linux and Bash concepts. CD/CI pipelines try to abstract a lot of OS related involvement since your code doesn’t need to know how low level kernel operations are happening.

What it sounds like you need is knowledge of OS concepts, not just Linux concepts. I say this because every OS has its own way of doing the same thing one way or another.

For example virtual memory, if you understand the concept of virtual memory in any OS rather than a specific OS’s semantics regarding Virtual memory then I think you would be better off in the long run.

If I am wrong and you are the master of the Linux environment, I believe you just need to deep dive into development strategies and the core principles of CD/CI. Once you have a foundation it doesn’t really mater if you are a Jenkins expert or CircleCI expert, all that matters is if you have a foundation to fall back on.

Edit: if you wanted my two cents on material here are some books I recommend.

The Practice of System and Network Administration

Operating Systems Concepts

UNIX and Linux System Administration Handbook

u/zoredache · 6 pointsr/ansible

There almost certainly no configuration management system or orchestration system guides that are going to be useful without at least a base understanding of the systems you will be managing.

If you want some base knowledge maybe start with something like this

u/TheSuperficial · 6 pointsr/programming

No question, W. Richard Stevens' books on the protocols and the implementation were the definitive works.

I haven't gone back to them recently to see how they've aged, but much of what I know about TCP/IP, I learned from those books. (I was tasked with switching over the internal communications on a large telecom system from a proprietary protocol to TCP/IP - again, I'm talking about the communications between boards in the system, not outside to switching centers and COs.)

Unfortunately, Vol. 3 pre-dated HTTPS (and SSL in general), too bad, I'm sure if he were still alive, Stevens would have done that topic justice.

u/RecycledAir · 6 pointsr/javascript

I've recently been working on my JS skills and heres a few resources I've found super useful:


Javascript Patterns

Javascript: The Good Parts

Javascript: The Definitive Guide (While an exhausive resource on the topic, this one is a bit verbose)


Mozilla's Javascript Guide (One of the best free online javascript guides/references.

How to Node (Tutorials on server-side Node.js)

Daily JS (Interesting JS related news)

Echo JS (Similar to above but updates less frequently)

Hacker News (This is more general tech news but there is a ton of useful web stuff, especially as node.js is currently a hot topic. Reddit actually spawned from HN)

Online Videos (free)

Douglas Crockford's Javascript Lectures (I would recommend these to anyone getting into javascript)

u/Ghostalker474 · 6 pointsr/sysadmin

That's what I used, came highly recommended by folks in this subreddit, and I see why. Starts off slow and simple, assumes you have no prior experience in programming. By chapter 4 you're making scripts that show just how awesome PS is.

u/reallybigabe · 6 pointsr/PowerShell

This is probably the most recommended book:

Books aren't really my learning style - to me, it's just solve a problem, then solve it gooder

Maybe I should read more....

u/hosalabad · 5 pointsr/sysadmin

I think it is always safe to look at all of the material in the 70-640 curriculum. Most of it easily applies to 2012+ and you may still see a lot of 2008 systems.

Combine the reading with the lab work and you can learn a lot.

Also /r/powershell and Powershell in a Month of Lunches. New version addresses Powershell 3

u/Zenkin · 5 pointsr/sysadmin

If you're looking at Powershell, the Learn Windows Powershell in a Month of Lunches is pretty well reviewed.

u/NastiN8 · 5 pointsr/sysadmin

Rule 1: You better start learning how to teach yourself cause classes are probably not gonna happen. I got this book and taught myself the fundamentals of powershell. You'll need to do something similar. For the application, I'm sure the developer provides an entire site full of documentation for you to use to help develop your skills. It may seem intimidating now, but you'll get used to it.

Note: The powershell book is very easy to find for free if you know where to look.

u/ZeroHex · 5 pointsr/comics

>However, at least at this office, you can have days like today where things slow way down and you can derp around on Reddit until you get more calls or a user gets back to you.

System/Network Administrators (especially at smaller companies) either work well or they work often. I'm getting towards the "well" side of things more and more as I get better, which leaves more time for other activities, like reddit or going through Powershell in a Month of Lunches.

u/djpaec · 5 pointsr/sysadmin

Powershell is a very handy tool to have, but you don't need to 'dedicate' yourself. Go through this book and you'll be a step above a majority of IT professionals easily.

u/w3cj · 5 pointsr/javascript

I highly recommend checking out the You Don't Know JS book series by Kyle Simpson. It goes in depth into how the language works and all the quirks you might encounter:

If you'd like a shorter read and maybe have your opinions formed for you... checkout JavaScript the good parts:

u/eric_weinstein · 5 pointsr/ruby

> Failing that, are there any good cheatsheets/references for JS "gotchas" and unusual features that devs from other languages might not be familiar with?

There are entire books dedicated to this! (Also some entertaining talks.)

Here are some good JS books not aimed at total beginners:

  • JavaScript: The Good Parts
  • Professional JavaScript for Web Developers
  • Effective JavaScript

    Bonus (to give you a sense of the kinds of "gotchas" you'll find in JS):

    // Even though you pass in numbers, JS sorts them lexicographically
    > [5, 1, 10].sort();
    [ 1, 10, 5 ]

    // You "fix" this by passing in a custom comparator
    > [5, 1, 10].sort(function(a, b) { return a - b; });
    [ 1, 5, 10 ]

    // This probably makes sense to someone, somewhere
    > Math.min();

    > Math.max();

    // Some things are best left unknown
    > {} + {};

    > var wat = {} + {}; wat;
    '[object Object][object Object]'

    Here are a bunch more in quiz form.
u/EllaTheCat · 5 pointsr/tasker

In today's shiny web world, it can't hurt to learn JavaScript, but it's a dreadful mess, saved only by this fine book.

Python is a great language for learning, and I think Tasker supports it..

Now, I've spent years in software, and I suggest you stick with Tasker and its plugins, because it is very well thought out. You can learn a lot about real world stuff if you focus on being battery efficient and being responsive. Setting task and profile priorities, scheduling waits, running tasks in parallel, is an art.

Premature optimisation is the root of all evil in programming. JS doesn't necessarily make things faster, and believe me I've seen clueless JS programmers consider using C/C+ for speed, when they could have simply used JS properly. Use libraries, not DIY code, which is why AutoTools is so good.

u/bobishardcore · 5 pointsr/learnjavascript

JS is hard, especially for people new to programming. Basically, JS as we know it today is an evolution of a browser hack that only recently became a seriously useful language. The syntax is terrible, math and numbers don't make any sense, the regex system isn't super robust, oh and it's not really an OOP language. Technically, it is multi-paradigm and includes some oop-like things and classes are on the way to browsers, but it's for naught anyway, because you don't need classes in JS - It's a prototypical inheritance based language.

If you're new to programming in general, I'd say you should start with a more sane environment, like Python. It will teach you programming concepts while railroading you into making good coding decisions. It's really common for people to start with Learn Python the Hard Way - don't. Go to /r/learnpython and search "LPTHW 31" and just count up the people struggling with it. Zed Shaw is an idiot, there are better things to read, I'd recommend watching the google IO talks, get a buddy to learn with. Honestly, I've never read a python book cover to cover, but I feel pretty comfortable with the language from just googling "How do I do X in Python" millions of times, usually if a link comes back to, I click that one first. The docs are wonderful, you don't need a book.

But, since JS is one of the most important languages due to it's integration with the most common form of media distribution in our time, I'd recommend reading / watching talks by Douglas Crockford. Check out Javascript: The Definitive Guide and Javascript: The Good Parts. The second one is a little easier to digest, while the first is really the definitive guide.

In both cases, I'd recommend doing the challenges on

u/NegatedVoid · 5 pointsr/webdev

Crockford's JavaScript: The Good Parts.

Serious recommend.

u/user24 · 5 pointsr/node

I've been using node for about a year now (was a PHP/mySQL dev for 6 years before that) and have come to realise that it's all about methodology. The language is just JS (I mean, you should get good at JS too) but it's how you use it that defines whether your node code will be good or not.

Some things I've found useful:

  • JavaScript: The Good Parts If you're a JS developer, you just need to read this.

  • Node Beginner Book Hands-on node is a little more rough around the edges but still worth a go. I bought the bundle for kindle and didn't regret it.

    My experience:

  • Write everything in modules. Your index.js should be tiny. Ours just links URLs to modules.

  • Try to make your modules reusable. We're (I'm) guilty of having my modules assume a http request, which means I'm ferrying the request and response objects around all over the place. It's not heinous, but it is bad.

  • Put your modules in git

  • Caching: Our stack is slightly unusual in that we've built a REST API in node which PHP then consumes to produce the HTML for the site, so end users never connect directly to node. (We have reasons for doing it this way). So we cache the API results based on URL in memcache. For a traditional web server model you'd probably use caching proxies in front of your node layer. I also cache database results based on the SQL string (I think we tested it to be faster than querycache. If not, why the hell aren't we just using querycache? Hmm...), so even if the API-level cache misses, some of the data will still be cached hopefully. Your caching strategy will depend heavily on the frequency of data changes in your application. A lot of our data never changes. We certainly don't have sub-minute changes, and typically our data changes exactly once in its lifetime.

  • A good proportion of the stuff I write is utility modules (like pluribus) rather than business-logic specific to our website. I've written a HTTP router, a caching object (which abstracts the cache mechanism away so if we wanted to move away from memcache none of our code would have to change, we'd just plug in a new storage module to cachejs), a twitter module, and a connection-pooling module. Some of these problems were already solved in existing modules (and we use a lot of 3rd party modules too) but often you'll find that it's not quite right for your use-case, doesn't scale well, or the github isn't up to date with the latest node etc etc.

  • Node is getting better all the time. We've thrown away a few things we'd written because the functionality is in core now. That's good.

  • github is your friend. We end up forking a lot of modules and issuing pull requests to them. If they don't accept it's a shame because we then will have to keep our version up to date with their fixes. We prefer to fork, fix, pull req and then switch back to their version when accepted.

  • architecture is the most important problem to solve. We use rackspace cloud hosting and they provide cloud load balancers which helps a lot. Beyond that, we make use of a consistent hashing module to spread memcache data and load evenly. But for any large application you'll quickly find that you can't just keep it all on one fat box, and you'll need to think the architecture out avoiding single points of failure.
u/adamzx3 · 5 pointsr/javascript

I can definitely relate, this sounds just like me last year! I've done things the hard way and it took me 5x longer. I also prefer screencasts to books. I always need to create a project to solidify those fresh skills, otherwise they'll be gone in a month. Also tutorials for things like Backbone assume you know how to use jQuery, Underscore, and things like REST, and JSON responses... this can quickly get confusing if your not familiar with all of these. My largest regret is not building enough practice apps in the last year. I really should have applied more by doing, instead of staying in the theoretical world.

Here are some insights that i've made and the courses/tuts/projects that helped me the most:

Learn the language first:

u/Wazanator_ · 5 pointsr/learnprogramming

Code Complete is really good if you haven't read it yet.

u/videoj · 5 pointsr/learnprogramming

Data structures and Algorithms Write code to impleement every (or even most) and you'll be well preparped.

Design and Testing here.

Programming Languages here.

Also look for an open source project that needs help and provides you with experience in one or more of these areas (or start your own). Code is always a good way of showing you know something.

u/sh0rug0ru · 5 pointsr/java

Read lots of code and read books to get multiple viewpoints. This is a deep topic which will require more than superficial online reading.

Check this out.

Books I have found useful:

u/TheEverHumbled · 5 pointsr/Unity3D

If you are starting from an amateur background as a developer on C# centric stack, I'd argue that Code Complete has strong to potential to protect against your weaknesses/blind spots than just about any book about software development. It doesn't go deep, but it will introduce you to breadth of fundamentals. Feel free to skim past the ones you are already familiar with.


The particular techniques described evolve over time, but the principles endure. e.g. One poster commented of making backups. Tools in the C#/MS ecosystem have evolved considerably, but git based source control is pretty popular tech at moment. Github is popular for hosting source of open source projects - Azure Repos and Azure Devops suite has more depth for larger teams and complex processess.

u/CaulkParty · 5 pointsr/InternetIsBeautiful

The actual link OWASP Top 10 2013. This list is in the process of being updated so the information isn't exactly accurate anymore.

For more in depth reading I'd suggest The Web Application Hacker's Handbook. Also check out /r/netsec for a good discussion platform.

u/Pardon_my_dyxlesia · 5 pointsr/hacking

I was personally recommended by my mentor Hacking: The Art of Exploitation, and The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws
Also some companions sent me some readings on index articles. I'm not so sure of the titles, but just browse around.

u/flaflashr · 5 pointsr/linuxquestions

Try "Hackers: Heroes of the Computer Revolution", by Steven Levy. . It is not solely focused on Unix, but it tells a lot about the early evolution of computers, and the wizards who made them work. It's been years since I read it, but I recall it being a great read.

u/rustajb · 5 pointsr/books

Hackers: Heroes of the Computer Revolution. I read this book in the early 90's and it was fascinating. It traces the origins of hacking in an interesting narrative style. It's the most interesting book on the topic I have yet read.

u/curious-b · 5 pointsr/Bitcoin

That's what The Internet of Money is for.

u/togoshige · 5 pointsr/Bitcoin

Everyone should read "The Internet of Money" by Andreas Antonopolous

"While many books explain the how of bitcoin, The Internet of Money delves into the why of bitcoin. Acclaimed information-security expert and author of Mastering Bitcoin, Andreas M. Antonopoulos examines and contextualizes the significance of bitcoin through a series of essays spanning the exhilarating maturation of this technology."


Amazon (Paper, Ebook) (Bitcoin)

iTunes (Audio)

Github (Free)

Youtube (Video)

Tinkerers Anthem

u/UnknownBinary · 5 pointsr/Malware

Practical Malware Analysis talks about how to set up a relatively secure analysis environment.

u/healydorf · 5 pointsr/cscareerquestions

As far as engineering practices are concerned: Clean Code, Clean Architecture. A secure app/arch is one that is well understood long after you've stopped working on it.

DefCon has a reading list:

If you're looking for a starting point, I'd suggest The Tangled Web. Web/browser security tends to be a good high-level starting point.

You asked for books, but I'd highly suggest participating in some CTFs.

u/GobTotem · 5 pointsr/linux4noobs

I am a beginner too and just finished this book TLCL.Another one i would recommend is shell scripting bible.For most part use google to learn about commands and man page is your friend. I am more of a book kind of guy so never used video resources. Most important you should know where to look for help when stuck.

u/korben996 · 5 pointsr/ApplyingToCollege

My advice? Enjoy your summer. It's one of the last times in your life that you'll genuinely have very little to no responsibilities. The field of CS is very much about learning on your own as an autodidact, so if for some reason you're getting bored doing teenage girl things there are plenty of resources out there to learn CS topics from.

I would focus on these rather than a formal, guided summer program because in your CS career you're likely not going to have the opportunity to have a guided internship every time you need to learn something new. Not to mention you're going to have a hard time finding an internship as a prefrosh since even freshmen/sophomores are looked over in favor of more experienced candidates. Some of these sites I've listed below offer certificates of completion, especially the MOOC-type courses, if for some reason you need vindication of your efforts. Lynda I believe offers their entire collection free through many local libraries. If your local library doesn't have a relationship, try other libraries in other counties or parts of your state.

Other than that, do your best to absorb as much programming knowledge as you can as it will be immensely helpful in your studies. As you learn, try to learn what really interests you in the field of CS (cybersecurity, machine learning, AI, robotics, data science/databases, or maybe you just turn out to really, really like coding) so you can make it a specialty. The field of CS pays enormous dividends when you specialize into things. It's these types of niche consultants that can demand $100-200/hr and get handsomely rewarded.

Oh, and think about subscribing to these subreddits, you might find them useful:


If you enjoy programming:

u/JasonCarnell · 5 pointsr/AskNetsec

Part of me wants to say just do it. The course starts at a beginner level, but bear in mind that most people, myself included spend between 2-4 weeks of the precious lab time doing the course. Unfortunately there is no way to get the course material ahead of time, so factor that in when choosing how much lab time to prepare.

Having said that, I highly recommend reading Georgia Weidman’s book prior as this covers a lot of the same material as the PWK and is a great way to prep for the coursework so some of the ideas presented are not completely new to you

Depending on your ease with programming, you may want to bone up on some python fundamentals as well. I did about 1/4 of this Udemy course before starting

Here’s a great guide from Abatchy on OSCP Prep, although a lot of the stuff he discusses in the guide are covered in the OSCP course

There is also a YouTuber named IPPSEC that does video walkthroughs for retired Hackthebox machines. some of the machines are very CTF like, so Just watch the OSCP Like ones in this playlist.

Finally, if your willing to shell out some money, 30 days on is a great way to practice. Their course is very OSCP like and a good way to jump right in.

Of course Hackthebox is always a great resource to practice your pwnage skills.

Don’t feel like you have to do ALL of this before the OSCP, the list I gave is pretty much every resource outside of the PWK course I used to pass the exam.

If you only did one thing before you start the course, Definitely read Georgia’s book. Everything else can be used in conjunction with the course if you need extra help.

There is also an active discord channel for PWK students, use it!

u/recrudesce · 5 pointsr/HowToHack

Came here to say the same thing; you don't NEED Kali to pentest, it's really mostly used because it has a lot of tools already included. You can test from a Windows box if you really wanted to.

Kali won't magically make you a pentester, nor will it teach you how to be one as it's just a bundle of tools - there's no tutorials included with those tools. Read Hackers Playbook 2 and Penetration Testing: A Hands-On Introduction to Hacking and do some vulnerable VM's from places like Vulnhub

u/apertur · 5 pointsr/sysadmin

Not to mention that a lot of VMware functions use PowerCLI.

I also vote Powershell.
Edit: Might I also suggest Powershell in a Month of Lunches?

u/DaNPrS · 5 pointsr/sysadmin

Fuck that. You want to learn the newest shit, not some old antiquated OSs that your company just happens to use atm. Yes I'm being very blunt, you will have a better career if you do so.

  1. Yes. Powershell in a month of lunches and /r/Powershell . If you're gonna do Windows you need this.

  2. No. If you're gonna learn Windows, learn 2012R2. I'm running the 2016 version at home already in test. MCSA atm is for 2012R2, so stick with that. No reason to focus on 2008. The menus are very similar, functions are identical only 2012R2 has some added capabilities and some different ways of implementation. Learn the new way and you'll have better career opportunities. Including where you work now - what happens when they want to update to 2012R2 and you already know that OS?! Don't think of the present, think of the future.

  3. Not familiar with it.

  4. I run it at home for personal use. It's ok, wish I could join it to the domain and it'd stick/be stable at it. For storage is alright. I would not feel comfortable implementing it for a large business though. Small sized, maybe. Great to learn iSCSI and shares and BSD I suppose.

  5. Sure. Edgerouter Lite or even PFSense are great home routers. A coleague runs PFSense as a VM btw. /r/Ubiquiti /r/PFSENSE

  6. Not familiar with it.

  7. Get VMWare 6.0 (Look to the future)

    Also note that Hyper-V is free if you'd like to play with that. You can get that and other Windows Evaluation OSs here.

    I run a Hyper-V cluster with two Lenovo M93 systems, a VMWare 5.5 hypervisor on a TS140, and FreeNAS on a custom machine. My network is all Ubiquiti, ERL, ES Lite, 2x UAP-AC.

u/dwleonard · 5 pointsr/sysadmin

I'm a big fan of:

Disclaimer: I know 2 of the authors, but the book is still solid.

u/jerseylegend · 5 pointsr/devops

I can't quite envision a devops engineer without a good foundation of linux, especially if 98% of the servers are linux based. I also ask some basic scripting questions(if they tell me they do script). If the interviewee has never scripted, that's unfortunate. If you struggle moving around the infrastructure, it's going to be a difficult and stressful job, and more importantly, more work for us if we underestimated his/her skills and we have to babysit to help someone on what we perceive is essential and crucial to function. We do have numerous tools, processes, etc in aws, especially now where more and more companies are migrating to the cloud and doing serverless, but I have found that some of the bigger(little older) companies have tons of linux hosts to manage. And many of those aws resources are prob ec2's - you can ssh in, you can't escape linux!

I personally don't care which linux you know, i care more that you know how it works. However I am particular to CentOS, and Ansible.

I've had to interview a few people recently and i ask them sub-groups of questions: AWS, linux, networking, tools (jenkins, docker, config management). My hardest questions are linux. The tools, with the exception of docker, are the least significant because they can be learned; Generally the good linux candidates, for example, probably have already written scripts that do some of the functionality a config management tool was designed for. I think networking is very important but my questions are very basic. Generally the people with the aws cert/xp have already seen a lot of aws networking; Fortunately for the candidates, Ops manages the vpc's, acls, sg, routes etc so the devs don't break anything and therefore we don't rely on too much networking knowledge. But you gotta know how systems are communicating with each other.

My linux, aws, and networking(most) questions are scenario/exercise/conceptual based on real world problems/scenarios i've seen throughout the career. I simply ask what they've done with config management and jenkins or other CI and other tools they have listed on their resume.

On a maybe unrelated note - in my personal opinion, i think devops eng should learn how to use docker and know it a little in depth. It is an invaluable tool especially for development/testing work. Docker Up & Running and Docker In Practice are very good books

I'm in nyc, if it matters.

I recommend Unix and Linux System Administration Handbook The first 6 chapters (skip2) are a good start.

u/stonebit · 5 pointsr/networking

BS in computer science. My track / focus was network systems. I was always good at tshoot and I'm very curious. I worked for a vendor that makes 3gpp radios and did a lot of protocol and transport work (tshoot, configuration, band planning, scheduler analysis). My biggest skills that help me here are knowing Linux really well, understanding low level hardware, and traffic algorithms. This book and the next two volumes got me interested in this stuff. I'm an architect at a tier 1 ISP and my job description is best described as network systems integration. I know Sandvine from architecting solutions numerous times across several ISPs. I'm 20 years into my career and started out as an IT help desk tech, moved into systems admin, and just kept learning and searching for bigger better jobs. I got my first ISP job from a cold approach at a job fair at a college.

u/nepcoder · 5 pointsr/compsci

Also, the second edition of this classic book is coming out on November

u/Disruptpwnt · 5 pointsr/networking

I would recommend this book. It was just recently updated and is an excellent source for many of the fundamentals for networking.

u/AnonymooseRedditor · 5 pointsr/ITManagers

As far as recommended reading goes I would have a look at the practice of system and network administration ( and The phoenix project. As far as technical courses, I'm assuming your role will be mostly strategic and managerial (unlike some of us in smaller companies where the IT Manager is also expected to be a technical lead) I would focus on the managerial side and surround yourself with technical experts.

u/TheGraycat · 5 pointsr/sysadmin

'Best practice' is such a vague term that you're going to run into issues defining it in a meaningful way for your client's environment.

I'd look at generic guides (u/jhend28 mentions a good one) but also read up on specifics that apply to your environment. For example: best practice for a level 4 data center hosting financial data for banks etc. will not apply at all you a SME with two servers on premise that don't sell direct and hold no Top Secret data.

Have a read of The Practice of System and Network Administration: Volume 1 for a good starting place.

u/dehun · 5 pointsr/cpp
  1. use boost::filesystem instead of direct winapi calls

  2. make good names. It is completly unclear what game function do. And the comment will not replace some nice name. The same for aair.

  3. a lot of constants in code. move them somewhere and make a nice names for them

  4. global variables - pathcontainer. and indexes for operations on pathes?

    Copy(6, 12);
    Copy(11, 13);
    Copy(10, 16);
    Copy(2, 3);
    Copy(4, 5);

    This looks like a complete mess.

    Try to read this book and then rewrite this code if necessary this one.
u/NowTheyTellMe · 5 pointsr/UCI

So this is what I would consider the "Core" reading list for anyone interested in programming games. None of this is really game specific though. These are just the fundamentals you need in order to be an effective Software Engineer.

Learn about...

C++ syntax: Programming: Principles and Practice Using C++ by Bjarne Stroustrup

Software Engineering: Code Complete by Steve McConnell

C++ gems: Effective C++ by Scott Meyer

Software Teams: The Mythical Man-Month by Frederick P. Brooks Jr.

Why we love Joel: Joel on Software by Joel Spolsky

Problem Solving: The Pragmatic Programmer by Andrew Hunt

Common Code Solutions: Head First Design Patterns by Eric Freeman

Pearls!: Programming Pearls by Jon Bentley

I'll do a supplemental on this in a few days that dives into specific topics related to engine development. All of this is generic enough that it will help you regardless of what you do. You'll notice that very little here is actually language specific. Almost all of this is about the art of making software and process of working with a team. These 8 books alone will make you think about making software in a whole new way.

u/h3st · 5 pointsr/programmingcirclejerk

>> I'll give you an example that I paraphrased from Code Complete, which, if you haven't heard of it, is one of the absolute classic works on the topic of how to construct good code. What do you think this code fragment is doing:

>> a = a - b;
>> c = d + sales_tax(d);
>> a = a + late_fee(e, a) + c;
>> a = a + interest(e, a);

>>Despite the good function names, it's still extremely difficult to figure out what this code is trying to accomplish; if I have to make a change in something that relates to this module, I don't know where to start. But, after we name the variables:

>> balance = balance - last_payment;
monthly_total = new_purchases + sales_tax(new_purchases);
balance = balance + late_fee(customer_number, balance) + monthly_total;
balance = balance + interest(customer_number, balance);

>>See how much easier it is now to see that this code is computing a customer's bill based on their outstanding balance and a set of new purchases from the current month?

>>Using good variable names allows anyone to just read your code and understand immediately what it is doing. Without good variable names, anyone reading your code has to already know what it is doing.

>To me the two samples of code are identical except the second is more frustrating because I have to tear through unnecessary characters to see what is really happening with the operators. Maybe if the variable names were extremely short I could better understand your position, but in your example they are not.

>It takes all of 10 seconds to get a handle on the first set of code. I would have to sit down and really study the second set, because its syntax is so completely less apparent. To me tldr sums up my thoughts completely on your second set of code. I guess I can see why that code would make more sense to you, but typically I don't have that kind of time and with big names like that I can imagine my frustration would increase in proportion to the increasing underlying code base. This frustration is just in reading the code. I believe the second code sample likely took you far longer to write than the first.

>I never got into programming to read novels or dissertations.

\>I never got into programming to read novels or dissertations.
master troll

u/TracerBulletX · 5 pointsr/iOSProgramming

I spent a lot of time learning specific architectures and patterns that were in common usage when I first started, but the specific patterns in vogue are constantly changing. I'd recommend reading all 3 of these books at some point earlier in your career, I think a lot of the popular software design practices are based on the foundation of ideas in here and if you read them you will start to naturally make the right choices when it comes to organizing your code.

u/chengiz · 5 pointsr/programming

You can read Code Complete by McConnell which is a must have for software engineering and has several sections on writing and documentation etc.

The number 1 rule of thumb is to think as if you are not the one writing, but the one reading it later. Take commit messages - there are far too many "fixed a minor bug" on one end, and wall-of-text-about-how-you-found-and-fixed-the-bug-but-little-useful-info on the other. Write what the bug was and what the fix is, and its side-effects if any.

If you want to improve your writing, identify people who have done it well, and seek to follow them, and practise. Just reading good writers, commenting on forums etc. will also improve your writing skills.

u/Stormtalons · 5 pointsr/learnprogramming

I've got some tips for ya!

  • If you find learning about things like local and global scope fascinating and devour info about coding, then I can confidently say congratulations on finding your calling! There are many, many programmers who never do any reading, find it boring, and, consequently, have limited perspective and suck ass.

  • In programming, no matter whether you're a novice or a veteran, the 'big picture' is like that hot girl in high school that you somehow talked into dating you off and on until you both graduated, and then she never spoke to you again. On large projects like games, it's highly unlikely that anybody truly knows the entire scope and can tell you how every piece works together. Even on smaller, personal projects that only you yourself worked on, you will probably have to read your whole codebase to remember what the hell you were thinking if you revisit it in 6 months. So, don't sweat it too much if you don't get the big picture, or if it takes you a long time to grasp, just relax and remember that all programmers spend the vast majority of their time simply understanding code.

  • My personal opinion on using C++ as opposed to Java or .NET - imagine an application is a physical building. If you use C++, you have to take the time to fabricate every single brick you're gonna use, forge your own plumbing pipes, and construct everything from scratch. Java or .NET will deliver all of your bricks, steel, drywall, shingles, cabinets, and appliances in regular shipments, so you can focus on the blueprints and management. In the time it takes you to build a house in C++, you could have built a whole apartment complex in Java/.NET and rented out most of the units already. Having said that, if you want to build a fortress in the heart of a mountain where the only access is a tunnel hidden behind a waterfall with a door that's unlocked by DNA signature, you should probably use C++.

  • When will it fall into place? It's impossible to tell. It's different for everybody and depends highly on what you are doing and what your goals are. For me, it took about 6 months to get a handle on the basics, and 2-3 years to become confident discussing higher level design principles intelligently, and to start nodding my head in agreement reading programming blogs. I knew that things had finally clicked when I realized I was no longer shackled to the language I learned first, and that using new platforms was merely an example/API skim away.

  • I highly recommend reading through pretty much all of the Coding Horror posts, as well as Code Complete 2. Find something to build that interests you and that you don't know off-hand how to accomplish, and then learn the pieces you're missing to get it done. Google every topic, acronym, or piece of terminology that you're not familiar with, rinse and repeat. If you are truly a good programmer you will never think of yourself as a good programmer, but you will wake up one day and realize that you have the ability to complete most any task thrown your way; and if you don't, you'll know how to learn what you need to get it done.
u/zdubdub · 5 pointsr/cscareerquestions

That depends how adept you are at programming in general and what you want out of the book. If you have experience with other languages you could get by with a cheaper 'handbook' or just visit If you want a more comprehensive 'how to program' book I would suggest reading the definitive C++ book guide and getting yourself a copy of Code Complete.

u/molant · 5 pointsr/javascript code complete. One of the best books about coding in general that I've ever read.

u/jhaddix · 5 pointsr/netsec

Hi Pandas_sniff! (love the name) I’m a firm advocate of the Web Application Hacker’s Handbook. I think if you look at the reviews for version 2 i’m probably one of the featured ones. It really is all encompassing for most of what application security testing should start out as. It does suffer from being a textual reference though (a snapshot in time), so I also commonly recommend learning from the OWASP Testing Guide v4 as it has frequent wiki-like updates. I could spend all day talking about resources for learners! There are some excellent (free) videos by Jeremy Druin on using Burp Suite and application testing, I absolutely love and all of their exercises, and Sam has written a very good guide on getting started in bounty work

As for how effective these resources are “out of the gate” i think they are tremendously helpful. For example, using the above resources i’m sure any apt student of them could identify IDOR’s or basic injections. Over time these skills become second nature and free up the tester to focus on newer, cutting-edge hacks/technology. Hope that answers the question =)

u/joker_toker · 5 pointsr/linuxadmin

I'd like to humbly suggest the UNIX and Linux System Administration Handbook for your new admin. It's starting to show its age a bit (published 2010), but still communicates many of the core responsibilities of administrators in a clear manner with historical context.

Also, take a look at the Linux System Administration and Linux Web Operations LiveLessons, which are more current and may be helpful if the new guy learns from video tutorials.

Disclaimer: I am the author.

u/chadillac83 · 5 pointsr/linux

Read this, found it amazingly useful and packed full of knowledge, I recommend this book even to Linux noobs that are trying to get a better feel of the system for desktop use... once they have the basics down that is.

u/HedonicLife · 5 pointsr/explainlikeimfive

ATLien325's comment explains that terminology in a pinch, but it's not really going to get you very far on your way to learning how to hack. Your best bet would be to pick up books like this, this, and this. Then you'll have an idea of how programs, file systems, and networking work behind the scenes and you are much better situated to begin to learn how to hack them.

You're also going to need to learn how to effectively use a search engine.

u/bradym80 · 5 pointsr/learnprogramming

There is a good explaination about the history of Unix and Linux at the beginning of this book.

You could also watch revolution OS. Or just use youtube.

u/SwimDeep · 5 pointsr/sysadmin

I found the first version of the sys admin book by Evi Nemeth et al helpful years ago. I know a couple people who have found newer versions helpful too. Here is a link to the latest..

u/NoOneLikesFruitcake · 5 pointsr/sysadmin

I found this book in a thread and I've gone through the first four chapters so far. I only got it a little while ago but I really do like how it reads, and the amount it covers is nice. Check out the table of contents on amazon and you'll see what I mean about the coverage.

Other than that we're looking at the same kind of stuff. Let me know if you get any good leads :P

u/squibby0 · 5 pointsr/networking

Books don't get more wind baggy than this.

u/misconfiguration · 5 pointsr/sysadmin

If you ask me, Andrew Tanenbaum books are AWESOME. Not cheap but this guy takes a good bottom to top approach, if you really want to understand networking down to the TCP/IP stack get this.

Computer Networks If I can offer you a shred of advice, understanding what is happening under the hood and the 'big picture' of network design becomes an easy concept.

On the flipside - here is a good Top Down approach to networking Computer Networking Top-Down

Best of luck with your studies!

u/hdavuluri · 5 pointsr/networking

A good start would be to study for any standard certifications in the field, since they cover the basic topics and hey, why not get certified while you are at it? Comptia's N+, Cisco's CCENT or CWNP's CWTS cover the fundamentals of networking.
On the other hand, you could just go through free online lectures like this one on youtube or this one offered by MIT. Of course, there's always the good old-fashioned way to learn- borrow any standard textbook like Tanenbaum.

u/djsupersoak · 4 pointsr/sysadmin

I would highly recommend you check out the UNIX and Linux System Administration Handbook.

It not only goes over a baseline of technical sysadmin (especially linux) concepts, but really shows you how to be a good admin. There is more to it than technical know-how. I'd recommend picking this one up.

u/sysopsbkms · 4 pointsr/sysadmin

First get yourself a copy of the Unix and Linux System Administration Handbook by Evi Nemeth (who is still missing at sea).

u/ihatefarts · 4 pointsr/linuxadmin

This book has saved my ass countless times. It has a bunch of great knowledge and gives you a chance to catch up on things you might have forgotten. I highly recommend you purchase this and keep beside your desk/cube, at least until you become familiar with the job duties.

u/off_z_grid · 4 pointsr/linux

First off, what are you doing now?

Here is some advice from a 20-year sysadmin who does devops and hobbyist development stuff:

Buy this book. You won't get better advice from anyone anywhere. It's expensive, but BUY THE FREAKIN BOOK:

Install some VM system like VitualBox and start playing with either Debian OR Ubuntu, AND CentOS. Install both numerous times and give yourself some extra partitions to format and play with. Read about some feature or thing and then go mess with it.

Eventually go after RHCSA/RHCE.

Learn the bash shell. Learn how to write real scripts with while/until loops and if/thens, arrays, and other stuff. That'll take time, but put some focus on it.

Don't get overwhelmed. Just start learning one thing, then the next, and go from there. The rabbit hole goes deep.

u/foofusdotcom · 4 pointsr/sysadmin

I'm surprised no one has mentioned the System Administrator's Handbook. I've got editions 1, 2 and 3 on my bookshelf.

u/delias_ · 4 pointsr/linuxadmin

Fundamentals is what you need to know to get through some first round interviews. Explain the boot process in detail from pressing the power button to getting a login prompt -- how does init work, how do run levels work, how does systemd differ? What is getty? pam?

DNS is so much more than just what that rap covers, so if you put it on your resume you better damn well know it. Tell me about the concept of glue records, what is a root hints file, know how to use dig at the very least, how do you switch the order in which the resolver library checks it sources? What is the truncated bit in a DNS packet for?

Know debugging and tracing beyond the usual "top" or "sar" to get real detailed data on what a process is doing. Strace, ltrace, tcpdump, gdb (how to take a stack trace and dump a core), sysdig, perf events, dtrace4linux, vmstat, slabtop, pmap, etc

DHCP is another one like DNS that people like to say they know, but you should know about DHCP relay/ip helper, pxeboot, the actual protocol order of events. Check it out in wireshark.

How do processes and threads differ, really? Lots to talk about here even down to shared memory space, system calls, etc

What is swap, really? What are page faults? How does kswapd behavior change when you don't run with swap?

Know Netstat/ss. Know that tcp is a state machine. What does a bunch of SYN_SENT in netstat imply? Difference between tcp's RST and FIN?

Stateful vs stateless is more than just a tcp/udp difference, it's a fundamental concept to so many aspects of technology.

Basically know what's in this book:

u/_DTR_ · 4 pointsr/learnprogramming

When I was in school we used this in our networks class (but it looks like there's a 7th edition out now), and I thought it was a good book. Very detailed and explained things in a way that actually made sense (to me).

u/slkth · 4 pointsr/linuxadmin

These might be goods books:

  1. How Linux Works, 2nd Edition (What Every Superuser Should Know) by Brian Ward
  2. UNIX and Linux System Administration Handbook (5th Edition) by Evi Nemeth, Garth Snyder, Trent R. Hein & Ben Whaley

    Book 1 I have hard copy is a quite elobarate but not too big and quite cheap. (got it for 18 dollars)
    Book 2 Is an extensive UNIX bible I really would like to have. It costs more but it's very big. A PDF might come handy.
u/stuhacking · 4 pointsr/emacs

If you like reading about computer history, I really enjoyed Stephen Levy's Hackers: Heroes of the Computer Revolution. (There's a pdf floating around if you google search it, but I don't think it would be good form to directly link it since the book is still in print.) It's a really fascinating look at the early hacker cultures in MIT and Silicon Valley from the late 1950s through the early 1980s.

u/nokeeo · 4 pointsr/cscareerquestions

Non-Fiction: Hacker: The Heroes of the Computer Revolution

Covers the folks who laid the foundation for the personal computer.

u/mrhorrible · 4 pointsr/movies

I'm a big fan of Pirates of Silicon Valley. I can't find a source, but either Jobs, Gates, or Woz said something like "Yeah, that's pretty much just how it went."

When the movie came out, I was really into the history of computers. I had just read "Hackers" (no relation to the movie "Hackers"), so it was exciting to see things I had read about in a movie. Unlike a lot of movie adaptations, there was practically nothing about it that I found disappointing.

Woz Talks about the accuracy

u/rapjs · 4 pointsr/learnprogramming

Hackers is GREAT

I can't recommend this book enough.

u/agentgreasy · 4 pointsr/compsci

If a book will do, "Hackers - Heroes of The Computer Revolution" by Stephen Levy was excellent. It covers the problems from the early stages to modern times, and the innovative open-thinking people that pioneered some crazy solutions, and gives a reasonable view into the early years of computer use.

It's actually very good at demonstrating the real difficulty computer users and enthusiasts had back then, because not only were you vying for time... but you were fighting for correct results.

I like to buy this book for people who have become tech "later" in their lives (i.e. newbies who did not participate in that industry as children and have only taken it on strictly as a profession) who hold that strong misconception of the idea that a hacker is an evil terror nerd.

u/redhatGizmo · 4 pointsr/netsec

Are you talking about this book ?

u/PM_ME_YOUR_SHELLCODE · 4 pointsr/RELounge

Reversing: Secrets of Reverse Engineering - Is probably the most common book recommendation. Its an older book (2005) but its about as gentle as it gets in terms of the core concepts but its missing a bit due to its age (32bit RE only). I'd liken it to something like Hacking: The Art of Exploitation for exploit developers. Its a solid book, it covers the fundamentals but it'll take a bit more work to get up to speed.

Practical Reverse Engineering - This one is a newer book (2014) while it doesn't cover as many topics as the above book, its less dated in what it does cover, and it does cast a wider net covering things you'll see today like ARM and x64 instead of just x86. I tend to recommend starting with this book, using Reversing and the next book as a reference if there is a chapter of interest.

Practical Malware Analysis - While this one has more traditional RE introduction, where it excels is in dynamic analysis and dealing with software that doesn't want to be analyzed. Now, its from 2012 and malware has changed since then, so its age certainly shows, but again fundamentals remain even if technical details change or are expanded upon.

Practical Binary Analysis - This is the newest book of the list (December 2018). It wouldn't use it alone, but after you've gone through any of the above books, consider this an add-on. Its focus is on dynamic analysis and its modern. I'll admit I haven't read the entire thing yet, but I've been pleased with what I have read.

Edit: s/.ca/.com/g

u/twigie4 · 4 pointsr/sysadmin
u/Noobmode · 4 pointsr/sysadmin

Some tips.

r/homelab is a great place if you want to look and ask quiestions

r/SysAdminBlogs is a great place to find other information from other sysadmins

r/PowerShell is great for powershell stuff

If you want to get started on powershell the book "Powershell in a month of lunches" is a great read if you have time!

u/NoyzMaker · 4 pointsr/ITCareerQuestions

Powershell in 30 days of Lunches is what I buy for all my team members expressing an interest. It is hands down one of the best books to start with that I have found and my team recommends.

Also check out /r/PowerShell

u/affieuk · 4 pointsr/PowerShell

I would take a look at Don Jones, PowerShell in a month of Lunches

Not sure if the book is the latest, so have google first.

If you see yourself repeating a task 2 /3 times or more, then look into scripting it, start small and simple and go from there. Once you start seeing the time put into scripting paying off, it'll get easier.

u/checksinthemail · 4 pointsr/webdev

Preface - you have missed years of development in an area (web client front end coding). It's advancing so fast the rest of us can barely keep up. I'm serious - seems like every day there's something new that would take me multiple days to learn well.

See the "Web Development Timeline"

Moving beyond the standard HTML5/CSS3 stuff, I spent part of my evening compiling this list. It's incomplete and some stuff is opinion. WMMV. If you were helped, well, buy me a beer someday :-)

  • JS got real popular. Catch up on the current terminology used.
  • ECMAScript/ES5 language extensions
  • ES6 ("Harmony") extensions - coming soon; some already here. The current working draft of ES6 as PDF
  • Exhaustive list of Micro-libraries
  • HTML5 shims, ES6 shims, Lazy loaders (require.js), Modernizr... It's overwhelming, please see Daily JS for an exhaustive roundup of libraries/frameworks as they are released.
  • Underscore.js for functional programming niceties
  • The myriad client-side MVC frameworks - (Backbone.js, Ember.js, Spine.js, etc.)
  • Stratospheric rise in the goodness of webkit. See Peter Beverloo's blog for weekly reports of WebKit new features added.
  • Douglas Crockford's JavaScript: The Good Parts was a huge hit - this always comes up in interviews.
  • IE9 and IE10. IE9 did border-radius, SVG, and added a faster JS engine. IE10 (only for Windows 8) adds CSS gradients, 2D/3D(?) transforms, CSS transitions (and animations now I'm told?)
  • Opera is now on versions 11 and 12 - and it still rocks. Here's what's new in the development snapshots from their blog. I'm a fan since long ago, it's nice to see them continue to remain competitive with the 'larger' browsers.
  • Firefox is now on versions 12 through 14.
  • Chrome is now on versions 18 through 20.
  • JSLint is now integrated in some editors (I love it in notepad++) and JSLint begat JSHint, which is sold as "kinder, gentler"
  • Web Workers (aka JS threads)
  • Web Sockets API
  • WebGL See the 3-D dynamic terrain/bird demo - awesome!
  • Death of rule, takeover by Daily JS and BadAssJS (IMHO)
  • Inline images expressed in data/uris which are base64 coded) eg: IMG SRC="data:image/gif;base64,EEEEEEBASE64JUMBLE" online image encoder
  • LESS and Sass - better CSS with variables, macro expansion, etc.
  • calc() in CSS3 Really new - chrome nightlies and firefox supports. If you remember way back when, IE 5.5/6.0 had a similar but poor performing feature called CSS expressions
  • INPUT TYPE="COLOR" and "DATE" should now work well, and have in-browser helpers for selection.
  • CSS3 display:flex-box
  • CSS Gradients/Animations/Transitions see this slidedeck/demo
  • CSS3 Shaders/Filters. Shaders are really really new (as in: last week) as far as implentation in a browser. I'm psyched about creating some vertex shaders (.vs files) for effects.
  • Local Data Stores (4k cookie - bah!)
  • Mobile browser coding: events for swiping screen, etc. see jQuery Mobile, Sencha touch.
  • Node.js based on Chrome's V8 JS interpreter (I know; you know...)
  • Coffeescript (I know you know, I included for completeness) The JS to Coffeescript is also interesting.
  • DART. Google's JS-like language for those who like classical Java/C++ oop style - they even have a version of Chromium for Mac which has DART native. Else it transpiles to JS, like Coffeescript does.

    If you didn't click on any links above, well, for shame. There's some good important stuff up there. Below are a couple websites that I think are must-sees, as far as demos of the recent html5/css3/bleeding edge, and news/informational blogs I read daily or weekly... Most were listed above!

  • CSS3 Click Chart
  • HTML5 Rocks!
  • Learning threejs/tQuery (WebGL)
  • Bad Ass JS

  • W3C's blog on CSS
  • Daily JS - - news on libraries and node, mainly
  • Steve Souder's blog on high performance web sites. He wrote a couple books too that are very good.
  • Peter Beverloo's blog discussed what's new in this week's WebKit/Chromium builds.

    Stuff I didn't include, and am going to leave as an exercise to the reader:

  • Vibration API (for tablets, phones)
  • Battery status API
  • CSS3 image-set (download different quality/resolutions depending on capabilities)
  • Video element stuff - Hollywood's next blockbusters may be edited over the web.
  • Speech API - see Peter Beverloo's blog and W3C...
  • Audio - there's some full on audio mixers and synthesizers out there now
  • Web Inspector in Chrome
u/fajitaman · 4 pointsr/learnprogramming

The usual advice is "get out and program!" and that works, but it can be very tricky coming up with something to write that's also satisfying. The idea is that you learn best by doing, and that many topics in programming can't really be learned without doing. All that stuff is true and I'm not denying that at all, but some of us need more. We need something juicier than spending hours configuring a UI for a project we couldn't care less about. It shouldn't be an exercise in masochism.

I guess what I'm saying is that there are a lot of ways to learn to write code and books are great if you can really sink your teeth into them (a lot of people can't). Code Complete is a great book on the practice of programming. You also say that you "get" OO pretty well, but it might open your eyes to read up on design patterns (e.g., Head First Design Patterns). You have a long way to go before you really get it

In addition to those, you could delve deeper into your languages of choice. There's no way around JavaScript if you're a web programmer, and a book like JavaScript: The Good Parts is pretty enlightening if you've got some experience in JavaScript already. It's a pretty interesting and unusual language.

But sometimes programming is about building gumption, so instead of just being practical, try to figure out what you like about computers and keep going deeper into it. If you have an interest in computer science and not in just building apps, then something like Structure and Interpretation of Computer Programs could instill in you an enthusiasm for computers that trickles down to everything else you do. If you're more interested in web design, there are probably similarly interesting books on artistic design principles.

I think what I'm ultimately saying is that you should find what you enjoy doing and just go deeper down the rabbit hole, getting your hands dirty when it's appropriate and interesting.

u/jellatin · 4 pointsr/javascript

This is kind of a side-answer, but it looks like you are just compiling a list of things that are super popular at the moment.

> React.js with Flux seems more hot than all other frameworks

What concerns me is that you seem to not be concerned with what is the best framework for your project(s), but rather what is "hot".

For a long-term career I would recommend focusing on improving your understanding of concepts and theory that these ever-changing tools are built on rather than trying to chase what people think is cool.

The people who spent time learning JavaScript rather than simply "mastering" jQuery were in a significantly better position when client-side frameworks came out because they knew the underlying concepts.

If you haven't mastered these things yet, I think they have more value than most of the list of specific tools I see listed:

u/reversekilled · 4 pointsr/programming

Perhaps you should learn something about the language first? It has its good parts and its bad parts and its really bad parts. This book is a great place to start.

u/Neres28 · 4 pointsr/java

I enjoyed Code Complete.

u/ssentrep · 4 pointsr/csharp

Read "Code Complete, 2nd version". Its everything you'd learn in 10 years of experience, summarized into 1 book.

u/fluicpana · 4 pointsr/italy

Per testare le acque velocemente puoi usare (introduce Ruby in modo basico). Anche Coursera, Khan, Udacity e simili hanno corsi introduttivi sulla programmazione.

Mentre se vuoi imparare a programmare, il percorso deve toccare almeno tutte queste tappe, in ordine:

  1. [Computer Organization and Design](

  2. The Structure and Interpretation of Computer Programs

  3. Un buon libro di Assembly

  4. The C programming language

  5. Compillers

  6. Code complete, The practice of programming

  7. Fai finta di aver letto tutto The art of computer programming

  8. Un linguaggio a oggetti, magari Programming Ruby

  9. O/E Python, Dive into Python

  10. Design patterns

  11. Impara un linguaggio funzionale.

    Da qui puoi partire e specializzarti in quello che ti interessa

u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep

  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List

    Read This First

  10. Pragmatic Thinking and Learning: Refactor Your Wetware


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments

  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List

    Read This First

  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design

  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets

  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience

  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills

    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/Neumann347 · 4 pointsr/gamedev

If you are doing any coding at all, you should read Code Complete

u/Captain · 4 pointsr/programming

> In other disciplines, engineering in particular, there > exist treatises on architecture. This is not the current case in software,

Gee I better throw out all those books on architecture since clearly they don't exist.

We can also ignore Fowler's book, GOF, SICP, and TAOCP since clearly they are treatises on software either.

u/glghglg · 4 pointsr/programmingcirclejerk

web development is hard. This is not because it's retarded and unspecified, but because I am doing intellectually challenging innovative work every time I complete the rituals to work around CSRF and clickjacking, and setup some cross domain policy, maybe throw in 10K lines of CSS, etc, to make a chat app.

u/null_operator · 4 pointsr/hacking

Going through a linux book, like this one, will get you over your linux hump. But otherwise, just doing stuff in Linux will get you going, like:

  • How do I make this linux box host a website?
  • How do I configure SSH accounts?
  • How do I change the swap settings?
  • How do I use xterm from another machine?
  • How can I samba share a resource?
  • How can I map a windows drive at home from SSH from outside my network like at Starbucks?
  • Can I add a route/port-fwd/limit-allowed-IP's through it?
  • Configure IPtables
  • Run a cron job or bash script that scrapes your favorite reddit for new comments about some topic and saves it as a web page on a server, so that you can read it from anywhere (like creating your own RSS feed), have the script monitor the file, and when the file changes (compare the hash), the script will tweet/SMS you that there is stuff to read.

    Once you get going, you're limited by your own imagination!
u/phabeon · 4 pointsr/linux4noobs

Just get these 2 books(all you'll need, peep the reviews for proof) and thank me later

Linux Command Line

How Linux Works

u/zubie_wanders · 4 pointsr/raspberry_pi

Already good responses in here. If you're interested in a good book to learn a bit more, the concise Linux Pocket Guide is very handy. A longer book is The Linux Command Line: A Complete Introduction.

u/temporaryMan1233 · 4 pointsr/Ubuntu

It will take too long to explain how Linux handles such a thing differently. Read this book.

Every one should read it. I'm not a sponsor, dude!

u/remimms · 4 pointsr/linux4noobs

I found the book The Linux Command Line to be very useful. Good luck on your CEH!

u/Bilbo_Fraggins · 4 pointsr/netsec

It doesn't do anything you don't tell it to. You can tell it to do a lot.

I'd recommend testing the wifi stuff out at home with some old APs, or something like range-box (image here). Other features can be tested with VMs in virtualbox.

Metasploit unleashed or Penetration Testing have some decent suggestions about building test machines (as well as directions for some of the tools of course).

u/sephstorm · 4 pointsr/army

Buy this book. Get your security+. Where do you want to live when you get out and what do you want to do? You are not likely to jump directly into pentesting unless you move to VA/MD and even that is unlikely IMO.

After Sec+ get your CEH, eCPPT, OSCP, and GPEN in that general order. That will get you where you need to be to get seriously looked at. As far as what you should be doing in the meantime, SOC work is generally open to newbies while you study through the above. If you PM me with your timeframe and keep in touch I can probably help you out with jobs.

u/BlastedInTheFace · 4 pointsr/AskNetsec

No. If it were so easy, pentesters wouldn't get pais so much to do it. That being said, start here

u/chillysurfer · 4 pointsr/linux4noobs

For that purpose I can highly recommend the book How Linux Works. I thoroughly enjoyed it and it'll give you plenty of info.

Just to stack hands and echo what was said before, reading about will keep it in your brain for a day. Doing it keeps it there forever though.

u/Trooner · 4 pointsr/hacking
u/sethra007 · 4 pointsr/raisedbynarcissists

> Do they have the right to know where their adult child lives;

If you are a legal adult, they do NOT have that right.

> is it cruel not to tell them (they are still parents & people, and would probably worry);

It is NOT cruel to deny a narcissist and her enabler information that can be used to abuse you.

And keep in mind: their 'worry' wouldn't be for you and your well-being. It would their 'worry' that they no longer have their usual punching bag around, and they would use 'worry' as an excuse for extending their control of you into your adult life.

> and would they realistically/legally have any way of finding it out?

If you don't take certain steps, they could find out, yes.

When you get your own place, you'll want to:

  1. Get a UPS store address (you didn't say if you're in the US, i'm assuming you are). Give that address freely to anyone who asks for your address (i.e. don't look like you're trying to hide your address). If you're completely consistent about this, its extremely rare that anyone notices its not your real address. (Note it may be illegal in your state for your drivers license to not have your real address on it; YMMV so ask at the DMV)
  2. Remove your home address from direct mailing lists. Call (888) 5-OPTOUT (567-8688) and request your name and address be permanently removed from their lists. This action unpublishes all instances of your home address in direct mailing lists maintained by the consumer credit reporting industry.
  3. This Reddit post from five years ago listed the largest data brokers and how to remove your information. The poster is a lawyer with Abine — their DeleteMe service will remove your information for a fee. SafeShepherd will also remove your information. Their premium membership is cheaper than Abine, and the basic membership is free.

    (the reason to remove yourself from mailing lists, by the way, is because the companies that send out those mailers sell customer data to each other all the time, and it helps to ensure that your address doesn't accidentally end up online at or some such)

  4. If your parents don't know where you work, let your job know not to confirm that you work there to anyone, or give out your contact information to anyone, without checking with you first.
  5. If you live in an apartment, let the management know not to confirm to anyone that you live there.

    If your parents escalate, check out How to Disappear: Erase Your Digital Footprint, Leave False Trails, and Vanish without a Trace. The book is strongly recommended for victims of stalking and harassment. The author was the world's top expert in skip tracing prior to writing this book.
u/pat_trick · 4 pointsr/sysadmin

If you end up in the Linux / Unix world, I'd recommend the Unix and Linux System Administration Handbook...which is apparently due out in a 5th edition in just a few days!

u/dan000892 · 4 pointsr/netsec

Well TCP/IP is an entire protocol suite. In addition to IP, TCP, and UDP, it includes higher level protocols like HTTP (uses TCP), DNS (UDP more commonly than TCP), and ICMP (uses IP, not TCP or UDP).

My understanding is that it's called TCP/IP because those were the first protocols and everything else coalesced around/on top of them. Microsoft offers a pretty decent chart showing examples of the layering/encapsulation of the protocols in the suite here.

If you want to dive deeper, Steven's three-volume TCP/IP Illustrated is the de facto reference manual for the Internet -- though dated, it's still very useful and available for cheap used. Alternatively, No Starch came out with a tome of their own called TCP/IP Guide which I've heard a couple colleagues recommend.

u/19Kilo · 4 pointsr/networking

The TCP/IP Guide - It's a little dated these days and barely touches IPv6, but it's a good, quick look at a lot of the glue services that you will eventually need to understand and troubleshoot: DNS, SNMP, NTP, etc.

TCP/IP Illustrated, VOL 1 - Here's where we get into the nitty gritty. This shows you what is happening in those packets that cross the wire. Invaluable if you go onto doing Performance Engineering functions later on, but still good.

NMAP Network Scanning - NMAP is a godsend if you don't have remote login rights but you need to see what's happening on the far end of the connection.

Wireshark Network Analysis - Most useful tool in your toolbox, IF you can use it, for proving the negative to your customers. At some point you're going to be faced with an angry mob in Dockers and Polos who want to know "WHY MY THING NOT WORK?". This is the book that will let you point to their box and go "Well, as soon as the far side sends a SYN/ACK your box sends a FIN and kills the connection."

Learning the bash shell - You're a network engineer, you're going to be using Linux boxes as jump boxes for the rest of your life. Shell scripting will let you write up handy little tools to make your life easier. Boss wants to blackhole China at the edge? Write a quick script to pull all of the CN netblocks from the free FTP server APNIC owns, chop it up in sed and AWK, throw a little regex in for seasoning and you're done. And when he comes back in 30 days for an updated list? Boom, it's done even faster.

The vendor specific books are nice, but I can't tell you how many network engineers I've run across who couldn't tell me how DNS worked or how a three way handshake worked or couldn't write a simple script in Bash to bang out 300 port configs in 30 seconds. There are a shit ton of paper CCIEs out there, but those books up there will make you stand out.

u/CptTritium · 4 pointsr/sysadmin

Thanks for linking this, I hadn't seen it yet. As a Windows admin looking to get into Linux, this seems interesting.

Also, for your automation, I'd recommend Automate the Boring Stuff with Python, if you haven't read it already. It can also be found for free here: Automate the Boring Stuff.

I'll add another plug for The Practice of System and Network Information, even if you have a good feel for the philosophical part of the job.

u/lilhotdog · 4 pointsr/sysadmin
u/halspuppet · 4 pointsr/sysadmin
u/just_insane · 4 pointsr/sysadmin

Is this the one you mean? I am looking for some good books to read as I start to enter the work force.

u/BryceKatz · 4 pointsr/sysadmin

A few thoughts. Hopefully at least one of them will be helpful.

  • Learn How to Speak Boss. Stop reading this post and go watch this. Yes, right now. I'll wait.
  • Your job is just a job. They get your time in exchange for a paycheck. They do not get your physical and/or mental health.
  • Work you ass off for 8 hours then GTFO. Do things you love, with people you like, and don't answer the fucking phone or your work email until your return to work the next day.
  • Long weekends are your friend. You have vacation time. Use it and don't even feel bad. Don't think of 10 days as "two weeks". In a place this crazy, taking an entire week off will be utter hell coming back - assuming you'll even get an entire week off approved. Think of 10 days as "one long weekend every 6 weeks". Put the time off requests in all at once.
  • Work from home is evil. Home is your safe place to get away from work. Working from home defeats this purpose. Fight me.
  • Read Time Management for System Administrators then do what it says.
  • Document how you spend your time. Do this in addition to the ticketing system, because the ticketing system only tracks time on tickets. You have other things to do, too, and that time probably isn't visible to your supervisor.
  • Document what you do. Get in the habit of documenting EVERYTHING. Convince yourself the task isn't completed until the documentation has been updated, and do not move to the next task until the current task is done. Ignore the tendency to "document it later, when things calm down". Pro Tip: Things will NEVER calm down. Build documentation time into your project timelines.
  • There is never enough time. Ever. I don't care how many people are on your team, IT isn't about having no tickets. It's about properly managing the workload.
  • Incremental progress. You aren't going to change things in big chunks. Don't try. Read The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT and do what it says - even if nobody else on the team does.
  • Automate all the things. Seriously. You have better things to do than manually perform system checks. Automate that shit. If it can't be automated, make the business case for upgrade and then automate it.
  • Sometimes it's better to ask forgiveness than ask permission. If your boss is resistant to process automation, pick a small non-critical process, document how much time it takes to do manually, then automate it anyway. Show how much time you saved by not doing this one thing manually. Repeat as necessary until you're the most productive motherfucker on the team. Then use this information to justify a pay increase.
  • Slow the fuck down. My dad used to say, "I'm always in a hurry, but I never rush." Do things as efficiently as possible, but do NOT rush. Rushing causes you to overlook critical aspects of things. Rushing makes you frazzled. Rushing makes you leave your keys on your desk & locks you out of your office. DO NOT RUSH. Things take as long as they take.
  • The phone on your desk is Satan incarnate. Don't answer it unless you absolutely must. (Y'know, like when your boss calls.) Staff will do everything they can to bypass ticketing systems. The ringer on my desk phone is turned all the way down; I can barely hear it. Our phone system integrates with email, so messages show up in my Inbox. Playing back a message from my email is less of an interruption to my workflow than actually talking to some asshat who can't be bothered to submit a ticket. Most of the time, people won't leave a message, anyway.
  • Close your email when you need to focus. Not just minimize the window. Close it completely. If desk phones are Satan, email is one of the Dukes of Hell. Just because someone emails you doesn't mean you have to read it immediately. In fact, replying as soon as a message arrives only serves to encourage users to email you directly as a bypass to the ticketing system. I check my email three times a day.

    I could go on, but most of the above is already in the two books I listed and I'd just be riffing on a theme. I'll leave you with this:

  • They can't take away what you learn. Seriously. Learn it ALL.
  • The best time to find a job is when you have one. Absolutely keep your resume updated and sign up for job alerts on your favorite job site (sent to your personal email, obviously). Take a page from actors & musicians and never stop looking for your next gig.
u/almostdvs · 3 pointsr/sysadmin

First, read our Wiki. It is very thorough and answers a lot of these common questions such as

day to day? The Practice of System and Network Administration
And the topical reference books listed below.

Books to help in shaping a sysadmin? The above &:
The Phoenix Project
Time Management for System Administrators

Topical Books I see mentioned often and have been very helpful to me:
Powershell in a month of lunches
Learn Python the hard way
Unix and Linux System Administration Handbook
Windows Server 2016: Inside Out

Group Policy
FreeBSD mastery:ZFS
Pro Puppet
SSH Mastery

On my docket:
FreeBSD Mastery: Advanced ZFS

Michael W. Lucas and Thomas Limoncelli are very good sysadmin writers, you can't go wrong with a topic they have chosen to write about.

Most of the *nix stuff assumes a baseline knowledge of how to use a unix-based system. I learned as I went but did pick up an old copy of Unix Visual Quickstart Guide not too long ago at a used books sale, which seems like a good starting place for someone overwhelmed with sitting at a terminal and being productive.
I notice I don't have any Virtualization books, perhaps someone else can fill in good books. Most of my knowledge regarding virtualization and network storage has been a mix of official docs, video training, and poking at it. Seems innate but it isn't.

u/0x4c47 · 3 pointsr/linuxquestions

Yes. It's getting in touch with many different applications and services because you need them for some project. That's how you learn. Of course if you want to learn KVM virtualization you can read a book about it and do some project on that specific topic.

If you want to get an overview of Linux and Unix administration and many different pieces of software, you could look into this book:
(DM me on how to get it)

u/vekrin · 3 pointsr/linux

Around my office this is known as our bible: UNIX and Linux System Administration Handbook (5th Edition)

It might be overkill as some of the topics aren't important if you aren't working as an engineer or devops.

Check out the table of contents and summary it might be interesting. It's one of the best no nonsense safari books out there.

u/p0ssum · 3 pointsr/politics

Well, most of them you will find are just like the one you have very heavy reading and slow. If you are a real glutton for punishment, the real meat of everything is spelled out in the RFC's(Request for Comments). This one is pretty short and to the point, if you can understand it, it will help you understand most other networking jargon:


it is described thusly:

  1. Introduction

    This tutorial contains only one view of the salient points of TCP/IP,
    and therefore it is the "bare bones" of TCP/IP technology.


    So, its just the nitty gritty, but most times, I find that is the best place to get started. Some of the things you will want to learn/study are the different networking layers specifcally layer2(switched/VLAN) and layer3(routed) networking. You will want to learn about SNMP and ARP as they are both very important to networking and network management. If you are interested in the nitty gritty details of how packets get pushed around the network, you will want to learn about some of the dynamic routing procotols used, such as BGP, OSPF, EIGRP, and RIP. There are others as well, but these will definitely get you started.

    My suggestion is this, if you can, study the RFC"s as they will give you a nuts and bolts understanding of what needs to happen. That will soften the blow going into any networking books you might run into. If you are specifically looking for networking books, you can almost never go wrong with O'reilly books. However, I always poke around on Amazon reviews before buying a book as if there is a better book, it will often be mentioned.

    Here are a few that adorn my bookshelf:

    being that I am in network mgmt, SNMP is crucial, here are some good ones:

    and for the true masochist:

    for the routing protocols:

    Let me know if you have any specific questions and I will see if I can point you in the right direction! Good luck.
u/bobo333 · 3 pointsr/cscareerquestions

TCP/IP Illustrated is a classic, although it goes into so much detail at times that it's difficult to keep the bigger picture in mind.

I've enjoyed TCP/IP Guide it goes into a lot of depth as well, particularly in the later chapters, but gives a better high-level overview imo.

u/ephekt · 3 pointsr/networking

The TCP/IP Guide

The Illustrated Network

A bit dated, but pretty well respected:
TCP/IP Illustrated (There are 3 volumes)
You can find most of this info freely on the web though.

u/nullad · 3 pointsr/networking

I come from a similar background, but now I live almost completely in the networking domain. If you’re interested in learning about the various technologies from the perspective of a non-operator expert, I recommend TCP/IP Illustrated: The Protocols.

If you want to learn how to route packets from the perspective of a (albeit senior) network administrator, I recommend Routing TCP/IP Volume 1 and Routing TCP/IP Volume 2.

Beyond the excellent and thorough descriptions of the various technologies (with context), they also provide direct references to the RFCs and white papers wherein the technologies were first published. Using these three texts as a starting point, you can delve as deep as your interest carries you. I believe all three books are available through Safari Books.

If you learn best through video and verbal instruction, I recommend INE. It’s pricy but worth it.

u/Byzii · 3 pointsr/sysadmin

Even earlier versions would be a very good read despite the DevOps hype, but the 3rd (new) version includes best DevOps practices even without having any devs.

u/jandersnatch · 3 pointsr/ITdept

Learn to program. Edx/Harvardx CS50x gets pretty good reviews.
Learn to and make a habit of writing extensive technical documentation on everything you do.
Read this book.
Apply everything you learn to the current systems you work with

u/Eric-SD · 3 pointsr/sysadmin

If you wait a few weeks, you can pick up the new edition of this book:

If you think "there is nothing to do", you are probably in "don't know what you don't know" territory, which is fine. They key is to first start discovering what you don't know, then you can start taking steps to resolve it by learning.

As you learn, you will realized that there is far more that you don't know than you though, and the side effect will be that you feel dumber and dumber, but you will actually be improving at your job.

u/michaelp983 · 3 pointsr/javascript

I feel like this is a classic book for javascript programming. Even though it is very opinionated (parseInt), but none the less it is a great reference for quirky behavior of JS. Seconde watch this: <-- Just a great list of really silly behavior of JS!

One last thing, make sure you review how CommonJS works:

u/Silent331 · 3 pointsr/sysadmin

You can find a pdf of it somewhere on google as well. This book is possibly one of the most valuable things for a sysadmin for windows to have. Seriously.

u/evetsleep · 3 pointsr/PowerShell

Hey /u/Dude_with_the_pants! So this is a wall off text now that I've written it..sorry about that but honestly when I start talking PowerShell I can go on forever (as my peers at work can attest). So I hope this is kind of useful for you.

So you're looking for some real-world here goes from where I sit. I've been using PowerShell since it was in a long time. Prior to PowerShell I was a point-n-click guy. No scripting experience (beyond embarrassingly bad batch files). I'd open VB scripts and kind of zone out. PowerShell really opened a door for me. For the past 20 years I've been working for some really large companies (5,000 - 160,000) as an Exchange\AD guy with my current stint...about the last 13 years or so, I've worked for the same company. This has been an evolution of sorts, but ever since PowerShell v1.0 dropped in my lap during the Exchange 2007 beta I was hooked and started to automate and built tools.

This was a long time ago now, so my skills and uses have matured quite a bit (at least I'd like to think so). Looking through this thread you've already gotten a lot of really good responses. In terms of using PowerShell and where to start I like what others have said. When you reach for the mouse and start clicking on stuff to complete a task, note somewhere what that task was and then when you have down time, look up how to do it with PowerShell. Odds are really good, especially now, that there is a way to do it with PowerShell. If I may be so bold, but I'd recommend taking a look at Learn Windows PowerShell in a Month of Lunches. I recently did a manuscript review of it for the publisher which required me to slowly read through every single page. It's a good staring point and I highly recommend it.

That all said, daily PowerShell usage.. So I've spent the last decade automating and tool-making which my employer has really taking a liking to (not sure why, but I enjoy myself). Here are some examples of what I've done with PowerShell:

  • Designed a centrally managed PowerShell console that is extended by custom functions that various IT teams manage. When I user logs in to my custom PowerShell console it looks over what groups they're a member of and customizes they're PowerShell environment based off that. This includes loading custom modules, establishing remoting connections to Exchange\Skype, and so on. Currently used by ~100 or so IT folks. I built this, in my free time, about 6 years ago after I was tired of seeing everyone doing things differently (and inefficiently) and pointy-clicky on things when I knew I could make it faster for them.
  • When ever a user changes their password I have an hourly script which detects that change and notifies them via email as well as SMS that their password was changed and gives them some steps on what to do (such as change their password on their mobile devices and such).
  • Designed a PowerShell, PHP (for PowerShell backed web services), & PSSQLite architecture (thanks /u/ramblingcookiemonste!) which I've used to link together separate Active Directory forests and track various acquisitions. Basically this system tracks groups (and their memberships), users, and computers as they are migrated from one forest into the other. We do a lot of ..ahem.. acquisitions so this is a HUGE time saver. For example, when the project manager for an acquisition needs an update on what percentage of an office has migrated to our forest instead of hounding me (or the tech lead who is running an acquisition) they can just view a few web pages to get the info they need. No more bugging me so I can get back to my code! Did this in my spare time so the PM's would leave me alone...and it much so they asked for an official framework which I'm working on still.
  • I have a suite of tools that I wrote which query Splunk's REST API to pull data out for various tasks. For example, not long ago I was asked to provide a detailed report on the exact last logon time for approximately 300 people...who were no longer in our AD. My Splunk module made quick work of that. Took me about 10 minutes to get that info for the auditors. In the old days this kind of request would make me cry.
  • A long time ago we used to have real pains over unused accounts (both users and computers). I wrote an automation process which completely automates the detection of stale\unused accounts and send them through a workflow that I designed so that they are first identified, their contacts notified (manager..if they're a user, or admin contact if they're a machine), then they are disabled, and then eventually deleted after further notifications. All automated so I (or my peers) need to worry about it.
  • We don't use Active Directory for DNS, and so I had to write a tool which interrogates our DNS system to pull out subnet info (new subnets, changes, and deletes) and then pass that into Active Directory. This also heavily uses PSSQLite...I might be a little obsessed with this little database technology. With this I don't need to worry about what subnets are (or are not) in AD and if they're associated with the right AD site. Quite a few teams are quite happy with my tool, in particular the software distribution team as they're tools can now properly work with clients and find them in the right AD site.
  • By far my more heavily used tool is a directory searching tool. See where I work we don't have just AD (~140 DC's I might add), but other LDAP based directories and we needed a tool that could search any of them. Instead of having 15 ways of getting at that data I have 1. A single module where I can pass in a few basic parameters and get my LDAP query back.

    For day-to-day stuff, not long ago I needed to query the Windows time configuration status of all our domain controllers. Using remoting this was trivial. If you had 2 DC's then I guess it isn't a big deal, but for us fanning out through remoting to audit this data is absolutely necessary. I find remoting is a quality of life kind of thing. Yes I could RDP into something, but 9/10 times it is way faster to just run

    Invoke-Command -ComputerName machineName -ScriptBlock {do something}

    So day-to-day, for what I do, I'm honestly writing tools or working in automation projects 90% of the time. I only get into the shell to do something if something is really broken and none of my automation tools have already handled it. Not everyone has that luxury (and it is btw). If I was you I'd look for every opportunity to learn how to do stuff with PowerShell. I think you'll find that in most cases it will free you up to do other things. It'll be awkward at first as you fumble around, but you'll soon find ways to speed things up.

    I wouldn't be too obsessed with just looking at remoting stuff. It's true that this does expose some of the power of ..well.. PowerShell, but there is sooo much more to it. Look for ways to improve your daily life. Jot down the stuff you do a lot (and repeatedly). Those are your prime targets. It could even be something as simple as processing your mail in the morning. If there are certain patterns you follow and do a lot can absolutely hook in PowerShell into that too if writing Outlook rules won't do what you need (I've done this too).

    Good luck and happy shelling!
u/eramnes · 3 pointsr/sysadmin

/r/powershell is a nice place to begin and there are a number of links on the sidebar that can help get you started. When I was getting started I used the book Windows PowerShell Unleashed which I really liked. I have heard good things about Learn Windows PowerShell In A Month Of Lunches but I haven't had the chance to look in to it myself.

For free online resources I like ss64 and I also referenced when getting started.

u/binarycow · 3 pointsr/networking
u/loveandbs · 3 pointsr/PowerShell

As a beginner (still am), I have found the easiest way to learn is to just dive in using Powershell for any tasks that you do during your normal day (especially the repetitive ones).

With that said, I have found it highly beneficial to use a couple resources:

  • Subscribe to this Reddit /r/PowerShell
  • Subscribe to "Hey, Scirpting Guy!" blog
  • Buy the book Powershell in a Month of Lunches - A Youtube Channel also exists
  • Search for Powershell related courses on Microsoft Virtual Academy
  • Head on over to and go exploring
  • Visit the TechNet Script Gallery. Study and understand any available, high-rated scripts.

    To be honest, the most important tip in my opinion to learn how to use PS is the get-help command. This will teach you how to use just about every command out there minimizing most questions that you are looking to ask. A second tip: Learn what it means to "Pass by value" and "Pass by Property Name." This will help you immensely when combining commands using the pipeline.

    Quick warning: Powershell will quickly get addictive. Also, it is a community where people enjoy sharing and giving back.

    Last note, I swear. Learn shortcuts. It will save you a HUGE amount of time ( hitting esc on your keyboard to clear the line.)
u/SneakyPhil · 3 pointsr/sysadmin

This is a very good book. Debian-isms you can learn as you go, but system administration concepts are useful throughout many distributions.

Other than that you have to set goals for yourself. Have you tried starting up 2 virtual machines and had them communicate with each other?

u/ryanklee · 3 pointsr/linux
  • Read books. Like this.
  • Try other *NIXs.
  • Compile your kernel.
  • Build (and maybe maintain) a package for your distro.
  • Learn some shell scripting in bash.
  • File detailed bug reports.
u/peppajiggapuff · 3 pointsr/linux

I find reading books is the best way to expand ones horizon on a certain topic. UNIX and Linux System Administration Handbook should be an excellent read for you.

u/guffenberg · 3 pointsr/linux

I second this one

It could be a good idea to check which books some well regarded universities are using.

u/matthewdtwo · 3 pointsr/sysadmin

I found this to be helpful when I started out. The details are a bit outdated at this point, but it's still got many relevant points.

u/wombatsquad · 3 pointsr/ITCareerQuestions

Step 1: Buy and read this

u/canoe_lennox · 3 pointsr/CentOS

If you are looking for a dead tree, this book here has been recommended by a number of people I know.

u/CandyCorns_ · 3 pointsr/computerscience

For reference, /u/fatgypsythief is referring to this.

u/name_censored_ · 3 pointsr/networking

I learnt a lot from Tanenbaum's Computer Networks, though it's not exactly light reading.

If you're going to be/are a Cisco shop*, then a CCENT/CCNA would be really useful (and it also gets you a discount on equipment, but it never beats eBay) - though it's not a bad certification even if you're not a Cisco shop. If you do take that track, I'd recommend CBTNuggets/Jeremy Cioara's videos, though they're not cheap (and I can't think of any way to see videos without paying for them ;) ). By that same token, ASP/APP if you're going to be an HP shop*, JNCIE/JNCIP if Juniper*, BCNE if Foundry/Brocade*, or if you're going to be a Linux/BSD shop*, start tinkering (which is probably the best way to learn anyway).

I've never done or met anyone who's done Network+, though my experience is that CompTIA's certifications aren't held in high esteem.

* Once you start needing managed/enterprise gear, it's generally a good idea to try and keep all their gear from one supplier where possible, because some features don't work between competing products, it makes it easier for the employer to find employees, and it generally makes life easier. For unmanaged/consumer gear, you can mix and match all you want, though most sys/net-admins tend to develop biases for one vendor or another.

u/zuzzas · 3 pointsr/networking
u/JWooferZ · 3 pointsr/netsecstudents

I don't get how you're in a masters program in cybersec without knowing how to code...

Anyway, if you are leaning towards pentesting/networks, as well as black hat python/violent python are what you want to start off, as well as a good book on networking book:

I'm actually confused about what the content of an msc program could be in cybersec if you don't already know how to code.

u/kramer314 · 3 pointsr/linux is super high quality (and free! although if you have the money I think it's well worth donating and / or purchasing a hard copy)

I also like and

u/uptimefordays · 3 pointsr/sysadmin

In no particular order:

u/OhCmonMan · 3 pointsr/linuxhardware

Don't worry about compatibility, get Ubuntu here (for example):

Install it, play around and read some stuff. /r/linux4noobs /r/linux_tutorials, /r/linuxquestions for example. Or watch some stuff
or go crazy (highly recommended)

u/Medicalizawhat · 3 pointsr/learnprogramming

The easiest way to get going is to install Linux in a VM. You can do a lot in a little VM lab, spin up multiple machines, make them talk to each other, mess around with configuration management etc. Just be sure to give each machine a tiny amount of memory, maybe 500MB to a Gig.

Personally I'd recommend Ubuntu as a good first start. This is a pretty good book to get started with Linux and System Administration.

If you want to spin up a machine that is accessible from the Internet you can use a provider like AWS pretty cheaply.

Some ideas of projects involving a server could be:

  • host a website
  • set up a mail server
  • build a home media server
u/Clemlar · 3 pointsr/sysadmin

Honestly, this is by far one of the best books I’ve read and should help get you started:

UNIX and Linux System Administration Handbook

u/suicidalginger · 3 pointsr/HowToHack

I don't know how in depth you want to learn, how in depth determines our recommendations.

  1. Do you want to just find out if a site is vulnerable?
  2. Do you want to learn how attacks work and how the defenses to those attacks work?
  3. Do you want to get certified in security and make that a huge part of your resume?

    You sound like you want the second option.

    The key phrase for you is going to be "web application security". That is what security experts (and anyone in this industry) call it.

    For web application security there is kind of one master book that covers almost everything, The Web Application Hackers Handbook. I have the book siting right in front of me its about 900 pages and covers just about everything you could ever ask for. Also you'r going to want to get Burp Suite. You can install Kali linux in a VM and it has Burp Suite (recommended) or you can download the free edition for Windows from there website.

    Along with the book set up DVWA (there are hundreds of tutorials online on how to do that, hint use XAMPP.) or you can use the paid labs they mention in The Web Application Hackers Handbook. Also visit HackThisSite and other sites that offer web application security practice.

    So lets recap:

  4. Buy The Web Application Hackers Handbook.

  5. Setup DVWA.

    3.Visit sites that offer web application security challenges.

    By the end of that you should be pretty good at attacking web applications.
u/Kravego · 3 pointsr/AskNetsec

Get this book and go through it. A LOT of the crowsourced pentesting platforms have web application testing as their bread and butter.

And the other user who suggested it got downvoted for some reason, but further down the line you should go for GWAPT. I say further down the line because, like all SANS certs, it's expensive af.

Web app pentesting is the largest pentesting market around right now, so it's a good one to jump into. Good luck!

u/ArkionA · 3 pointsr/ITCareerQuestions

Absolutely love being a pentester and the cyber security industry. If you are willing to put in the time and study it can be very rewarding. CEH is a good step in the right direction and should open doors for you.
For entry level positions, pentesting is usually split into two areas, web application and internal/external infrastructure. It's good to have knowledge of both but it's worth choosing which area interests you the most. Personally, I specialise in web applications & API and there is a lot of online resources to help you. (As you have mentioned owasp top 10, I'll assume web apps is your interest)

The best way to learn a vulnerability and get a good understanding is to create vulnerable web pages (this also gives you something to take into an interview). I would suggest doing some basic LAMP stack (Linux, Apache, Mysql, PHP) - Don't let this put you off as it's actually pretty simple. If you can make a few vulnerable pages to display vulnerabilities, you will fly through entry level interviews.

it's really simple to do.. Here is a form that is vulnerable to cross-site scripting. (a few lines of php with some html)

<form method="POST" action="">

<p> <input type="text" name="xss"/></p>

<input type="submit">

$value = $_POST['xss'];
echo $value;

Reading Material:

Practical learning
DVWA (Damn Vulnerable Web App) - Purposely vulnerable web pages to practice exploiting.

Once you have a bit of experience have a look at hackthebox

u/3nvisi0n · 3 pointsr/HowToHack

I'd recommend checking out The Web Application Hackers Handbook:

Its a solid book that covers a lot of what you'd want to know. It does make heavy use of the free BURP suite tool which is a fairly standard tool for web pentesters. It doesn't do everything for you but it helps manual testing.

u/apt_snake_oil · 3 pointsr/singapore

I think very poorly of the cyber security courses offered (except NUS) in Singapore, as the things they teach are not aligned with the industry practices - either outdated or just not practical enough.

Having said that, if you have the time, I would suggest taking the SIT degree instead of the diplomas (waste of time IMO) and hopefully it provides you the fundamentals (programming, network and system administration) and be exposed to some other topics in cybersecurity.

If you are doing a career switch, I suppose you want to get up to speed fast by focusing on the need to have knowledge as a baseline. I would suggest taking the time to go through these stuff in details, setup your labs and practice the stuff


    Other wise, there are hands on courses and industry certifications that you can take online at your own pace and employers look out for such as:

  5. (eLearnSecurity is good because they have a progression path from student onwards )
  6. (I don't encourage going for this as a starter unless you already have some fundamental knowledge and skillets for system administrations but this is highly recognised in the industry)
  7. You can also go for SANS or what not, I think it's just too expensive for my liking.

    There is no one path to becoming a good pentester. However from my observations, folks who tend to be more in demands (with or without certifications/formal educations) are those who can display the ability to learn stuff on their own. This is an industry of skills and continuous learning. For employers that pay top dollar and provide time for training, learning and research, they are looking for folks who can display those stuff through actions.


    Source: Pentester
u/_Skeith · 3 pointsr/AskNetsec

Go here and learn about the vulnerabilities - www.hacksplaining

Review the OWASP Top 10

Buy, read, and understand The Web Application Hacker's Handbook - this is the holy bible in the Web Penetration Realm.

Set up a VM and download DVWA as well as Mutillidae to practice web hacking and exploitation on.

If you are really new to pentesting in general - go and read my blog

I suggest you read the Vulnhub Writeup's and well as the Holiday Hack Challenge and the OverTheWire Natas ones as they are related to web hacking and will show you stesp from enumeration to exploitation.

Also since you are going to be interning at a company that does this, please familiarize yourself with the The Penetration Testing Execution Standard

Hope that sheds some lights, cheers!

u/marxocaomunista · 3 pointsr/portugal

Faz VMs/CTFs em casa, lê o Web Application Hacker's Handbook. Depois candidata-te a trabalhos na área. That easy.


Não tenho mestrado nenhum na área de cybersec (tenho em telecom), e já vou no segundo ano na área sem nunca ter trabalhado antes.

u/p2p_editor · 3 pointsr/explainlikeimfive

Somebody in another comment mentioned Kevin Mitnick.

In addition to Mitnick's book, I'll also recommend:

Steven Levy's Hackers. It's a classic exploration of the birth of the computer age and hacker culture, with a lot of insights into the mindset of computer people, both white-hat and black-hat.

The Cuckoo's Egg by Cliff Stoll, which is an account of him tracking down some serious hackers waaay back in the day. It's kind of vintage now, but I remember it being very well written and engaging. It's more like reading a novel than some dry academic piece.

In similar vein is Takedown, by Tsutomu Shimomura, which is Shimomura's account of pursuing and catching Kevin Mitnick. Also quite good, as it was co-written by John Markoff. There's a whiff of Shimomura tooting his own horn in it, but you definitely get a feel for the chase as it was happening, and learn a lot about the details of what Mitnick (and others in the underground hacking world) were actually doing.

Weird fact: I had no idea at the time, of course, but during some of Mitnick's last days before they nabbed him, he lived in an apartment building in my neighborhood in Seattle, right across from the grocery store where I always shopped. And about a year later, I ended up dating a girl who lived in that same building at that time, though of course she had no idea Mitnick was there either or even who he was. Still, I always wonder if I ever happened to stand next to him in line at the grocery store or something like that.

u/bullcitytarheel · 3 pointsr/pcmasterrace

Not sure if it's related to this book, but

Hackers: Heroes of the Computer Revolution

is one of my favorite non-fiction books of all time.

u/mistral7 · 3 pointsr/booksuggestions

What most consider the original is actually titled:

  • Hackers by Steven Levy

    More recently, there have been several excellent titles. My suggestion is stick to non fiction as it will truly scare the yell out of you.

  • Kingpin by Kevin Paulsen

  • Hackers and Hacking by Margaret Haerens

  • Cyber War by Richard C Clarke

  • Schneier on Security by Bruce Schneier ---
    Almost everything by Bruce

  • The Art of Intrusion by Kevin Mitnick. He has a couple of books as you may know. The advantage is he offers the perspective of a "former" hacker.

    I can recommend more but these are good starting points. Fiction is fun but for pure terror, grasping what these authors are revealing is the key.
u/Ipswitch84 · 3 pointsr/compsci

Hackers: Heros of the Computer Revolution

The Cookoo's Egg

Both non-fiction, both excellent. Both cover a unique period in computing history, the understanding of which is worthwhile.

u/FattyLite · 3 pointsr/compsci

Hackers starts after Turing and other pre-computers (at least what we think of as a computer), but it is a pretty good narrative history beginning with the formation of the Model Train Railroad Club at MIT through to the PDP-7, Apple Mac and beyond.

edit: a letter

u/networklackey · 3 pointsr/videos

The term Hacker comes from the MIT model train club... which amusingly became the computer club... the specific incident where the term was coined is described in detail in this book... it was achieved by jamming a screwdriver between two contacts giving a computer an extra register it was not originally designed with... You want to read a great book about the microcomputer revolution, this is it...

u/NlightNFotis · 3 pointsr/debian

When I was beginning to learn Linux back in the day, I used The Linux Command Line and have only good things to say about it. It must be one of the simple best books to introduce yourself to the command line and to how to use a modern Unix like system.

u/Kaladis · 3 pointsr/sysadmin

Obviously, you will want to read the documentation on the distro you decide to install. For a book, I would recommend The Linux Command Line.

u/drpinkcream · 3 pointsr/bash

I recommend How Linux Works and The Linux Command Line. Those will take a total beginner and take you through the basics up to shell scripting.

The Linux Command Line is a work book where you type what it says and follow along. How Linux Works is more of an explanation with less hands-on. I went through both at the same time as the chapters align very well, particularly at the beginning.

u/I_Generally_Lurk · 3 pointsr/raspberry_pi

First of all I should say that I'm no expert in these things, but I'm sure other people will be able to make other suggestions.

>I plan on installing Linux as my OS (technically my first time)

If you're more used to Windows then the UI will be fairly easy to get used to, but the biggest change will be the command line. This is a really powerful but complex tool and I think the best way to get used to it is really just to dive in and use it as often as possible. MagPi have a book for it (Conquer the Command Line) to get you started, but if you wanted something more comprehensive I've spent some time reading The Linux Command Line and found it really helpful.

For Python I think I started out with Code Academy, but mostly picked it up as I went along. I'm currently reading Python Crash Course and I think it is pretty decent, although most people seem to recommend Learn Python the Hard Way (note the tiny link near the bottom of the page to read the book for free).

At the end of the day the most important thing is to take baby steps and take them often: when you've kept at it regularly for a few weeks it becomes a lot more easy.

u/StoveyJ · 3 pointsr/HowToHack

One option is to just jump in at the deep end. Buy this book - and follow along.

You might need to Google a few things you don't understand along the way but YouTube will almost certainly have a few 'explainer' videos for concepts you're not familiar with.

u/proverbialbunny · 3 pointsr/cscareerquestions

There are books specifically on the subject that teach you everything you want to know. eg,

I'd also recommend getting familiar with Linux. Most of the industry is beefed up sys admins / dev ops, that enjoy doing the more QA-like work of pentesting. It's not just knowing web pages, it's knowing the system too.

Also, go to security conferences.

u/maharajuu · 3 pointsr/oscp

There's a ton of resources online for OSCP. Check out abatchy's prep guide:

Some VMs to practise on:

(#1) Kioptrix: 2014,62/

(#2) FristiLeaks: 1.3,133/

(#3) Stapler: 1,150/

(#4) VulnOS: 2,147/

(#5) SickOs: 1.2,144/

(#6) Brainpan: 1,51/

(#7) HackLAB: Vulnix,48/

(#8) /dev/random: scream,47/

(#9) pWnOS: 2.0,34/

(#10) SkyTower: 1,96/

A really good book for OSCP prep:
Penetration Testing: A Hands-On Introduction to Hacking

u/Jurph · 3 pointsr/netsecstudents

Get a copy of Georgia Weidman's Penetration Testing and work through the exercises with the class. I think there's a way to order the book and get several PDF copies for classroom use; you could also contact Ms. Weidman on twitter and see if she'd let you do a bulk order at a discount.

Talk to the campus cyber-security rep and see if he or she would give your club access to the latest image file they're using on campus, so you can use that as a target in a VM. Vulnerability reporting should be a negotiated part of that deal -- you get the image, with the understanding that any vulns you find get reported internally.

Similarly, you could war-walk the campus and see how many unsecured or poorly secured WiFi networks you can find. If you can get on the network and then pivot to the access point you can change the SSID to "NETWORK_NAME (weak passwd)" or use your access to ID the network owner and notify them that their network's not secure. But make sure you have permission from whoever the campus ISP is before you do that -- the last thing you want is for some kid whose dad is a lawyer to sue you guys, or angrily demand that the school kick you out.

Also, if anyone in the club is planning to do work for the Federal government or other work requiring a security clearance, make sure that all of your work is strictly white-hat. Unauthorized access to any computer system, or access without consent of the owner, could potentially disqualify you from getting a clearance.

Once your team builds up a baseline set of skills you might want to see if you can start attending events for the CCDC.

u/lortik · 3 pointsr/AskNetsec

I wouldn't say this a good training book as it's just a list of commands that can be used as a reference for those who already know what they're doing but need to job their memory.

I'd say look at Metasploit The Penetration Testers Guide or Georgia's book Penetration Testing A Hands On Introduction to Hacking to get started off.

u/Secure4Fun · 3 pointsr/AskNetsec

The book "Penetration Testing: A Hands-On Introduction to Hacking" by Georgia Weidman isn't free, but it's low cost and will give you the same information that PWK course materials provides, and a lot more.

For completely free training, search around Vulnhub for targets to go after. Plenty of lists on the internet about which ones are similar to the OSCP lab machines.

u/mindful_island · 3 pointsr/WGU

That is prepping for the Linux+ right?

I haven't done this course or the exam, but I've been using Linux for a decade. I think for Linux in general - if you are coming into it from scratch then you really need to practice setting up a system, configuring services, compiling software, use a variety of package managers, writing some basic bash scripts and so on. Then you'll have a framework for a lot of the arbitrary stuff they want you to memorize - all the various flags, switches and options. At that point you probably want to do heavy flash-carding for the real arbitrary stuff.

Basically I'm not sure there is a way around simply using it - unless you are great at memorizing stuff without relating it.

I don't know if this book covers the objectives better than the course material, but I found it excellent back when I first got into Linux (I used the 1st edition).

It was the kind of book that you could simply read through, play with what you learned in each section and it made a lot of sense. A real learning guide rather than a dictionary/reference.

Oh and if you want to learn a lot of really useful command line tips and tricks, this memrise was super helpful:

If you master that memrise it'll make you super productive when working in a linux environment.

u/ultrabowser · 3 pointsr/linuxmasterrace

This book will answer a lot of your questions.

u/bookbindr · 3 pointsr/politics

All he needs to run to another country is a plane ticket and this book from Amazon. It's easy really.

u/MeridianJP · 3 pointsr/Anarchism
u/ydnar · 3 pointsr/privacy

This is the most comprehensive online guide I've found.

Also good reads..
> How to Be Invisible by JJ Luna

> How to Disappear by Frank M. Ahearn

u/root-node · 3 pointsr/PowerShell

The best way I found to learn something is to find a project that relies on it.

For example, I never knew any powershell a few years ago, but I was given a project to write some QA scripts for work. That turned into a 8000+ line modularised script that anyone can use and create plugins for.

I am currently working on building servers and applications using PowerShell (installing and configuring AD, SQL, MSCS, RDP, ...)

If you haven't already, buy the book "Learn PowerShell In A Month Of Lunches" ( It's the top rated book by everyone.

u/JohnaldTheRobot · 3 pointsr/web_design

To be honest you should learn JavaScript first before going on to jQuery.

O'Reilly books are very good programming books and highly reccomended. However if you know how to code a little in any language and you just need to know the basics then I reccomend "JavaScript: The Good Parts". I have this book and it's extremely useful.

If you want a nice introduction to jQuery I'd suggest the screencast on

Good luck on learning javascript :)

u/magenta_placenta · 3 pointsr/web_design

Pro JavaScript Design Patterns

JavaScript Patterns

High Performance JavaScript

Object Oriented JavaScript

JavaScript: The Good Parts

Everyone loves to swing from Crockford's nuts, but I found this book a little hard to read. I lack a CS background and I fully admit I need to re-read this book as last time I read it was beginning of 2009

JavaScript: The Definitive Guide 6th Edition

I just ordered this yesterday, the 5th Edition is the book that really kicked it off for me back in 2005.

jQuery is cool and all (as are all the other libs) but you should try to learn core JavaScript as much as possible.

u/hhustlin · 3 pointsr/javascript

Just out of curiosity, what's the perceived benefit of logging every page in your history as a QR code of all things?

As for language - Chrome extensions are JavaScript, so if that's what you want to do, learn that. If you're looking for the very basics, Codecadamy is a good place to start. Beyond that, you're on your own (but maybe pick up a copy of the Good Parts )

u/Chesh · 3 pointsr/javascript

It's a design mistake in the language itself, there are quite a few of them. I recommend Douglas Crockford's JavaScript: The Good Parts, he goes into a lot of good practice work-arounds for the pitfalls of the language.

u/BesottedScot · 3 pointsr/Scotland

I think you're going to suffer too much with broad strokes. All of the things you've mentioned have their own usecases really. You should focus on one of them and learn it before deciding whether you want to try another.

Although, you can also just do 'X vs Y' for all of those things you've mentioned and see articles on the differences between them as well as what they actually do.

Before you start any of the learning on any of those things though, you should definitely take one or two JS courses. Code School, Code Academy, Udemy all have great courses on Javascript. A couple of books I'd definitely recommend are Clean Code and Javascript, the Good Parts, I'd say these are ubiquitious and essential reading for any developer looking to get better.

Less and Sass are for doing stylesheets better. They basically introduce programming concepts like functions and variables into CSS.

Gulp and Grunt are task runners. Tests, minifying, linting and live previews can all be done with them.

Angular and React are basically front end frameworks built with flavours of JS. They introduce OO concepts into javascript and the MVVM/MVC way of working for the front end. The are markedly different from how they do things.

With the other things, there's basically a wealth of information for them.

Needless to say, you have a lot of reading and practicing to do. Luckily these days there's lots of examples and documentation for every one of the things you've mentioned.

u/Riobe · 3 pointsr/videos

So, everyone has different learning styles and there's no completely "best" way to learn something. Here's a couple suggestions on how I'd recommend starting:

  • The simplest starting point would be to follow an online tutorial. It's been too long since I learned my first bits of javascript, so I don't remember what I used, but after a bit of looking, this one looks decent: EDIT: Like /u/HothMonster recommended, I've heard good things about CodeAcademy. A friend went their their javascript course and found it useful. Haven't done it myself, but worth a look too.
  • Are you the type that'd like a book to guide you through? There's one that I read and loved while I was learning: Javascript: The Good Parts. If you google it, there's a PDF in the top few results too, but I have no idea if that's legal or not.

    Using tutorials or a book, get a basic start going. Once you have a little bit of HTML/JS knowledge going so that you can make a index.html file and have it load a javascript file that does anything, like log to the console, then you're started. Go through a tutorial/book to get a bit more understanding and then.... build something.

    It's hard to choose a topic, but try to find something that you're interested in. Then work on making it. You'll learn an incredible amount by doing it. Don't try to master the language first, just make something with it. Then you can ask specific questions about the parts that you're having trouble with and it will help guide you through it and people will generally be willing to help someone that's working.

    Plus, getting help is easier when it's a specific use case that someone can help with vs. "Please teach me everything about this language" because even those of us that have worked with a language for quite a while often don't know all of it. :P
u/Zapurdead · 3 pointsr/cscareerquestions

Closures are actually a somewhat important concept in Javascript. If you don't understand them then one day you'll probably get some weird this bug working with callbacks and you'll waste more time than you need to trying to figure out what's going on.

This is just my personal experience, but I felt that when I had a Javascript interview coming up I would always take some time to review this book:

It's worth it to read in my opinion, it covers pretty much everything you would probably be asked in a Javascript interview, and it's very short.

It helps me a lot with Javascript stuff. The other stuff, like the Java stuff, you could probably just google it. There's a standard set of OOP questions that interviews just like to ask all the time.

u/DeadEyeDev · 3 pointsr/gamedev

Also, check out the book Javascript: The Good Parts to really up your game with javascript. I don't really do html5 games, but I've heard this book recommended enough by people I respect.

u/theQuandary · 3 pointsr/javascript

Javascript: the good parts -- Amazon

Eloquent Javascript -- free ebook

Javascript Allonge -- free ebook

Eloquent Javascript is a great introduction to JS. The Good Parts teaches about what parts of JS to use and good coding practices (though some JS devs disagree with Crockford, every place I've worked that started implementing all his recommendations immediately saw reductions in code issues). Javascript Allonge is the greatest intro to functional JS that I've seen. These three will take you from beginner JS dev to intermediate JS dev. Practice will take you to advanced JS dev and reading lots of nuts and bolts blog posts will take you to JS expert.

u/ew73 · 3 pointsr/webdev

No, you're fine.

If you spend some time really working on that Javascript deficiency and lean to grok what's going on, you're going to be doing so much better than most out there.

Pick up Javascript - The Good Parts and start reading. Then watch this video and when you understand what the hell is going on, you're ready.

u/areinet · 3 pointsr/javascript

My suggestion, go read Crockford's book JavaScript: The Good Parts and/or the JavaScript section of his blog. A lot of people have some really strong opinions on whether Crockford is right or not, but simply reading his book will explode your JS knowledge in a big way. Its a quick read and then you can start having your own opinions on Crockford.

Also, as someone else posted here, go build something.

u/dmerrick · 3 pointsr/IAmA

Luckily, JavaScript is a pretty easy language to pick up. Personally, I'm partial to O'Reilly's "JavaScript: The Good Parts." It's a very good summary of the language :).

u/OolonColluphid · 3 pointsr/dotnet

And then read Javascript: The Good Parts which will tell you the subset of js that is actually sane.

u/soullessredhead · 3 pointsr/FreeCodeCamp

This one is pretty good.

u/tech-mktg · 3 pointsr/Frontend

Most of the answers already say to start learning JavaScript, which I agree with. I'd worry less about learning libraries, and start learning plain vanilla JavaScript. A good book if you're interested is JavaScript: The Good Parts. I'd then move onto jQuery, and from there you'll be able to get the gist of most libraries.

At our company, our front-end people all do JavaScript, although some of them started where you're at with backgrounds in just HTML & CSS. We have a lot of emails coded, which can't have JavaScript, so that could be a good fit for you if you're not looking to expand your skills.

u/j9461701 · 3 pointsr/slatestarcodex

I remember batch! That was the first programming I ever did, because my Star Trek games required me to kill explorer.exe before they'd load the colors correctly. So I just made a little file that I'd click on and it would turn on say Starfleet Command, turn off explorer, then wait for SC to exit and turn explorer back on. I was like...10 I think. Good memories.

Anyway, right now I'm reading Javascript: The Good Parts, while using notepad++ for coding the examples. I tried using code academy but I found it annoying and uninformative.

u/michael0x2a · 3 pointsr/learnprogramming

I've recently been collecting some resources related to learning different programming languages. It's a work in progress, and is still a bit disorganized, but the section on HTML/CSS/Javascript might be useful. Also, many of the links might be too basic for you, but several of them might still be useful.

In particular, I think [Eloquent JavaScript][webdev-eloquent] is a pretty good overview of JavaScript for people with prior programming experience. You might need to skim the first couple of chapters though.

The [Mozilla Developer Network][webdev-mdn] (MDN) also has a good number of resources that range from beginning to advanced that you can check out. MDN also tends to be very thorough and comprehensive, which is good. The section on JavaScript is here.

I also like a book called JavaScript: The Good Parts. It's a bit short, but I've personally think it's the least bullshitty guide to JavaScript I've read. Unfortunately, it focuses more on understanding JavaScript, the programming language (and all its quirks and oddities), rather then on practical application.


u/GrayDonkey · 3 pointsr/java

You need to understand there are a couple of ways to do Java web development.

  • Servlets & JSPs. - Check out Core Servlets and JavaServer Pages or the Java EE Tutorial. Note that I link to an older EE tutorial because the newer versions try to switch to JSF and not much changed in Servlets and JSPs between Java EE 5 and 6. I recommend learning Servlets and JSPs before anything else.
  • JSF - A frameworks that is layered on top of Servlets and JSPs. Works well for some tasks like making highly form centric business web apps. Most of the JSF 2 books are okay. JSF is covered in the Java EE 6 Tutorial
  • Spring - Spring is actually a bunch of things. You'd want to learn Spring MVC. If you learn any server-side Java web tech besides Servlets and JSPs you'd probably want to learn Spring MVC. I wouldn't bother with GWT or any other server-side Java web tech.
  • JAX-RS - After you get Servlets and JSPs down, this is the most essential thing for you to learn. More and more you don't use server-side Java (Servlets & JSPs) to generate your clients HTML and instead you use client-side JavaScript to make AJAX calls to a Java backend via HTTP/JSON. You'll probably spend more time with JavaScript:The Good Parts and JavaScript: The Definitive Guide than anything else. Also the JAX-RS api isn't that hard but designing a good RESTful api can be so be on the lookout for language agnostic REST books.

    Definitely learn Hibernate. You can start with the JPA material in the Java EE tutorial.

    As for design patterns, Design Patterns: Elements of Reusable Object-Oriented Software is a classic. I also like Patterns of Enterprise Application Architecture for more of an enterprise system pattern view of things. Probably avoid most J2EE pattern books. Most of the Java EE patterns come about because of deficiencies of the J2EE/JavaEE platform. As each new version of Java EE comes out you see that the patterns that have arisen become part for the platform. For example you don't create a lot of database DAOs because JPA/Hibernate handles your database integration layer. You also don't write a lot of service locators now because of CDI. So books like CoreJ2EE Patterns can interesting but if you are learning a modern Java web stack you'll be amazed at how archaic things used to be if you look at old J2EE pattern books.

    p.s. Don't buy anything that says J2EE, it'll be seven years out of date.
u/ManicComputer · 3 pointsr/css

Start by trying to understand the CSS and HTML on the sites you like going to. If you haven't already, become familiar with the F12 developer tools each browser provides. You'll want to get comfortable with them all because early on you will want to discover why your pages aren't looking the same in one browser to the next. Using the dev tools in the browser you can actually change the way the page is styled by literally changing the CSS in the developer tools. Or you can add styles as well which is GREAT when modifying your own site so you dont have to go back and republish it each time you make a change. IE's dev tools are actually pretty great. You can also simulate older browsers by changing the document/browser mode in the Emulation tab (this isn't perfect btw, but works well for the most part)

Next start using or and try to recreate some elements on a site you like. Do this daily, and do not get frustrated. By using the dev tools you can see how they used CSS to get the style you like, and the surrounding divs/spans/p/etc around it. You can also right click on the page and select "inspect element".

Codecademy is GREAT but one thing it doesn't do well is using real world tools since you are using their environment. You will learn far more by manipulating the dom in F12 or using JSFiddle/CodePen. Plus you can post a page you are working on in JSFiddle/CodePen to a forum like this one for help with what you are working on for a lot better discussion.

Another good site to keep in your toolbox is Can I use. This will help you with understanding which CSS can and can't be used for your specific browser support needs. One example that comes to mind is wanting to use text-shadow which isn't supported in IE9.

Because this is a post in a CSS sub, I'm not sure if you are going down the web developer route, but if you are, then continue reading. Otherwise, feel free to skip to the last paragraph.

Next you will want to move on to the final tool in your front end development toolbox you will want to master and that is JavaScript. Learn straight JavaScript first, and avoid mixing in jQuery until you feel like you have a great understanding of how JS works on its own. I believe the JS tutorial on Codecademy mixes jQuery early on, and if you are just starting out you may not realize the difference. Don't get me wrong, learning jQuery is almost as important as learning JavaScript, it's just important to understand it is a library for JavaScript, and as a framework has its uses and limitations. I really liked the JavaScript tutorial on Code School, so that would be a great place to start. It's not free, but I believe they have a free trial. Otherwise everyone will tell you JavaScript: the Good Parts and Eloquent JavaScript (which is online and free) are required reading.

After that you'll want to learn some of the more popular libraries and frameworks for CSS & JS, such as LESS, Sass, jQuery, AJAX, node.js, backbone.js, and Bootstrap to name a few.

After this, then you'll need to decide if you prefer to lean more to the designer side or the back-end developer side. Front-end developers are usually the bridge between the designer and back-end developer.

In my experience though, you fall in to either being an all-in-one or the designer who does front-end work. Learning designer tools like Illustrator and Photoshop will be helpful if you are asked to or need to create your assets. I actually prefer Fireworks (though I hear it is being discontinued) for creating quick assets I couldn't create with CSS instead of Illustrator because its a little less robust and for someone new its much easier to learn. Otherwise if you are going the back-end route you'll probably want to research which server-side language you want to start with like PHP, Ruby, Python, .NET, etc and then what database such as MySQL, MSSQL, etc.

The best advice I can give you though, is don't be a "master of none" web developer. Become a master at CSS before you move to JavaScript. Then become a master at JavaScript before you move to another language, or whichever language you choose next. When I started out I tried to learn CSS, JavaScript, ASP, PHP, jQuery, C#, AJAX, SQL, and a few others because I wanted to get started quickly...along with pressure from the company I worked at. You will get overwhelmed, burnt out, and start making mistakes, or even worse, not get to the bread and butter of the language you are trying to learn.

u/K900_ · 3 pointsr/Python

This book is not Python, but it is great for building more complex stuff. This book covers advanced Python specifically. You should probably read both.

u/alpha_hxCR8 · 3 pointsr/learnpython

Object oriented programming is a deep topic.

If you are looking for a simple introduction, I found Chapter 8 of this book, which is also used for the MIT Intro to Programming using Python pretty good.

If you want to dive deeper, these 2 books have good descripts of OOP and other fundamentals of Programming. However, these are not specific to Python, but are probably the most recommended books in programming:

  1. Clean code:

  2. Code Complete:
u/UpAndDownArrows · 3 pointsr/learnprogramming

First time see that site, but I would recommend reading:

u/zoug · 3 pointsr/Omaha

15 is really young. If you're relatively presentable, you might want to try Hyvee.

That said, it looks like from your profile that you have an interest in math and coding.

If this is something you're naturally skilled at, you shouldn't be working in fast food. You should be ignoring temporary financial gains to put yourself in the best place possible for college and technical internships.

The primary way to do that is to double down on your academics. At 15, you'll probably be going into your sophomore year? Don't accept any grade but an A from here on out. There's just no reason for it. You're obviously not retarded and school is easy.

Grab an ACT/SAT prep book. Take every practice test you can find until you get your scores into the absolute highest percentile you're able to.

If available, join a cyber academy, coding, math or robotics club at your school.

Go to things like this:

Read books like these:

You'll lose a few thousand dollars over the next few years from working a shit job but you'll also be able to get a technical internship as soon as you turn 18 making double/triple minimum wage, while you gain proficiency in a relevant field.

You'll also go from $Texas in student loan debt to a free ride, saving you 30,000 to 100,000+ depending on what school you can get into on scholarship.

You may be 15 but I have to disagree with anyone else that you're only worth minimum wage. Everyone has skills they can work on and if you really want to help your family in the long term, work on what will make you successful.

If you have any questions regarding any of this, PM me.

u/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): (there is an accompanying coursera course).

Code Complete:

Clean Code:

Functional Programming in Scala:

Learning Python:

Effective Java:

Haskell Programming From First Principles:

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/Milumet · 3 pointsr/learnprogramming

>Where can I start with those?

Book recommendation: Code Complete. Can be a bit dry sometimes, imho.

Less dry: The Practice of Programming. The examples are mainly in C though.

u/jodythebad · 3 pointsr/cscareerquestions

Yes - knowing how to write a great sort algorithm is fairly useless in the real world. You're better served learning good programming and principles of software design. Please get a copy of Code Complete and absorb it, as well as finding out your company's particular methodology.

The biggest problems with fresh-out-of-the-womb coders is you make mistakes that make your life more difficult down the line - use functions, don't write code in-line. Don't make everything global variables. Name your functions and variables carefully. Understand scope. If you're doing something complex and hacky to achieve a goal, take a step back and think if you can solve your problem a different way. Don't hesitate to ask for advice, online or at work. It is not a sign of weakness, but instead a sign that you're willing to learn.

For scripting this kind of thing is not nearly as important, but you may as well start trying to write nice code there. Ask for a coder to look it over and give you tips. Make sure everything you write is well documented and readable!

Good luck, have fun!

u/LoganLehman · 3 pointsr/learnprogramming

Sometimes I believe that most books are wastes of paper, because everything relating to programming can be found online.

There is one exception although. If you can get your hands on "Code Complete 2nd Edition," that is a bible for a lot of programmers(me included).

There is the link for you. It has some incredible conceptual basics, as well as some advanced techniques of software design and architecture, which WILL help you now and down the road. Good luck!

u/enelsk · 3 pointsr/learnprogramming

Are you thinking about this in the context of a particular language or framework? Sometimes that will help steer you as to how you might organize your code on a high level. For example, the Model-View-Controller paradigm is implemented on an api level in Ruby on Rails, and you'll also find it in practice if you build an iOS app.

If I'm working on something that doesn't rigidly dictate architecture, I still like to frame the project with MVC in mind. That means you're going to have classes that make up your data layer, your controller-like classes that implement business logic, and some classes that represent visual representation. Sometimes your views may not be code at all, and it's some type of markup like HTML or XML.
I'm linking this since I'm using it myself as I learn a new web framework, Express. Express isn't very opinionated with how you organize your projects, but I think Peter gives a pretty good explanation as to how to do it with Express, and it could be extrapolated to fit other projects:

For an example of a mature, larger project, Discourse is an open-source web forum. I particularly like how code is organized in this project.

Lastly, if you're interested in a book, look no further than Code Complete. Probably my all time favorite, I make a point to try to re-read parts of it every year. It's a book about code construction, and offers invaluable insight as to how you should strive to organize your code, and more importantly, why you should organize it that way.

EDIT: I should mention I'm speaking with Object Oriented Programming in mind. Of course, if you're using something procedural like C, it's a fundamentally different programming model with routines and functions operating on and transforming data structures. Systems programming, something like a driver, is going to be organized differently. Again, the answer is somewhat domain specific.

u/cheald · 3 pointsr/webdev

Code Complete.

The examples are given in C++/Java, but it's a goldmine; I believe that every serious software developer should read it. He may be beyond most of it, but it's easily my favorite book on my bookshelf, and I recommend it to everyone who wants to become a better developer.

u/geodanila · 3 pointsr/coding

Great suggestions! I also highly recommend Code Complete: A practical handbook of Software Construction (Second Edition) by Steve McConnell

u/errorkode · 3 pointsr/learnprogramming

Before attempting to give an answer to your questions there is something I feel is important you understand: it's okay to not understand it all yet. You only just started your journey as a programmer and no master has ever fallen from the sky. The most important factor for both your questions is experience, which is not something you can get from a book or lecture. It comes from making mistakes and failures. There will be a lot of them and they won't stop coming, so don't beat yourself up about them, they happen to everyone. Take them as an opportunity to learn.

  1. It's a generally accepted wisdom that the only thing harder than writing code is reading it. It's not just about syntax, algorithms and data structures. It's about understanding how another person or group of people approached writing this piece of software. Also, keep in mind that not even the developers themselves fully understand large codebases. They might have a better intuitive understanding of pieces they interact with regularly, but code is not something humans are good in remembering.
    With that said, here's my personal approach to it: Usually there's a reason to look at code. You need to figure something out. We're not interested in the whole repository of code, but just the one piece. So I start hunting for that, usually with some sort of search or just trying to understand the file structure.
    Once I find the approximate area I have a very top-down approach. If I can tell from the name of a function what it does (or the associated comment) there is no need for me to read the body of it. Only when I can't tell from the name or need specific details will I dig deeper. Understanding the structure is always more important than understanding every instruction.

  2. You won't really get a satisfying answer to this. There are hundreds of books out there related to this question. Not only does it depend on the kind of project you're working on, it also depends on the team, goal, language, framework and god knows what else. Also, while I don't want to sound condescending, 2000 lines isn't really much if you're talking real life applications. But as a quick primer: Think about structure. It turns out that algorithms are all nice and dandy, but one of the biggest challenges for programmers is structure. How can you split your code into components that are easy to understand and not needlessly interdependent in unexpected ways? In the end we come back to your first question with this: Your aim is always to write code that is easy to maintain and read. Keep your functions short. Give good names. Provide comments. Split up into files and classes. Group together what belongs together. Have a consistent naming and coding style. Think before you code.

    Most important, like so many lessons in life, no matter how many time people tell you not to touch hot things, you'll only really understand once you've burn yourself. There's no shame in that, especially not as a student. Just go for it, fuck up and learn from it. Talk to other students about the things you struggle with and how they deal with it.

    I don't really have any resource suggestions for you at the moment. Your questions is somewhat vague and most books I've read on the topic are quite specific and aimed at people with more scars than you have. Maybe I could recommend Code Complete which covers a lot of bases, but it's also quite the monster. I'm a firm believer that making mistakes and seeking ways to avoid them is better than following instructions without quite understanding why. But we each have to find our own way.
u/jreborn · 3 pointsr/javascript

The C Programming Language is a good one too. Although it's specific to learning C, reading through it and doing all the exercises is something every programmer should do at least once.

Also, Code Complete 2.

u/_rere · 3 pointsr/cscareerquestions

Hi there, fellow EE.

We should make a club :)

I believe you can do a crash course into software development and catch up later when it comes to be a better software developer, since you've already been in the market for 4 years I'm sure you know exactly what I'm talking about (job has nothing to do with education, and you can learn as you go), and I know its the same in CS, a lot of companies just want you to do specific thing, and they don't really care about your theoretical knowledge or your full knowledge with software development life cycle.

Since you are an EE graduate I think you can relatively easily land a c++ software development job, but the problem with c++ is that there is a lot of theoretical knowledge is expected from you.

Still I believe if you set aside 3 months of your lifetime and study the following:

Programming: Principles and Practice Using C++

Code Complete

introduction to algorithms


Software Engineering

Java Heads first

C# in a nutshell

Note, half of these books will bore you to death, but you have to power through.
Also there will come times where you don't understand what you are reading, I find it best is just to keep going, eventually things will make sense.

I personally find books is the fastest way to learn, and give you the deepest knowledge and always access to awesome tips and tricks that you can't learn at class or from a video.

If you pick those books, you can read from them in parallel, make a habit of finishing a chapter per 24/48 hour and practice 1-2 hours of programming (of what you've learned) I'm sure by the end of the 3 months you will be better than a lot of CS graduates

u/halcyon44 · 3 pointsr/java

My own Amazon tech book wishlist shares a lot of those on Petri's list, but I'd have to include Code Complete as one of the best books on software development that I've read.

Petri has written some of the most helpful articles on Spring tech that I've read online.

You have some really awesome in-depth Hibernate articles, Vlad. Thanks for your hard work!

u/Luonnon · 3 pointsr/rstats

If you're moving from academia, chances are any code you've written has been to get the computer to do something. Software development is more about writing code for other people to read and work with... which also happens to do what you want it to do. You might want to make sure you have the basics of software engineering practices down by reading Code Complete and Clean Code: A Handbook of Agile Software.

Beyond that, if you have a solid project or two that you can talk about the ins and outs of, it shouldn't be hard to convince a company that you can analyze data and write code to automate or otherwise help with that process.

u/stdio_h · 3 pointsr/csharp

Pieces of your app should be able to change without considerable changes to the whole.

research solid principles:

research a layered architecture:

try this link for sqlite:

also, if you are in school, complete your assignments, but other than that
do not write another line of code until you have checked out (at least read the chapters on writing classes and functions):

Clean Code

and Code Complete

u/uberhaxed · 3 pointsr/learnprogramming

Is there a point to doing this early? When you get an entry level position you will learn all of this and more. Also you seem to be missing a small detail. A team doesn't just consist of engineers. There will be a set of non-engineers on your team whose sole purpose will be planning, issuing work, documentation, etc.

That said:

> I would like to learn how to work on a software development team and whatever that entails.

The only place you can get this is on a software development team in industry. Much of the industry have agile processes for scrum, issue tracking, etc. but those are really to manage large teams for largely divided projects. If you are working with a couple of friends then the best thing to do is peer program when you can and code review when you can't. If you plan to make a start-up, then it might be best to get some one to do the managerial work. If you're insistent on doing it yourself, then you'll really end up spending most of the time manage the project rather than writing code, which means you're basically just a manager anyway.

But if you insist anyway, here's some books:

u/Cgseif · 3 pointsr/learnprogramming

I'm like you - also in high school and casually building my programming skills. I'm not really sure what you are looking for, or what your previous experience is. Have you looked into design patterns, object-oriented programming principles, etc? Do you make mini projects for yourself to complete? I recommend definitely looking into OOP (if you haven't already), design patterns, refactoring to improve your code, etc. Have you tried contributing to any open-source projects? Those might be useful for gaining more experience.

Code Complete is a must read (IMO) for any programmer.

Head First Object-Oriented Analysis & Design is one I'm a fan of as well. Taught me how to look at the bigger picture when coding.

Hope this helped somewhat!

u/AmericanXer0 · 3 pointsr/cscareerquestions
u/athousandcounts · 3 pointsr/programming

This is what Steve McConnell calls the Pseudocode Programming Process in Code Complete. He dedicates a whole chapter to it.

See chapter 9.

u/adeadrat · 3 pointsr/gamedev

Code complete 2, is the best programming book I have ever read. I would however recomend a year or two as a programmer before you read it.

u/technocraty · 3 pointsr/cscareerquestions

As far as your courses go, the best book I can recommend is Algorithms in a Nutshell. It is a small book which quickly introduces you to most of the core algorithms you will use throughout University. It also covers measuring efficiency through "big O notation" - a very important concept in CS.

If your University's SE program is anything like the one I am familiar with, you will also be focusing on software engineering principles. The most important SE books I ever read are:

u/varius86 · 3 pointsr/devblogs

13 year old? I've started programming around the same age. Wow, I'm only 27 and I suddenly felt old :)

Anyway, I don't know if you want some tips, but here are a few I wish someone told me when I was starting:

  1. Start small - even a simple game, like Tetris or something, 100% complete (with UI, menu, sounds, gfx etc.), will take a lot more time than anticipated.
  2. Finish things - it's not always fun and games, there is a lot of boring work involved, you have to stick it out. After all is said and done, a one finished game will feel better than 10 started projects, no matter how interesting they are.
  3. Learn about code design. Code readability is really important. I would say it's only second to making working code. After the initial stage of any project, you won't be writing new stuff, you will be expanding already existing codebase. How fast you write/modify/debug/etc., will depend on how readable and manageable is your codebase. The worse codebase, the more you will be inclined to leave it and start something new, fresh (with a "better code"...). Leaving code behind or rewriting it because it's "bad" is a huge timewaster. Read Clean Code and Code Complete for starters.
  4. I lost a lot code too in my time. Use something like bitbucket or github for your code. Remember to keep your directory tree nice and tidy. As with point 3. - It's a lot easier to come back to nice and tidy project than to some kind of tangled monstrosity.
  5. Have fun. Creating software/games is a hell of a ride.
u/hfaber · 3 pointsr/programming

Go read Code Craft or Code Complete to learn not the theory but the practice of programming.

u/oconnor663 · 3 pointsr/Python

One of the most important lessons in Code Complete is that you don't code in a language, you code into a language. That is, your understanding of the parts of your program needs to be independent of the language you happen to be using. Language features can help you be less verbose, or more efficient, or whatever, but good abstraction is what really matters, and it's always up to you. Highly recommended book for professionals or future-professionals.

u/JacboUphill · 3 pointsr/UCI

You don't have to know anything about programming going in, as aixelsdi mentions. If you want to get ahead, here's some information which may help you do so. The rest is up to your own initiative. It can never hurt to know more about CS or more languages, as long as you don't waste time complaining about what's better in [insert language of choice].

I wouldn't recommend learning data structures and algorithm analysis before coming to UCI. Not because they aren't fundamental, they are. But because most people find it harder to learn those abstractions before learning the tools that utilize them (Python, C++, etc), which is why ICS 46 and CS 161 aren't the first classes taught. If you like math proofs more than math problems then maybe go that route, it could be helpful as iLoveCalculus314 mentions.

Languages: The CS introductory series (31-32-33) which you'll be taking first year is taught in Python. It switched to this because it's a good first language as a teaching tool. Right after you're done with Python, 45C will teach you C++ and 46 will use C++. The lower division systems core (51-53) generally use C or C++ but it differs by professor. Knowledge of Python will be useful in making your first year easier. Knowledge of the other two will make your next three years easier because they're common mediums for upper division courses. But you should be able to pick up a new language for a specific problem domain by the time you reach upper division.

Courses: If you want to get a head start on planning your courses, check the UCI Catalogue - Computer Science page. At the bottom it lists a sample of what your schedule over the 4 years might look like. That page is for the "Computer Science" major, for other majors in ICS see here.

Course Resources: You can actually view the Schedule of Classes without being a UCI student. Select a term (like Fall 2014) and a department (like I&C SCI) and it will list what classes were offered that term. Most lower div will be I&C SCI, most upper div will be COMPSCI. From the results you can go to the websites for those courses to see a syllabus, books used, etc. For example, here are the current websites for the introductory series ( ICS 31, ICS 32, ICS 33 ).

Your course professors and books and assignments will NOT be identical to those, but looking at what's currently taught will give you a pretty good idea of what the course entails so you can pre-learn anything that sounds difficult.

Books: If you have to pick one book to learn before coming to UCI, I would highly recommend C++ Primer, 5th Edition. It's very well structured as a self-teaching tool AND as a reference manual. You won't come away with any Python knowledge, but picking up Python as someone versed in C++ is easier than the other way around, and you'll find 45C much easier as well since you can focus on language quirks rather than fundamentals.

If you choose to learn Python first, Introduction to Computing Using Python: An Application Development Focus is the book currently suggested for ICS 31/32, and Learning Python (5th Edition) is suggested for ICS 33.

Another solid circlejerk book in the CS community is Code Complete, but I wouldn't recommend reading that until later on since it's more of a "best practices" book.

u/TheCodeSamurai · 3 pointsr/Python

Something I hawk whenever I can: Code Complete by Steve McConnell is a huge recommendation. I never learned anything besides like 100-line programs before this, and I basically divide my programming journey into before and after reading this. It's seriously worth reading: you can skip chapters that don't apply to you, but it is one of the best resources on how to manage the complexity shift between small and large codebases.

u/super_thalamus · 3 pointsr/PHP

Oh man. You need to work on your coding conventions and formatting. I assume you've never worked on a team before. You will make people very upset. It's really hard to follow the logical blocks and flow of your code. You should buy this book and work your way through it. You will be 1000 times better at this.

u/spookyrufus · 3 pointsr/learnpython

Not specifically for Python, but one of the bibles of good software practices is -in my opinion- Steve McConnell's Code Complete (Amazon:

It covers pretty much every aspect of software construction. A really good read.

u/1092384756 · 3 pointsr/GrandTheftAutoV

Couple hours searching? Just google "GTA V General Lee reddit". The dukes isn't even in GTA V I think you meant the Vigero. I'm sorry for any miscomunication I don't think I said anything to lead you to belive I am with the police. If you really want to exile yourself from society then perhaps you could use a canoe and paddle out to an uninhabited island, I'd recommend getting one made of aluminum if thats within your budget. It'll take me a while to learn smoke signals, I'd have to attend classes or buy a book. I tried to include a few links so you don't have to spend a week trying to google anything I mentioned, but in case you need help this book could come in handy

u/vkmita · 3 pointsr/berkeley

Haha this.

u/davidthefat · 3 pointsr/learnprogramming

Google for Dummies

Realistically, way more information than you need.

u/larry_lol · 3 pointsr/Guitar

At least for a lot of the posters in /r/Guitar, I'd say Google for Dummies would be useful.

u/cquick97 · 3 pointsr/AskNetsec

Depends on what you want to learn.

Web Application Security?

Exploit Development?

"Pentesting" techniques?

Also check here for tons other of resources.

As for certs, if you are a beginner beginner, then probably stuff like Security+ and Network+. Unlike the guy behind me, I will never get, nor do I really recommend CISSP, unless you are going for strictly blue team (defense) work. I personally enjoy red team (pentesting, etc), so something like OSCP would be more useful.

Like I said in a post above, feel free to PM me with questions. I'm always happy to help others on their quest to learn more about the wide world of infosec :)

u/cruachanmor · 2 pointsr/programming

You've probably come across it already, but if not Code Complete is similarly old, but still well worth your time (I actually found it better than Pragmatic... first time I came across it)

u/mcdronkz · 2 pointsr/PHP

It's not a website but a book like Code Complete contains this kind of information.

u/dunston_chexin · 2 pointsr/pornfree

Has only been about a month this streak, but during this time I've established the longest term goal I have: to be a good father. To some, this may sound trivial, but it is an enormous step in my life. I didn't have a father, and for most of my life I didn't think I would have children of my own because of that. I'm still many years away from that day (not married even) but this overarching umbrella goal enables me to set short term goals and reach those, which give me the dopamine I referred to in my post.

I'm a software developer by trade, so being a good father would involve being good at my job to provide stability. So, two goals I'm working towards today are: read 75 pages of this book daily

and finish all the free (no subscription required) practice problems here:

Another goal coming soon is: get to the gym 3 days per week. No progress on that goal yet; still at 0 per week :\^).

u/gin_and_toxic · 2 pointsr/webdev

Some highly recommended books:

u/athosghost · 2 pointsr/AskProgramming

One of the biggest issues I see with some of the dev's I work with is that they easily get lost in their work. We refer to it as shaving a Yak. Let's say you need to go pick up some milk at the store, but before that you need to fill up your gas tank. But before that you need to change the oil in the car. But before that you need to help your parent access their email. The next thing you know you're in your living room shaving a Yak asking yourself how you got into this situation. All you wanted to do was get some milk.

You would be better off identifying the core features of your project and concentrating on them, one at a time. What are these core features, what is the value of this feature, and what is the minimum amount that would satisfy that feature. If you're creating a car, you would need a motor to drive the wheels, but a a motor has nothing to do with how to steer a car. You've identified two separate features, one for the motor and one for the steering. I'm not talking about sitting down and writing out full specs and requirements. Just get a basic idea of what are the different parts of what you are building. You'll miss some but that's ok. Find a few features, pick one, and start.

Stay focused on that feature. Hack it together, make it work. But make sure that what you're hacking together is only for that feature. The code you're writing at the time should be responsible for solving that feature, alone. Even if you think that what you're creating can be used for another feature, or that you're repeating something that you made earlier, or you've discovered some new feature that you missed initially (and you will), ignore the impulse to optimize or start adding new features in the middle of your task, you will come back to it later. Just make sure you make notes about those things discovered.

When you're code does what it is supposed to and you've proven it with unit tests (you do have unit test right?), then you can start refactoring. Clean it up, move it around, optimize it, look for areas that a design pattern can fix. Give it a good S.O.L.I.D. overview (if you're working in an OOP language). As long as you have unit tests covering the core responsibilities of your features, you can make changes with confidence.

Once you're satisfied, you can move on to the next feature and repeat. As you complete more features, you can re-address some of the completed code during subsequent refactors. Working like this will ensure that
a) your code works as intended because you've proven it with unit tests
b) your code will be loosely coupled because you were forced to work on a single responsibility at a time.

Refactoring is probably the main take away. But being able to pick specific milestones along the way is important. If you leave it all up to the last minute, it will be easy to get overwhelmed.

So book recommendations:
Martin Fowler's Refactor -
Uncle Bob's Clean Code -
Steve McConnell's Code Complete -

u/turtlepot · 2 pointsr/AskComputerScience

Highly endorsed, first book I read out of school:

Code Complete - Steve McConnell

Bonus, engineers at my office were just given this book as recommended reading:

Clean Architecture - Robert C. Martin

u/balefrost · 2 pointsr/AskProgramming

Heh, sure.

A lot of people are fans of Code Complete. I tried reading it after being in industry for a decade, and I found it to be very dry and boring. The general consensus from people that I've talked to is that it's more useful when you're just starting out. Maybe I just came to it too late.

A better book (in my opinion) in that same vein is Clean Code. Clean code is shorter, more focused, and has better real-world examples. It feels less "complete" (hue hue) than Code Complete, but to me, that's a strength. As a quick point of comparison: Code Complete devotes 32 pages to the chapter on identifier naming; Clean Code devotes just 14.

I got a lot out of Design Patterns. I seem to recall that the pattern fad was in full swing back when I read this in 2005-ish. I think I had independently discovered some of the patterns already at that point, but this book helped me to codify those ideas and also showed me some new ones. Some of these patterns are now seen as antipatterns (I'm looking at you, Singleton!), and all of the patterns have an object-oriented bias. But there's still something useful in the pattern language, and this book is a reasonably comprehensive start. The book is somewhat dry, and some people report that Head First Design Patterns is a gentler and friendlier introduction. Head First Design Patterns hits the essential patterns, but misses a lot of the less popular ones.

Eventually, you'll need to work in a codebase with some technical debt. Maybe it's debt that somebody else put there, or maybe it's debt that you introduced. Working Effectively with Legacy Code is still my go-to recommendation. It defines technical debt as code that is not under test, it introduces the idea of "seams" that you can use to pry apart code that's too tightly coupled, and it then provides a cookbook of specific scenarios and reasonable approaches.

If you're looking for thought-provoking videos, I recommend anything by Rich Hickey. I don't know if I've watched all of those, but I remember good things about Hammock Driven Development and especially Simple Made Easy.

Get comfortable with a source control system. I didn't use source control in college, since it wasn't needed for any classes, and that was a missed opportunity. The whole world loves Git, so you'll probably want to learn it if you haven't already. But I'll also toss out a recommendation for Mercurial. I haven't used it in years, but I remember finding it to be quite good.

Good luck!

u/miguez · 2 pointsr/gamedev

I went trough a really long phase of this. Not saying this will work for you, but for me what snapped me out and allowed me to set my own path was heavy doses of proper, formal game design.

It took forever for me to discover that's what I needed. But the structure and the fact that it forced me to think through every aspect of a game idea before any line of code was written made me realize I could do it. It showed me the individual steps, it compartmentalized it so that I could eat the elephant one bite at a time.

Plus, it was a LOT easier to stay motivated, because I had a pretty good idea of the big picture, so it was easy to track overall progress and distance from the finish line.

Finally, with the help of Code Complete: A Practical Handbook of Software Construction, I'm now quite proud of the code I put out, which is another motivator.

u/synthsongs · 2 pointsr/webdev

Buy and read this book as soon as you can. It's the gold jewel of software development, I guarantee that if you read and understand it, you'll be better than 80% of programmers out there. ^[citation ^needed]

u/TheQuantumZero · 2 pointsr/learnprogramming
u/grandslammer · 2 pointsr/csharp

Thanks, but this is one 7.5 hour course and does not seem anywhere near a complete path to being job ready.

I have a Udemy account and would buy Mosh's courses on Udemy if I thought that they would form a concise package when put together. I would supplement this learning with books if necessary - specifically the following:

But a course where everything fits together (such as a bootcamp I can't afford) is really what I'm looking for.

u/balloonanimalfarm · 2 pointsr/AskProgramming

Code Complete.

The fantastic blog Coding Horror (written by one of the founders of StackOverflow) has this to say about it:

> Steve McConnell's Code Complete 2 is the Joy of Cooking for software developers. Reading it means that you enjoy your work, you're serious about what you do, and you want to keep improving. ... Do yourself a favor. Make this the first book you read, and the first book you recommend to your fellow developers.

This book has made balloonanimalfarm a much better programmer. It will save you time by making your designs better at the start of the project, helping you do good defensive programming so bugs come out right away, refactor well when the project becomes too big, choose the right scale of algorithms for your project, and make high quality software.

u/alterraun · 2 pointsr/learnprogramming

On top of those, I would recommend this. It's a very comprehensive book, touching on many aspects of software development, and is quite readable.

u/natedcorn · 2 pointsr/learnprogramming

If you're running into problems with a method with so many local variables that the names are colliding; perhaps you should consider writing shorter methods that each do a single, simple task, then chain those together. Here's more on that code smell.

That being said, Code Complete by Steve McConnell has an entire chapter (11) on naming things, I highly recommend it.

u/sleepybychoice · 2 pointsr/learnprogramming

Code Complete is a good start.

"Useful" and "safe" are interesting criteria, and delve into software engineering topics such as good requirements gathering practices and software processes.

You can find any algorithms book, video, or online course for writing efficient code, since that's one of the things curriculums stress in Computer Science. Here's a start.

u/trashhalo · 2 pointsr/programming

Disclaimer: This may not be true for your job, but it has been for every job I have worked at.

That everything they are teaching you about algorithms will not be useful to you when you get into the field. Your education starts day one at your first job. Clients don't pay us to innovate in algorithms. They pay us to find and glue together other peoples libraries and to use this to present them the requested information.

Code you will actually be writing:

  • Glue code. Integrate Library X with Library Y.
  • Unit tests. To make sure your glue code works as expected.
  • UI code.

    Things you will be doing that CS degree does not prepare you for

  • Fleshing out incomplete requirements documents
  • Dealing with drama between teams
  • Estimation
  • Understanding that 80% is often good enough

    I would suggest reading books like Design Patterns, Mythical Man-Month and Code Complete
u/gte910h · 2 pointsr/programming

Do not read any of the stuff this poster put out there :OD

Design Patterns: A book written in the early 90's to get around problems of early 90's languages. It's as old as you are practically.

Mythical Man Month: This is about working on software in large organizations. It is not at all related to what you're going to be doing for a number of years:

Code Complete: This is out of date. You reading Code Complete 2. I would say you should wait a couple more years to read that, as while it goes through all the correct sort of ways to build software, most of it will fly right over your head while it maters, and additionally you will likely take them as dogmatic rules.

Now estimation, in a year or so, I'd think about reading the Estimation book by the Code Complete guy....but only think about it will help you budget your time a little better, but you'll really benefit from reading it most once you've had an internship or two.

u/orbitalia · 2 pointsr/TheRedLion

Yeah I heard about Hinkley Point C, wonder if it will happen as it needs a hike in Electricity prices. No role for me, being in Sweden and all.

Glad you asked for recommendations - read the Mythical Man Month, it is a classical piece of literature on Software Development , its from the 60s 70s but holds true even today,

and Code Complete, by Steve Mcconnell (I have met him in the US a few times)

probably enough with those two to start with..

u/xd43 · 2 pointsr/learnprogramming

No, that's what it's there for. Pyon is a really knowledgeable guy who's usually around. Just go in there and explain your problem

There are some really good books on software design though. Specifically: (it's also really cheap)

u/shhh-quiet · 2 pointsr/learnprogramming

You mentioned some issues that sound like code cleanliness and structural issues. Getting better at algorithms really comes down to practice and exposure, there's no shortcut to this. But there's no reason to suffer from bad coding practices if there's room to improve.

A few books come to mind, which may seem like they're coming from left field, and may not seem immediately useful to the task of solving algorithm puzzles, but might be useful in the long term for you to learn how to write correct, clean code and reduce uncertainty:

  • Code Complete 2. Some good tips in here regarding code cohesion, and how to write functions and classes cleanly.
  • Clean Code. More on writing functions cleanly, along with design & testing.
  • How to Prove It. This is a great book that delves deeply into logic. Even just the first chapter or two could be incredibly useful to you. It discusses things like DeMorgan's Laws, which show up a lot in programming and electronics. It deconstructs common logical concepts and phrases into boolean algebra and set builder notation (which inspire Python's list comprehensions). The world of math and logic and proof is not completely isolated from the world of programming.

    EDIT: One other thing is to make sure you understand the limitations of how computers represent numbers. The need for this understanding will become clear very quickly on, say, Project Euler problems. Look into bits, values, integers, signed vs unsigned, IEEE754 floating point.

    And one other thing is that it's easy to compare your solutions against some of the best solutions that exist for those problems and think you're doing a bad job when in fact you're doing an alright job if you manage to solve the problems with decent runtimes. Mind your 80/20 rule here. The extra time it probably took those people to craft those solutions is not 0, which includes whatever time they spent over the years becoming an expert at that language, etc.
u/timmyotc · 2 pointsr/cscareerquestions

I would recommend reading articles/books on good code/ code reviews. McConnell also had a section on them in Code Complete.

Here's a reasonable guide

This article also has some reasonable opinions. Ignore the product plugs.

Remember that the person that you are reviewing spent several hours on this problem and probably has a greater appreciation for the hidden problems.

u/tinbuddychrist · 2 pointsr/SoftwareEngineering

Someone else said the issue would be getting a job, not learning. I tend to agree and I think it can go together with your question.

Different places will look for different things. Major software companies (Google, Amazon, etc.) select using algorithm programming companies. Get a copy of Cracking the Coding Interview or something sinilar and make sure you understand all of the topics in it well enough to reimplement a heap or a breadth-first graph search, etc., in 20-30 minutes. Read up on this stufff further outside of that book when you aren't sure on the "why" and it'll help.

Other places will look at your resume more to see proof you can perform, so you will want to fill it with links tp your Github where you show off meaningful work. Have at least one full-stack CRUD app, i.e. a database of [whatever] with an API to manage the entries and a web-frontend that exposes the API functionality to end-users. That's the bread-and-butter of profrssional software development. (Sounds like you are working on that.) A few meaningfully complex projects that aren't just CRUD apps to round it out will be nice - the games you mentioned, for example.

For good general engineering skills - writing maintainable code and so forth, stuff that will make your work shine and make it easy for you to collaborate with other professionals - there are a few books that a lot of people read and reference, such as:

Code Complete
Clean Code

(Personally I find Martin to be a bit much, but you'll hear his ideas referenced anywhere.)

Can I see some of your existing work? That would help me understand where you are in your journey thus far.

u/ChamplainBridgeTroll · 2 pointsr/montreal
u/CronkDocker · 2 pointsr/vmware

Ahh I see that you are not familiar with Google, please see reference to an amazing book that can assist you with your troubles.

u/Neurobug · 2 pointsr/DerekSmart

Beaten? I've literally been laughing at you. Lol. Good job, guess someone should tell CIG they are broke then! Lol. It obviously takes a genius to understand that a company keeps selling their product to not go out of business. Quick, tell Amazon!

And sorry thought you MIGHT have two brain cells to do a search. Guess I was wrong! Here ya go!

Still waiting on your successful crowd funding campaign. Just gonna ignore that huh? Derek was wrong about names, about FTC investigations, about lawsuits, about studios closing, about CIG being out of money, about 2.0 being impossible, about 2.63 being shown at gamescom, about Ali B being fired, about Tony Z leaving CIG, about mass walkouts, about money laundering, about Amazon buying CIG, about the engine switch ( he doesn't even understand what a fucking game engine is) about his own fucking games ever launching. He was caught red-handed taking made up bullshit from "Steve" and IMMEDIATELY tweeting it, and then tried to play it off like he actually knew all along. So, is it worse to be wrong, or just pretend to be wrong and still be wrong? lol You taking anything he says seriously is just sad. And anyone who believes him after he's been proven such a liar and moron, must equally be as idiotic. But sure, lets beleive him, thats why CIG is out of money and not making the game....except they are. So...your "facts" or reality? pick one? Obviously it isn't the latter. So, I repeat, fuck off troll lol. You aren't "winning" you're just making yourself look stupider with each post.

u/TheHelgeSverre · 2 pointsr/PHP

If you want a very comprehensive (althought maybe a bit dry) resource on web app security, I recommend The Web Application Hackers Handbook, it covers most of the web security stuff like remote file inclusion, sql injection, csrf xss etc etc.

u/Havilland · 2 pointsr/linux_mentor

The Unix and Linux systems administration handbook is also worth it’s money.

If you are doing more with virtualization and automation have a look at vagrant, it will help you get an environment up and running quicker.

As soon as possible also try out other virtualization stacks as kvm, xen and lxc. These are some of the most used and free ones. VMware is the paid contender in most places.

u/cstoner · 2 pointsr/linuxadmin

Last time I remember leafing though this guy it was still very relevant.

It's a lot of basic UNIX/Linux nuts and bolts stuff.

u/Lunarblu · 2 pointsr/linux

I recommend this book to everyone I taught Linux to. As some people have already commended on learn to program first. Linux knowledge will come.

u/xgunterx · 2 pointsr/linux
u/robscomputer · 2 pointsr/linuxadmin

A few of my favorite books I reference and recommend. Just a note, many of these are older and can be purchased used for much less. Also if you can afford it, get a Safari subscription. I use my work Safari subscription but this alone has saved me from my book buying habit. Now I only buy "must have" books. :)

Official Ubuntu Server book - I really like this book as the writing style helped me "get it" with Linux. Kyle Rankin has a very good method of showing you the technology and then a quick run down to get the server working, followed by some admin tips. It's a just scratching the surface type of book but it's enough to get you started. I rarely use Ubuntu now, but this book helped me understand DNS and other topics that were IMHO harder to grasp from other books.

As a bonus, this book also has an entire chapter dedicated to troubleshooting. While this sounds obvious, it's a great read as it talks about dividing the problem, how to approach the facts, etc. Stuff a seasoned admin would know but might be hard to explain to a new admin.

The Linux Command Line: A Complete Introduction - You can read this book for free on the site, but having a paper copy is nice. As mentioned, you should have a very solid understanding of the command line. In my experience, I have seen co-workers struggle with basic shell scripting and even understanding how to make a single line for loop. This book covers the basics, moving to shell scripting and I think it's a good solid reference guide as well.

DevOps Troubleshooting: Linux Server Best Practices - This book is referenced a few times here but I'll throw another comment for it. Another book from Kyle Rankin and has the same straight to the point writing style. It's very quick reference and simple enough that you could give this to a new sysadmin and he or she could get started with some of the basic tools. While the book covers a good selection of basic services and tools, it's easy to get deeper into a chapter and find it's only discussing a handful of troubleshooting steps. The idea with this book is it's a quick reference guide, and if you want to get deeper into troubleshooting or performance, take a look at other books on the market. Either way, this is a great book I keep on my desk or reference through Safari.

UNIX and Linux System Administration Handbook (4th Edition) - Another popular book based on the comments here. This is a pretty big book, thin pages, but it's like a small brick of UNIX/Linux knowledge. While it's starting to get dated, it does give a great reference to many topics in the system administration world. The chapters can dive deep into the subject and offer more than enough information to get started but also understand the technology. The e-mail chapter I thought was great as well as the DNS. I think of this book as a overall guide and if I want to know more, I would read a book just on the subject, that's if I need more information. One thing to point out is this book makes use of different OS's so it's filled with references to Solaris, different UNIX versions, etc. Not a problem but just keep in mind the author may be talking about something outside the scope of vanilla Linux.

Shell Scripting: Expert Recipes for Linux, Bash and more - I found this book to be a good extenstion of the Linux Command Line book, but there are many many other Bash/Shell scripting books out there. The author has many of the topics discussed on his site but the book is a good reference for scripting. I can't stress enough how important shell scripting is. While it's good to know a more formal language like Python/Perl/etc, you are almost certain bash will be on the machine you are working on.

Systems Performance: Enterprise and the Cloud - I can't comment on this book beyond the first chapter, I'm still reading it now but it's reading similar to Brendan Gregg's site, and that's a great thing. If you don't know who this guy is, he's one of the top performance guys in the Solaris and now Linux world. He has some great infographics on his site, which I use for reference.

Use method for Linux

Linux Performance

Example of Linux performance monitoring tools

Hope this helps!

u/feaks · 2 pointsr/sysadmin

I think you meant this book.

>Information in this book generally applies to all of our example systems unless a
specific attribution is given. Details particular to one system are marked with the
vendor’s logo:

>Ubuntu® 9.10 “Karmic Koala”
>openSUSE® 11.2
>Red Hat® Enterprise Linux® 5.5
>Solaris™ 11 and OpenSolaris™ 2009.06
>HP-UX® 11i v3
>AIX® 6.1

u/coniferhugger · 2 pointsr/linuxadmin

Instead of buying tons of books, you might want to look at Safari Books. I have the 10-book bookshelf subscription, and it is seriously plenty. Pros, you have instant access to a massive library of tech books. Cons, you are stuck reading on your computer/tablet/phone (I did try reading a few chapters on my Kindle, but the didn't care for the experience).

Books I would suggest:

  • UNIX and Linux System Administration Handbook - this is seriously a great book, that will make any admin better.
  • Time Management for Systems Administrators - has a lot of good tips for time management, but some things are a little dated.
  • The Practice of System and Network Administration, Second Edition - This is a great read on how to be a better system administrator.

    I'm not a huge fan of training videos, but generally watch recordings from conferences. Although, I do really enjoy the format of vimcasts though.

    As for general advise, I did see someone recommend looking for an MSP. If you are looking to be a Linux SysAdmin, I wouldn't recommend this route as you are going to be supporting MS installations. Personally, I started doing help desk for a web company and moved up from there. Also, I worked hard to create my opportunities within each position. You'll have to put yourself out there and be patient, It took me 4 years to earn the official title of Systems Administrator (in a small-ish town). The key to this is finding a good Sr. SysAdmins who are willing to mentor you, and some environments/people aren't conducive to this.


    BTW, I have a B.A. in Political Science, so don't be ashamed to rock that Philosophy degree. You will see a lot of posting that are looking for a B.S. in Computer Science/Computer Engineering/Rocket Surgery, but seriously don't even worry about that. Most job postings are a list of nice to haves, and most places really only care that you have a degree.

    I've been recruited by and interviewed with some very respectable tech companies. I just usually have to explain how I got into tech with a political science degree. In an interview, having the right attitude and knowing your stuff should say more than your major in college. But, you will also run into elitist douche bags who knock your degree/doubt your abilities because you don't have a B.S. in CS/CE. If you work with these people, your work should speak for itself. Don't try and get caught up into a pissing match with them. If it is an interview (as in someone you might work for), practice interviewing never hurts.
u/issmkc · 2 pointsr/pcmasterrace

>nice error message

Oh yeah, reminds me of those gems:

ERROR: Root device mounted successfully, but /sbin/init does not exist.
Bailing out, you are on your own now. Good luck.

Uhhuh. NMI received for unknown reason 20.
Dazed and confused, but trying to continue

Linux is good and informative when something screws up and you can usually debug and fix most issues using a combination of google/documentation/logic/common sense barring incompatible/broken hardware, but the general public doesn't want to study ULAH to be able to use their computer, thus the downvotes.

u/nomeansnook · 2 pointsr/linuxclass

If you're talking about this book, it's one of my favorites. It's the book I've recommended as a supplement to everyone I've taught thus far.

u/trabant00 · 2 pointsr/linux

Find an intern job at a small company that does linux based IT consulting, there are plenty of those. The pay will be shit, the hours will be long but what you'll really looking for is a good tutor. Read

u/poply · 2 pointsr/linux4noobs

I hear this is great UNIX and Linux System Administration Handbook

Although I can't personally vouch for it.

u/stanwell_ · 2 pointsr/linux

I would recommend this one

u/mrjester · 2 pointsr/explainlikeimfive

I have heard a lot of great reviews of Computer Networks by Tanenbaum in terms of its ability to teach networking. Alternatively, you could get the 4th edition book a lot cheaper with the caveat that it is older and may not be completely up to date.

u/SomeIrishGuy · 2 pointsr/IWantToLearn

Computer Networks by Tanenbaum is the de facto standard for an introductory textbook on networking. Hard to beat.

u/Learfz · 2 pointsr/compsci

Computer Networks A Top Down Approach, by Kurose and Ross. Amazon.

I did not understand the internet. I didn't think that was a big deal, but networking shows up a lot and understanding it has helped me out enormously. This book is excellent, too. It is extremely readable, almost colloquial. It covers the network stack in depth (application/transport/network/link/physical!) as well as other important topics like network security and networked algorithms and data structures. Stuff like distributed hash tables, routing algorithms, and even large scale data center design. Seriously, this book is amazing.

Plus, I was surprised at how many times I've been asked a networks question in interviews. That's not to be sneezed at.

u/rhdesmond · 2 pointsr/learnprogramming

What specifically? I'd suggest learning about networking in general. I.e. good place to start would be the OSI networking stack, learning about packets & how they organized, downloading and using wireshark to look at the packets going into and out of your machine.

This is the one I used, and it worked really well for me to get a good view of networking. If there's something you don't understand, I think you could google and find relevant tutorials/articles explaining the concepts there, though there's some obscure stuff that you don't need to fully understand (queuing theory) for a basic understanding.

u/pyramid_of_greatness · 2 pointsr/networking

Computer Networking: A Top-Down Approach by Kurose & Ross is pretty good.

u/SruthiInguva · 2 pointsr/cyber_security

Since you are a student of Computer Science, am presuming you are already familiar with programming. So, your next step is mastering Operating Systems - Start by learning UNIX which is a multi-tasking cum multi-user operating system aimed to provide high level of security. (Source to learn UNIX :
Next, Learn Networking concepts - Infact you should know Networking concepts in finer details because as a cybersecurity professional, you would either need to check vulnerabilities in a network or identify and exploit one. (Check this ebook for networking concepts).
In case you need more information, find here

u/astong · 2 pointsr/compsci

Everybody probably has his favorite book. The book I had to study for my Networking class was Computer Networking: A TopDown Approach by Kurose and Ross.

Great book and very pedagogical. I read the Tanenbaum's book and my preference goes to the one I linked.

u/GaloisField · 2 pointsr/linuxquestions

See how you feel about this one: UNIX and Linux System Administration Handbook (5th Edition)


Otherwise, you little cannot go wrong with O'Reilly's "In a Nutshell" books.

u/z-oid · 2 pointsr/linux4noobs

Not exactly what you want to hear, but the best way to learn the shell is by doing. Reading can give you a good base knowledge, but application is key.

This is by far the best way I've found to learn Linux quickly. Install Linux onto a extra computer, dual boot, or pick up a raspberry pi. Try things out, when you can't figure something out look it up. If you still can't find the answer head over to #linux on freenode. (Or Distro specific channels like #fedora #ubuntu etc.)

HOWEVER! I DO have a phenomenal book suggestion for you.

u/OdinTheHugger · 2 pointsr/sysadmin

Advice to noobies:

  • If you're the book learning type buy this book
    I use it myself all the time as a reference if nothing else.

  • If you're the experience learning type stand up a series of VMs, and test out whatever tools you expect to be working with.

  • Learn the bare basics of ansible, the command line tool, or even just ssh-agent, it'll help a lot when managing multiple servers/instances

    What I wish someone had told me:

  • Unless the environment has EXCELLENT documentation going in, don't blindly trust ANYTHING. Be prepared to audit your servers and be sure to note down any interesting running services, if you don't know what they are or how they work, that's your homework.

    explaination: I ran into a job where the manager believed things worked in a specific way, with specific servers handling specific things, but no substantial documentation... During my time there I personally found more than 60 VMs and 4-5 physical servers that no one but the previous sysadmin had known about.

    Turns out most of those servers and VMs were a combination of things vital to business processes, but a very small handful of them were very creative attempts at establishing a backdoor into company systems, or 'temporary workarounds' that had become production critical services without proper authentication.

  • Other than that, be prepared to google. Every environment is different, within the open source and Linux communities there are 100s of ways to solve any particular problem, each with tradeoffs and requirements, it may seem daunting but if you're smart enough to ask for advice before starting the job? You'll be just fine.

  • This is a simple script that displays all user's cron jobs, this will absolutely come in handy, run it against all servers under your purview to find out if there's any hidden magic at work.
u/warpigg · 2 pointsr/sysadmin

Best book IMO that will get you everything start and finish in Linux AND be a great future reference:

UNIX and Linux System Administration Handbook (get the latest edition - I think its 5th ed)

Also I like the Linux Foundation certs - same folks that employ Linus. They are very good (read: hard as RH certs) now and allow you to take Ubuntu or RH as distro to take the exam in . Plus cheaper and free retake. Linux Foundation

HOwever best practice is to work with it over and over practice building/installing web servers, databases , mail servers, docker etc etc. Learn vi, learn to search on command line, bash etc.

u/dmbuddy · 2 pointsr/linuxadmin

I really enjoyed both of these books when I was starting out. Even now they are super helpful.

If you don’t know Linux at all the 2nd book gives you a good overview of things.

u/omgwhatahhcrap · 2 pointsr/networking

I have a tear in my eye and an urge to hug the OP.

I remember a while back Network General, the product I learned sniffing on, came out with a product through acquisition called Apera and they put it on their distributed sniffer. We put 8 of those things in our network and they had live packet captures with filtering and application data with a rolling 2 hour window. I was like a kid in a candy store.

"Its the network it has to be the network, we checked everything else". Then 30 minutes later I can come back and say "why is this stored proc going into your SQL server from your application farm taking 6 minutes to run for a basic web app? Why is your network time 2ms while your server and backend time is 5.99999 minutes?!?!?! Kindly troubleshoot your shit before you blame mine."

Then net scout bought network general and ruined the product. I miss the ant.

****As a side note there is a great couple of chapters in "TCP/IP illustrated volume 1" detailing 3 way handshake, half open tcp, bounce charts, flight time, etc. Ive always considered the book a bible for any network engineer, especially one who wants to use Wireshark on a regular basis. You have to get the first edition(first edition, volume 1) though, they came out with a second edition that I hear isn't as good. Its the one with the white planet on the cover and a pink floyd dark side of the moon thing going on.

u/ahdguy · 2 pointsr/networking

If you are serious about getting into networking then you need to read the following to start with:

TCP/IP fundamentals

Ethernet definitive guide

Then install GNS and create/break stuff.

Then get a CCNA under your belt, will take about 2 months of study after work to pass the exam.

Having the CCNA under your belt should easily get you a foot in the door.

However to understand networking you will be spending your working life studying to stay current...

u/Cheeze_It · 2 pointsr/networking

Generally I go here if I want a good overview and operational view.


If I want to go for the long haul and depth....I start here (I used this list as it's nice and abbreviated of what does what in RFC land). Reading through those will give you a much better idea of how things were "supposed" to work. How they work with a vendor will always be up to interpretation, but the vendors are interpreting those RFCs.

There are quite a few books on Amazon that will teach it to you as well. I honestly would consider getting them too. This, this, this, this.

There's so many good books but those should give you that deep understanding.

u/nmethod · 2 pointsr/networking

As /u/dark15 said, Network Warrior is a great read. Also check out:
Internet Routing Architectures and TCP/IP Illustrated

u/lodc · 2 pointsr/HomeNetworking

Free online guide:

One of the best books, but a bit rough for a beginner:

Keep in mind that bringing your skill up to a professional level is something that most people spend years doing even when attending school or on the job training. Don't expect to spend a couple months reading and be ready to work in the industry.

u/saranagati · 2 pointsr/sysadmin

so everyone seems to be giving some good but general answers so here's a few specifics. They'll be most useful for learning unix but will also give you a good overview for any administration.

The Design of the UNIX Operating System
Very good book to understand how a kernel works and interacts with different functionality of an operating system.

TCP/IP Illustrated
Basically the bible of anything tcp/ip related. Volume 1 is the most important. Volume 2 and 3 are good as well but require knowing some calculus.

Really anything by W. Richard Stevens is great, though some of it is more on the programming side

Then there's the man pages.
Go into /bin/, /sbin, /usr/bin/ and /usr/sbin/ and just read the man page for every command.

If you want to learn how mail works, learn how (buy books or whatever you can find online) the protocols work not the applications. So learn how smtp, pop3, imap all work. Read what you can find, read RFCs for the protocols, etc. Then once you know how the protocols work you can read how an application like sendmail or qmail works. Books by oreilly are usually pretty good for this as well.

Set up linux systems, slackware is a great distro to learn linux from, and just setting up things like a lamp server, mail server, etc. Don't install applications from a repository, compile applications when you want to install them.

If you search my comments far enough back (maybe a month?) I posted something for someone asking a similar question and went into a lot more depth and a lot more chronological of what to do to become a unix sys admin.

edit: oh the two most important things about being a sysadmin.

  • It's not about how much you know, it's about how fast you can figure out what you need to know.
  • A good sysadmin has automated everything. Sysadmins are inherently lazy and hate to have to do anything twice.
u/porlov · 2 pointsr/linux4noobs

>On Ubuntu, all I did was start the ufw service.

I am not a fan of ufw, I suggest you to learn iptables.

iptables tutorial is the standard reading, but before this I suggest to read TCP/IP Illustrated

>How does the system perform after encryting the filesystem?

If you'd use LUKS with AES 256, it'll go smoothly, even on not very new hardware. If you are that concerned, you may choose to encrypt home directory and swap only, not the whole root filesystem.

u/strontium · 2 pointsr/netsec

I'm in the same boat as you. I'm currently trying to lay the foundation for an InfoSec career and I've been bookmarking some of the helpful posts I find. Here's what I have so far:

I just bought this book, I've seen it recommended several times as a great place to start learning TCP/IP.

Consider getting, or at least studying up on, the A+, Net+, Linux+, and Security+ CompTIA certs. They may help you get entry-level jobs and are a good way to learn the basics, but don't count on them to get you serious employment.

u/phrozen_one · 2 pointsr/AskNetsec


It's hard because it's important. Learn TCP\IP, it's a solid investment on your time.

Also, to get some street cred read this:

Read the man page for nmap, learn it, understand it, and then learn it some more.

Here's to your success (wo)man

u/heinekev · 2 pointsr/networking
u/kollif · 2 pointsr/networking

Best advice I can give the OP is to read TCP/IP Illustrated. It filled in a lot of gaps of knowledge not picked up in vendor certs.

u/youfrickinguy · 2 pointsr/hacking

Yes, yes there is.

TCP/IP Illustrated:

u/bh05gc · 2 pointsr/networking

I agree with other comments in that you need to give us more details on the project criteria. That said I'll shoot two things at you. Perhaps you can look at TCP, impact latency, packetloss, etc has on overall throughput. Then you can do a study of WAN optimization technologies and recommend a particular approach for small, medium, large networks? An excellent book to get you started is (TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition))[]. The benefit here is you will get a deep understanding of the issues affecting network performance and things we can do to improve.

If you're on more of the computer science/programming spectrum, you can look at creating an automation framework for network configuration and changes. Every network change has the same basic steps:

  1. Backup the configurations of any affected devices.
  2. Run a series of checks against the state of the network (ping, traceroute, show commands) and compare it to known expected values.
  3. Execute the network change (in the case of Cisco, order matters).
  4. Re-run a series of checks against the state of the network and compare to outputs captured in step 2.
  5. Save all configuration.

    In shops that don't have network automation, it seems that the most common root cause of incidents is human error. Either the procedure is theoretically flawed or the change itself was implemented incorrectly. Network automation can help with the latter. The features and functions of your framework is up to you. The benefit here is you get familiar with programmatically interfacing with network equipment using ssh, api's or snmp.
u/alislack · 2 pointsr/sysadmin

Plenty of advice over at /r/ccna I recommend Chris Bryants bootcamp CCNA course at Udemy he's concise and doesn't use packet tracer just the console in full screen to focus on the practical use of IOS. Chris's ICND2 section has more detail on WAN protocols than the Lammle Study Guide book and reddits /r/ccna has tips on what to read or refer to. No need to buy equipment there are router labs online you can ssh into just google.

Network faults tend to be associated with buggy applications or misconfigured devices causing network congestion, delays and packet loss. A highly recommended book to understanding the tcp/ip protocols is TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition by Kevin Fall and Richard Stevens)
A freebie from Bonaventure is this pdf

For tcp/ip packet analysis learn from Hansang Bae he has advice from 20 years experience on how to correctly analyse and obtain clues from tcp handshakes,sequence numbers, acks and teardowns. For packet analysis he says if you don't take the time to learn the exchange of seq and ack you might as well be somewhere else flipping burgers.

u/moch__ · 2 pointsr/networking
u/Hobo_Code · 2 pointsr/networking

If you really want in-depth knowledge, I would go with TCP/IP Illustrated. It has recently been updated and pretty much covers the gamut of all things networking.

If that looks a little too daunting, you can go with a CCENT book (Lammle and Odom tend to be the best writers, IMO). It does cover Cisco products, but the concepts in it are primarily vendor neutral. Hope that helps.

u/mian2zi3 · 2 pointsr/learnprogramming

I recommend Stevens' oeuvre starting with TCP/IP Illustrated (for the concepts) and UNIX Network Programming (for the C-level programming details):

Also, Beej's Guide to Network Programming (background and C-level programming details):

If you're doing web work, you might be interested in High Performance Browser Networking:

TCP/IP Illustrated will cover some of it, but you might want to read the networking chapter(s) of a sysadmin book. I don't have a ready reference.

These don't cover load-balancing or CDN, although the other textbooks mentioned in the thread probably don't either, at least not in detail.

u/GigantorSmash · 2 pointsr/CommercialAV

Not all of these are in our core training/ required knowledge, or related to our day to day functions as a university A/V department, but They are all available to my team for knowledge building and professional development. Additionally , and our job ladder includes Infocomm certifications, so the library is a little biased towards infocomm resources at the moment.
Books I use are

u/ekim4ds · 2 pointsr/networking

I as well went to school for Network Engineering and am working Entry-Level networking now. These are the books that have helped me so far.

Network Warrior


CCNA Library

TCP/IP Illustrated

I've read a few others, but these were my favorite ones. The Network+ book helped me obtain my Network+ Cert, then the CCNA Library helped me obtain my CCENT and CCNA. Great Books!

I would only recommend that Netowork+ book though if you plan on getting into Cisco stuff because the author is a Cisco guy and tends to start rambling about Cisco technologies that you will learn for the CCNA.

u/williamhasting1066 · 2 pointsr/sysadmin

I'm going to recommend a book:

Read the first edition of this 20 years ago. Great book about doing the "job" of being a sysadmin. Nothing OS specific.

Also, learn a scripting language. You're not a real IT guy unless you know one. Python is my preference, but PowerShell is fine if you primarily work in a Windows environment.

u/inictu_oculi · 2 pointsr/sysadmin

If you are looking for stuff to do in your environment, this book will give you some pretty good pointers:

The Practice of System and Network Administration

u/dropped_packet · 2 pointsr/sysadmin

The Visible Ops Handbook: Implementing ITIL in 4 Practical and Auditable Steps

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)

For us a Change is any change to the environment that isn't controlled by a separate process, like new employees, termination, etc.

If your not sure, it's a CM.

u/dmen91 · 2 pointsr/sysadmin

So I have the MCSE Mobility and I do not know if that alone will last.

Would rather say it depends on your skill. You can also become a sysadmin without a certificate as the others have already mentioned. The MCSE Mobility does not really go deeper into server landscapes like the MCSA Server 2016 does.

The topics to be covered is:



And SCCM with intune I think.

I chose Deployment because I already had experience.

This contains:

LTIDeployment (mdt)

ZT Deployment (sccm)


USTMIf you really want to go deeper I can recommend the following book

is also recommended here in the wiki. you get your sysdamin place :)

u/jpochedl · 2 pointsr/sysadmin

Or for cheap starters, this book with an overly long title:

The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)

u/aerborne · 2 pointsr/homelab

Did you get that old edition or the latest 3rd edition with it's cloud admin partner?

u/skadogg · 2 pointsr/sysadmin

Check out "The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)" by Thomas Limoncelli.

I'm also pretty new to this job, and this book has been really helpful in better understanding all that we get to do.

u/terefere1234 · 2 pointsr/sysadmin

I am in a similar boat as OP and also found the book you recommended, so just wanted to add that there is a new edition coming very soon, the one you linked is from 2007.

u/Strid · 2 pointsr/sysadmin deals with a lot of issues, among them support/helpdesk/people stuff.

u/mrskitch · 2 pointsr/javascript

JavaScript is no longer considered a "toy language" and is become much more relevant and demanded due to server platforms that run it (node.js being the biggie).

You should really familiarize yourself with what's happening in the JS scene. To start, take a look at:

  • Bower
  • Grunt
  • Nodejs obviously

    If you're gearing towards UI:

  • Angular
  • Backbone
  • Ember

    Also, read:

  • Eloquent JavaScript
  • The Good Parts
  • Functional JavaScript

    I was never a Java developer, but was a PHP developer back in the day. Things like NPM and Node (for building, or writing back-ends) have made my life a hell of a lot easier and less "hackier". You can primarily concern yourself with just integration/work code instead of busy stuff, like copying crap over or adding another lib to your VCS system. Just add it as a dependency and you're off and going.

    That being said, JavaScript is really hard to get good at. There is no "standard" way of doing anything, and everything has it's benefits and drawbacks. You need to know which is better and why, and when to break the rules. It's quirks can be tool for powerful code, but you need to know why it is that way.

    If you think I'm joking, take a look at this rant.
u/lainproliant · 2 pointsr/Python

I had a great deal of luck with the book "Javascript: The Good Parts". It's a quick read and is aimed at people who are not new to programming.

O'Reilly Publishing:


u/dhcole · 2 pointsr/IAmA

There are lots of ebooks and free websites, but mostly it's just practice. Once I got to a moderate level, I found this book to be very helpful:

u/nawitus · 2 pointsr/Libertarian

Yes, PHP-like language would be worse. Most critique of JavaScript is stated without knowing the language much. I recommend reading this.

u/jesstelford · 2 pointsr/dogecoin

Javascript has it's bad parts. But, once you look past those and see The Good Parts...

u/rooktakesqueen · 2 pointsr/programming

Are you a beginner to programming, or have you been programming for a while in other languages and are just getting started with JS?

If you're a beginner to programming altogether, this is a good resource, but I'd also recommend some dead-tree books. I've heard good things about Javascript: The Good Parts, though I've never read it myself.

Edit: One thing to be careful of when you're just getting started, by the way: try not to focus too much on any single language and its features. You want a good solid base of fundamentals, you don't want to hyper-specialize from the start. Don't just learn Javascript, for example. Try Java and Clojure and C and Haskell too, and any other language you can get your hands on. They all have their own idioms and lend to certain styles of problem solving, it's good to be able to figure out which one is best for the task you're facing.

If you've done some coding before, and are branching out into JS as a new language, there's no better way than reading about it and then trying it out on your own. JSFiddle is a great resource for just playing around. You could try implementing solutions to Project Euler puzzles in JS. Or you could pick a pet project you want to work on that has some client-side behavior and implement it in HTML5/JS. Or server-side behavior and do it in node.js. Or you can find an open-source project using JS that you're interested in, and get involved there.

Edit: Also, Stack Overflow has dozens of JS-related questions answered every hour. Sometimes those answers come attached to a lot of useful information. Try browsing there, and if you have questions, ask them. It's a great resource.

u/drgath · 2 pointsr/webdev

If you want to stand out, learn how to program JavaScript without the use of jQuery. Learn about cross-browser DOM scripting, browser performance, security, and JS fundamentals (prototypes, closures, etc...). Some good books to get started are Pro JavaScript Techniques and JavaScript: The Good Parts

u/YuleTideCamel · 2 pointsr/learnprogramming

Honestly I don't think there is a need for this since there are a few excellent javascript books. But they are hide to find among the many many crappy books out there.

JavaScript: The Good Parts is pretty much the most important Javascript out there. It basically shows all the quirks of the language and gives tips on what to avoid and best practices.

JavaScript Patterns continues and goes into more depth and covers more advanced usage.

High Performance JavaScript goes into great depths on how you can make your js code more efficient and fast.

u/creegs · 2 pointsr/cscareerquestions

There's good advice here. Did you master JavaScript on the way to CoffeeScript? If not, pick up Crockford's Javascript: The Good Parts - actually, either way, read that book if you haven't already.

If you know JS well, you should do a couple of side-projects in Meteor. It's an interesting framework that embraces "Reactive Programming".

Here's a few other things:

  • Node.JS
  • MongoDB
  • Redis
  • Memcache
  • Ruby (if you like CoffeeScript, this shouldn't be a massive leap)
  • jQuery/Backbone or Angular/SASS/Susy/Yeoman (if you want to do front-end stuff)

    Good luck!
u/ihaxr · 2 pointsr/PowerShell

It took me a while to get good at PowerShell and I had a pretty extensive programming background prior to trying to learn it.

The Exchange cmdlets are also less than ideal when trying to learn... but it was also my first experience with PowerShell. They're usually pretty slow to run and aren't great from a syntax standpoint. The AD and file system cmdlets (Get-ChildItem / Get-Item) are more consistent, faster, and generally easier to work with.

Trial and error, as well as looking at code examples on /r/PowerShell is the way I ended up learning. You'll notice on /r/PowerShell people usually post very different ways of solving a problem and one isn't necessarily better than the other, but just use different features or logic.

PowerShell in a month of lunches is usually the recommended book / guide.

u/hueylewisNthenews · 2 pointsr/sysadmin
u/reginaldaugustus · 2 pointsr/PowerShell

My advice would be to get this book.

u/MrSysamin · 2 pointsr/sysadmin

check out this book

Learn Windows PowerShell 3 in a Month of Lunches

u/kusumuk · 2 pointsr/sysadmin

hmmm...I grew out of that position this past year. It was similar in scope to yours. In your position I highly recommend going desktop infrastructure. Studying for it will allow you to at the very least have a clear understanding of the latest technology available to you for architecting desktop solutions. However, it's not enough to know just that. Here's some advice:

  • If you don't have a whiteboard by your desk, get one.

  • learn scrum or some kind of other project management methodology and at first apply it to yourself, then apply it to everyone else within your domain. Hold your bosses to the same standards.

  • learn ITIL and start using the terminology. You don't have to adhere to all the standards, either. Furthermore, it helps you understand your role in IT as part of the enterprise as a whole, and it helps you understand how to architect your IT shop using best practices.

  • If you don't have a testing environment, make sure your department has one. Microsoft MSDN subscriptions allow for as rich a testing environment as you need for as little as 700 bucks a year. Most subscriptions also come with free courses as well. Furthermore, you can buy an r900 hexacore quad socket server with 128gb of ram for under a grand. Plenty of hardware for a competent testing environment.

  • Learn powershell. Don Jones has written books and made training videos showing you how to learn powershell. It's a powerful tool. Learn the .net classes that it can use. If you look up the MSDN writeups for the C# versions of the classes, they are pretty darn close to the powershell version of it.

  • Everything you learn in your studies, test it out. Learn it. Nurture your test environment. Get intimate with the checkpoint feature in virtualization. Get cozy with it.

  • As soon as you possibly can, but only after you've gotten the above fundamentals down, learn system center. It's complex, but wonderful. It'll put you on a whole other level. That will guarantee you a job.
u/admlshake · 2 pointsr/sysadmin

Powershell and HyperV were pretty much the main focus when I took it. This book is usually recommended for learning powershell. It's something you should really learn anyway, as thats the way that MS is moving with most of their server stuff.

u/Swarfega · 2 pointsr/PowerShell

There's a menu to the right of this subreddit with various links and book recommendations. You'll need to be on desktop version of the reddit website to see these though.

Personally I really like the Getting started with PowerShell 3.0 Jump Start.

Most will recommend the Learn Windows PowerShell in a Month of Lunches book.

u/TunedDownGuitar · 2 pointsr/sysadmin

Glad to hear! If you want to learn more PowerShell, grab this book. It's becoming a standard read for new hires at my office.

u/ambrace911 · 2 pointsr/PowerShell

If you are looking for an actual book, check out "Learn Windows PowerShell in a Month of Lunches"

That's come up more times in various IT forums. The link I posted had the video version by the same author. I am going to get started on this myself. I know enough to get by, but think it will be good to go through the entire thing.

u/lazytiger21 · 2 pointsr/sysadmin

I would suggest that you look at this book: Learn Windows Powershell in a month of lunches

It really helped me when I was starting out. As for what you are trying to do, I prefer the output using Quest AD tools for Powershell. They have a lot of really nice AD cmdlets. This would do it for you:

Get-QADGroup | export-csv C:\location\filename.csv

edit for typo

u/cluberti · 2 pointsr/sysadmin

Also, it would be wise to grab the "Learn Windows PowerShell 3 in a month of lunches" at some point in the near future if you're going to go down the PowerShell path. Doing so is of course recommended, as most everything Microsoft has been releasing over the last few years has had management based on PowerShell to be as close to, or at parity with, the UI management tools.

u/CaffinatedSquirrel · 2 pointsr/sysadmin

These two are my favorite.. decently priced and great knowledge. Written by same author Don Jones.

u/jed_PK · 2 pointsr/PowerShell

The Powershell class i'm taking right now uses this book:
It does a good job explaining the how things work.

u/iDontDoMeth · 2 pointsr/learnprogramming

Jon Duckett, who wrote the HTML & CSS book you bought (which is the best in my opinion) also just released his JavaScript book, which I am excited to read. Once you get a grasp on it, I would read JavaScript The Good Parts, by Douglas Crockford, who works for ECMA and helped write the language.

u/whobutsb · 2 pointsr/javascript

Get your hands on Douglas Crockford's book "Javascript the Good Parts" (
That will help you get started with the language.

Here is a talk he did at Google:

If your looking for some neat boundary pushing javascript check out the site:

u/Gropamming · 2 pointsr/learnprogramming

Sorry for getting back to this so late, it's been a long week.

  1. You will need a good understanding of HTML/CSS, mostly how to manipulate and traverse the DOM tree. Luckily, this is very simple and straightforward once you figure out how the pieces fit together. On top of that, Javascript does a great job of hiding the need to actually write HTML or CSS markup, though you should still understand how it works. The better you understand the pieces of the puzzle, the more interesting and creative graphics and visualizations you can create!

  2. The graphics are very easy to show off, seeing as they live on the web :) There are a ton of ways to host graphics, either on your own website, or on one of the many free online platforms like Github and CodePen.

  3. As far as preserving interaction outside of the web, I do not have any knowledge of how to do that with Javascript (not to say that it doesn't exist).

  4. As far as resources, I highly recommend reading Javascript: The Good Parts to understand how the language is put together, why it was put together that way, and how to take advantage of its unique style. It is a pretty short read. As far as learning visualizations, I learned most of my fundamentals from taking courses on Lynda, and then used good old Stack Overflow to figure out how to create the specific things I wanted to do in my visualizations. Other good sources for video tutorials are Pluralsight and sometimes Youtube.

  5. YES! That is the beautiful part of creating visualizations on the web, you can power them with any web technology. Most of my visualizations retrieve data from some web API and use that to build graphics or show an interactive dashboard, meaning they look different every time I load them up. This gives you a ton of freedom and flexibility to create graphics that are both pretty AND useful. It's very common to hook them up to databases to query and display data.

  6. As far as IDE's, I absolutely love Visual Studio Code if you have a Mac. It is VERY different from regular Visual Studio and has some great features like a built in terminal window, built in git support, a very lightweight directory structure, and a good community for 3rd party add-ons. It was built with Javascript in mind but I now use it for C++ and Python as well. If you run a windows, I use Sublime Text 2 which has many of the same features. If you want something with a bit more out of the box, Atom is a good IDE that lets you view your site as you build it and also deploys a small web server which is useful if you are not running your own.
u/oilshell · 2 pointsr/ProgrammingLanguages

Have you looked at the dialect defined in JavaScript: The Good Parts?

This book is old now, but if you want minimality, it's still good! He defines a subset of JavaScript, and I believe he writes a complete front end in this subset.

I guess you are not trying to be compatible with JS. But I would love to see someone implement a compatible subset. That is, all the "insane" behavior throws errors instead of silently continuing execution.

u/eibjj · 2 pointsr/web_design

It's hard to say how marketable your JavaScript is. Have you done anything with it? Could you solve simple algorithmic problems using JavaScript?

I would first have a look at the Underscore library. It has all kinds of goodies, and lots of other libraries either depend on it, or borrow from it. Here is a link to the annotated source code:

Require.js is another important one:

If you want to contrast various JavaScript MV* frameworks (like Backbone), have a look at TodoMVC:

The annotated source code for Backbone can be found here:

You need to read this: JavaScript: The Good Parts

In fact, anything by the author Douglas Crockford is worth reading/watching IMO: Crockford on JavaScript,

u/jjnguy · 2 pointsr/learnjavascript

I'm not a big learn by book person, but this book really helped me understand JavaScript.

u/8wardialer5 · 2 pointsr/node

Not focused on Node.js, but the following helped me a lot:

u/Dencho · 2 pointsr/javascript
u/w_t · 2 pointsr/gis

For JS in general, I like JavaScript the Good Parts

And you have tons of options depending on what web mapping framework you go might want to check out Leaflet. The API docs are pretty good, but here's a book:
Leaflet.js Essentials

I really like the Manning books,
There's books on a variety of topics, including PostGIS, MongoDB, Node, and D3 for visualization stuff.

u/vanderZwan · 2 pointsr/programming
u/ngly · 2 pointsr/web_design

JavaScript books I'd recommend:

JS Good Parts. Short read but interesting and important concepts covered.

Professional JavaScript for Web Developers. Covers every detail of JavaScript in web development. Huge book with about 900 pages of information. This covers all the technical details from syntax to core concepts.

I haven't read the one you linked, but have seen it around. It's probably good.

u/owale2 · 2 pointsr/brisbane

Get this book and read it to get a decent understanding of JavaScript:

It's probably the best out there... It's rather small for a book on a programming language, but you'll learn all the bits you need to know.

u/ryanplant-au · 2 pointsr/learnprogramming
u/ABrownApple · 2 pointsr/learnjavascript

Have not read but heard others recomend:

I personally like:
Because it covers a lot in very few pages.

u/zzgzzpop · 2 pointsr/javascript

If you're picking up JavaScript as a first language, it might be a bit difficult. It's used so often for the web that you'll most likely be required to learn at least some HTML and CSS as well. But, if you're not discouraged by this there's a lot of resources out there.

The one stop shop that'll give you everything is MDN ( Which has pretty much everything you'll need about JavaScript (

If you don't know anything about HTML or CSS you might want to at least go through the introductions before jumping over to JavaScript:

As for programs to use, to start, all you really need is a text editor (I recommend and a browser. If you're using Chrome press F12 and that should bring up the developer console and type:

console.log("It is " + Date());

Congrats you just wrote JavaScript.

Once you feel more comfortable you'll definitely want to pick up JavaScript: The Good Parts (

u/Tdawgy69 · 2 pointsr/learnprogramming

JavaScript the good parts by Douglas Crockford

u/noprompt · 2 pointsr/javascript

In addition to the others mentioned, these are also well worth your time:

Eloquent JavaScript

JavaScrip: The Good Parts (This one is essential)

As far as functional programming goes, google "functional programming in javascript." There are several articles on the subject and you'll learn some very useful and interesting techniques. Using a functional style in JavaScript can be extremely rewarding and not to mention a lot of fun!

u/yoqu · 2 pointsr/javascript

>At first I searched for a good guide for an average programmer, I found the [1] MDN JS Guide which is good, but I think not very good: At first I wasn't sure what is part of the language itself and what is only available at the HTML-DOM (they use a lot alert-dialogs - JS hasn't a Standard Library like Python or Java, has it?).

They use a lot of alert because it's the easiest possibility to show something for starters, you can however of course use console.log, console.warn and error. For the HTML DOM thing, well c'mon - at least try that examples in your console, will you? Just press [F12] or google for how to open the JS console for your browser.

>Is there a "JS Bible"? I know there is the tutorial for python ([2] click me) and as well there is the book/bible/reference for C (from dennis ritchie) and C++ (from Stroustrup). Does something like that exists for JS?

JavaScript: The Good Parts by Douglas Crockford

>Second Question: For my purposes, it is worth to use a Framework like jQuery? I'm using it right now, but I think it's not a big deal to code everything without using an 3rd-party framework.

I like to be able to swim, before I learn to drive a boat - and you? :)
Anyways, that depends - if you do this for clients, use jQuery, it's tested, on multiple browser, sure it has bugs, and plug ins should be reviewed by you before being used. jQuery helps to code less though, and has plenty of beginner questions already answered - just use it.

> Last Question: Atm I'm using Django as webframework and i'm very happy with it. But it looks like Node.js got lots of attention in the last couple of month, is mature enough to use it for real world problems?

It's "mature" enough yeah, but use what you need - not what is all the rage right now.

u/m4tchb0x · 2 pointsr/javascript
u/SoftwareEngineur · 2 pointsr/javascript

You're probably going to get a myriad of reactions to this question, but usually the consensus is usually JavaScript: The Good Parts

u/Neurotrace · 2 pointsr/readablecode

Regardless of if the code is contrived, it's still a possibility. I wasn't saying that I couldn't figure out if it was an if statement or an assignment. I was saying that I can more quickly parse one over the other if you end all of your statements with a semicolon.

I said I don't agree with much of his stuff but Crockford has written entire books on JavaScript so disagreeing with much of it still leaves a whole lot to be taken in to account. As I'm sure you've heard from others, I would highly suggest reading The Good Parts to see what he's all about. Perhaps saying "much" was a bit strong. Really I only disagree with his idea of placing all of your variables at the top of a given scope.

How can you say that code statements don't flow one after the other like sentences? The very notion of programming is that steps are executed "programatically" i.e. one after the other (we could argue about asynchronous code but the reality is that async code just adds a level of variability in the line of execution).

I find semicolon-free code less readable because, again, the moment I see a semicolon my brain automatically says "that's the end of the statement." For example: I might write some jQuery like this

$('#really-cool-thing').css('color', '#FFF')
.css('background-color', '#000')
.attr('value', 'Awesome');

Because I always end with a semicolon I automatically know that this is a chain and I don't even have to look at the beginning of the line to check if we're acting on a new object. Without semicolons, I have to scan back to the beginning of the line, check to make sure there's only a period, then continue to read. It adds more time and forces me to load just the tiniest bit more complexity into my head. Why should I "allocate" some of my mental memory to checking for where semicolons are going to be inserted when I can just insert them myself and never even think about it?

Most C based languages (i.e. most programming languages are semicolon terminated or, in the very least, semicolon separated. So if you program in any of these regularly then typing them in becomes second nature. I literally don't even notice when I type a semicolon anymore.

If you have a background in languages like Python then I can see the anti-semicolon sentiment because while Python allows semicolons, it isn't considered "pythonic." Likewise, I would make the argument that although semicolons can be left out in JavaScript, it isn't considered "JavaScriptic" to do so.

Do whatever suits you best but I don't understand the idea of having to keep track of more things, no matter how small, in your head rather than covering your ass. In the case of the bootstrap code that I linked you to, it can also cause issues in minification if you don't use a minifier that puts in your semicolons for you. Finally, it does make your application a little bit slower because the parser has to read in the line break, attempt to read in the next statement, determine if it can be considered part of the previous statement, and if not rewind back and shove a semicolon in. But if you place it in explicitly then the interpreter reads it, automatically understands the statement has ended, and goes about its business.

u/OrneryFellow · 2 pointsr/javascript

I started out with going through the book Javascript: The Good Parts. It's fairly straight to the point and goes over the parts of Javascript that differs from other classical OOP languages pretty well. As the book title suggests, it doesn't go over everything in Javascript, but only the practical parts. Great short read.

u/tangentsoft · 2 pointsr/programming

Although Lua does allow you to implement an OOP system yourself, that just leads to The Lisp Curse. Humans being humans, everyone will build their OOP system differently, so an expert in one augmented Lua dialect moving to another project with its own dialect loses their expertise.

A language with a mediocre OO system which is fixed in stone by the language definition is better than one flexible enough to let you define any OO system you like, from a training and community expertise standpoint.

You see echoes of this in Perl and JavaScript, too.

Like Lua, Perl also had an OO sidecar bolted onto it after it became popular. Because there is no one single way to do things, you get classic Perl OO users vs. the Moose people vs. those that go totally their own way, doing weird shit like blessing arrays.

In JavaScript, it's both better and worse than Lua or Perl. JavaScript can at least claim, with a straight face, that it is OO to the core. The problem is, that core has two different ways of manifesting: pure prototypal extensions of Object and such vs. the C++ inspired paintjob on top, all that business with new and constructors. The Scheme/Lisp-inspired flexibility of JavaScript lets you bring The Lisp Curse down on yourself again, because there's nothing telling you how you must implement your constructors or factory methods. In Douglas Crockford's lovely book on how to program in JavaScript with style and panache, there are three or four different ways to build up objects. Add to that the one your JS framework of choice probably gives you. Then of course you know best, so you ignore that and define a sixth style for your project. It becomes a tarpit.

I'm no hater of any of these languages. I happily use them all. It's important to realize, however, that there's something to be said for languages that nail things like OO down in the language definition.

u/nwilliams36 · 2 pointsr/learnprogramming

Javascript: The Good Parts

There are also quite a number of his presentations to conferences on Youtube. He is currently employed by Paypal and is writting a version of the web which is designed to be secure. He is calling it the Seif Project.

u/ducksauce · 2 pointsr/programming

That book is terrible. If you really want to learn javascript (versus completing mandatory coursework), check out this one:

The author has a great site, too:

u/jimbolla · 2 pointsr/pittsburgh

Logic/match shouldn't really be an issue. To me, the main parts of JS are interacting with the page/DOM and keeping your code clean and organized. A couple of resources to look into:

  • JavaScript: The Good Parts for general JS good practices.
  • jQuery to handle simplifying many JS tasks and abstracting away some browser incompatibilities.

    I don't know where I'd start with teaching someone to code but if you had code that needed reviewing, I could probably help with that.
u/Selesthiel · 2 pointsr/node

I can't possibly recommend Douglas Crockford's Javascript: The Good Parts enough. It's a quick read; I read through it in an afternoon. I've been doing professional node development for three years now, and I still reference The Good Parts.

Similar to what /u/AlexanderC89 said, there are high-level architectural and pattern differences between javascript and PHP. The key concepts, off the top of my head, that are most important to understand are:

  • Prototypal (js) vs Classical (php, c/c++) inheritance
  • Functions as first-class objects (and lambda functions)
  • Asynchronous/event-driven I/O model
  • Block scope (php, c) vs Function scope (and closures)
  • Variable hoisting
  • "==" vs. "===" and "falsy" values

    You can probably find good descriptions of all of these somewhere on the web, but I'd just as soon recommend reading The Good Parts. I'm not affiliated with Crockford or anything at all like that, quite simply just that The Good Parts is really that helpful.

    Honestly, I wouldn't sweat promises until you have a strong grasp of the callback model. They're important and very useful, no doubt. Its just that I've tried to introduce promises to a few colleagues whose understanding of the async callback model wasn't the strongest, and it really tripped them up. Once the callback model clicked for them, promises were a snap to pick up. YMMV.

    I can throw together some quick examples and descriptions for you, if you find that sort of thing helpful.

    (edit: formatting)
u/AlSweigart · 2 pointsr/learnpython



> From experience, one book is barely enough to get your feet wet

Ha! Definitely. I keep getting ideas for other books I should write.

I'd recommend the following as good general books to read. They're all good no matter what type of programming you do:

u/BrigadierWilhelm · 2 pointsr/compsci

Do you have an academic adviser in the department or a professor you are friendly with? They could be a great resource. If you get your hands on the textbook / slides / notes from the better taught classes through a professor or student, that could help quite a bit.

You can also try the websites of some of the big name CS departments, there may be some openly available projects, slides, or notes.

It may suck, but books can actually be a fantastic resource.

This book isn't bad for algorithms and such, and you can pick up c++ with it too.

The price is pretty nasty though, maybe you can get it at your library.

I've had employers rave about this one:

But I have to be honest, I haven't checked it out myself.

Here is an OOP and design pattern one:

Google is also your friend and there are many great wiki pages on software engineering related topics.

Your college is a great resource, use the TAs, professors, lab and library to their fullest. You can get a lot of material very quickly there.

Hope this helps, sorry I didn't have any direct links to sites for you.

u/gadorp · 2 pointsr/learnprogramming

I'm only now getting into "proper" planning before I start writing code and although I'm no veteran, my method(s) come straight from Code Complete.

u/composer314 · 2 pointsr/goodprogramming

That is a good book. I also like Code Complete

u/kubalaa · 2 pointsr/programming

I was probably thinking of Code Complete but I checked and it's actually formal code reviews which are better (where several people meet to go over the code in person); informal code reviews as usually practiced are slightly worse than unit tests. Still, according to What We Have Learned About Fighting Defects informal code reviews find more than half the bugs in the projects they considered.

u/capoeirista13 · 2 pointsr/learnprogramming

I often see the suggestion for this book next to a suggestion for Code Complete. Anyone have thoughts on Code Complete?

u/riscuit · 2 pointsr/GradSchool

> how to incorporate best software/coding practices

I think most of that is gained from experience writing software, especially in a team of developers, though some CS specific curriculums may cover them. I would be surprised if a bioinformatics program specifically covered software engineering.

There are books out there about good coding practices (I recommend Code Complete) that are worth reading. There's also design patterns like Model-view-controller you can apply to better organize your code.

u/ivraatiems · 2 pointsr/learnprogramming

I'm in a class that uses Code Complete right now, and it's very good. One of the best "textbooks" (it's not really a textbook) I've ever had for computer science. Lots of useful takeaways even if you don't have a chance to write the code offered in it.

u/kirang89 · 2 pointsr/AskComputerScience
u/ReverseEngineered · 2 pointsr/learnprogramming

Programming is a tool. I suggest finding another interest that you can apply it to. Robots, graphics, music, animation, sports, economics -- the possibilities are endless. Pick your favorite area, look at what kind of problems there are in that area that people use programs to solve, figure out how those sorts of programs work, and try to solve some of those problems yourself.

A few interesting examples:

  • Project Euler has a set of challenges relating to both math and computer science that will stretch you to learn more about both.
  • Python Challenge is basically a series of puzzles that challenge you to do new and interesting things with Python. Granted, several of the puzzles are quite similar and some of the libraries they reference are deprecated, but it's a place to start for programming challenges.
  • Programming Computer Vision With Python talks all about using programs to do things like find objects in pictures and track them even at different sizes and angles. Lots of great examples.
  • Programming Collective Intelligence talks about putting together data from different sources (primarily websites) and finding patterns. It deals with many machine learning concepts in ways that are practical and interesting. Things like modelling and predicting, optimizing, clustering (finding similarities), searching and ranking, and pattern recognition.
  • Arduino Robotics describes many robots you can build with relatively common parts that can be programmed using the inexpensive, C-based Arduino microcontroller platform. I've made several of these myself.
  • Digital Signal Processing is all about writing software that takes advantage of advanced math to manipulate signals in many ways. It's invaluable for audio, but you see it used with graphics, digital communications, and many other areas.
  • There is a subset of sports fans that really enjoy statistics and software can be very valuable for them. Things like comparing players across eras, predicting future performance, and helping to find high-value players. The general field is called Sabremetrics. I looked deep into it in relation to major league baseball. Two books that I found valuable are The Book: Playing the Percentages in Baseball and Baseball Between the Numbers.
  • Programmable games are cool too. Things like CROBOTS, CoreWar, RoboWar, and Robot Game. It's just as fun building the simulation environment as it is building the bots that compete within them.
  • Pick up any book on algorithms. Learn to apply the basics like binary search, insertion sort, radix sort, memoization and linear programming, Dijkstra's algorithm, and Newton's method for root finding.
  • Grab another book on data structures. Make sure you understand the differences between arrays, linked lists, hash tables, and trees. Learn about unique and useful things like binary trees, radix trees, heaps, and queues.
  • Learn how to write better code. I recommend books like Code Complete and The Pragmatic Programmer.

    Whatever you do, as you clearly pointed out, you have to be interested in it or you'll grow bored and give up. Find something that is interesting to you and pursue it as wide and deep as you can.
u/caindela · 2 pointsr/learnprogramming

Learning a language is mostly about doing. Often times you'll want to add some sort of functionality that you assume is fairly commonly implemented, so you'll google it or browse the documentation, then you'll read examples, and finally you'll use it in your own code. This is probably Skill #1 when it comes to hacking things up: googling.

That said, though, this is a very short-sighted approach to programming. You should try to look at coding more expansively, and see how languages differ from each other and also how they're largely the same. You may be surprised to find that modifiers like "protected" don't even exist in most languages, which begs the question: why are they there in the first place? You're playing with a very finicky language (C#), but most of those unusual constructs (whose usage isn't immediately apparent) are there to enforce the idea that your code is like a black box whose details can only be accessed on your terms (encapsulation. Static typing (e.g., specifying that a certain variable is of type 'int') serves a similar purpose of allowing for better and more immediate error detection. These are features that are meant to be of service to you in large projects with lots of entry points and lots of collaboration with other programmers.

To get at the real core of programming, though, these types of things don't need so much focus and are more of a distraction for you than anything. You should take a step back and read something that's more language agnostic like Code Complete or any number of books from this list given here on stack overflow.

u/serious_face · 2 pointsr/PHP

I think the best way to learn OOP and MVC (and programming in general) is to write a large program from scratch without thinking about any of that stuff. When you have it working, read a book like Code Complete, and you'll be introduced to all kinds of concepts that make your life much easier.


I forgot the most important part. If you get into OOP and really feel like you don't need it, or that it makes your life more difficult, simply don't use it. Many people like to get religious and dogmatic about certain ideas in programming, but there's absolutely no reason to not just go with what works for your situation.

u/SalemBeats · 2 pointsr/mturk

For what it's worth, the purpose of the post is to flesh out ideas and see whether there's an unmet need for a userscript that I might be able to work on in my spare time.

I also wanted to get some practice with Code Complete's suggestion of starting a project with a simple, pure, documented "problem statement" which is entirely devoid of any potential implementations (whether implied or explicit).

But letting people know the purpose, and framing it this way, could distort the answers people are willing to give. I might be able to do something with a script that others might deem impossible, and I don't want their notion of what's possible and what isn't to cloud the answers I get.

u/cajun_super_coder · 2 pointsr/programming

If you're looking for reading material, you're at the right stage of coding to read Code Complete. It'll change the way you write code. It'll make your code more manageable when you start coding with a team. It'll teach you good coding practices. I highly recommend it.

u/ChrisFingaz · 2 pointsr/learnprogramming

Starting this off as saying that I work primarily in iOS and mac environments. I think PCs are great and apple is overpriced but I really enjoy it and I love Swift so whatever.

If you're building applications in Windows most people seem to start with Visual Studio. There's a ton of resources, frameworks, libraries, and a large community for it. At the very least it's probably a good place to start. For C++ development maybe start here:

Now for your broader question of application development, I would start with the Gang Of Four for code design. These aren't easy concepts to get right off the bat, it's putting in some reps before it becomes natural. You'll never use just one either, most projects become a mesh of different design concepts and there's way more than 4. I recommend coming up with a simple project to build on your own and then attempting to architect that from a high level before coding. Then actually building it. It's really the only way to learn. For C++ reading maybe check this out (not 100% on this, I don't do much with C++, but seems recommended as an update for the original Gang of Four):

Another book:

it's from this list:

This all said, don't get bogged down in books. Read enough to feel comfortable starting something then start it.

u/CodeThree · 2 pointsr/HowToHack

OWASP Testing Guide

Also check out the Web App Hackers Handbook. This is an extremely handy book to reference to during tests. It would be a good starting point for you to check out.

u/PM_ME_YOUR_0-DAYS · 2 pointsr/AskNetsec

> Ps; anyone know of a good recommendation on how to start on web apps on the labs. Looking for a good book or resource.

The OSCP web app portion is good, but if you're like me you might benefit from some supplemental materials. Not necessarily specific to the course, but I found these resources really helpful for working on my web app skills

u/MikeCodesThings · 2 pointsr/AskNetsec

Some great resources are The Web Application Hackers Handbook. It's a long read but very in-depth. Link

If you want to practice as you read look into Damn Vulnerable Web App (DVWA) [Link] (, Pentester Lab challenges [Link] (, bWapp. Learn how to use tools like Burp, ZAP, sqlmap, and BEEF (among others).

I've also heard that Security Tube has a lot of great videos but I haven't checked it out personally yet.

As for fundamental knowledge, you'll need to understand how the web and web applications work. Things like HTTP/HTTPS, HTTP methods, forms, Javscript, sessions, cookies, databases. Also about application input, application frameworks, application firewalls. If you don't have any programming experience, you should start learning some fundamentals to understand application logic and structure. This can help you think of assumptions that developers made and how you might be able to bypass or work around those assumptions to do things that weren't intended or anticipated.

u/pixel1 · 2 pointsr/IWantToLearn

I don't know if you're specifically interested in learning about the security and security flaws of web apps specifically, but I would definitely recommend The Web Application Hacker's Handbook as it's an amazingly thorough guide on vulnerabilities.

Typically you start testing sites by using a security toolkit underneath your browser, such as Burp Suite. I don't do much of this stuff myself so hopefully this'll get you started.

Also /r/howtohack might be helpful, along with this thread to find some good hacking practice (DONT hack sites you don't have permission for)

Good luck!

u/ITestPenetration · 2 pointsr/security

Penetration Testing: A Hands-On Introduction to Hacking by Georgia Weidman is similar to the OSCP syllabus and a good introduction.

The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws 2E is the web application hacking bible.

Don't take any shortcuts, if you don't understand any topics read around them and make sure you do - that is usually a good start.

u/science830 · 2 pointsr/learnprogramming

When i was in the process of applying for Matasano Security, they had me read this book and said it covered web security (fit application security is your thing):

u/kira156 · 2 pointsr/AskNetsec

The web application hacker's handbook is an excellent book for web applications pentesting.

u/TailSpinBowler · 2 pointsr/netsecstudents

What kind of coding, and what are you interested in regarding security exactly? I would brush up on some python personally.

If you are inclined to read, I think the following are essential.

u/ladywanking · 2 pointsr/cscareerquestions

Just do your degree and start exploring ethical hacking, get involved with community.

Personally, I think great ethical hacker needs great understanding of networking, assembly, and OS, all of which you can learn in UofT.
These 3 topics are critical, you actually need to understand how to find vulnerabilities to be great in cybersec.

Also, start attending

This book has been recommended to me as a high level introduction:

Also, install cali linux and get some introductory level book on it.

Source: worked for a cyber sec in one of the Big4, worked with ethical hackers, and helped them with security scanning.

u/mhurron · 2 pointsr/AskNetsec

I've had this bookmarked forever (Probably linked to from here)

I have no comments on the quality of the information, it's been on the master to-do list for damn near ever.

If you want to spend some money there is also

(again, it's been mentioned here, and again, can't say anything about it personally, master to-do list)

u/-eddy · 2 pointsr/sysadmin

If you like computer history - Hackers

u/indyK1ng · 2 pointsr/pcmasterrace

I understand that. There's a definite stigma around the word "hacker" which I try to avoid. When I talk about going to Defcon I call it an "Infosec conference" instead. Given most of the content, that is the focus of the conference so it's pretty close to the truth and gives people a good idea of what is discussed.

That having been said, I definitely wouldn't let a 14 year old go unattended. You may be able to begin an information campaign with your parents to convince them to take you.

First, you'll have to remove the stigma around the word. Hackers: Heroes of the Computer Revolution predates the modern usage of the word "hacker" and is what my dad had me read when I took AP Computer Science in high school. Getting your parents to read this book could be a double edged sword though - a lot of the actions of the people discussed in the book were outright illegal.

Another, possibly more workable option may be to get into the Maker scene. A lot of people there may use the word "hacker" and "hack" because those words also refer to someone who gets a system to operate past its perceived limits or a way of doing so. That may get your parents to think more broadly about the word.

I honestly don't know how well either of those recommendations will work because I never had to deal with this. Both of my parents are tech savvy and early adopters.

u/rotll · 2 pointsr/gadgets

A little history goes a long way - Hackers by Steven Levy, 1984

u/the_blitzkrieg_bop · 2 pointsr/cscareerquestions

The "hardcore programmer" trope goes back practically to the origins of computing. Take a look at Hackers, a non-fiction book published in 1984 about early "hackers" at MIT in the late 1950s and early 1960s and you will see the same tropes about "hardcore hackers" as you see today (note: the book is not about hackers as in people who break into computers, it's the other kind).

If anything, I would argue that the field has become less intense. The "fun" work environments and relaxed hours are, to my knowledge, largely a product of the last 20 years and largely due to the influence of companies like Google and Facebook. Working at IBM in the 1960s almost certainly didn't look much like we'd imagine a tech company today. In addition, I think the field has become dramatically more accessible, making it possible for people who aren't "hardcore" to enter. How many of the people on this sub would have stayed with programming if our only option was to learn assembly instructions out of manuals, and only when we were able to reserve time on the local mainframe. And even if you did that, it's not like you were doing frontend development; half the fields of CS today didn't exist further back. AI/ML was considered a dead field 20 years ago. Frontend development didn't exist in the way we think of it today until the Web came along.

Lastly, I'd argue that any field that has high career advancement prospects is going to attract some subset of Type A personalities no matter what, which it sounds like is what you're describing Lucy as.

u/KevMul · 2 pointsr/learnprogramming

TV shows:

u/oliverlikes · 2 pointsr/Bitcoin

more technical book

more general book for everyone

also AA on J. Rogan podcast, very casual conversation for public + many more of course, I'm just AA fanboy

u/gELSK · 2 pointsr/TheRedPill

// , If you're in the mood for a more practical, very recently tested "RedPill" perspective on finance, I recommend The Internet of Money, by Andreas Antonopoulos:

u/btc_is_gold · 2 pointsr/Bitcoin

I think Andreas Antonopoulos: Internet of Money.

I think that "Mastering Bitcoin" by Andreas Antonopoulos is too difficult for "regular people". But Andreas give it for free at So you can check it out and you'll see.

u/slepyhed · 2 pointsr/Bitcoin

You're not too late. Check out this podcast episode for reasons why:

As far as what Bitcoin is, I recommend reading three books: The Internet of Money (Volumes 1 and 2) and The Bitcoin Standard.

Alternatively, watch all the videos you can find from the authors of these books, Andreas Antonopoulos and Saifedean Ammous.

u/1blackhand · 2 pointsr/EnigmaProject

"Andreas is a best-selling author, speaker, educator, and one of the world’s foremost bitcoin and open blockchain experts. In 2014, he wrote the one of the foundational books of the blockchain space, Mastering Bitcoin. He is also the author of The Internet of Money as well as his most recent book, Mastering Ethereum. He is widely respected in the blockchain space for not only his knowledge and ceaseless curiosity about decentralized technologies, but also for his extreme generosity in teaching others."

u/Foureyedguy · 2 pointsr/india

That's ancient. Get into the Internet of money

u/TheGift1973 · 2 pointsr/security

Mastering Bitcoin by Andreas M. Antonopoulos.

It isn't meant for the average Bitcoin enthusiast, but is more aimed at the technically minded/coders/cryptographically minded user. Many security researchers may well (IMO) have to deal with blockchain related security in the future, so having a decent knowledge of how Bitcoin (the tech) and bitcoin (the currency) works can only be advantageous as this field develops. Even if you don't think that your current role in security won't have to deal with this field, I would still advise you read the book as it is a fascinating read. There is also another version called The Internet of Money that is aimed at those who may not be so technically minded, but still have a genuine interest.

u/Cecinestpasunnomme · 2 pointsr/Bitcoin

Watch this playlist or, if you prefer to read paper books, this one has the same content.

u/pjfrank · 2 pointsr/BitcoinBeginners

Read Andreas Antonopoulos -

I got the audiobook so I treat it like a podcast. Really interesting the way he describes other game changing technologies in history (automobiles, mobile phones, etc) and the adoption of each. Most had significant challenges like crypto does today.

u/mattblack_crypto · 2 pointsr/ethereum

I just purchased the following books:

u/darthsabbath · 2 pointsr/cscareerquestions

Okay so there are a couple of good places to start with malware. The first is Malware Analyst's Cookbook. It is a pretty decent beginner level resource.

From there, Practical Malware Analysis is excellent and goes a lot deeper.

For free resources I've heard good things about Dr. Fu's Malware Analysis Tutorials.

You will need to have a strong understanding of reverse engineering. I like Practical Reverse Engineering or Reverse Engineering for Beginners. The latter is free.

With RE comes assembly. I learned from the free book PC Assembly Language. The RE books should have some info on assembly as well.

You should also know the systems programming API and OS internals for whatever OS you're interested in. This is most likely Windows, so I recommend Windows System Programming and Windows Internals. You can find similar books for Linux and macOS too. Having a good understanding of C and C++ is helpful for this. Also get comfortable using your assembly level debugger on your OS of choice. WinDBG, x64dbg, and OllyDBG are all good on Windows. GDB is pretty much the default on Linux, and LLDB on macOS.

I also highly recommend some scripting language, whether it's Python, Ruby, Powershell or whatever for hacking up your own tools.

Lastly, there is a list on GitHub with a ton of helpful links.

I think that's enough for now.

As far as demand it's hard to say and probably depends a lot on where you're from. It's certainly not like the demand for webdevs but there's also not nearly as many people with the skillset. I'm not a malware analyst myself, I'm more focused on security research and embedded development.

I know those skills are especially high in demand around the Washington, DC area with defense contractors and government agencies. Especially if you can get a security clearance. Most other security firms I know of are always looking for good people with strong reversing and OS internals knowledge.

Let me know if you have any questions and I will try to answer.

u/indigochill · 2 pointsr/HowToHack

Analyzing malware takes some learning, but fortunately there are books on this exact topic. For instance:

Cybrary also has a course on it:

u/emtuls · 2 pointsr/ReverseEngineering

Sure thing! I don't do a whole lot of Malware RE, but where I started was with the book:

u/eagle2120 · 2 pointsr/ITCareerQuestions

There are a ton of different things you can do on the defensive side. The path here is a bit less defined because you can specialize in each of these areas with out ever really touching the other ones. But I think these are the most important skills as a defender, so I’ll break it up into three smaller chunks. For the most part, defender/Blue-team concepts draw from these skills, I’ve setup the courses in order, as some of these skills may feed into other areas.


u/specter800 · 2 pointsr/IAmA

Sec+ and a drive to grow and learn are pretty good. Network Security degrees are still in their infancy and I haven't interviewed anyone who has one that can differentiate themselves from people with certs. SANS certs like GCIH are nice but they're expensive as hell and probably not within the means of someone who can't leverage corporate education funding. Depending on what you want to do people can point you in the right direction. For example, if malware analysis/reverse-engineering are your thing, Practical Malware Analysis will give you a lot of knowledge that will help you. It's pretty overwhelming at first but just having touched on the concepts in the book will make you a more attractive hire.

u/PunkPen · 2 pointsr/CompTIA

Not a course, but a book. Practical Malware Analysis I have not read this book, yet, but it seems to be highly recommended in the field.

u/kimchi_station · 2 pointsr/netsecstudents

If you are looking for books, there are:

The Basics of Web Hacking by Mike Shema

Hacking Webapps by Mike Shema

and The Tangled Web by Michal Zalewski

Check around Udemy, edx, and all those other sites that offer free online courses. Also I know lots of schools, MIT included, put their full courses (lectures, assignments, syllabus, etc) online for anyone to access. Search around and work through the books. Find a good online community to go to if you ever have questions or need advice.

u/TacticalTurkeyBacon · 2 pointsr/security

Good news is that you've got the educational creds to have a solid foundation for a future career. Now it's time to build the background or at least skillset to prove that you're dedicated to the field. An internship is helpful but you're going to need a lot more than helpdesk. I'd focus on finding a small consulting firm or getting in with IT at a company but treading carefully to not take on a title that states 'help desk.'

Showing that you have raw talent is the most important. Demonstrating skills such as learning python or spinning up your own secure server in Softlayer, AWS, or another provider is a massive resume booster and it shows you mean business. I'm not saying that you should sink a bunch of cash, but figure out a small server that you can use, secure, and play around with it over a period of a few months. There's a wealth of information you can pull from just 'doing' without having direct work experience.

Help desk can be a trap, so avoid that and go the networking route or sys-admin path by learning Unix. Help desk seldom leads to better roles in that it's catered to keep you trapped in tier 1 - 2 IT hell. Take it from me as someone who learned quickly that it's a dead end if you want to progress your career.

Hope this comment helps. In an attempt to help you find some good resources I'll post a few below.

Start to Python

Secure AWS:

Helped me get my CCNA:
Read up on GNS3 LAB, it's not supported by Cisco so I wont officially endorse, however you can Google and learn about this on your own. - study before your test.

KB for general security. There's a lot out there but this is an easy start.

For learning application security, you'll need to know burp. I'd take a look at this link, and then see if you like what you're reading, do the right thing and go buy this from Amazon if you continue down this path.

If you learn BURP or Python, you should own this book:

u/DCoder1337 · 2 pointsr/webdev

After going through the OWASP materials already mentioned, read through Michal Zalewski's The Tangled Web.

u/Lhopital_rules · 2 pointsr/IWantToLearn

Only about half of the programming industry has a degree directly related to IT or programming. Most have college degrees in something, but in the end the most valuable thing to someone hiring in IT is skills. Once you have the skills, you just need to get noticed.

I would recommend you learn Linux administration and web development. (Or you could learn Windows too - I don't know Windows well so I can't comment on it. Linux and Mac OS X are somewhat more popular in the programming world, but if you're looking to get into IT, not programming, then Windows administration might be more common.)

A good book to learn Linux is "The Linux Command Line".

For learning web development, you could read "
Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5"

Codecademy would also really help you in here:

If you have any questions, feel free to PM me and I'll do my best to respond.

u/virtualmilkshake · 2 pointsr/ITCareerQuestions

"IT skills" is pretty broad. What is your IT degree- MIS, Cyber Security, Information Sciences, etc? The answer will really depend on what your degree is in and what your interests are. For example, I could tell you to study programming, but if your degree and interests align more with Cyber Security policy implementation, that might not be the best recommendation for you.

As somebody who has been on a few hiring committees, I'd say to work on your soft skills. In many cases, these are more important than technical capabilities. Specific soft skills I look for in new hires: organization, attention to detail, solid time management, communication, and self-sufficiency yet a team player. For us, we will take the candidate who doesn't know everything but has a good attitude and willingness to learn over the person who thinks they know everything and has a horrible attitude.

General technical skills you should toy around with: know your way around Active Directory in Windows, learn how to view event logs on a system (for Windows, hit your Start key and type in Computer Management), NIST Risk Management Framework, learn the parts of a computer and how to set them up and tear them apart. Learning Linux is also good- what I did to understand Linux better was purchase a Raspberry Pi and set it up to run Raspbian OS and RetroPie (to turn the Pi into a retro gaming machine). I also purchased The Linux Command Line and practice the commands from the book in the Raspbian terminal.

Also, before graduation, try to get some kind of internship, even if your major doesn't require one for graduation. It's a great opportunity for you to build hands-on experience and work in an IT environment doing real work. Oftentimes, you will learn something new in your internship that is not taught in school, and the experience might broaden your interests a bit (not to mention you may get a job offer or at least great references because of your internship!). If you need assistance in trying to figure out how to land a good internship, just let me know.

u/BRAF-V600E · 2 pointsr/bioinformatics

For Linux: The Linux Command Line: A Complete Introduction

For Python: Automate the Boring Stuff with Python: Practical Programming for Total Beginners

For R: The Book of R: A First Course in Programming and Statistics

These are all from No Starch Press, and I really like how they all function as complete introductions to their subjects. I've tried a number of programming books, but these have remained my go-to books for recommendations due to how well they build up basic principals for each concept or language. That said, I feel as though The Book of R is the weakest of the three, and maybe look into other recommendations for R if you get more replies.


Just realized that you asked for courses, not sources, my bad. Either way, I do encourage you to consider the above as alternatives to learning these concepts from online courses, as I've found them to be just as good if not better than some online courses I've seen.

u/gnullify · 2 pointsr/AskNetsec

I have 3 semesters left so my plan has been to seek an internship next summer closer to graduating. Do you think it's unwise to wait that long? My independent study could be better but I've become proficient with Linux using Arch as my daily driver and reading through The Linux Command Line. I'm also going through The Basics of Hacking and Pentesting which had me set up a "lab". Just finished the recon chapter. Also proficient in Python/Java/C++ ("proficient" might be a bold claim, rust considered).

u/plaid_avenger · 2 pointsr/sysadmin

I'm reading "The Linux Command Line" book by William E. Shotts, Jr. A good primer for when you want to get into Linux. It reads well and it doesn't dump a ton of information on you at once.


Huh. It's a "Best Seller" now, lol.

u/pres82 · 2 pointsr/AskNetsec

I may be a bit too harsh, I admit. I'm a jaded tech douche. But consider this....

>This is the worlds most advanced ethical hacking course with 18 of the most current security domains any ethical hacker will ever want to know when they are planning to beef up the information security posture of their organization.

>In short, you walk out the door with hacking skills that are highly in demand, as well as the internationally recognized Certified Ethical Hacker certification!

This is directly from their website. I feel like they make some pretty bold claims there. My instructor was, overall, a pretty solid guy. But my qualms were with the 3rd-party training facility, (my employer had made me do this as OSCP wasn't recognized by the client I was working with), as well as the material. I felt that EC misled people taking the course by what skills they would gain and that it also misleads others by what cert holders are capable of.

But I think we get off of topic - I would suggest that a better book for someone is this.

Maybe v9 is very different. I had several EC Certs as I was once subject to the DoD 8570. But I let them expire as I have several issues with EC Council. One of which being you need 120 CPEs annually. Taking another one of their certifications, gives you a full 120. But discovering a vulnerability is only 5 CPEs. (What?!)

u/konukoii · 2 pointsr/digitalnomad

Learn how to learn fast. Be curious.
I really like the No Starch Press books for when you are starting out. They have all sorts of books for hacking websites, android, cars, etc.
If you want a good simple intro to hacking (to get a feel for it) I would recommend: Penetration Testing: A Hands-On Introduction to Hacking

u/GimmeThaShekels · 2 pointsr/oscp

For your specific situation I would highly recommend purchasing Georgia Weidman's book and working through it with a new kali.
You will learn an inordinate amount simply from fixing the broken packages and commands. Aside from this the exercises are very similar to the lab material.


u/Cerkoryn · 2 pointsr/cscareerquestions

Your most important starting step is to make sure that you have the foundational knowledge, at least at a conceptual level. I'm a big fan of books, so I would recommend a few to you.

Pick ONE of these. Exam is not necessary, but recommended:
Mike Meyers CompTIA Network+ All-in-One Exam Guide
Todd Lammle's CCENT Study Guide - ICND1

Pick ONE of these. Pay attention to business terminology as well. Again, exam is not necessary, but recommended:
Mike Meyers CompTIA Security+ Certification - SY0-501
CompTIA Security+ All-in-One Exam Guide
Darril Gibson SSCP All-in-One Exam Guide

100% read this. It's the Bible of Python scripting. Second edition is brand spanking new too:
Automate the Boring Stuff with Python

This is a good all-around Penetration Testing book that teaches Linux too. You don't *have* to use Kali, Ubuntu is probably less intimidating to those new to Linux, but you will have to install your own software/packages. This is the only book on this list I haven't read, but I often see it recommended:
Penetration Testing: A Hands-on Introduction to Hacking

While you read these books, you should install some kind of Linux distro on a home computer and use it for practice. I would also recommend doing HackTheBox(first challenge is to hack the login page) and starting with the easy boxes. Do as much as you can on your own first, but if you get stuck, watch IppSec's YouTube walk-through for the box you are on. Might be a bit overwhelming until you get through most of the books on that list though.

You should also start looking towards either the eJPT/eCPPT, the OSCP, or GPEN at this point, as those are the best value certifications in this field and will hold a lot of weight at an interview. There's some stigma with certifications in IT/CS, but the ones I listed are all baseline knowledge and/or high value for those in this field. At the very least the knowledge will go far. But definitely avoid anything from EC-Council like the plague.

u/super_tight_xyz · 2 pointsr/linuxquestions

How Linux Works 2nd ed. is a great book for learning the overall concepts. It also goes into enough depth so that it’s a great read for those who already have a good bit of Linux experience but want insight into what’s going on underneath the hood.

u/PlumpFish · 2 pointsr/FindMeADistro

I can relate to your attitude and desire to learn Linux, I've felt the same.

I highly recommend this book:

I read about a chapter or two a day with some coffee. It's fun and interesting. I think it's right up your alley.

For me, there's two types of Linux learning. Things I learn for fun, and things I learn because I have to or my stuff doesn't work. I started with a lot more things I learn for fun, but now most things I learn because I have to.

I do web development on a Manjaro machine using KDE. I love the distro, but I didn't try any others. I don't need to. It's fine. I use Debian on a lot of the webservers, that's fine too.

My feeling is, all these distros you're looking at have much more in common than not. If you set up a Desktop Environment, a popular one like GNOME or KDE on ANY distro, it's gonna be pretty similar. If you just want to use the shell on any distro, well, you can install whatever shell you want, use of that shell on any distro will be pretty similar.

IMO, you should focus MUCH more on deciding what DE/WM and shell you'll be using. This is going to play a much bigger role in your daily use than what distro you use. I think you should look up youtube videos and online tutorials of different people using different shells, scripts, WMs, VIM, etc, and see what excites you.

You can install Arch, step by step, using the wiki, and it's not that hard. It feels scary and weird at first, but you're just cooking, you're following a recipe, and if you mess up a step, a bunch of people have messed that step up too, google it.

Don't think too much. Just jump in.

u/Herdo · 2 pointsr/linux

I just bought "How Linux Works" published by no starch press.

Excellent so far, and while I was familiar with all the topics in the book to begin with, I still learn something new every chapter. It's listed as an "Intermediate" level book, but there is a wide range of topics from absolute beginner to some more advanced stuff, all with easy to understand explanations. The topics build on themselves nicely, so you aren't just dropped into a chapter having no idea what the author is talking about.

Supposedly most of the no starch press books are great. /u/C0rn3j mentioned "The Linux Command Line" as well.

u/Lanfranc_di_Cambria · 2 pointsr/cscareerquestions

"How Linux Works." It gives a really solid explanation of what an operating system fundamentals.

We just kind of think of them as managing things in the background, but this book really goes into what that means.

It totally changed the way I view programs.

u/split71 · 2 pointsr/explainlikeimfive

If you're asking this question you already don't have and won't have the right mindset to make this happen. Perhaps read this book, I'm currently in the middle of it.

u/firstworldobserver · 2 pointsr/privacy

Read this book (preferably get it from a public library so that you don’t have an obvious purchase record for it.) It’s written by a former skiptracer and should give you enough of an idea of what it means to disappear along with actual instructions on what to do. It’s also the book that got me interested in the topic of privacy, so there’s that...

u/samtravis · 2 pointsr/raisedbynarcissists

There's a great book on this called "how to disappear". It's on amazon.

u/SecuritySquirrel · 2 pointsr/trueprivinv

No, this is not me but I know Frank Ahearn. Out of our "Industry", if you will, he is the most vocal about the process and has written several books over the years, including How to Disappear. It is a little old at this point but still a lot of great information along with some really great stories. The Manatee Story is one of my favorites. :-)

Not sure I will ever write a book myself, since I feel the information should be easily obtained by anyone who wants it for nothing. We will see.

u/LOLBaltSS · 2 pointsr/sysadmin

PowerShell isn't really that bad once you get the hang of it.

u/IndianAlien · 1 pointr/ABCDesis

A lot of CCNA folks I know are having a tougher time on the job market. The general direction of IT infrastructure is towards the Linux end of things, especially with cloud data. I used this book to understand Linux.

u/michaeln05 · 1 pointr/Ubuntu

Here's one of the best books that I've used. Immersing yourself in it and using it daily will go a very long way though.

u/Yalloow · 1 pointr/sysadmin
This is an excellent read if you are brand new to the command line.

u/zayn1000 · 1 pointr/linuxquestions

This book is freakin awesome, i've used it and it's an amazing start and teaches you all sorts of stuff. I don't know how much information you actually know about the command line but this has helped me a lot. This book I have heard was pretty good but I unfortunatly haven't made my way to reading it. besides those two and actually installing and forcing yourself to use it everday there isn't much else you can do.

u/sonnytron · 1 pointr/learnprogramming

When I first worked my first full time job, I couldn't understand for the life of me why anyone would use Terminal when SourceTree can get it all done, visually, with a modern GUI that's easy to understand.

Unfortunately, there was a time where SourceTree wasn't accessing my SSH tokens or something properly and I couldn't push. My senior told me, "Just use terminal" and I froze.

Terminal was terrifying. He drove and 3 minutes later we were back in business. He gave me this book:
The Linux Command Line: A Complete Introduction and told me to finish a chapter at least every week.
Later I learned about BashIt and themes and now I live in Terminal. You can do anything from Terminal. You can open up a Python interpreter, throw in some list values and decide where you're going to eat lunch and who's going to drive using a shuffle and random. You can scrape your entire developer directory for files that have the word Debug in them, even limited to file extensions like .swift or .py, using GREP.

You can quickly edit a file on command using Vim, you can cat your without having to switch tabs to your Github tab on your browser or even inside of the Finder folder.

There's so much you can do with Terminal.

u/thegamereli · 1 pointr/linux

I would recommend getting a few "Linux" for dummies books. They provide a really good base of knowledge.

This is one I've read before, highly recommend:

u/GreatDant0n · 1 pointr/webdev

> I really would love to hear if anyone has any thoughts on whether spending the time learning VIM is a good idea in this context.

When you ssh into a server and try to edit a small script, what will you do? Install a desktop environment to open up beloved VsCode or fire up trusty old Vim which is installed by default? Knowing basic Vim commands for text editing is a must have for any serious developer (you don't have to be expert, you just have to know enough to be comfortable with using it for small editing, for anything else use your main editor - as mentioned in the comments VsCode + Vim plugin is pretty awesome).

For learning bash I would recommend you The Linux Command Line

u/OrangeOctoberLibra · 1 pointr/linux4noobs

Read Books: I recommend this, this and this.

u/jbod-e · 1 pointr/linux

Load it onto an old computer and play with it.

Checkout this book: How Linux Works: What Every Superuser Should Know

Checkout this book: The Linux Command Line: A Complete Introduction

u/IT_dude_101010 · 1 pointr/sysadmin




[The Linux Command Line: A Complete Introduction]
Also William E. Shotts Jr.'s book is good too.

Hey, Scripting Guy! A Powershell genius, Ed Wilson. I will always be greatful of his wonderful Powershell examples.

edit: fixed links.

u/BallsDeepinLogic · 1 pointr/pcmasterrace

Fair point, but it's not the window manager that keeps me away from arch, I just don't want to have to constantly be using the command line with a touchscreen keyboard, and my experience with Arch is that it's very command-line dependent and I'm just going to keep installing stuff that'll bring it closer to mint than it would be arch.

Plus, in between my calc, physics, and engineering classes, I don't really have the time to be learning a brand new operating system. But I did buy this book and when I have a little time I'll sit down for a few days and give Arch a good try.

u/Darkwraith5426 · 1 pointr/linux4noobs
u/shinigamiyuk · 1 pointr/cscareerquestions

I would try CLI the hard way first. Pretty good intro to command line. Then I would read The Linux Command Line or study for Linux+.

If you want to get into sys admin, or a linux job never hurts to go Linux all the way. I would say Linux+, Network+, RHCSA, and CCNA can help you go a long way. If you like Linux getting RHCE will open more doors. You don't necessarily need to get all of these certs but it helps your knowledge and what people will quiz you on the phone. At one point I was doing about 2-3 phone interviews a week that would just ask about 20-30 random Network, Linux, Windows, and basic trouble shooting questions.

u/MerionTransplant · 1 pointr/programming

Any opinions on this book. I actually have it but have not had time for it

u/HyperKiwi · 1 pointr/linux4noobs

OP Linux Command Line book, is an excellent place to start.

u/Randy_Watson · 1 pointr/osx
u/salzgablah · 1 pointr/raspberry_pi

I was always pretty competent when it comes to windows, however I was a complete newb with Linux. So I read this book, The Linux Command Line and it answered the basics for me. It gave me enough knowledge to navigate with SSH and set up my SFTP server. Also helped understand what i was doing, instead of just reading mini tutorials here and there...Try it out.

u/piymis · 1 pointr/learnprogramming

The Linux Command Line Its available for free (pdf on that site or here directly).
Also see the amazon reviews of it.

u/token_negro · 1 pointr/CompTIA

Penetration Testing: A Hands-On Introduction to Hacking

I personally think it doesn't go into enough detail, which I suppose is to be expected for an introductory book that covers an absolutely massive subject. It doesn't help that there's not much info out there so I'm kinda flying blind.

I have a Safari Books subscription through my job so I'm trying to supplement it with CEH resources I find.

u/icarrysig · 1 pointr/hacking

OK. If you can get to civilization, you might find this useful:

u/Bad_Laika · 1 pointr/oscp
u/FuzzyPickles02 · 1 pointr/Pentesting

OP, get this book. It’s a great starting point. Hands on approach to setting up a home lab and using common pen test tools.
Penetration Testing: A Hands-On Introduction to Hacking

u/greengobblin911 · 1 pointr/linuxquestions

Many people may disagree with me, but as a Linux user on the younger side of the spectrum, I have to say there was one thing that really worked for me to finally switch for good- books.

There's tons of wikis and forums and of course Reddit to ask questions, but it is hard to get good answers. You may end up paying for books (unless you look on the internet for books) but it doesn't beat having a hard copy in front of you. It boils down to a time vs money trade off. The only wiki I would follow is one directly from the developers that act as documentation, not a community wiki. Also worth nothing certain wikis are more tied to linux and the kernel than others, meaning some are comparable/interchangable with the distro you may be using. Still, a novice would not easily put this together.

Forums are also useless unless you have the configuration mentioned in the post or that forum curates tutorials from a specific build they showcase and you as a user decided to build your system to their specifications. There's way too many variables trying to follow online guides, some of which may be out of date.

This i've realized is very true with things like Iommu grouping and PCI Passthrough for kernel based virtual machines. At that point you start modifying in your root directory, things like your kernel booting parameters and what drivers or hardware you're gonna bind or unbind from your system. While that does boil down to having the right hardware, you have to know what you're digging into your kernel for if you dont follow a guide with the same exact parts that are being passthrough or the cpus or chipsets are different.

Books are especially handy when you have a borked system, like you're in a bash prompt or an initramfs prompt or grub and need to get into a bootable part of the system. Linux takes practice. Sometimes its easier to page through a book than to search through forums.

Another thing about being an intermediate or expert Linux user is that you don't care much about distros or what other users or communities do. It wont matter as under the hood it's all the same, spare the desktop and the package managers. Once you're out of that mentality you just care about getting whatever you want done. I'm not one of those guys that's super gung-ho FOSS and open source. I just use what gets the job done. Also from a security perspective, yes Linux is in theory MORE secure but anything can be hardened or left vulnerable. It's more configuration tied than many uses and forums or threads lead it on to be.

My workload involves talking to servers and quite a bit of programming and scripting, in a variety of capacities. That's what led me to linux over the competitors, but I'm not so prudent to never ever want to use the competitor again or have a computer with it. With understanding Linux more, I use it more as a tool than to be part of the philosophy or community, though that enthusiasm pushes for new developments in the kernel.

I'm assuming you're a novice but comfortable enough in linux to get through certain things:

In any computer related thing, always TEST a deployment or feature first- From your linux system, use KVM or Virtualbox/vmware to spin up a few linux VMs, could even be a copy of your current image. This way any tweaks or things you want to test or try out is in an environment you can start over in.

The quickest way to "intermediate-expert" Linux IMO is learning system administration.

My go to book for this is "The Unix and Linux System Administration Handbook 5th edition"

This edition is updated recently to cover newer kernel features such as could environments and virtualization. This book also helps when learning BSD based stuff such as MacOS or FreeBSD.

Another good read for a "quick and dirty" understanding of Linux is "Linux Basics for Hackers" It does focus on a very niche distro and talks about tools that are not on all Linux systems BUT it does a good concise overview of intermediate things related to Linux (despite being called a beginners book).

There's also "How Linux works" but I cannot vouch for this book from personal use, I see it posted across various threads often. Never read this particular one myself.


If you want a more programming oriented approach, if you're confortable with the C language, then you can always look at these books:

The Linux Programming Interface

Unix Network Programming VOL 1.

Advanced Programming in the Unix Environment

These books would take you to understanding the kernel level processes and make your own and modify your own system.

As many have mentioned, you can go into these things with "Linux from scratch" but it's also feasible to do Linux from scratch by copy/pasting commands. Unless you tinker and fail at certain things (hence do it on a vm before doing it to the main system) you won't learn properly. I think the sysadmin approach is "safer" of the two options but to each their own.

u/pope4president · 1 pointr/AskComputerScience

If you'd like further reading on this topic, I enjoyed reading How Linux Works: What Every Superuser Should Know. I didn't really understand what a kernel is until I read that.

u/jjanel · 1 pointr/linux4noobs

TL;dr sorry. +1 chillysurfer: "How Linux Works" 2nd ed. (yes, ok for a HiIQ_n00b)

Please @JAU, let me know what you think of it (via Amazon 'Look Inside' or AllITeBooks etc)

u/MattTheFlash · 1 pointr/HowToHack

why are you showing me this?

You have a shell on a minimal installation of linux. congratulations. do you even know how to use the bash shell?

u/Piestrio · 1 pointr/linuxquestions

How Linux Works, 2nd Edition: What Every Superuser Should Know

u/hzer0 · 1 pointr/hacking

You learn linux by using it, and trial and error. No joke. Just dive in when it comes to Linux. Get a book like

Use it as a reference at first, or even start reading if you like. Then whenver you have the opportunity, take the hard road and try to accomplish your task using command line tools.

As far as networking, check out securitytube as someone mentioned, maybe go for network+ to get the basics.

You may want to read the more in-depth answer I gave a similar question here:

Good luck!

u/_a9o_ · 1 pointr/cscareerquestions

I like this book as a starting point.

How Linux Works, 2nd Edition: What Every Superuser Should Know

u/jkurthoconnor · 1 pointr/linuxadmin

Very much not a recipe book, but I think a good fit for deeper understanding: How Linux Works

u/medzernik · 1 pointr/linux4noobs
u/the_juggla · 1 pointr/AskReddit

This is a phenomenal book that I would suggest you read before leaving. If you're going to do it, at least do it right.

u/somewheretrumpets · 1 pointr/infp

The Presentation of Self in Everyday Life

How to Disappear: Erase Your Digital Footprint, Leave False Trails, And Vanish Without A Trace

u/clarketowson · 1 pointr/QuadrigaCX

In the highly connected world we live in it's almost impossible to disappear without a trace. There is an excellent book called How to Disappear by Frank Ahearn. From Amazon "How to Disappear is the authoritative and comprehensive guide for people who seek to protect their privacy as well as for anyone who’s ever entertained the fantasy of disappearing—whether actually dropping out of sight or by eliminating the traceable evidence of their existence.

Written by the world’s leading experts on finding people and helping people avoid being found, How to Disappear covers everything from tools for disappearing to discovering and eliminating the nearly invisible tracks and clues we tend to leave wherever we go. Learn the three keys to disappearing, all about your electronic footprints, the dangers and opportunities of social networking sites, and how to disappear from a stalker."


I have read the book a number of times and one of the worst ways to disappear is to fake your own death. The other thing is when a person suddenly disappears what happens is there is always someone in that persons circle of friends who becomes completely obsessed with the case. In Gerald Cottons case we have a situation where many highly intelligent people from around the world are on the case and becoming obsessed by it. If this is an exit scam - (which many people including myself believes it probably is)and if Cotton is still alive then it's only a matter of time before he is found and brought to justice.


Everything about the case is suspicious and it reeks of an exit scam. Apply the duck test: If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.

u/FckTheFed · 1 pointr/offmychest

Hey, if you want to disspaear, maybe life offshore or whatever, you may want to check out this book: Here

u/DeathbyToast · 1 pointr/IWantToLearn

Is this the right book? Wanna make sure before picking it up on Audible

Edit: Never mind, looks like its not on Audible. Full title is How to Disappear: Erase Your Digital Footprint, Leave Fake Trails, and Vanish Without a Trace I believe. Apparently it's more around physical security than digital security though.

u/ak5 · 1 pointr/China

I disagree. I strive to not care about politics as much as possible and I am doing great. I try to live in countries/get paid in countries where there are fewer taxes, I buy duty-free whenever possible, etc. Also, foreign policy doesn't affect people with multiple citizenships as much, so try to get dual citizenship if you don't want to care.

There are some great books on the topic: here, and here (affiliate links).

u/mskelling · 1 pointr/sysadmin

Thank you very much everyone for all your answers!
I really appreciate!

I begin with


Thank you

u/pbeagle1851 · 1 pointr/sysadmin

I found this book to be a quick introduction into Powershell. Its a great resource as well. Others have posted materials for using python in windows effectively, but what I have found is that the simplicity messing with windows using powershell will always trump other languages.

u/thesunisjustanadmin · 1 pointr/ITCareerQuestions

A lot has come from on the job experience, but it also comes from setting goals for myself.

In December I knew nothing about Windows PowerShell, so I started researching. I bought Learn Windows PowerShell 3 in a Month of Lunches. I used that to start making some automated AD reports.

My other goals for this year are Security+ by June 31st. Then read Learn Windows PowerShell Toolmaking in a Month of Lunches in July. And finally get Linux+ by December 31st.

This is my most aggressive year, mainly because I am starting to feel stagnant in my current job.

u/michaeltlombardi · 1 pointr/PowerShell

STLPSUG: May 19, 2016

Presentation: PowerShell Functions

Micah Battin, PowerShell Functions
A link to Micah's Demo notes/scripts will be put up ASAP