(Part 2) Reddit mentions: The best operating systems books

We found 1,339 Reddit comments discussing the best operating systems books. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 335 products and ranked them based on the amount of positive reactions they received. Here are the products ranked 21-40. You can also go back to the previous section.

21. Advanced Programming in the UNIX Environment, Second Edition (Addison-Wesley Professional Computing Series)

Advanced Programming in the UNIX Environment, Second Edition (Addison-Wesley Professional Computing Series)
Specs:
Height9.5 Inches
Length7.25 Inches
Number of items1
Weight3.4392112872 Pounds
Width2 Inches
▼ Read Reddit mentions

22. Linux Pocket Guide: Essential Commands

Oreilly Associates Inc
Linux Pocket Guide: Essential Commands
Specs:
Height7 Inches
Length4.5 Inches
Number of items1
Weight0.4629707502 pounds
Width0.75 Inches
▼ Read Reddit mentions

23. Programming in Objective-C 2.0 (2nd Edition)

Programming in Objective-C 2.0 (2nd Edition)
Specs:
Height9 Inches
Length7 Inches
Number of items1
Weight2.11202846996 Pounds
Width1.5 Inches
▼ Read Reddit mentions

25. Unix Power Tools, Third Edition

    Features:
  • No Starch Press
Unix Power Tools, Third Edition
Specs:
ColorWhite
Height9.19 Inches
Length7 Inches
Number of items1
Weight4.10500731844 pounds
Width2.6 Inches
▼ Read Reddit mentions

27. In the Beginning...was the Command Line

In the Beginning...was the Command Line
Specs:
ColorMulticolor
Height8 Inches
Length5.25 Inches
Number of items1
Release dateNovember 1999
Weight0.54895103238 Pounds
Width0.36 Inches
▼ Read Reddit mentions

28. Microsoft Visual C# Step by Step (Developer Reference)

Microsoft Pr
Microsoft Visual C# Step by Step (Developer Reference)
Specs:
Height9 inches
Length7.38 inches
Number of items1
Release dateOctober 2015
Weight2.87041865124 Pounds
Width1.83 inches
▼ Read Reddit mentions

29. Linux Administration Handbook (2nd Edition)

    Features:
  • It is an machette
  • It is two handed
  • Made of carbon steel
  • High quality is the best feature
Linux Administration Handbook (2nd Edition)
Specs:
Height9 Inches
Length6.5 Inches
Number of items1
Weight2.97183129176 Pounds
Width1.25 Inches
▼ Read Reddit mentions

30. Windows PowerShell in Action, Second Edition

Windows PowerShell in Action, Second Edition
Specs:
Height9.25 Inches
Length7.38 Inches
Number of items1
Weight3.0423792156 Pounds
Width2.02 Inches
▼ Read Reddit mentions

31. Python in a Nutshell, Second Edition (In a Nutshell)

Used Book in Good Condition
Python in a Nutshell, Second Edition (In a Nutshell)
Specs:
Height9 Inches
Length6 Inches
Number of items1
Release dateJuly 2006
Weight2.14068856402 Pounds
Width1.6 Inches
▼ Read Reddit mentions

32. The Design and Implementation of the FreeBSD Operating System

    Features:
  • No Starch Press
The Design and Implementation of the FreeBSD Operating System
Specs:
Height9.5 Inches
Length6.5 Inches
Number of items1
Weight2.6235009178 Pounds
Width1.25 Inches
▼ Read Reddit mentions

33. Mac OS X Internals: A Systems Approach

    Features:
  • Bubblegum
  • Strawberry, Apple, Original
  • Retro Sweets
  • Wrapped
Mac OS X Internals: A Systems Approach
Specs:
Height9.25 Inches
Length7 Inches
Number of items1
Weight5.180863157 Pounds
Width2.75 Inches
▼ Read Reddit mentions

34. Advanced Programming in the UNIX Environment (2nd Edition)

Advanced Programming in the UNIX Environment (2nd Edition)
Specs:
Height9.25 Inches
Length7.5 Inches
Number of items1
Weight3.89777279216 Pounds
Width2.5 Inches
▼ Read Reddit mentions

35. Design Patterns Explained: A New Perspective on Object Oriented Design, 2nd Edition (Software Patterns)

Design Patterns Explained: A New Perspective on Object Oriented Design, 2nd Edition (Software Patterns)
Specs:
Height9.2 Inches
Length7 Inches
Number of items1
Weight1.68874092692 Pounds
Width1.1 Inches
▼ Read Reddit mentions

37. Linux Command Line and Shell Scripting Bible, Second Edition

Linux Command Line and Shell Scripting Bible, Second Edition
Specs:
Height9.25195 Inches
Length7.350379 Inches
Number of items1
Weight2.7 Pounds
Width1.799209 Inches
▼ Read Reddit mentions

38. Producing Open Source Software: How To Run A Successful Free Software Project

    Features:
  • Used Book in Good Condition
Producing Open Source Software: How To Run A Successful Free Software Project
Specs:
Height9.19 Inches
Length7 Inches
Number of items1
Release dateOctober 2005
Weight1.07585583856 Pounds
Width0.74 Inches
▼ Read Reddit mentions

39. Operating System Concepts, Binder Ready Version

Operating System Concepts, Binder Ready Version
Specs:
Height9.99998 Inches
Length6.999986 Inches
Weight2.85 Pounds
Width1.401572 Inches
▼ Read Reddit mentions

40. How Linux Works: What Every Superuser Should Know

    Features:
  • Used Book in Good Condition
How Linux Works: What Every Superuser Should Know
Specs:
Height9.25 Inches
Length7 Inches
Number of items1
Release dateMay 2004
Weight1.33 Pounds
Width0.94 Inches
▼ Read Reddit mentions

🎓 Reddit experts on operating systems books

The comments and opinions expressed on this page are written exclusively by redditors. To provide you with the most relevant data, we sourced opinions from the most knowledgeable Reddit users based the total number of upvotes and downvotes received across comments on subreddits where operating systems books are discussed. For your reference and for the sake of transparency, here are the specialists whose opinions mattered the most in our ranking.
Total score: 214
Number of comments: 27
Relevant subreddits: 2
Total score: 46
Number of comments: 5
Relevant subreddits: 1
Total score: 44
Number of comments: 10
Relevant subreddits: 3
Total score: 28
Number of comments: 7
Relevant subreddits: 5
Total score: 26
Number of comments: 6
Relevant subreddits: 2
Total score: 25
Number of comments: 7
Relevant subreddits: 1
Total score: 22
Number of comments: 12
Relevant subreddits: 2
Total score: 21
Number of comments: 15
Relevant subreddits: 1
Total score: 12
Number of comments: 6
Relevant subreddits: 4
Total score: -6
Number of comments: 7
Relevant subreddits: 2

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Top Reddit comments about Operating Systems:

u/Mr_Bennigans · 2 pointsr/gamedev

> I think if I learn how to program with an aim to work as a software developer and make games on the side, is this viable after just turning 20?


There's nothing wrong with the age of 20. I started school at 20, graduated in four years, and found work as a software engineer right out school.


What you have to figure out is how to make the best of your time left in school: should you take a class or two on programming and graduate on time, or (more dramatically) change your field of study to computer science and spend a few more years in school? That's something only you can decide. If you want to finish your architecture program and graduate in a reasonable amount of time, I can assure you that your math and physics background will be enough to get you work as a software engineer, but only if you can actually program.


Part of working as a software engineer means being able to program in multiple languages. That's because it's not really about the language, it's about the logic. All languages follow certain patterns and while syntax or wording may change, they all share ways to implement the same logic.


It also means knowing what data structures to use for what scenarios. The phrase "There's no such thing as a free lunch" comes to mind. All data structures have advantages and weaknesses and no data structure is perfect for every occasion. Know the differences, know the performance impact, and be able to speak to them. This won't just help you write better code, it will help you land a job. Interviewers love to ask questions about data structures.


As a corollary to data structures, you also need to know your algorithms. You need to know the performance impact of different ways to search and sort, traverse graphs, and find the shortest path (particularly relevant for game programming).


You said you're learning Python and that's great. Python is a great way to learn how to program. It's dynamic, it's friendly, and it has a rich library. Learn Python inside and out, then pick another language and figure out how to do the same things. C++, Java, and C# are all pretty popular in the industry, pick one of those. Once you know how to program in a few languages, you focus less on minute implementation details specific to one language and more on high level abstraction shared across multiple languages. By that point, you'll no longer be speaking in code, you'll be speaking in plain English, and that's the goal.


I don't know many good free online resources for learning languages, I learned mostly out of textbooks and lecture slides (along with lots of practice). There are some links in the sidebar to some tutorials that are worth checking out. Beyond that, I can recommend some books you may want to read.


  • Algorithms in a Nutshell - one of the best quick references on algorithms you can read
  • C# 5.0 in a Nutshell - excellent language reference, aimed more at advanced programmers, though it's comprehensive in scope, covering everything from language syntax and structure of a program to more complex tasks like threading, multiprocessing, and networking
  • Learning XNA 4.0 - a great game programming book, teaches 2D and 3D game development using Microsoft's C# and XNA framework
  • Java in a Nutshell - another great language reference
  • Starting Out with Java - introductory programming text, has end-of-chapter problems for reinforcement, a little pricey so see if you can find a used older edition
  • Starting Out with C++ - another good introductory programming text from Tony Gaddis
  • Python in a Nutshell - I can't speak to this one as I haven't read it, but I have been extremely happy with O'Reilly's "... in a Nutshell" series so I suspect it's as good as the others
  • Learn Python the Hard Way - free online book about learning Python, begins with simple examples then teaches you how to break it so you know both sides of the story, wasn't as comprehensive as I'd hoped but it taught me the basics of Python
  • Programming Interviews Exposed - sort an all-in-one book covering lots of different topics and giving an insight into what to expect for that first interview

    EDIT: I added Programming Interviews Exposed because it's a good reference for data structures, algorithms, and interview questions
u/BroDudeGuy · 10 pointsr/iOSProgramming

You can dive right into Objective C, I was only vaguely familiar with C and I've published a few apps without any problems. However, if you're intent on learning C pick up 'The C Programming Language' (K&R), not only the best C programming book, but one of the best programming books ever written.

Objective C books, I recommend one of the two or both books,
'Programming in Objective C 3rd edition' or
'Objective C: The Big Nerd Ranch Guide'

Both of these books are excellent resources for learning and I keep them close by whenever I have a question.

In terms of learning iOS development. I recommend going into iTunes U and downloading the latest Stanford University iPhone development course. I believe Winter 10 is the newest, follow along those classes and the class website, treat it like a real class, do the homework and all the assignments. There is no text book for the class, but this other book by Big Nerd Ranch, 'iOS Programming: The Big Nerd Ranch Way' is totally awesome.

After these classes and books you should have a great foundation for iOS development. Once you feel comfortable with everything and have an app or two under your belt, download Madison Technical College's Advanced iPhone Development course videos from iTunes U and Apple's own WWDC Session Videos.

Each MTC video is about 3 hours, watch them in chunks. The professor, Brad Larson is one of the best iPhone developers out there and in my opinion is one the best contributors to the community, (see his posts on stack overflow).

Lastly, check out www.raywenderlich.com. My personal favorite iPhone development website. It's updated every Monday, Wednesday, Friday with great technical tutorials that are funny and educational.

Best of luck to you and welcome to iOS development :-D.

u/construkt · 4 pointsr/IWantToLearn

The best thing you can do is read (at least that is the way I learn the most, the fastest)! That being said, there are tons of free videos on youtube that go over networking and how it works. Figure out ways to apply your knowledge by setting up a network of your own and making it rad.

I think learning unix/linux is the way to go if you are into servers, but that is my bias. I am not a fan of Windows. In reality, you end up doing a lot of the same tasks when adminning, regardless of platform. Servers are just computers that run services (like http, ftp, nntp, email, etc). You basically just have to learn how to install, configure and run those services and learn best practices about installing and configuring the OS to do what you want it to do the best.

I highly recommend going into linux/unix adminning. I am not a huge windows fan. That being said, there are jobs there and if you can tolerate working with windows, it might not be a bad route to go if you want to be an admin for the rest of your life. I think nix admins end up doing more development work in the long run (which is more fun imo). As far as learning nix, I highly recommend unix power tools. I am sure there are tons of tutorials as well, but this book gives you a good idea about how to interact with the command line and gives you a great introduction to many of the tools available to you and when to use them. Setting up servers just means installing some services and getting them running in a smart way. There is usually a lot of documentation available for the service you are downloading and about how to configure it.

Regarding programming, pick a language and start using it for everything you can! When you install a service, pick a program that is made in that language to run on it (i.e., install/configure apache and then run a program written in python on it!). I highly recommend starting out with python, but choose whatever you want. Python has a ton of free documentation and ton of well-written apps available. Its syntax rules will force you into writing better looking code, which will carry over to other languages you will learn in the future. Learn python the hard way, dive into python, MIT OCW, Khan Academy. Pick an open source project and start helping out any way you can! At first, it might just be updating documentation, then you might fix some small/easy bugs and soon you will be fixing things and helping direct the way you want to see the project go (or perhaps start your own project!).

If it gives you any hope - I have worked it helpdesk, sys admin jobs, run IT departments and now work as a programmer, all without (much) formal training. I have taken courses over the years, but I think you can a lot just by reading, watching videos and then finding ways to apply that knowledge!

edit: I don't know where you live, but if you can, find local user groups to participate in and talk to locals. You may be able to find a job in the field and have a real way to apply that knowledge on a daily basis.

If you have any questions or need ideas about projects to start, please feel free to ask.

u/coned88 · 1 pointr/linux

While being a self taught sys admin is great, learning the internals of how things work can really extend your knowledge beyond what you may have considered possible. This starts to get more into the CS portion of things, but who cares. It's still great stuff to know, and if you know this you will really be set apart. Im not sure if it will help you directly as a sys admin, but may quench your thirst. Im both a programmer and unix admin, so I tend to like both. I own or have owned most of these and enjoy them greatly. You may also consider renting them or just downloading them. I can say that knowing how thing operate internally is great, it fills in a lot of holes.

OS Internals

While you obviously are successful at the running and maintaining of unix like systems. How much do you know about their internal functions? While reading source code is the best method, some great books will save you many hours of time and will be a bit more enjoyable. These books are Amazing
The Design and Implementation of the FreeBSD Operating System

Linux Kernel Development
Advanced Programming in the UNIX Environment

Networking

Learning the actual function of networking at the code level is really interesting. Theres a whole other world below implementation. You likely know a lot of this.
Computer Networks

TCP/IP Illustrated, Vol. 1: The Protocols

Unix Network Programming, Volume 1: The Sockets Networking API

Compilers/Low Level computer Function

Knowing how a computer actually works, from electricity, to EE principles , through assembly to compilers may also interest you.
Code: The Hidden Language of Computer Hardware and Software

Computer Systems: A Programmer's Perspective

Compilers: Principles, Techniques, and Tools

u/ezrock · 2 pointsr/IAmA

> Should I avoid the Microsoft world if I am certain on focusing in the direction of linux?

Assuming you are considering systems administration... In short, yes, avoid MS, and get to know Linux (when I say linux, I usually mean all of the Unix-like OSes). Most of the great sysadmins I know have OSX or Linux on their workstation, and work administering Linux systems. I can't think of anyone that knows both MS and Linux and prefers working with MS - although I am sure they exist. At the end of the day, it comes down to what you prefer, but there are a lot of arguments to be made for getting to know linux. #1 is the server market share, and #2, the F/OSS philosophy.

> What is the lowest "entry-level" job that I can get my feet wet while I study?

With linux, hmmm, good question... there are a couple of entry points. I'd start by teaching yourself. Again, it depends on what you are into. One entry level position would be tech support at a hosting company that hosts linux servers for their clients. The guys that you get on the phone/email when you have this service for example. Their tech support is usually tiered, so tier 1 is doing easy stuff and tier 3 is doing the hardcore stuff. I even poked around a found a listing. That's a great way to get your feet wet. That, or a linux-based startup that has a team and needs more hands.

> I know this is pretty far out, but how's the hiring like for linux positions? When the time comes, should I work with a recruiter, or sell myself to a start-up or company directly?

I wouldn't think it is so far out. If you are a "computer-person" smart and you got yourself a book like this and practiced a bit until you were good enough, you could get an entry-level job pretty damned quickly, I think. The market is quite hot in big cities. For proof, pick a big city, go to craigslist and type in linux under jobs. I picked LA In my opinion, there is nothing wrong with recruiters, it's nice having someone whose job is to get you a job. I've used them to hire and to be hired in my past. Just remember, they're salespeople, and they're selling you, so they are often put in a position where they are trying to persuade you.

>What should I get started on reading? What books would you recommend for a beginner? (I'll take "advance" ones too, I'll save them for the future). Also, if you know of any online communities or websites, I appreciate those as well.

As far as resources... That book above is great. It depends on what you want to know. The RHCT/E course material is great for practical sysadmining:
This is old, but I used it. Almost all of this stuff is good.
This is a classic, but it's quite old.

Online, no better place to start than:
http://www.reddit.com/r/sysadmin/top/

/r/linux

http://code.reddit.com/wiki/help/faqs/sysadmin

u/chekt · 3 pointsr/learnprogramming

No matter where you start, make sure you get a reference book. If you start to branch out on your own, without the internet you're going to have a hard time figuring out how things work and how to do things that aren't spelled out in any beginner resources. If you're going to start with python, the in a nutshell books by OReilly are usually pretty good. If you going to start with C, The C Programming Language doubles as a reference and a tutorial, but if you want to do any game programming, you'll want to look into getting a book on SDL (simple, what I recommend), DirectX or OpenGL (these are both more powerful than SDL, but more complicated.). Make sure to download as many libraries and resources as possible before you deploy, even if you think you won't need them. You may want to get a book on Ubuntu if you're going to use linux so you can troubleshoot things.You can buy the books or download the pdfs, I recommend you download the pdfs to anything you don't buy, if you end up using it a lot you can buy the book when you get home.

If you want to follow a course, which I think you should, I recommend the stanford one. Downloading the lectures is a bit of a pain; you have to click on each youtube video, click on "show more", and download the MP4 file. It teaches the course in Java, which some people frown upon, but I part of the camp that believes that the programming language you start out with hardly matters, as you'll learning more soon enough, and what matters most that you just start programming. The stanford course is extremely good, and I recommend you download it and watch all of them, as they'll take you through the fundamentals. Make sure you download all the course materials as well. They use the acm graphics libraries, so download the jars and as much documentation as you can.

Things I recommend you download as well (after you set up linux):

  • VIM (type: "sudo apt-get install vim" into the terminal)
  • Emacs ("sudo apt-get install emacs23")

    Emacs and VIM are two text editors that people some people love. They're probably a bit advanced for a beginner, but they're fun to learn if you're brainfried from all the programming you'll be doing.

    To enter the vim tutorial, run the command "vimtutor" from the terminal.

    To enter the emacs tutorial, open emacs and do the command Ctrl-h t (hold down control and press h, then let go of control and press t)

  • Pygame ("sudo apt-get install python-pygame")
  • SDL ("sudo apt-get install libsdl1.2-dev")
  • C compiler ("sudo apt-get install build-essential")
  • Java compiler ("sudo apt-get install openjdk-7-jdk openjdk-7-doc")
  • Eclipse ("sudo apt-get install eclipse")
  • Gnome Media Player ("sudo apt-get install gnome-mplayer")

    Some people prefer VLC to Gnome-Mplayer, so you might as well get both.

  • VLC ("sudo apt-get install vlc")

    Tips for linux: Keep the CD which you installed it from, because if/when you mess up your linux side, you'll need a way to reinstall it. If you get stuck, you can type "man <whatever>", e.g. "man python" to get some info. The "man" command opens up the manual-page for whatever command, if it has one. Learn to use the command line, because it's extremely powerful.

    Good luck! I found programming to be extremely difficult when I started out, but it eventually becomes a lot of fun! Building something or figuring out an algorithm is incredibly rewarding. Don't give up, and have fun!
u/name_censored_ · 2 pointsr/Python

>Is there any books you would recommend as a reference not a guide? I have a few bookmarks that have really helped but i'd love a hard copy on hand.

I personally cut my teeth on a borrowed copy of Python Essential Reference - it's basically just a rehash of the standard library (though it's fantastic to have a hard copy, and it sounds like what you want). You can also try this book by Alex Martelli - I have never read it, but Alex Martelli is practically a god in the Python world (as someone who read GoF's Design Patterns, I loved his Python design patterns talk). Reddit also raves about Learn Python The Hard Way, though I have never read it because I erm... "disagree" with how Zed Shaw tends to approach things (to put it mildly), and I think it's a guide as opposed to a reference.

>Oh, and i've been having difficulty using the built in help function and such, is there a guide on how to use it effectively? I seem to struggle finding examples of the code too and how to use the functions and what i believe are called attributes ( the sub functions, e.g. datetime.datetime()),

I assume that the inbuild help you're talking about is the code documentation? This documentation is intentionally brief, so it's not particularly useful as anything but a reminder. You can create your own simply creating a string after you open a function or class;

def foo(etc):
""" This is the documentation for foo().

Triple quoted so that it can safely run over multiple lines"""

blah


As for the terminology; you are correct that they're called attributes. There are two sorts of attributes - methods (functions) and properties (values). It can get very messy/fun when you use the @property decorator or toy with __getattr__/__getattribute__/__setattr__, but let's not go there (let's just say that Python can be no-holds-barred).

>but i came from PHP where the PHP manual is amazing for a novice/new coder.

Python's online docs are absolutely fantastic. They are a comprehensive reference of not only the builtins and standard library, but also the object model, features, a rather good tutorial, the C API reference, and even heavy stuff like metaprogramming. The only things it's really missing is the really hardcore stuff like __code__ and __mro__, and to be honest, that's probably a good thing.

>And what is the difference between import datetime and from datetime inport datetime. Does it just allow me to call the attribute as datetime() and not datetime.datetime()?

That's exactly correct.

Just to add another complication, you can also from datetime import datetime as tell_me_the_time_please, and then instead of datetime() you can use tell_me_the_time_please(). The reason this is useful is that sometimes things in modules are named too generically (maybe it's main() or something), so you can import part of the module as a different name.

u/empleadoEstatalBot · 1 pointr/argentina

> For those who prefer video lectures, Skiena generously provides his online. We also really like Tim Roughgarden’s course, available from Stanford’s MOOC platform Lagunita, or on Coursera. Whether you prefer Skiena’s or Roughgarden’s lecture style will be a matter of personal preference.
>
> For practice, our preferred approach is for students to solve problems on Leetcode. These tend to be interesting problems with decent accompanying solutions and discussions. They also help you test progress against questions that are commonly used in technical interviews at the more competitive software companies. We suggest solving around 100 random leetcode problems as part of your studies.
>
> Finally, we strongly recommend How to Solve It as an excellent and unique guide to general problem solving; it’s as applicable to computer science as it is to mathematics.
>
>
>
> [The Algorithm Design Manual](https://teachyourselfcs.com//skiena.jpg) [How to Solve It](https://teachyourselfcs.com//polya.jpg)> I have only one method that I recommend extensively—it’s called think before you write.
>
> — Richard Hamming
>
>
>
> ### Mathematics for Computer Science
>
> In some ways, computer science is an overgrown branch of applied mathematics. While many software engineers try—and to varying degrees succeed—at ignoring this, we encourage you to embrace it with direct study. Doing so successfully will give you an enormous competitive advantage over those who don’t.
>
> The most relevant area of math for CS is broadly called “discrete mathematics”, where “discrete” is the opposite of “continuous” and is loosely a collection of interesting applied math topics outside of calculus. Given the vague definition, it’s not meaningful to try to cover the entire breadth of “discrete mathematics”. A more realistic goal is to build a working understanding of logic, combinatorics and probability, set theory, graph theory, and a little of the number theory informing cryptography. Linear algebra is an additional worthwhile area of study, given its importance in computer graphics and machine learning.
>
> Our suggested starting point for discrete mathematics is the set of lecture notes by László Lovász. Professor Lovász did a good job of making the content approachable and intuitive, so this serves as a better starting point than more formal texts.
>
> For a more advanced treatment, we suggest Mathematics for Computer Science, the book-length lecture notes for the MIT course of the same name. That course’s video lectures are also freely available, and are our recommended video lectures for discrete math.
>
> For linear algebra, we suggest starting with the Essence of linear algebra video series, followed by Gilbert Strang’s book and video lectures.
>
>
>
> > If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is.
>
> — John von Neumann
>
>
>
> ### Operating Systems
>
> Operating System Concepts (the “Dinosaur book”) and Modern Operating Systems are the “classic” books on operating systems. Both have attracted criticism for their writing styles, and for being the 1000-page-long type of textbook that gets bits bolted onto it every few years to encourage purchasing of the “latest edition”.
>
> Operating Systems: Three Easy Pieces is a good alternative that’s freely available online. We particularly like the structure of the book and feel that the exercises are well worth doing.
>
> After OSTEP, we encourage you to explore the design decisions of specific operating systems, through “{OS name} Internals” style books such as Lion's commentary on Unix, The Design and Implementation of the FreeBSD Operating System, and Mac OS X Internals.
>
> A great way to consolidate your understanding of operating systems is to read the code of a small kernel and add features. A great choice is xv6, a port of Unix V6 to ANSI C and x86 maintained for a course at MIT. OSTEP has an appendix of potential xv6 labs full of great ideas for potential projects.
>
>
>
> [Operating Systems: Three Easy Pieces](https://teachyourselfcs.com//ostep.jpeg)
>
>
>
> ### Computer Networking
>
> Given that so much of software engineering is on web servers and clients, one of the most immediately valuable areas of computer science is computer networking. Our self-taught students who methodically study networking find that they finally understand terms, concepts and protocols they’d been surrounded by for years.
>
> Our favorite book on the topic is Computer Networking: A Top-Down Approach. The small projects and exercises in the book are well worth doing, and we particularly like the “Wireshark labs”, which they have generously provided online.
>
> For those who prefer video lectures, we suggest Stanford’s Introduction to Computer Networking course available on their MOOC platform Lagunita.
>
> The study of networking benefits more from projects than it does from small exercises. Some possible projects are: an HTTP server, a UDP-based chat app, a mini TCP stack, a proxy or load balancer, and a distributed hash table.
>
>
>
> > You can’t gaze in the crystal ball and see the future. What the Internet is going to be in the future is what society makes it.
>
> — Bob Kahn
>
> [Computer Networking: A Top-Down Approach](https://teachyourselfcs.com//top-down.jpg)
>
>
>
> ### Databases
>
> It takes more work to self-learn about database systems than it does with most other topics. It’s a relatively new (i.e. post 1970s) field of study with strong commercial incentives for ideas to stay behind closed doors. Additionally, many potentially excellent textbook authors have preferred to join or start companies instead.
>
> Given the circumstances, we encourage self-learners to generally avoid textbooks and start with the Spring 2015 recording of CS 186, Joe Hellerstein’s databases course at Berkeley, and to progress to reading papers after.
>
> One paper particularly worth mentioning for new students is “Architecture of a Database System”, which uniquely provides a high-level view of how relational database management systems (RDBMS) work. This will serve as a useful skeleton for further study.
>
> Readings in Database Systems, better known as the databases “Red Book”, is a collection of papers compiled and edited by Peter Bailis, Joe Hellerstein and Michael Stonebreaker. For those who have progressed beyond the level of the CS 186 content, the Red Book should be your next stop.
>
> If you insist on using an introductory textbook, we suggest Database Management Systems by Ramakrishnan and Gehrke. For more advanced students, Jim Gray’s classic Transaction Processing: Concepts and Techniques is worthwhile, but we don’t encourage using this as a first resource.
>

> (continues in next comment)

u/arusso23 · 5 pointsr/sysadmin

IMO, you should be familiar with 3 things: Virtualization, Linux and Networking. If you want to be a Windows Admin, definitely look into getting your MCITP too.

For virtualization, I would start with VirtualBox. It's not an enterprise solution by any means, but you'll understand the basic idea and it will allow you to run Linux/Windows/etc... without needing a separate box. And snapshots are great for when you want to try something new. Once you move along, you can try installing VMware server 2.0 (I think it's still free and available). If you find you like virtualization, take a look at VMware vSphere.

For linux, I recommend this book. Personally, I like Debian and Fedora Core, but you should at least know one Red Hat based distro (like Fedora). The book is well written, and has some good examples to get you started.

If you aren't very familiar with networking, you should get your CCNA. It probably wont help you pull much of a bigger salary in it of itself, but it will definitely get your feet wet in the world of networking -- but dont be fooled, it only scratches the surface of networking.

If you're looking to be more windows-centric, you should look at getting your MCITP. Personally, I haven't been able to get through the certification process, but I have skimmed through the topics, and it's definitely worth your time if you're serious about being a Windows admin.

I haven't had any experience with Network+ and Security+ certs, but from the comments I have read on the sysadmin reddit over the past few months, I get the impression they aren't worth the time. YMMV on that one though, and if anyone who has them thinks they are worth it, let me know why I am wrong.

When I was getting my feet wet, I picked up small business clients who were willing to tolerate my growing pains since I came cheap and worked nights/weekends for them. Although it only gave me a limited amount of experience, it allows you to put into practice what you are learning, be it linux or windows. Just be sure and always CYA and backup data/configurations before you do anything you're not familiar with.

Sorry, this may be a little bit more long term than you were hoping for, but hopefully you will find something valuable in it.

u/sam_symons · 6 pointsr/learnprogramming

It's definitely not too late to pick up it up! For learning Objective-C itself, I highly recommend Programming in Objective-C 2.0 by Stephen Kochan; I used that book without any prior C knowledge at all and it was very easy to follow. Even if you feel you know the language pretty well, it's nice to have as a reference.

If you're more of a visual learner, this course here by Stanford on iOS programming is really good and covers everything from Objective-C and memory management right up to multithreading and OpenGL ES (plus it's free).

When you begin spending a decent chunk of time actually writing iPhone apps, the iOS Reference Library is going to become your best friend. It has a ton of guides and sample code all written and kept up-to-date by Apple. For starters, I'd recommend perhaps reading the sections under the "Required Reading" section (namely, the iOS Application Programming Guide, the iOS Development Guide and the iPhone Human Interface Guidelines (HIG for short). If you want all of the information on one single page, click on the .PDF button in the top right corner and you'll get just that. A couple of things which aren't listed on the Required Reading section but I think are worth having a look at are the Cocoa Fundamentals Guide and Apple's own introduction to Objective-C 2.0.

To give you a quick answer to the language-vs.-library question, the language is what you'll be using to manage memory, create loops, create methods and all that jazz, whereas the library is a collection of software which Apple has written to make your life easier. An example is a UITableView, a class written by Apple which only requires a few methods to be filled out and a basic data source, which will give you a scrollable view almost identical to the one found in the iPod app or even Settings app. It's a powerful class but extremely easy to set up if you just want the basics. I'm hoping that slightly cleared things up a bit, but if not, feel free to PM me some questions or even post them here for everybody else to see and learn from. I'm definitely no guru on this stuff, but I'll do my best to help.

u/ccjitters · 2 pointsr/linuxquestions

There are a couple things i'd recommend to start with. First, figure out how you learn best. For me it's physical books. I get bored and distracted with videos and pdf's get forgotten about. I'd definitely getting some decent reference material. Here are some of my favorites:

  • The Python Pocket Reference

  • The Bash Pocket Reference

  • The Linux Pocket Reference

  • The Linux Bible

  • Literally anything by No Starch Press They're excellent books, fun to read and look great on a shelf.


    Kali on a raspberry pi is fine but i would not recommend starting with Kali. It's not a beginners Distro. If you can, i'd recommend picking up a cheap 2.5" hard drive for your laptop and swapping it with the Windows drive, or dual booting works too. Install a linux distro and eat your dogfood. Ubuntu and Linux Mint are great for beginners, with Mint and the cinnamon desktop being very similar to Windows 7.

    Centos or Fedora are also good. Fedora is based on Red Hat Enterprise linux, so it's very similar to what you'd find in an business enterprise environment. Centos takes it further though. It's literally just RHEL without branding or paid support.

    All of these (apart from RHEL) are free and all would be a good jumping off point. The only real difference between them all is the package manager and Desktop environment. Red Hat uses 'yum' while Debian uses 'apt'.

    Once you find one you like start practicing. Nearly all utilities you'll find will have a graphical user interface but the command line is always going to be more extensible/powerful. If nothing else get the Linux and Bash pocket references and test administering your own system. Try using the command line for python instead of IDLE. Learn to reboot/shutdown, install/update/upgrade/search with your package manager, try to make your system faster and document everything you do. EVERYTHING.

    You'll be a pro in no time.

    (I'm serious about the documenting. It's important. If you don't believe me check out some of the stories u/patches765 posts in r/talesfromtechsupport. It's like documentation is his superpower.)
u/nonpareilpearl · 1 pointr/DIY

Thank you for all the advice! I'm interested in the books that you suggested - I've been building a queue of books to read to help me learn, but most of those are "textbook-y". The one exception is a book I found called Producing Open Source Software, which I heard is good for people looking to join open source projects. I'm trying to find some other books to look at that are "less academic" as well so that I can learn more about programming aside from the fundamentals that I need.

Thank you for the advice about writing code daily. Right now I'm working as a quasi-intern for a freelance iOS developer in my area who is really good teaching people the mechanics of the language on weekends, but during the week I'm not as industrious (I usually work with him for a total of 6-8 hours on Sat/Sun).

Ultimately I want to work for a company like SpaceX or Scaled Composites, so I definitely need to learn languages such as C++ or similar... however, most of what I do right now (aside from iOS) is just HTML/CSS. Is there a benefit to trying to find an open source project to hop in on that is written in C++ (again, or similar) or is this something where any open source project is better than none?

I suppose it's worth mentioning that I started teaching myself Python, I let some of that fall to the wayside because of coursework and I needed the extra time for that, but now that the semester is over I think I could start that up again. I've actually been trying to write a small command line game with it :)

u/chemicalcomfort · 2 pointsr/cscareerquestions

The easiest way to get into open source is find a project you actually use and take a look through the source code. So many projects could use more/better documentation and eventually someone will take notice if you start making additions. Once you're comfortable with the code you can start making commits but be sure to do your best to try to stay true to the current code paradigms and style.

As for doing a personal project the best way is to figure out something you want to learn more about or making a program that somehow improves your life. The important part is to find something you can be passionate about for an indefinite amount of time. If you get bored with it you're not going to want to work on it.

Want to learn more about databases? Make a program that utilizes a sql flavor of some kind. What to learn more about sockets? Make an http server. Etc. etc.

This book was a wealth of knowledge in regards to doing open source http://www.amazon.co.uk/dp/0596007590

u/DoUHearThePeopleSing · 2 pointsr/ethereum

That's a good way to do it. And I'm sorry for that guy who said about banning - it's an assholly thing to do. As you can see in the other thread, a lot of people (if not the most) argued with him.

Getting whitepaper ready is a good first step. What you can also do is check out some books about software design. The most important ones I'd say are:

https://gettingreal.37signals.com/

http://www.amazon.com/Mythical-Man-Month-Anniversary-Software-Engineering-ebook/dp/B00B8USS14/

http://www.amazon.com/Producing-Open-Source-Software-Successful/dp/0596007590/

There are also essays by Paul Graham (google who he is if you don't know), especially this one:

http://paulgraham.com/start.html

As for publishing the whitepaper - by all means go for it. If you don't want to share it publicly at first, you can send it to selected members of community, or to people who you noticed that are quite sensible within the community.

As for the NDA-s, and non-competes, I guess people explained to you that nobody will do these kinds of things. That is because inexperienced people often have very basic ideas, and nobody wants to then be tied down and exposed to lawsuit because of it.

Imagine that you sign an nda or a non-compete as an architect, and you discover that the guy's brilliant idea is for a building with just round windows. It's really not that novel, and you'd then have to explain to the guy why it isn't that novel. And be exposed to lawsuits for years to come, whenever you make round windows.

Somehow, nobody has these kinds of ideas with architecture, but every other day someone comes to software people with something like this.

Finally, when it comes to holding back your idea... Sometimes (very rarely) it is beneficial, but most of the times it's not. I remember the people working on the first web email system - hotmail.com. These guys were secret as fuck, afraid of someone beating them to the market. But on the other hand, they were already experienced in building systems, and had a team built and a budget.

There's a chance somebody else has an exact same idea, and they are working on it at the same time as you do. And the thing is - the more relaxed they are about sharing the idea, the faster they will go. And also - if anyone ever decides to "steal" your idea once you publish it, you'll be way ahead of them. Because by the time they see your idea, you'll be already way ahead of them in terms of gaining support for your own.

Good luck!

u/DBA_HAH · 3 pointsr/pythontips

I mean... almost everything you touch uses classes.

Let's take reddit. How would you handle users without a class? Retrieve the info from the database and push it into a dict? Now what if you want to delete the user? Create a separate function called `delete_user` that accepts a dict?

What if you want to enable validation on a created user (valid email, username not taken, etc)? Are you always going to do that on the database layer? Or are you going to have a separate function called `validate_user` that accepts a dict?

Etc, etc. You end up with a clusterfuck of functions that all accept any dict.

The best example of using classes probably comes from inheritance. Let's say we also want to include admins in reddit which are a subclass of users. Maybe admins are considered employees so they get extra fields such as mailing address, real name, telephone number, etc but also get to function as users on reddit. Without classes you would create a different dict structure with 90% of the code being duplicated whereas with classes, an Admin would inherit everything from dict and you would only add what's specific for Admins.

Now lets say you need to make a change so that any User can have a longer username or users can now have a friend's list. Without classes, you now need to change the code in two places (User and Admin dicts) whereas with classes we only have to do it once since we use inheritance. Now imagine if there were 12 different kinds of users. With classes you only ever have to change the code in one place.

The reason why we use classes is to organize the code. It's much easier to find out how a program creates, validates, deletes a user when it's all stored in a User class than trying to find out which functions to use, hoping the function names are clear, etc.

Beyond this, using OOP unlocks Design Patterns which have decades of research and real-world use behind them as proficient ways to design programs.

If you're just hacking around with scripts and the like then you probably don't need a class. But if you're designing an application that's going to have many recurring objects (users, cars, comments, Tweets, emails, line items, products, etc) then you realistically need classes.

TL;DR - Make your code DRY - don't repeat yourself. If you find yourself repeating yourself, you need to investigate why and often times there's an OOP principal or design pattern to fix it.

u/istarian · 7 pointsr/linuxmint

You just have to jump in and do stuff. Using it as your primary OS or always for a particular task (e.g. always use it for internet browsing) is a good way to become familiar with a linux desktop environment.

As for the command, whenever you want to:

u/one_is_the_loneliest · 1 pointr/opensource

> There has been pretty wide spread reporting on the kid hacking and getting 90 GB of private data

What I saw reported was:

  • kid "hacked" Apple
  • kid downloaded 90GB data

    Nothing said what he hacked or downloaded, just that he hacked something and downloaded "data". That could very well be a honeypot.

    > In China Apple has the China government keep the data instead of Google and not sure how good they are at security but I am sure a lot better then Apple at least.

    Again, source? With Apple being worth ~$1T, I'm sure they can hire a competent sysadmin.

    > Google has several of those people including Ken Thompson, Rob Pike and a bunch of other ones

    And they stopped working on Plan9 when they got hired, that was my point.

    > Here is why they get all the best engineers.
    >
    > https://www.cnbc.com/2018/09/12/23000-millennial-and-gen-z-workers-listed-their-dream-employers.html

    People want to work there because they pay really well. I wanted to work there when I was doing my undergrad, but that that faded and now I wouldn't take a job from them even if offered. I've read too many horror stories from people who worked there that it's just not worth my time.

    I do not trust Google, though I use their tech when it makes sense. I develop in Go, use Angular for some projects, and build stuff on Kubernetes. I also use competitor tech, like Rust and React.

    > We had AirPort extremes for example and replaced with Google WiFi.

    Why not something more mainstream like Linksys or Trendnet?

    > Google owns all the IP others use

    That's just not true.

    Oh, and they have retaliated with their own set of patents when challenged. They don't seem to want the publicity of being a patent troll. I think of this more as a business decision and less of a "we're the good guys" decision.

    > Waymo did with Uber.

    There are plenty of companies worse than Google, like Oracle (sued Google and a ton of others). I'm not saying that Google is "bad" (yet), just that they're not "good".

    > Only GOOGL gets voting and that means Brin and Page control, completely. They can NEVER be fired.

    What happens when they leave?

    > completely broken patent system in the US

    Agreed, we desperately need to fix (or completely eliminate) our patent system. Patents on software and designs are ridiculous.

    > Now what I find fascinating is that Google gave away majority of their IP. Poor business but good for everyone.

    No, it's a good business move. Their business is user data and mindshare, and that's how you get tech fanboys. It's a brilliant business move IMO.

    > BTW, my previous generation OS idle is David Cutler. But obviously before NT.

    I'm a fan of Kirk McKusick, if for nothing else than The Design and Implementation of the FreeBSD Operating System.

    I'm pretty hyped about Redox though.
u/mikeeusa00 · -1 pointsr/redhat

Yes one can, in the USA.

Gratuitous licenses are revocable. Always have been, and currently are as-well.
If you want to secure terms you must pay for them.


David McGowan Esq. made a correct statement of the law:

>David McGowan, Professor of Law, University of Minnesota Law School:

>"Termination of rights

>[...] The most plausible assumption is that a developer who releases code under the GPL may terminate GPL rights, probably at will.

>[...] My point is not that termination is a great risk, it is that it is not recognized as a risk even though it is probably relevant to commercial end-users, accustomed to having contractual rights they can enforce themselves.


----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

Lawrence Rosen Esq. got it right the first time:
( https://www.amazon.com/Open-Source-Licensing-Software-Intellectual/dp/0131487876 )

>p46 "As long as the project continues to honor the terms of the licenses under which it recieved contributions, the licenses continue in effect. There is one important caveat: Even a perpetual license can be revoked. See the discussion of bare licenses and contracts in Chapter 4"
--Lawrence Rosen

>p56 "A third problem with bare licenses is that they may be revocable by the licensor. Specifically, /a license not coupled with an interest may be revoked./ The term /interest/ in this context usually means the payment of some royalty or license fee, but there are other more complicated ways to satisfy the interest requirement. For example, a licensee can demonstrate that he or she has paid some consideration-a contract law term not found in copyright or patent law-in order to avoid revocation. Or a licensee may claim that he or she relied on the software licensed under an open source license and now is dependent upon that software, but this contract law concept, called promissory estoppel, is both difficult to prove and unreliable in court tests. (The concepts of /consideration/ and /promissory estoppel/ are explained more fully in the next section.) Unless the courts allow us to apply these contract law principles to a license, we are faced with a bare license that is revocable.
--Lawrence Rosen

>p278 "Notice that in a copyright dispute over a bare license, the plaintiff will almost certainly be the copyright owner. If a licensee were foolish enough to sue to enforce the terms and conditions of the license, the licensor can simply revoke the bare license, thus ending the dispute. Remeber that a bare license in the absence of an interest is revocable."
--Lawrence Rosen

Lawrence Rosen - Open Source Licensing - Sofware Freedom and Intellectual property Law



>p65 "Of all the licenses descibed in this book, only the GPL makes the explicity point that it wants nothing of /acceptance/ of /consideration/:
>...
>The GPL authors intend that it not be treated as a contract. I will say much more about this license and these two provisions in Chapter 6. For now, I simply point out that the GPL licensors are in essentially the same situation as other open source licensors who cannot prove offer, acceptance, or consideration. There is no contract."
--Lawrence Rosen

----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Some notes:
A license without an attached interest is revocable in the US (other countries have different laws, which is why many OSS repos kept out of the US in the past, it is also why the FSF is both a 501(c)(3) charity and also requires copyright assignment to them for any contribution they accept (otherwise an author who was still the copyright owner of the code could rescind the license to the code)).

Opensource friends like to bring up the recent district court decision in california to try to argue the the GPL is a contract. (It's also interesting that they started adding CoC's right after said decision, to push out the men who created OpenSource) They are wrong. Acquiescing to a preexisting duty is insufficient for consideration. They like to quote this part:

>"Not so. The GNU GPL, which is attached to the complaint,provides that the
Ghostscript user agrees to its terms if the user does not obtain a commercial
license" (Artifex v. Hancom, Case No.16-cv-06982-JSC, page 4 line 17)


This is false on its face.

The GNU GPL contains no such language.

The /business agreement writing/ that Artifex wrote up and posted on its webpage includes such language. The court here is conflating "The GNU GPL" with the writing Artifex published on it's webpage. It is an error on the courts case. A typo by whomever who drafted the decision perhaps (conflating Artifex's contract language with the GPL itself).

The court goes on to allow Artifex to recover on either breach-of-contract grounds (for the amount a commercial license is worth) OR to go forward with a statutory copyright infringement action. If the GPL alone was a contract, there would simply be two different state-law breach of contract theories to pursue (breach of the "business offer" writing or breach of the GPL "contract", and the court would dispose of the case that way).

u/mikeeusa · 0 pointsr/redhat

>GPL can allow lawsuits for violation of its terms. Making it revocable at that point, but I have never seen this avenue.

For paid-for licenses, that is true: the only way to revoke is via the terms, should they exist (if they do not exist, that's a different story). This is why companies prefer paid copyright-license-contracts over free bare-licenses. A bare license can be revoked at the issuers will.

It's basic property law, you learn it in property 101, contracts 101.
Furthermore following a pre-existing duty is not valid consideration for a contract.
Thus "obeying the license" is not consideration in this instance: nothing allows you to use/modify/etc the property other than the allowance by the issuer via the license.

The GPL doesn't allow anything; it's the law that allows. The GPL's "give us the source (of derivative works)" provisions aren't even enforceable under US law since it alone is not a contract and specific performance is thus not available.


----
For your study:
( https://www.amazon.com/Open-Source-Licensing-Software-Intellectual/dp/0131487876 )

>p46 "As long as the project continues to honor the terms of the licenses under which it recieved contributions, the licenses continue in effect. There is one important caveat: Even a perpetual license can be revoked. See the discussion of bare licenses and contracts in Chapter 4"
--Lawrence Rosen

>p56 "A third problem with bare licenses is that they may be revocable by the licensor. Specifically, /a license not coupled with an interest may be revoked./ The term /interest/ in this context usually means the payment of some royalty or license fee, but there are other more complicated ways to satisfy the interest requirement. For example, a licensee can demonstrate that he or she has paid some consideration-a contract law term not found in copyright or patent law-in order to avoid revocation. Or a licensee may claim that he or she relied on the software licensed under an open source license and now is dependent upon that software, but this contract law concept, called promissory estoppel, is both difficult to prove and unreliable in court tests. (The concepts of /consideration/ and /promissory estoppel/ are explained more fully in the next section.) Unless the courts allow us to apply these contract law principles to a license, we are faced with a bare license that is revocable.
--Lawrence Rosen

>p278 "Notice that in a copyright dispute over a bare license, the plaintiff will almost certainly be the copyright owner. If a licensee were foolish enough to sue to enforce the terms and conditions of the license, the licensor can simply revoke the bare license, thus ending the dispute. Remeber that a bare license in the absence of an interest is revocable."
--Lawrence Rosen

Lawrence Rosen - Open Source Licensing - Sofware Freedom and Intellectual property Law



>p65 "Of all the licenses descibed in this book, only the GPL makes the explicity point that it wants nothing of /acceptance/ of /consideration/:
>...
>The GPL authors intend that it not be treated as a contract. I will say much more about this license and these two provisions in Chapter 6. For now, I simply point out that the GPL licensors are in essentially the same situation as other open source licensors who cannot prove offer, acceptance, or consideration. There is no contract."
--Lawrence Rosen

----
>David McGowan, Professor of Law, University of Minnesota Law School:

>"Termination of rights

>[...] The most plausible assumption is that a developer who releases code under the GPL may terminate GPL rights, probably at will.

>[...] My point is not that termination is a great risk, it is that it is not recognized as a risk even though it is probably relevant to commercial end-users, accustomed to having contractual rights they can enforce themselves.

u/CSMastermind · 2 pointsr/AskComputerScience

Senior Level Software Engineer Reading List


Read This First


  1. Mastery: The Keys to Success and Long-Term Fulfillment

    Fundamentals


  2. Patterns of Enterprise Application Architecture
  3. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
  4. Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML
  5. Systemantics: How Systems Work and Especially How They Fail
  6. Rework
  7. Writing Secure Code
  8. Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries

    Development Theory


  9. Growing Object-Oriented Software, Guided by Tests
  10. Object-Oriented Analysis and Design with Applications
  11. Introduction to Functional Programming
  12. Design Concepts in Programming Languages
  13. Code Reading: The Open Source Perspective
  14. Modern Operating Systems
  15. Extreme Programming Explained: Embrace Change
  16. The Elements of Computing Systems: Building a Modern Computer from First Principles
  17. Code: The Hidden Language of Computer Hardware and Software

    Philosophy of Programming


  18. Making Software: What Really Works, and Why We Believe It
  19. Beautiful Code: Leading Programmers Explain How They Think
  20. The Elements of Programming Style
  21. A Discipline of Programming
  22. The Practice of Programming
  23. Computer Systems: A Programmer's Perspective
  24. Object Thinking
  25. How to Solve It by Computer
  26. 97 Things Every Programmer Should Know: Collective Wisdom from the Experts

    Mentality


  27. Hackers and Painters: Big Ideas from the Computer Age
  28. The Intentional Stance
  29. Things That Make Us Smart: Defending Human Attributes In The Age Of The Machine
  30. The Back of the Napkin: Solving Problems and Selling Ideas with Pictures
  31. The Timeless Way of Building
  32. The Soul Of A New Machine
  33. WIZARDRY COMPILED
  34. YOUTH
  35. Understanding Comics: The Invisible Art

    Software Engineering Skill Sets


  36. Software Tools
  37. UML Distilled: A Brief Guide to the Standard Object Modeling Language
  38. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
  39. Practical Parallel Programming
  40. Past, Present, Parallel: A Survey of Available Parallel Computer Systems
  41. Mastering Regular Expressions
  42. Compilers: Principles, Techniques, and Tools
  43. Computer Graphics: Principles and Practice in C
  44. Michael Abrash's Graphics Programming Black Book
  45. The Art of Deception: Controlling the Human Element of Security
  46. SOA in Practice: The Art of Distributed System Design
  47. Data Mining: Practical Machine Learning Tools and Techniques
  48. Data Crunching: Solve Everyday Problems Using Java, Python, and more.

    Design


  49. The Psychology Of Everyday Things
  50. About Face 3: The Essentials of Interaction Design
  51. Design for Hackers: Reverse Engineering Beauty
  52. The Non-Designer's Design Book

    History


  53. Micro-ISV: From Vision to Reality
  54. Death March
  55. Showstopper! the Breakneck Race to Create Windows NT and the Next Generation at Microsoft
  56. The PayPal Wars: Battles with eBay, the Media, the Mafia, and the Rest of Planet Earth
  57. The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad
  58. In the Beginning...was the Command Line

    Specialist Skills


  59. The Art of UNIX Programming
  60. Advanced Programming in the UNIX Environment
  61. Programming Windows
  62. Cocoa Programming for Mac OS X
  63. Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals
  64. lex & yacc
  65. The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference
  66. C Programming Language
  67. No Bugs!: Delivering Error Free Code in C and C++
  68. Modern C++ Design: Generic Programming and Design Patterns Applied
  69. Agile Principles, Patterns, and Practices in C#
  70. Pragmatic Unit Testing in C# with NUnit

    DevOps Reading List


  71. Time Management for System Administrators: Stop Working Late and Start Working Smart
  72. The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services
  73. The Practice of System and Network Administration: DevOps and other Best Practices for Enterprise IT
  74. Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale
  75. DevOps: A Software Architect's Perspective
  76. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
  77. Site Reliability Engineering: How Google Runs Production Systems
  78. Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry
  79. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
  80. Migrating Large-Scale Services to the Cloud
u/Freeky · 9 pointsr/programming

Maybe a more concrete example will help. Here's a snapshot of the memory use of my main work machine:

Mem: 3269M Active, 2797M Inact, 1320M Wired, 362M Cache, 828M Buf, 169M Free

It's FreeBSD, but illustrative of how vaguely modern VM's work; as you suggest, it's not just "memory in use" and "memory that's free", there's a hierarchy through which pages are run through depending on use. In FreeBSD's case, Active is directly mapped into processes read-write, or cached stuff which has been recently used and likely to be wanted at a moment's notice.

Inact is inactive memory; the next level down. This mostly includes cached data which can either be pushed back into Active quickly if it's needed, or flushed out relatively quickly, or further migrated down the chain.

Cache is the next level down from Inactive; it's read-only, not directly mapped into anything, and almost as cheap to reuse as Free (but more expensive to reactivate than Inact if it is needed), which is where it's cycled next if there's sufficient memory pressure. Some Free is obviously good; a quick pool of pre-zeroed memory is pretty important.

Wired and Buf are mostly kernel; in my case most of Wired is ZFS's own kernel-malloc backed cache, but it also includes anything else that can't be swapped out, like vital kernel code and certain userspace things. e.g. gpg will try to lock memory which is sensitive and shouldn't hit unencrypted swap.

Point being; how much memory does this machine really have free? 169MB? What about the 362MB of Cache which is more or less ready for any new use? And I can probably dump most of that Inact without much trouble. And who's to say how much Active really needs to be there; without much memory pressure it's sure not going to work too hard working out what doesn't really need to be there.

It's been ages since I read the book, and I'm also tired and on prescription medication, so E&OE.

u/wadcann · 12 pointsr/linux

>Why does Linux limit itself to this file name size?

What should it be? Posix requires it to be capped at NAME_MAX. That could be anything, but on my Linux distro happens to be 255. You could increase that and recompile your libs and apps if you wanted, but the Posix folks happened to choose to put a compile-time constant length on things back when. They probably did that because it makes handling some things more convenient. I imagine that somewhere, there's code that statically-allocates stuff of NAME_MAX + 1 length, so jacking up NAME_MAX to, say, 1MB would probably cause some programs to use a lot of memory...so that hasn't been done.

As to why Linux uses 256 instead of NAME_MAX + 1 in the header, go look at your system headers. On my system, /usr/include/x86_64-linux-gnu/bits/dirent.h has the following:

char d_name[256]; / We must not include limits.h! /

I imagine that 256 is used rather than NAME_MAX + 1 because they don't want to have the kernel header depend on that other header; maybe it creates a dependency loop, where limits.h depends on dirent.h and visa versa to find various constants. I'm not sure which standard "owns" NAME_MAX, but perhaps it's something that the kernel provides and libc is responsible for setting based on the kernel. It does seem a bit odd that there isn't a constant defined in the kernel headers (that libc defines NAME_MAX to on Linux) that is also used here and anywhere else a filename might show up, but I expect that the kernel folks had a reason for that.

EDIT: note also that the Windows API has a similar such restriction:

>>What is the maximum length of a file name?
>
>Windows usually limits file names to 260 characters. But the file name must actually be shorter than that, since the complete path (such as C:\Program Files\filename.txt) is included in this character count. This is why you might occasionally encounter an error when copying a file with a very long file name to a location that has a longer path than its current location.

Huh...I thought that they had a maximum path length of 1024 characters (or bytes; don't recall) but then I haven't done Windows programming for a while now...seems that 260 is correct, though.

>As a side note: any links to really good resources or articles for Unix/Linux systems programming in C would be much appreciated.

Seems like a pretty broad range of material, if you just want articles. I mean...you might want to narrow down what you're looking for a bit. I think that Advanced Programming in the Unix Environment is probably a worthwhile book to go through, if you just want a "C on Unix" book.

u/talebowl · 38 pointsr/learnprogramming

Lots of different ways to do this. However, a couple of things before we start.

You (customer) may think you have told me what you want, but in fact, you have told me what you think you want. You will change your mind. I will misinterpret you. You will explain things later on in the process that are totally contrary to what you have explained before. Requirements will change (I'll look up some numbers quoted in some of the classes I took about how large a part of the requirements is actually not or seldom used tomorrow). This may read as kind of condescending towards customers, but it isn't meant as such. We just need to keep in mind that communication is HARD. And you need lots of communication for an IT project.

So, given that requirements will change, it'd sure be nice to have (good, frequent) feedback. That is an important part of the "Agile" methodology of software development. The classical way of developing software is sometimes called waterfall. You make up requirements, you plan, you develop, you test, you deliver. Project over. In processes in line with the Agile methodology you do those same things (albeit maybe differently), but you do them in small pieces. You divide your requirements into 2 week to 2 month (commonly) "sprints", pieces of time in which you go through this process, and thus you get more frequent feedback from your client (you may not ask for testing/feedback at every sprint, again, the key is good communication). A very important thing to remember here, is that there isn't one waterfall or one agile. There are tonnes of processes, some standardized, some adapted to suit individual needs. Experiment, talk to others, find what works for you and your team.

As for the higher-level architecture of your code: read a good book on design patterns. For Object Oriented programming, I like Shalloway & Trott's "Design Patterns Explained". I'm nearing the end of a course on design patterns using this book, and I really enjoyed it.

Disclaimer: This is sort of pieced together from (what I think are) the most important parts of my education (in my third (last) year of Bachelor Applied Computer Science) so far. It is very incomplete.

Bottom line is: you never stop learning. Asking the question you asked here is important. Be curious. Does this last part make me sound arrogant?

EDIT: Wrong link formatting.

u/StuartPBentley · 1 pointr/lua

I second Programming in Lua as a recommendation - it is the book to learn Lua, written by the main architect behind the language itself (Roberto Ierusalimschy). The first edition is available online, but I personally recommend at least the second edition (of which I personally have a signed copy) - the fourth edition, the latest, sounds like a good pick (the description says it's been completely re-organized, based on Roberto's experience from decades of teaching Lua).

As for an environment to learn it in, I recommend Cloud9, which gives you an entire Linux integrated development environment for free (you may also want to pick up the Linux Pocket Guide, which is a good reference for learning how to get around on the command line).

u/LtGerome · -3 pointsr/opensource

I am an actual lawyer.

In the USA a license is revocable absent an interest.
An interest generally means you paid for the license, are in a contract with the grantor (paid good consideration for the license) etc.
You can "retroactively" rescind the GPL from a non-paying licensee. They use your property at your /pleasure/. ("Retroactively" is used colloquially here: their past non-infringing actions are not suddenly infringing, their future actions using the same code would be since you have rescinded their license)

Your "understanding" is wishful thinking and is wrong.
Your /game plan/ is to throw yourself on the mercy of the court and beg them not to enforce the owners legal rights under an equitable defense (Basically "It's not fair!"). You can do this in virtually any licensor-licensee case, and it IS attempted in virtually every such case where the licensee doesn't have a leg to stand on legally.

(Things are different in non-US jurisdictions, so the second option of "defense" is that violators host outside of the US: where hosts simply do not care about US law)

But don't take my word for it. Take the word of some lawyers who attach their actual name:

( https://www.amazon.com/Open-Source-Licensing-Software-Intellectual/dp/0131487876 )
>p46 "As long as the project continues to honor the terms of the licenses under which it recieved contributions, the licenses continue in effect. There is one important caveat: Even a perpetual license can be revoked. See the discussion of bare licenses and contracts in Chapter 4"
--Lawrence Rosen

>p56 "A third problem with bare licenses is that they may be revocable by the licensor. Specifically, /a license not coupled with an interest may be revoked./ The term /interest/ in this context usually means the payment of some royalty or license fee, but there are other more complicated ways to satisfy the interest requirement. For example, a licensee can demonstrate that he or she has paid some consideration-a contract law term not found in copyright or patent law-in order to avoid revocation. Or a licensee may claim that he or she relied on the software licensed under an open source license and now is dependent upon that software, but this contract law concept, called promissory estoppel, is both difficult to prove and unreliable in court tests. (The concepts of /consideration/ and /promissory estoppel/ are explained more fully in the next section.) Unless the courts allow us to apply these contract law principles to a license, we are faced with a bare license that is revocable.
--Lawrence Rosen

>p278 "Notice that in a copyright dispute over a bare license, the plaintiff will almost certainly be the copyright owner. If a licensee were foolish enough to sue to enforce the terms and conditions of the license, the licensor can simply revoke the bare license, thus ending the dispute. Remeber that a bare license in the absence of an interest is revocable."
--Lawrence Rosen

Lawrence Rosen - Open Source Licensing - Sofware Freedom and Intellectual property Law



>p65 "Of all the licenses descibed in this book, only the GPL makes the explicity point that it wants nothing of /acceptance/ of /consideration/:
>...
>The GPL authors intend that it not be treated as a contract. I will say much more about this license and these two provisions in Chapter 6. For now, I simply point out that the GPL licensors are in essentially the same situation as other open source licensors who cannot prove offer, acceptance, or consideration. There is no contract."
--Lawrence Rosen

----
>David McGowan, Professor of Law, University of Minnesota Law School:

>"Termination of rights

>[...] The most plausible assumption is that a developer who releases code under the GPL may terminate GPL rights, probably at will.

>[...] My point is not that termination is a great risk, it is that it is not recognized as a risk even though it is probably relevant to commercial end-users, accustomed to having contractual rights they can enforce themselves.

u/get-postanote · 3 pointsr/PowerShell

Nothing is every really outdated, as you never know what you are going to encounter in a target / assigned environment and even have to continue to deal with legacy OS, PS versions and now cross platform. That cross platfomr bit, as far as in depth stuff, no refrence really exists, yet.

​

Why are not all the built-in help files and ps1/psm1, etc., not a good reference point and well as all the docs on the MS PowerShell GtiHub and docs site as well as these handy resources and one of the other top PS books that been around: for years now:

Windows PowerShell in Action, Second Edition Second Edition

​

And coding in general -just becasue the more your script , eventually understand real coding practices is paramount. Look to this reference. It's not PowerShell specific, but for wrapping you head and goals around coding practices.

Code Complete (Developer Best Practices)

​

PowerShell Documentation

https://docs.microsoft.com/en-us/powershell

https://docs.microsoft.com/en-us/powershell/module/?view=powershell-6

​

Other free eBook references

https://leanpub.com/u/devopscollective

http://www.powertheshell.com/cookbooks

​

Windows PowerShell Survival Guide

https://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide.aspx

​

DevOps Collective Videos

https://www.youtube.com/playlist?list=PLfeA8kIs7CocGXuezOoYtLRdnK9S_Mq3e

​

Cheet Sheets

https://github.com/PrateekKumarSingh/CheatSheets/tree/master/Powershell

​

PowerShell Best Practices

https://blogs.technet.microsoft.com/heyscriptingguy/tag/best-practices

https://blogs.technet.microsoft.com/heyscriptingguy/2014/05/28/powershell-best-practices-simple-scripting

https://www.digitalshadows.com/blog-and-research/powershell-security-best-practices

https://ptgmedia.pearsoncmg.com/images/9780735666498/samplepages/9780735666498.pdf

https://www.digitalshadows.com/blog-and-research/powershell-security-best-practices

https://github.com/PoshCode/PowerShellPracticeAndStyle

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-40-Best-d9e16039

https://www.microsoftpressstore.com/store/windows-powershell-best-practices-9780735666498

​

​

​

u/hust921 · 2 pointsr/commandline
  • ALOT more tools and options available compared to GUI.

  • Remote management: This also play perfectly together with automation.
  • Automation: Just the fact that you can redirect output/input to or from other, completely independent programs, files or devices is a so powerful.
    Also making scripts to complete long tedious tasks that you may want to run multiply times. Say: every time you boot or run a specific program. Or if you are managing multiple computers, this comes very handy.

    I great way to start taking full advantage of the commandline is by learning the linux tools and how to use them. Also learning a scripting language is a natural step to becoming comfortable with the commandline.

    The Linux Documentation Project is a really good resource.
    http://www.tldp.org/guides.html

    Bash scripting:

    http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html

    http://www.amazon.com/books/dp/1118004426 (Great resource for both the tools and scripting.)
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/Righteous_Dude · 2 pointsr/CompTIA

Probably the new versions of the exam-prep books will be published in January or February.

I took the beta version of the new exam during October, and I'm pretty confident that I passed it.

Some of my preparation steps were:

(0) I had one of my PCs that already had Ubuntu 18.04 on it, on which I could practice some commands (I later put CentOS 7 on that PC instead). You can also get pre-built VMs from osboxes.org which you can run in VirtualBox. Or you could download an ISO, burn that to a DVD-R, create an empty VM, and practice the installation process.

(1) I learned many commands and their command-line options from "Linux Pocket Guide - Essential Commands, 3rd edition" by Daniel Barrett published by O'Reilly. I had heard that the current CompTIA Linux+ exams want you to know many command-line options and what they do.

(2) I learned topics for the current version of the exam from "LPIC-1 Study Guide, 4th ed." by Christine Bresnahan and Richard Blum, published by Sybex. See also my post where I evaluated books to prepare for the current version of the exam.

(3) I downloaded the PDF with the beta exam objectives

(4) For some topic areas that are on the new exam and not on the current exam, I read the chapters in this book by Sander Van Vugt about the Red Hat certification exams to get a basic understanding of those topics and learn the main commands for those topics. I liked that book; it has short chapters and is written in an easy style.

(5) For some things listed on the beta exam objectives, I also looked at the 'man' pages and read the Wikipedia articles about those things.

(6) I had previously passed the Network+ exam, and I think my understanding of networking helped with some of the questions on the beta exam.

(7) I registered for a free account at LinuxAcademy.com, and one of the courses available at the free level was named "Git Quick Start" (or something like that), which helped me prepare for the Git-related questions on the beta exam.

u/cheeseprocedure · 9 pointsr/sysadmin
  1. Make sure you have backups that do not reside on the VPS. (Look into rsync/rdiff-backup if you're unfamiliar with them.)
  2. Don't run X on your production server ;)
  3. Keep up on security updates. If you're on Ubuntu, for example, you can subscribe to the relevant mailing lists (http://www.ubuntu.com/usn) and set up a cron entry to update your apt repository/email you with available updates (Google "ubuntu server update notification" for umpteen thousand helpful writeups).
  4. Ideally you'd have a testbed (whose OS/software configuration is the same as the VPS) where updates are applied and ensure services keep ticking along afterwards; that may be overkill, but it's good practice :)
  5. Keep your system configuration files in a source control system; etckeeper is a great option: http://evilrouters.net/2011/02/18/using-etckeeper-with-git-on-ubuntu
  6. Use keys for SSH login.
  7. Don't run services as root.
  8. Don't allow root to login via SSH.
  9. There's many tools for automatically parsing/acting upon syslogs; check out logwatch, fail2ban, and OSSEC.
  10. If you're running third-party Web packages (WordPress, PHPbb, etc.), keep them up to date. They're a big, fat, juicy target for script kiddies and botnets.
  11. Pick this up for some light reading: http://www.amazon.com/Power-Tools-Third-Shelley-Powers/dp/0596003307
u/taricorp · 4 pointsr/AskComputerScience

Any in-depth discussion of cryptography is going to be heavy on discrete math. I took an undergraduate course using this book, which seemed to offer a pretty gentle introduction to the mathy bits (based on simpler ciphers) before diving into modern crypto.

I haven't personally dealt with Bruce Schneier's book, but it looks like a solid resource. It does seem to assume a fair amount of programming background though.

----

In any case, I'd recommend picking up a book on crypto, and be prepared to deal with a certain amount of math. In particular, modular arithmetic and certain subsets of probability are heavily used.

u/mikeeusa0 · -1 pointsr/opensource

Some decisions I have made regarding my GPC-Slots 2 game:


I had chosen, as was my want, to rescind the license I extended from a
few choice individuals. I can do this because GPC-Slots 2 is my
copyrighted work. I built it. I never transferred the copyright over to
anyone.


The individuals are:
"JohnDoe" from 8chan (he knows who he is)
comphacker from here, reddit (if he violates, I'll know who he is after
the subpoenas during discovery)
Leigh Honeywell
Alex "Skud" Bayley
the "Geek feminist" collective (I believe they are identifiable, and a
small group, so no harm using this closed-class identification)


I will continue to rescind the license from anyone who adds a "Code of
Conduct" anywhere near my code (to "fight sexism".). I wholeheartedly
/support/ sexism, as-long as it is not against men. Since men are now
being assaulted as thanks for their ceaseless decades-long work on
opensource by people who did not put in the time, men should /support
sexism/ by revoking license to their gratis licensed copyrighted code
from any project that adds a "Code of Conduct".


--MikeeUSA--
(electronic signature)


----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
----- ----- ----- ----- ----- -----
Some notes:
A license without an attached interest is revocable in the US (other
countries have different laws, which is why many OSS repos kept out of
the US in the past, it is also why the FSF is both a 501(c)(3) charity
and also requires copyright assignment to them for any contribution they
accept (otherwise an author who was still the copyright owner of the
code could rescind the license to the code)).


Opensource friends like to bring up the recent district court decision
in california to try to argue the the GPL is a contract. (It's also
interesting that they started adding CoC's right after said decision, to
push out the men who created OpenSource) They are wrong. Acquiescing to
a preexisting duty is insufficient for consideration. They like to quote
this part:


\> "Not so. The GNU GPL, which is attached to the complaint,provides that
\> the
Ghostscript user agrees to its terms if the user does not obtain a
commercial
license" (Artifex v. Hancom, Case No.16-cv-06982-JSC, page 4 line 17)


This is false on its face.


The GNU GPL contains no such language.


The /business agreement writing/ that Artifex wrote up and posted on its
webpage includes such language. The court here is conflating "The GNU
GPL" with the writing Artifex published on it's webpage. It is an error
on the courts case. A typo by whomever who drafted the decision perhaps
(conflating Artifex's contract language with the GPL itself).


The court goes on to allow Artifex to recover on either
breach-of-contract grounds (for the amount a commercial license is
worth) OR to go forward with a statutory copyright infringement action.
If the GPL alone was a contract, there would simply be two different
state-law breach of contract theories to pursue (breach of the "business
offer" writing or breach of the GPL "contract", and the court would
dispose of the case that way).


----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
----- ----- ----- ----- ----- -----


David McGowan Esq. made a correct statement of the law:


\> David McGowan, Professor of Law, University of Minnesota Law School:


\> "Termination of rights


\> [...] The most plausible assumption is that a developer who releases
\> code under the GPL may terminate GPL rights, probably at will.


\> [...] My point is not that termination is a great risk, it is that it
\> is not recognized as a risk even though it is probably relevant to
\> commercial end-users, accustomed to having contractual rights they can
\> enforce themselves.


----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
----- ----- ----- ----- ----- -----


Lawrence Rosen Esq. got it right the first time:
(
https://www.amazon.com/Open-Source-Licensing-Software-Intellectual/dp/0131487876
)


\> p46 "As long as the project continues to honor the terms of the
\> licenses under which it recieved contributions, the licenses continue
\> in effect. There is one important caveat: Even a perpetual license can
\> be revoked. See the discussion of bare licenses and contracts in
\> Chapter 4"
--Lawrence Rosen


\> p56 "A third problem with bare licenses is that they may be revocable
\> by the licensor. Specifically, /a license not coupled with an interest
\> may be revoked./ The term /interest/ in this context usually means the
\> payment of some royalty or license fee, but there are other more
\> complicated ways to satisfy the interest requirement. For example, a
\> licensee can demonstrate that he or she has paid some consideration-a
\> contract law term not found in copyright or patent law-in order to
\> avoid revocation. Or a licensee may claim that he or she relied on the
\> software licensed under an open source license and now is dependent
\> upon that software, but this contract law concept, called promissory
\> estoppel, is both difficult to prove and unreliable in court tests.
\> (The concepts of /consideration/ and /promissory estoppel/ are
\> explained more fully in the next section.) Unless the courts allow us
\> to apply these contract law principles to a license, we are faced with
\> a bare license that is revocable.
--Lawrence Rosen


\> p278 "Notice that in a copyright dispute over a bare license, the
\> plaintiff will almost certainly be the copyright owner. If a licensee
\> were foolish enough to sue to enforce the terms and conditions of the
\> license, the licensor can simply revoke the bare license, thus ending
\> the dispute. Remeber that a bare license in the absence of an interest
\> is revocable."
--Lawrence Rosen


Lawrence Rosen - Open Source Licensing - Sofware Freedom and
Intellectual property Law

u/ewiethoff · 2 pointsr/learnprogramming

Congratulations for deciding to learn Python! A few thoughts:

  1. Don't worry for now. :-) Just tell yourself a tuple is a Python list without append, count, extend, etc. methods. Just tell yourself a lambda is a function without a name. You can fill in your understanding later.

  2. What Python book are you using? Maybe it's too simple for you. Finish that book, then head for one by Alex Martelli: Python in a Nutshell. Unfortunately, the Nutshell book is quite old by now. So borrow it from the library or get it used cheap. Martelli is a much deeper teacher than most out there.

  3. I think Python's mathier than most other popular languages out there, and it has sparked me to learn more math. I have a BS in engineering with 8 semesters of math plus all the extra math that's taught in the engineering courses, but not the type of courses which mention "tuple" or "lambda." So I read cheap math books for pleasure. I've been getting a lot out of An Introduction to Algebraic Structures. It doesn't happen to mention the words "tuple" or "lambda," but it does go into mappings, ordered pairs, operations, and other stuff which help my Python head explode happily.

    Edit to clarify 1): Just tell yourself a tuple is an immutable Python list without append, count, extend, etc. methods.
u/CaptainStack · 1 pointr/learnprogramming

My dad was working his way through this to learn PowerShell"

http://www.amazon.com/Windows-PowerShell-Action-Second-Edition/dp/1935182137/ref=sr_1_fkmr1_3?ie=UTF8&qid=1374727827&sr=8-3-fkmr1&keywords=O%27riley+powershell

Honestly though, I don't see why you need to learn PowerShell at your level of programming. Command lines are great, but I would think someone of your experience should get something a little more pure and basic. What do I mean by this? You should be learning about programming as a way of thinking, not about specific tools.

I'm reading through "Think Python" right now, which is unique in that it's more about programming and less about Python. I think it's a great way to learn how to think like a programmer without being bogged down in specific technologies. You won't need anything but a basic Python interpreter. It's also free. Check it out here:

http://www.greenteapress.com/thinkpython/

u/Waitwhatwtf · 2 pointsr/programming

For iOS devices, you're going to want to start here, this will get you familiarized with the NeXtStep family of jive turkeys, followed up with a more formal introduction to Objective-C. I'll be honest, having some working knowledge of C will never hurt you, so after you're done with that, take a peek at K&R.

If you're aiming for Android, you have a bit of a different education outlook, I'd recommend brushing up with Head First Java. When I started poking around with Android, I read Hello, Android most of it should be still pretty relevant. I'm not entirely sure if it has been updated as of late, I outgrew it rather quickly, and if you do too; pretty much anything and everything by Mark Murphy is relevant. Best of luck!

u/Your_Left_Hand · 2 pointsr/linux4noobs

If you are willing to spend a little money, I'd suggest the Linux Command Line and Shell Scripting Bible. It will first teach you about the commands you can use on the CLI. Then it will delve into shell scripting. After finishing that book up you should have a very decent understanding of bash.

Another good tutorial that I can Recommend is The Linux Command Line. There are free lessons on the website that cover the same material as his book does. The book is just a lot more in depth.

Also, after you gain some familiarity you can try reading through the bash man page. It's a heavy read, but you can definitely learn a lot from it.

Good luck!

u/saranagati · 1 pointr/sysadmin

The Design of the UNIX Operating System

u/criis · 1 pointr/crypto

I really liked Cryptography: Theory of Practice. It's like reading a math book with useful real world examples. :)

The book is not so programming related but really, cryptography is pretty much just applied discreet math. Most of the exercises require programming but it's fairly trivial.
In my opinion the hard part isn't the programming; it's understanding the math behind.

Good luck finding what you're looking for.

u/ChrisF79 · 1 pointr/learnprogramming

How much knowledge of Objective C do you already have? If you already have a good working knowledge of it, you should look into the Big Nerd Ranch books (Amazon link). They're pretty awesome because they show you, in steps, how do write simple programs. If you don't already know Objective C, read Kochan's Programming in Objective C as that starts you at ground zero.

Another option is to watch the Stanford University courses on Objective C. I believe there are 3 semesters online (same class, different teachers) and those are pretty great as well.

u/aiokko · 1 pointr/learnprogramming

I learned with the 7th edition of the Microsoft Step by Step book and found it an excellent introduction to the language. I also went into C# with prior programming experience, so I wanted something more wholesome than a introductory programming book. I would recommend it if you're already familiar with programming.

As far as Unity goes, there are a ton of tutorials out there for both 2D and 3D, just do a quick google search. Their tutorials page also has a couple of 2D-specific tutorials that should help you along. I wouldn't recommend using a book to study Unity, as in my experience tinkering around with the game engine is far more useful for learning. Set up your own projects and learn by discovery.

edit: I'm just going to toss this in here, but Monogame was a big help for me in learning how to program both C# and games. If you're more interested in 2D game development, this might be a good way to go. Monogame is going to be substantially more programming-heavy than Unity, however.

u/ergotron · 2 pointsr/linux

I agree that from what I know about Time Machine it's super easy for the average user to successfully use. I think that's really important. You shouldn't have to understand Linux to keep your stuff safe.

Speaking of car analogies, have you read In the Beginning was the Command Line...?

u/wcbdfy · 1 pointr/learnprogramming

Programming in Objective-C by Stephan Kochen is an excellent intro/reference with detailed and clear explanation of Objective-C (the language you will be using).

You should also get the Big Nerd Ranch Guide to iOS programming for things specific to the iDevices.

Apple's developer reference/wiki covers everything else and is also pretty detailed. Stanford's iPhone development video lectures are okay, but I can see how they come in handy to someone who is just getting started.

You will need a mac (of course) and Xcode, and if you haven't used that before, you will need to get comfortable with it. You will need Xcode for many of it's features but if you are not a fan of the IDE and wish to use an editor for simpler things, many support Obj-C syntax highlighting.

u/Ben_Aperture · 1 pointr/linux

I much appreciate your answer. I will take into account ir. I started using Linux about a year and a half ago, coming from windows. I just thinked that I could find a good alternative for Windows, and I moved to Ubuntu MATE. I was fascinated by its velocity, security and how it's packages worked. At the first time, I was dual-booting, but then I removed windows and started to just use Linux. I've been using Linux casually for a lot of time, and now I'm going serious. I want to learn bash scripting and python. I have got a fantastic Spanish Python book, (I'm learning a lot because of it), and now I'm looking for some bash and Linux books by O'Reilly and I've found this book https://www.amazon.es/gp/aw/d/0596009658/ref=mp_s_a_1_1?__mk_es_ES=%C3%85M%C3%85Z%C3%95%C3%91&qid=1520884449&sr=8-1&pi=AC_SX236_SY340_QL65&keywords=O%27Reilly+bash&dpPl=1&dpID=513EprgSOcL&ref=plSrch and this other one https://www.amazon.es/gp/aw/d/1491927577/ref=mp_s_a_1_3?__mk_es_ES=%C3%85M%C3%85Z%C3%95%C3%91&qid=1520884734&sr=8-3&pi=AC_SX236_SY340_QL65&keywords=O%27Reilly+Linux&dpPl=1&dpID=51AbKrNDvaL&ref=plSrch
Would you recommend me this books to learn?
I'm Spanish, so the prizes should be different

u/AlSweigart · 2 pointsr/learnpython
WHY DO YOU ASK MAINTAINS THE PROPER ATTITUDE OF A DECENT THING?

)

> 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:

Code: The Hidden Language of Computer Hardware and Software
Code Complete: A Practical Handbook of Software Construction, Second Edition
The Pragmatic Programmer: From Journeyman to Master
The Mythical Man-Month
In the Beginning...was the Command Line
Secrets and Lies: Digital Security in a Networked World
User Interface Design for Programmers
Don't Make Me Think

That should keep you busy. :)

EDIT: Oh, also, you can read my other two Python books. One is on graphical games with Pygame and the other is on classical ciphers and how to crack them. http://inventwithpython.com
u/TheBigB86 · 2 pointsr/homelab

Scheduling. It may widely vary from hypervisor to hypervisor which type of scheduling they implement, but the essence is that VM's are assigned time slices of CPU cores.

Some links regarding scheduling:

http://en.wikipedia.org/wiki/Scheduling_(computing)

http://www.virtuallycloud9.com/index.php/2013/08/virtual-processor-scheduling-how-vmware-and-microsoft-hypervisors-work-at-the-cpu-level/

If you want to get an even better understanding of scheduling and other operating system concepts, I can highly recommend this book:

http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/1118129385

The book is a bit pricey, but IMO pretty much worth it (and you could resell it after you've read it).

u/[deleted] · 2 pointsr/compsci

Last term, on a whim I took an elective math course called "Introduction to Number Theory and Cryptography". The crypto didn't come til the end, but by then, with such an extensive background in number theory, it was easy, intuitive, and I understood.
We used Elementary Number Theory which I just realized is written by Kenneth Rosen (Discrete Math and it's applications). The book was great, and by the later chapters, Crypto wasn't just a list of algorithms, and oh good, they work- I actually understood it, I grokked it.

This term, I have a mandatory course in Crypto run by the CS department. It's just "here is the algorithm" over and over, with only a bit of background math proving things. We're using Cryptography: Theory and Practice, which has a lot of algorithms, and descriptions, but doesn't necessarily provide the rigorous math proofs I prefer.

u/gtranbot · 3 pointsr/learnprogramming

For an intro to general Unix wizardry, I'd recommend Unix Power Tools. It covers all the basic Unix tools, and shows how they can be used together effectively.

To be a real Unix master, you should also learn Perl. If you want to go farther and master Perl you can't go wrong with that.

Once you know the basics of Perl, get the Perl Cookbook, which has many great recipes for doing things like in your list. In fact, if I recall, that very example might be in the book; if not, one very close to it is.

I always had a hard time learning from man pages. They're great for reference once you've already got your bearings, but in my opinion these books will serve you far better.

u/BobDenver · 1 pointr/linux

I've read Open Source Licensing: Software Freedom and Intellectual Property Law. It's pretty good. Available online here.

However, also published in 2004.

u/dmbuddy · 2 pointsr/linuxadmin

I really enjoyed both of these books when I was starting out. Even now they are super helpful. https://www.amazon.com/gp/aw/d/0134277554/ref=dp_ob_neva_mobile

https://www.amazon.com/gp/aw/d/1491927577/ref=dp_ob_neva_mobile

If you don’t know Linux at all the 2nd book gives you a good overview of things.

u/Arabgunner06 · 1 pointr/learnprogramming

I would suggest Microsoft Visual C# Step by Step. I haven't read this version of the book but the 2013 edition was very well written so I would bet this one is just the same. Although it isn't directed to game development, having a solid grasp on C# will allow you to learn unity much quicker. If you have any questions feel free to shoot me a PM and I will try to help!

u/enroxorz · 6 pointsr/linux

No, and I'll tell you why. Arch isn't a horrid distro, I just don't like the Arch philosophy or mentality that a lot of the newbies have. People use Arch for the wrong reasons, mainly "to learn Linux", which kinds grinds my gears. Hell, I just had this talk with someone today so it's kinda fresh in my mind.

  • Some people think you get a "performance" gain from switching. The only distro I know that you can get that claim is Gentoo, and it's minimal compared to the hassles inherited in getting the system up and running (last time I touched Gentoo was 2005).

  • Rolling Release sounds nice until a tool that you have been using for ages goes away (ifconfig, route). I want stability and the choice to not upgrade to the latest and greatest, especially on teh server side (sarge has been keeping one of my sites up and running for ages and never had an issue)

  • "Learning Linux" is misleading. I hear this a lot, and it's malarkey. Any distro can "teach you linux". Just because your installation is a hassle doesn't mean you are a good teacher. If you want to learn how a distro works, Linux From Scratch is a way better project. Other than that Learning Linux, for the average user, should be centralized to knowing your system in a high level AND understanding your CLI and Shell

    Also, if you want to learn OS concepts, read Operating Systems Concept by Silberschatz or Modern Operating Systems by Tanenbaum, both better sources of learning what an OS does than Arch.

    My final word before I get downvoted to oblivion, just because something is harder than it should be doesn't mean it's a good educational tool. If that were true, you'd be using a BSD derivative over Arch Linux.
u/TonySu · 295 pointsr/learnprogramming

It sounds like you want to read the famous dragon book and dinosaur book. Might as well have a read through the wizard book to finish the set. Nand2tetris also comes to mind.

I will also say that you don't need to know any of this unless it's stopping you from doing something you want to do. It's a fundamental skill of a programmer to abstract away unnecessary details, if I write a query to a server and I follow the API's specs, why do I care if it's routed through a local network, sent through the internet, flown by a carrier pigeon or conveyed by a smoke signal?

EDIT:
Let me reiterate

> you don't need to know

If you want to know, then go learn it. I never said that you shouldn't know these things.

> unless it's stopping you from doing something you want to do.

If you actually have need for it, then that's when you should learn it. I had to optimise my C++ program, so I learned about C++ compiler optimisation options, copy avoidance, cache optimisation and concurrent programming. I didn't go learn all about lexers, parsers, abstract syntax trees, grammars, assembly, processor specific instruction sets, OS thread management and a hundred other topics while my code sat there unoptimised.

We only have finite time and resource, "learn everything you can about everything" is an absurdly unrealistic piece of advice. OP is struggling to develop a mental model for allocating memory in C, learning how to build tetris from NAND level up is NOT an efficient way to accomplish this task.

u/mariox19 · 5 pointsr/programming

I second Hackers by Steven Levy. I also recommend The Chip. It's not specifically about programming, but it's a great read.

As to Neal Stephenson, I realize this is sacrilege, but I don't enjoy his novels. I've tried a couple. However, In the Beginning Was the Command Line is a terrific essay.

u/IOvOI_owl · 12 pointsr/mac

I might get downvoted, but if you really want to understand how the system works you can pickup a textbook on Unix/Linux OS for beginners, just make sure it is not distribution specific. >90% of what you will read there will be applicable to MacOS. I am now going through this book: http://www.amazon.com/How-Linux-Works-Superuser-Should/dp/1593270356 You can find online if you want ;) This way you will learn not only about MacOS, but about the whole family of Unix like operating systems. I am using linux pc at work, but I have a mac at home.

u/perror · 1 pointr/cryptography

I really love 'Cryptography: Theory and Practice (3rd)' by Douglas Stinson. For me, this is one of the best introduction to the mathematical part of the cryptography.

u/miyakohouou · 1 pointr/learnprogramming

As others have said, K&R is great for learning the C language. In addition to that, Algorithms in a Nutshell is a nice reference because it has sample code in C for a lot of major data structures and algorithms, so you can see how the language is used to implement CS concepts you might already be familiar with.

I would also highly recommend one or both of Advanced Programming in the Unix Environment or The Linux Programming Interface, which will get you up to speed on POSIX.

u/gangstanthony · 1 pointr/PowerShell

if you're just starting out i recommend these books in order

http://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617291080

http://www.amazon.com/Windows-PowerShell-Action-Second-Edition/dp/1935182137

https://www.manning.com/books/learn-powershell-toolmaking-in-a-month-of-lunches

*edit: i haven't read this one, but I'm sure it's worth a look if you're interested. it's written by the scripting guy himself, ed wilson.

http://www.amazon.com/Windows-PowerShell-3-0-Step-Developer/dp/0735663394

u/leoc · 2 pointsr/programming

If you have access to Stevens and Rago at all, section 14.3 covers Unix locking well. (Johnson and Troan also has a nice Linux-centric guide.) I'm not at all a Unix pro, so mostly just summarising Stevens and Rago:

File (and file region) locking through system calls is pretty ubiquitous on modern Unix. Mandatory locking has been on Linux for a good while but:

  • it's not in the Single Unix Specification, and various BSDish Unices don't support it, including OS X 10.3.

  • it's a mount option on Linux, so it may not be available on any given mounted filesystem

  • not all Unix programs play well with it - for example, some versions of ed(1) "edit" files by unlinking the file at the specified filename and linking a new file there.
u/thehumanhead · 1 pointr/sysadmin

It's old, but I enjoyed Powershell in Action Second Edition when I was learning. It explained in depth the how/why/mechanics of PS which was important in helping me remember as opposed to "this is what you do for this" instruction.

u/Tony_T_123 · 0 pointsr/cscareerquestions

Man, I wish I could find a programming job where I can use Linux. Every place I've applied has been Windows or Mac.

Also, for a learning suggestion: check out the book "How Linux Works" it's by far the best book I've read on Linux. It takes you from total beginner to intermediate level. Just make sure you get the 2nd edition, it added a lot more stuff.

https://www.amazon.com/How-Linux-Works-Superuser-Should/dp/1593270356

u/too_many_puppies · 2 pointsr/linux

In college I took a class that used this book as the text book. I loved that class and my knowlege and love of linux/unix definately benefited.
http://www.amazon.com/Programming-Environment-Addison-Wesley-Professional-Computing/dp/0321525949/ref=sr_1_1?ie=UTF8&qid=1334773536&sr=8-1

u/rpetre · 2 pointsr/linux

Read a lot. Man pages, guides, examples, source code. Experiment. True, with only one machine you probably won't get to get exposed to, say, networking stuff (you can emulate complex networks using VMs, but you still need to know a lot to set up such an environment). Still, there's a lot of things to learn about the system just by mucking with it. Having a machine you can reinstall whenever you want helps a lot, get an old PC or laptop and use it as a test bed if you don't have a spare server, making it a webserver today, a mailserver tomorrow, a firewall the next day and so on.

Take any problem as a challenge to dig deeper and understand why. Granted, in the Google age, the solution to most problems are just a search and a copy-paste away, but getting to understand what happens with the machine and what's the most elegant way to control it takes a lot of research and practice and failures. Learning "why" is way more important than learning "how", since tools evolve and change and the manuals are always close, but knowing what to look for is a skill that takes time to develop.

Speaking of failures, try to come up with as many ways as you can to make things fail and try to find solutions to most of them. Good sysadmins understand failure and actively explore ways to prevent or handle it.

If you don't mind reading thick books, I heartily recommend Evi Nemeth's Linux Administration Handbook (pretty hands-on) and Tom Limoncelli's Practice of System and Network Administration (about the mentality and processes and non-technical stuff). You might find the latter a bit boring, since it has zero scripts and commands in it, but sooner or later in your career you'll love it.

I'll stop because I ranted too much already, but as a final word, keep in mind that SA is primarily about maintaining infrastructure that helps people, so don't get too caught up by the tech to forget that service availability comes first, shiny toys second ;)

u/kunteper · 2 pointsr/HowToHack

these will be examples / pointers. not direct "do this"es or "follow that"s. google keywords from points below.

first off id learn how to code. there are universities worth of educational content online. if you dont know how to code, id start with python. easy, simple, good scripting language. id learned it from codecademy.org back in the day. it was sufficient.

youd said you were learning linux. do that. there will be more linux to learn constantly. fiddle around. fail. figure shit out.

learn C.

you seem into networking and web stuffs. learn how computers talk to eachother. write a few clients/servers. go further and sniff the communication between them using a sniffer (wireshark maybe).

learn how to set up a network. OWN the shit out of that network, as in secure the shit out of it, be able to listen to communications, better yet, manipulate them. id even say fuck around with OpenWRT, a linux for network devices (routers, etc.). maybe set up a secondary network with an old router that you can install OpenWRT on, see if you can set it up, try to fuck with it.

set up your own web server and write a web app. in general im in favor of learning by building/doing. idk have something that works with mysql for example. see what kind of inputs become xss attacks, what kind of inputs inject sql queries, why.

learn how a computer works. learn what an operating system is, and what it does. https://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/1118129385 this is a good intro for it. why stop there, learn some good ole computer architecture, learn what a computer actually does.

(as i write this, im realizing that this looks too much like general advice for an aspiring computer engineer. so ill just go ahead and recommend you to work on being one, why not :D )

get to an okay state in knowledge about how stuff works. at that point you should learn about your arsenal. (and/or you can keep on learning). there are platforms you can practice. could set up a vulnerable vm and work on hacking into it. there are sites like smashthestack that host hacking puzzles. there should be vulnerable web apps for practicing also.

what i wrote is preeety general, but id stand by it. i dont even know what youre trying to hack, or what level of knowledge you have so there you go.

oh also GOOGLE. GOOGLE ALL DAY ERRDAY. all that above is easily googleable. figure it out.

</ramble>





u/FRedington · 3 pointsr/olympia

Somebody famous in the software development industry once said:
"The quality of a software product is directly proportional to the process used to develop it."
I think it may have been Gerald Weinberg. ICBW.
In any case, I believe this to be true.

Want to know more?
https://en.wikipedia.org/wiki/Capability_Maturity_Model
The CMM is a very heavyweight model. Big organizations, big projects.

http://producingoss.com/
Fogel, "Producing Open Source Software" is an excellent tutorial for setting up Open Source Software Development. The process scales well for shops of a few to larger projects. When using Agile methods (SCRUM for example) there are methods for "SCRUMs of SCRUMs" that scale into very large projects.
Have a look at the online book and buy Fogel's book it it suits you. Fogel has to eat too.
https://www.amazon.com/Producing-Open-Source-Software-Successful/dp/0596007590

u/icedevil6 · 1 pointr/sysadmin

First I took a few of our VBScripts and translated them to POSH. Then I read a book. Then I started automating some of our AD processes and generating reports. Then I started developing custom tools for PDQ Inventory (things like getting the creator of a computer account, getting warranty information, deleting a computer account from AD).

It all just sort of snowballed for me because once you get an understanding of what Powershell can do, you start to realize how much more efficient you can be. It was easy for me to pick up because I went to school for CS and spent plenty of time writing code, but it can be just as easy for a traditional Windows admin to pick up as each GUI operation is essentially a POSH cmdlet.

u/omfg · 3 pointsr/computing

Step 1: Familiarize yourself with C++ (yes C++, not C) from cplusplus.com. This step is free.

Step 2: Learn how to use Objective-C for iOS programming from this amazing book.

That should be all you need.

u/CatZeppelin · 2 pointsr/linux4noobs

It's a great book, many intro to Operating Systems classes use it. Although, a bit pricey (£112) they're plenty of copies that can be purchased used with a more manageable price tag.

There's also The Design and Implementation of the FreeBSD Operating System that is better served after reading Tanenbaum's primer.

u/Jeff-J · 3 pointsr/Gentoo

Books that I find very useful:

Beginning Portable Shell Scripting: From Novice to Professional

From Bash to Z Shell: Conquering the Command Line

Unix Power Tools, Third Edition

The UNIX Programming Environment

Running Linux (mine is old, but still useful)

I have bought lots of other useful books from O'Reilly.

Anything written by Michael W Lucas.

u/lqjfsf1234 · 1 pointr/cscareerquestions

Learning how to write device drivers for something like Linux is a good way to get started with the kind of low-level coding you're talking about without having to write a full blown OS from scratch.

This book about FreeBSD is pretty good too - http://amzn.com/0201702452 . It's pretty old, but apparently a new version is due out in September.

u/5HT-2a · 0 pointsr/applehelp

> HFS+ definitely still gets fragmented to hell. The OS since 10.4 defragments important files, but large hard drives can get very fragmented.

This is actually a pretty interesting subject. If you've ever read Mac OS X Internals: A Systems Approach, Singh covers it very well.

u/dmh2000 · 2 pointsr/programming

i'd like to hear a comparison of this to Steven's http://www.amazon.com/Programming-Environment-Addison-Wesley-Professional-Computing/dp/0201433079 (2nd edition includes Linux) since that book is acknowledged to be a masterpiece.

u/nbrenckle · 1 pointr/linux

Any of the OReilly books are excellent. And if you are looking to learn programming/scripting, I'd go with whatever installs easiest on your iMac, which might be OSX. Also, you can check out Linux Administration Handbook (or the general 'Unix' one) http://www.amazon.com/Linux-Administration-Handbook-2nd-Nemeth/dp/0131480049/ref=pd_sim_b_2

u/RunninADorito · 1 pointr/cscareerquestions

Here's the one I was thinking of: http://www.amazon.com/Unix-Power-Tools-Third-Edition/dp/0596003307


You don't need the book, but I like learning from practical examples and then using that as a jumping off point. If you like starting with examples for learning - this is the book for you.

u/guiltydoggy · 0 pointsr/osx

For starting, you can read John Siracusa's many articles on OS X at Ars Technica. They are both informative and entertaining and stay at a pretty high level.

To get more in depth and really in the weeds, there's this.

u/cdarwin · 5 pointsr/cpp

The first book you need is Advanced Programming in the UNIX Environment. This is the bible for socket programming (among other things).

This book is based on C. A good resource is The Indispensable Guide to C.

Hope this helps.

u/Veiocity · 7 pointsr/csharp

John Sharp's Microsoft Visual C# Step by Step is a great book. It teaches beginner, intermediate, and advanced concepts.

u/zubzub2 · 2 pointsr/AskReddit

>On a related note fuck tcsetpgrp.

Get yourself a copy of Advanced Programming in the Unix Environment, Second Edition. One of the few computer books I recommend reading.

It contains pretty concise (well, the book is big, but there's not much fluff) summaries of a lot of Unix systems stuff, including a lot of gotchas. Reading that earlier would have saved me a not insignificant amount of time on Unix systems later.

u/unSatisfied9 · 1 pointr/learnprogramming

I just found the following book, and I think it actually looks a bit better than the C# 6.0 in a nutshell book. I'd appreciate if someone could give his/her personal opinions on it.



http://www.amazon.com/gp/product/1509301046?psc=1&redirect=true&ref_=ox_sc_act_title_1&smid=ATVPDKIKX0DER

u/ossobsv · -3 pointsr/opensource

I'm a licensed attorney, I know what I'm talking about.
Here have a read if you don't believe me:



https://scholarship.law.duke.edu/faculty_scholarship/1857/

https://www.amazon.com/Open-Source-Licensing-Software-Intellectual/dp/0131487876

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=243237



You'll noticed that no licensed attorney is claiming that the GPL is irrevocable from free-takers. The most you'll get, if you pay attention, is highly couched statements. There is a reason they have a non-attorney making the blatant "GPL is irrevocable" statements: those statements are not legally defensible - they can claim the non-lawyer is not an expert in his field however.



Free licenses are revocable. They are not mutually binding agreements: they are simply permission from the copyright owner; permission that can be revocated at the copyright owner's pleasure.



"I agree to... get the thing I'm trying to contract for" is not valid consideration.

Free is not valid consideration.

Nothing is not valid consideration.

"I won't violate your copyright and will instead abide by the limitations in the license text" is not valid consideration.



You do not have a pre-existing Right to violate the copyright owners copyright. You are not giving anything up when you "agree" to these lesser restrictions (down from "you are not allowed to do anything"): you are gaining permissions.

u/TravisO · 1 pointr/csharp

Originally MS published a great beginner series called "Learn {thing} Visually" and there was a book for each subject. Instead of teaching boring fundamentals of coding, it started by making simple Windows forms which were drag and drop and slowly taught the programming. I use to buy a stack of these books (they were like $13 on Amazon) and anytime somebody had a series interest I would get one from my trunk and give them the book.

Apparently this series was replaced with the "step by step" series:
https://www.amazon.com/dp/1509301046/

u/CannonBall7 · 7 pointsr/osx

This might be a bit too deep for what you're looking for currently, but Jonathan Levin is actively writing a series of books on OS X Internals. Worth checking out and much more up to date than Amit Singh's book.

u/masterm · 3 pointsr/linux4noobs

You probably want the full package which includes having a desktop/window manager. Use a popular distro because you will need help (and a popular distro has more resources/support available). Use the terminal all the time. Read all the time. Fuck with everything

Read this: http://www.amazon.com/How-Linux-Works-Superuser-Should/dp/1593270356

u/4221 · 2 pointsr/books

It's an essay he wrote back in 1999, about 150 pages only. I just found a link. I've got it on the kindle myself. dont think its available in danish, sorry. all you teacher needs is an IBAN number though, so youll be fine. just use this as the "main" source and back the rest up with your links.

EDIT: Amazon link if you have to pay for it so your teacher will accept it as a book: http://www.amazon.com/Beginning-was-Command-Line-Neal-Stephenson/dp/0380815931

u/dklyons81 · 2 pointsr/math

When I took the class in college, we went off Stinson's Cryptography: Theory and Practice and I got a lot out of that.

I also really enjoyed Disappearing Cryptography, which is actually about steganography and watermarking.

u/archover · 2 pointsr/archlinux

> How Linux Works

Came here to say this!

This book really hit the sweet spot for me. Covered Linux in just the right balance of concepts and details. I would read a bit, then try it on the computer. Really helped!

http://www.amazon.com/How-Linux-Works-Superuser-Should/dp/1593270356

u/olig1905 · 5 pointsr/C_Programming

I believe this book would be of interest, its big and bad, but from memory it is exactly what you are looking for, infact it basically gives you all you need to know to start implementing your own fully featured shell:https://www.amazon.co.uk/Advanced-Programming-UNIX-Environment-Addison-Wesley/dp/0201433079


EDIT: Seems there is a new edition, it is over 25 years old and has been updated multiple times to cover new standards so this one is probably better, https://www.amazon.co.uk/Programming-Environment-Addison-Wesley-Professional-Computing/dp/0321637739/ref=dp_ob_title_bk

u/comrad_gremlin · 2 pointsr/gamedev

Great advice, totally agree.

I think it's a mix of experience and knowing what is possible to make. The book that helped me is Design Patterns Explained, by Allan Shalloway and James R. Trott. It's not really game-oriented, but it's about programming, so I definitely use patterns described there. They also give explanation on UML diagram and try to answer the question you've asked, "How does one design code"

u/dave84 · 3 pointsr/programming

Do you have any previous programming experience? Are you just looking to learn the core Objective-C language or do you mean the Mac OS X Cocoa framework too?

If you're coming from C++ check out this PDF.

Learn Objective-C on the Mac assumes you know some C and it doesn't really touch on the Cocoa framework, it sticks to the command line. I have found it useful.

Programming in Objective-C 2.0 seems to covers Objective-C and Cocoa and the reviews look good, but I haven't read it.

u/DEiE · 1 pointr/learnprogramming

Design Patterns is the de facto standard, although Design Patterns Explained is probably better as an introduction.

u/moustachium · 1 pointr/sysadmin

thanks! I posted this question over at the spiceworks forum and got this:
http://www.amazon.com/How-Linux-Works-Superuser-Should/dp/1593270356/
looks about right. For those coming from Unix:
http://www.amazon.com/Mac-OS-X-Unix-Geeks/dp/B0085SGHCO/

u/tbone80 · 2 pointsr/apple

Programming in Objective-C is a good explanation of the Objective-C language. It shouldn't be hard to pick up if you're familiar with C. Beginning iPhone 3 Development assumes you have Objective-C knowledge and jumps right into iPhone development explaining how to use XCode as you go.

u/random_account_538 · 2 pointsr/MLPLounge

I've been slowly working my way back through this book to make sure I still remember everything. They have a newer edition out for it, so get that if you decide to pick it up. It's not a light read, and assumes you already know a fair bit about C, but it teaches things that are crucial to practical programming.

As for GTK+, there aren't too many good books on it unfortunately - at least that I've seen yet. I picked up a "Foundations of GTK+ development" book when I first started learning it. It gets you going, but leaves out a lot of what I would consider important details for more advanced things. For example printing is only very breifly covered. If there's one thing users are going to want it's printing support..

u/zappbwr · 1 pointr/osx

Depends how good you are at C++.

Mac OS X Internals: a systems approach
Chapter 10

http://www.amazon.com/Mac-OS-Internals-Systems-Approach/dp/0321278542/

Or this tutorial/writeup:
http://wagerlabs.com/writing-a-mac-osx-usb-device-driver-that-impl

u/arewegoing · 1 pointr/csharp

I found Visual Studio C# Step by step to be a good book for people who are just starting or are even on intermediate level.

u/kevinherron · 26 pointsr/programming

Just learn Objective-C. You'll find much more material and examples and it'll be another language you have under your tool belt. It's also the de facto standard for Cocoa development, even if there are Python bindings.

This book is good: http://www.amazon.com/Programming-Objective-C-2-0-Developers-Library/dp/0321566157/ref=sr_1_1?ie=UTF8&s=books&qid=1250177866&sr=8-1

u/i_build_minds · 1 pointr/crypto

As you say: Having an M.Sc in Crypto may provide a good foundation, but what, if any, specialist qualification or knowledge it provides is questionable.

The biggest personal milestones have been reading Stinson's work, and being able to understand and synthesize results on my own within that body of work. For example, with FHE, being able to port some of the claims into CUDA.

That said, it'd be interesting if there were ways to attest to the knowledge and practice of individuals on the subject. Right now it seems almost purely reputation based.

u/tiddIywinks · 1 pointr/AskReddit

Having a bit of experience myself, I was able to loosely follow a tutorial from a book a friend had lent me (possibly this book) and create a basic calculator app in a couple of hours while reading. If you copied their tutorials without trying to understand it at first, you could have a working app quickly, but it would obviously take longer to actually learn the rules behind it.

u/RAGSdale83 · 1 pointr/sysadmin

I was introduced to this book while going through my IT Networking classes. I found that it helped me to understand the *nix environment a lot more.

http://www.amazon.com/Linux-Administration-Handbook-2nd-Edition/dp/0131480049

With that said - I want to grab the book that /u/Letmefixthatforyouyo mentioned. His description made me curious about that book.

u/smitcolin · 2 pointsr/sysadmin

Cryptonomicon or for that matter any of Neal Stephenson's early work like In the Beginning ... was the Command Line

u/randomguy186 · 2 pointsr/sysadmin

I always recommend sysadmins read The Practice of System and Network Administration.

For PowerShell, I'm fond of Windows PowerShell In Action. It's written by the language designer, so it's not for the faint of heart. It'll give you a thorough foundation in the language but you'll find no cookbook here.

u/solid7 · 1 pointr/learnprogramming

It will teach you the semantics of the posix interface and introduce you to some canonical utilities. That information is relevant today (we still use sed, make, etc..). Given the choice, I'd probably opt for a book specific to linux, freebsd, etc.. kernels alongside something like unix power tools.

u/tiiv · 0 pointsr/simpleios

Learning C first is a waste of time IMHO. The concepts of C that need to be understood for using the frameworks can be easily learned from a book like Programming in Objective-C.

Now for Cocoa or Cocoa Touch it really only makes sense to get the latest edition of any book related to this topic, as too much has changed over the last couple of years. Even a book from late 2011 would be obsolete in many ways.

Thus I would recommend resorting to online documentation, most notably Apple's Developer Website and start fiddling around with the given examples.

u/gregK · 1 pointr/programming

So you are not a reader? Do you really want to give your CC number to some guy you don't know in another country?

u/gayguy · 2 pointsr/programming

Well I replied while I was on my phone so I couldn't link it. I followed my directions and was able to find it. It is the first book when you search for Objective C 2.0. It's called Programming in Objective C 2.0 and it's written by Stephan Kochan. Here's the link

u/nsgf · 6 pointsr/programming

Same here (but also got a copy of "Advanced Programming in the UNIX Environment" by W. Richard Stevens, Stephen A. Rago
http://www.amazon.com/Programming-Environment-Addison-Wesley-Professional-Computing/dp/0321525949).

u/thethax · 2 pointsr/IWantToLearn

Take the beaten path. One of the niceties of developing for an established commercial operating system is having a central and authoritative source for documentation, rather than having to comb the web for fragments of information. There are certainly decent books available, but developer.apple.com has everything you need.

Begin at the Mac OS X Reference Library. You seem anxious to dive in, so the Cocoa Application Tutorial, available from the "getting started" section of the reference library, will be an ideal first stop.

u/a_raconteur · 1 pointr/iOSProgramming

I've only begun learning iOS and Objective-C, with very little previous coding experience (some work with Visual Basic in high school...Har har). I'm using The Big Nerd Ranch Guide to iPhone Programming and Programming in Objective-C 2.0. Both come pretty highly recommended, and are even suggested for beginners, though both seem geared towards those with some previous coding experience. Either way I haven't had too much trouble yet, so I imagine someone with expertise in another language shouldn't have issues with these books.

u/MattTheGr8 · 2 pointsr/apple

My stock suggestions:

  1. the Big Nerd Ranch book on iPhone/iOS programming (called iPhone in the 1st edition, iOS in the second... here's a link to the second edition: http://amzn.com/0321773772).

  2. the Developing Apps for iOS class on iTunes U (http://is.gd/CPqCvY)

  3. if you have never programmed in a C-like language before, I have heard that "Programming in Objective-C" is a good book, though I haven't read it myself (http://amzn.com/0321711394)
u/ndguardian · 1 pointr/csharp

I have actually been using this book to learn C# and it has been helping immensely. It even tells you where in the book to begin based on your programming experience. Big book, but it really breaks everything down and lets you know how everything works.

u/goomba870 · 2 pointsr/linuxmasterrace

> unix power tools book

This?

u/mipadi · 3 pointsr/apple

Mac OS X Internals: A Systems Approach by Amit Singh is the canonical guide. It focuses on how the operating system works, but that'll provide a lot of insight into how things work at the hardware level, too.

u/7oby · 2 pointsr/programming

If you can wait, go along with rattboi's mention of Hillegass's book (it's great!), and get Programming in Objective-C 2.0 (2nd Edition) (Developer's Library) (Paperback) if you can wait a few months.

u/too_clever_username · 2 pointsr/books

This book was originally posted as an essay on Stephenson's web site, but was later published as a 160-page paperback.

u/rez9 · 1 pointr/linux

So basically read the O'Reilly books: Learning the Unix... and Unix Power Tools.

u/pleasedothenerdful · 1 pointr/sysadmin

From what I've read on /r/PowerShell, Windows Powershell in Action is the next one to read after Learn PS Toolmaking IAMOL.

u/-zb- · 1 pointr/learnprogramming

To clarify, you mean this right?

u/jezzmo · 1 pointr/sysadmin

First :
How Linux Works: What Every Superuser Should Know
http://www.amazon.com/How-Linux-Works-Superuser-Should/dp/1593270356

Second:
UNIX and Linux System Administration Handbook
http://www.amazon.com/dp/0131480057/ref=rdr_ext_tmb



u/lattera · 6 pointsr/BSD
u/necroforest · 6 pointsr/compsci

Stinson; Cryptography: Theory and Practice is my preferred crypto book. Very math heavy, as opposed to a lot of crypto resources i see that are hand-wavy.

u/IvyMike · 21 pointsr/reddit.com

To be fair, only one of them appears to be reading the UNIX book; the other girl is reading a paperback novel.

Worse yet, it's not even a very good UNIX book. Wake me up when you've got a photo of a hot chick reading Stevens. Gotta have standards.

u/foxostro · 3 pointsr/programming

I have read [The Design and Implementation of the FreeBSD Operating System](http://www.amazon.com/Design-Implementation-FreeBSD-Operating-System/dp/0201702452/ref=sr_1_1?ie=UTF8&s=books&qid=1256868970&sr=8-1 "The BSD Book"). I agree that the operating system is much more elegantly designed than Linux. Well, it's just that this is a piss poor reason to actually use FreeBSD.

Of course, one has no trouble understanding why Apple chose to use BSD as the basis of Darwin.

u/FooBarWidget · 0 pointsr/programming

"Created its own problem"? The problem is documented in detail in two Unix operating systems books, as explained in the blog post. We didn't create the problem -- this problem is fundamental to how Unix works, and using Docker doesn't suddenly make it go away.

If you don't believe me, go read Operating Systems Concepts by Silberschatz et al, or Advanced Programming in the UNIX Environment by Stevens et al. Look up what they have to say about PID 1 and zombie processes.

Heck, even Solomon Shykes, founder of Docker inc, recognizes this problem. But it pains me that I have to appeal to authority even though the facts are out there.

u/selandro2 · -7 pointsr/unix

Is that why his paper refuting the idea that the GPL is revocable has not materialized in 6 months?

​

Is Moglen more learned about the law than Lawrence Rosen, Sapna Kumar, and David McGowan?

​

https://scholarship.law.duke.edu/faculty_scholarship/1857/

https://www.amazon.com/Open-Source-Licensing-Software-Intellectual/dp/0131487876

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=243237

​

It's always argument from ignorance with you people.

​

Tell me where is the promised paper from Moglen refuting the above? Tell me. Why did it never materialize?

​

TELL ME YOU FUCKING PIECE OF SHIT.

​

I need you to inform me, how obeying a pre-existing legal duty is valid consideration. Tell me. Explain it. I need you to inform me how NOTHING:ZERO:FREE is valid consideration. Can you. I need you to enlighten me as to how Illusory Promises are now enforceable suddenly in the USA.