background preloader

Operating Systems: Three Easy Pieces

Operating Systems: Three Easy Pieces
Blog: Why Textbooks Should Be Free Quick: Free Book Chapters - Buy Hardcover - Buy Softcover - Buy PDF - Buy from EU - Buy in India - Buy T-shirt - Donate - For Teachers - Homework - Projects - News - Acknowledgements - Other Books Welcome to Operating Systems: Three Easy Pieces (now version 1.00 -- see book news for details), a free online operating systems book! This book is and will always be free in PDF form, as seen below. Can't bear to go out in public without an operating system? Donate: By popular demand, another way to support this site and its contents: donate! Another way to help the book out: cite it! Operating Systems: Three Easy Pieces Remzi H. And now, the free online form of the book, in chapter-by-chapter form (now with chapter numbers!) Related:  computerSoftware devxav_19

How to obtain and install an SSL/TLS certificat... Anyone operating a server on any scale should want a digital certificate to encrypt data between clients and services, whether for personal, office, or public use. That's a broad statement, but it holds true no matter how you slice it. With so many people accessing networks over WiFi or other untrusted networks for an increasing number of different kinds of services—calendars, contacts, Webmail, email, and so on—encryption is a must, whether via a VPN or by securing services one by one. While I recommend VPNs, they aren't always the practical, affordable, or correct solution. For remote email access, SSL/TLS is simpler and more straightforward, and you don't have to compromise on protection in the process. There can be something technically imposing about getting and installing a digital certificate, even though it has a high utility value, so I'm here to make it easier by breaking it down into steps that someone without encryption and command-line knowledge should be able to work with.

State of the JavaScript Landscape: A Map for Newcomers If you have previous programming experience but are a newcomer to frontend JavaScript development, the array of jargon and tools can be confusing. Without getting bogged down in detailed discussion, let’s take a general survey of the current “JavaScript landscape”. This should orient you sufficiently to start your journey into frontend development. Key terms are bolded. If you want to skip ahead to a repository with working boilerplate, I've put together a Github repository with my recommendations. How does client-side JavaScript work, and why use it? Key terms: DOM (Document Object Model), JavaScript, async, AJAX To write effective frontend code, you need a basic understanding of how HTML, CSS, and JavaScript fit together to create web pages. When the client (usually a browser) accesses an HTML page, it downloads it, parses it, and then uses it to construct the DOM (Document Object Model). How is JavaScript included in your page? JavaScript execution blocks DOM construction. It uses:

Inferring Algorithmic Patterns with Stack | Blog | Research at Facebook | Facebook In recent years, machine learning has made a lot of progress in different application domains such as computer vision and speech recognition. Most of this success has been achieved by scaling up existing methods to leverage the information contained in big data. In particular, models tailored for sequential prediction have shown strong results in challenging natural language problems such as language modeling. With the recent success of deep learning, one can ask how far are we from developing a real artificial intelligence as shown in science fiction movies. In our recent work, we show that certain simple sequential patterns cannot be learned by these popular deep learning approaches. We propose a novel sequence prediction approach which has the capability to learn these simple concepts. The model includes a memory structure that is learned to operate in a way to solve the training tasks. In the paper, we also demonstrate what a non-trivial example of what the model could learn.

Jason Davies - Freelance Data Visualisation Everything you need to know to install SteamOS on your very own computer True to its word, Valve has released a beta version of SteamOS, the Linux-based operating system that it will use to power its living room Steam Machine consoles. The release coincides with a lucky group of 300 public beta testers who were selected to actually receive Steam Machines to test on—the rest of us can still use the OS, but we'll have to bring our own hardware. Valve had previously recommended that users who aren't "intrepid Linux hackers" should wait a few more months before trying out SteamOS, but that's not going to stop Ars from barreling head first into the midst of things! We downloaded the OS as quickly as we could after it went live and spent some time getting it whipped into shape on fresh hardware. Contrary to Valve's warning, the install wasn't complex or scary at all—though if you've never installed Linux before, it might take you a bit out of your comfort zone. The hardware Since we didn't receive a Steam Machine to test, we set out to build our own. Lee Hutchinson

Tweaking Tweetbot - All this June 6, 2015 at 2:24 PM by Dr. Drang I bought Tweetbot for the Mac a couple of years ago with the expectation that I’d retire Dr. Twoot and just go with Tweetbot on both my phone and my computers. It didn’t work out that way, but maybe now it will. The problem has always been with the way Tweetbot looks. I know there’s a lot of support nowadays for limiting user options. I bitched about this yesterday on Twitter, The font size jump between Large and Huge in @tweetbot is too big. Honestly, @tweetbot, I’ve been choosing my own fonts and font sizes on the Mac since 1985. and got a great response from Lucifr: @drdrang defaults write com.tapbots.TweetbotMac fontSize 14 I feel kind of dumb for not looking at Tweetbot’s plist file to see if there was an entry for font size that could be tweaked with a defaults write command, but I’m glad Lucifr did and shared his finding with me. defaults write com.tapbots.TweetbotMac fontSize 17 was what I wanted. where you’ll find an entry that looks like this:

How To Set Up an OpenVPN Server on Ubuntu 14.04 Introduction Want to access the Internet safely and securely from your smartphone or laptop when connected to an untrusted network such as the WiFi of a hotel or coffee shop? A Virtual Private Network (VPN) allows you to traverse untrusted networks privately and securely to your DigitalOcean Droplet as if you were on a secure and private network. The traffic emerges from the Droplet and continues its journey to the destination. When combined with HTTPS connections, this setup allows you to secure your wireless logins and transactions. You can circumvent geographical restrictions and censorship, and shield your location and unencrypted HTTP traffic from the untrusted network. OpenVPN is a full-featured open source Secure Socket Layer (SSL) VPN solution that accommodates a wide range of configurations. Note: OpenVPN can be installed automatically on your Droplet by adding this script to its User Data when launching it. Prerequisites Step 1 — Install and Configure OpenVPN's Server Environment

Reverse-Engineering iOS Apps: Hacking on Lyft, with Conrad Kramer Sign up to be notified of new videos— we won’t email you for any other reason, ever. About the Speaker: Conrad Kramer Conrad Kramer started developing for iOS after he got involved with the jailbreak scene back in 2010 with his first tweak Graviboard. Since then, he has gotten into regular iOS development and worked on various open source projects in the Cocoa community, like AFOAuth2Client and WFNotificationCenter. Conrad now spends all of his waking hours on Workflow, an automation tool for iOS, where he works on anything from the server backend to building the complex drag and drop interactions. I’m Conrad Kramer, an iOS developer at Workflow, and I will discuss reverse engineering of iOS apps. There are two pain points when you’re doing reverse engineering. Operating tools are difficult because the tools themselves are usually not very well documented and pretty obscure. I decided to start with a test subject, Lyft’s iOS app, because it’s written entirely in Swift.

Adventures in financial and software engineering Several years ago I read an extremely interesting paper, "How to write a financial contract", by Simon Peyton Jones and Jean-Marc Eber. This paper presents a domain specific language for describing financial instruments such as bonds, options and futures. This subject is bound to be interesting to those in the financial industry; however, the ideas are explained so beautifully that the paper should inspire all programmers. Many academic papers are jargon filled and difficult to comprehend for non-experts. Peyton-Jones and Eber (and Julian Seward in a earlier version of the paper) take the time to motivate the problem and craft explanations. I am not an expert in this topic and have written this post as an 'experience report.' Get a sense of what we are talking about Before we delve any deeper, let's discuss a few simple instruments so we are not only speaking in terms of abstractions. A bond is simply a loan. A stock gives you (a very small fraction of) ownership in a company. Run a test

5 Cool Unix Hacks For Fun and Productivity — Nathan LeClaire In my workflow I am always looking for ways to be more productive, and to have more fun while developing. There’s nothing quite like the feeling of flying through a sequence of commands in bash that you know would take your peers twice as long to execute. Have you ever : Raged silently at a coworker for spamming the left arrow key to get to the beginning of their terminal prompt when they could have just pressed CTRL + A ? If so, then these tips might be for you. DISCLAIMER: There’s an admitted bias towards vim, git, and the terminal here. If you’ve worked with git for any non-trivial amount of time you hopefully have come across the notion of making atomic commits. However, what happens when you are working within one file that contains multiple unrelated changes, or changes that you’d like to split up into more than one commit in case you need to revert them separately? The -p (standing for patch) flag for git add is ridiculously useful for these kinds of cases.

One simple thing you can do to make yourself an amazing software developer | The Art and Science of Ruby You’re getting there with the technical knowledge. There’s always more to learn, but you’re on top of your game, you know how to get started and you know how to move on when you’re stuck. You’re moving fast with regards to dealing with projects. Estimating, managing tasks, dealing with requirements. You’re comfortable dealing with clients. But in this age of job insecurity, there’s still a nagging doubt. How can I get better? There’s one habit, that’s takes almost no time and is really easy to follow that makes a massive difference to your working life. It helps you learn from your mistakes. And it’s so simple, you’ll be shocked. Open your text editor, create a file for this week. Write in “Monday”. Then type up what you expect your task list for Monday to be. Today, need to work on X, Y and Z. As you work on stuff, write down what you are doing, along with the time. 9:35 Starting on X; looks like I need to do X1, X2 and X3 to get it done. 9:50 X1 completed. 11:45 Finished off Q. Related

How to create a self-signed Certificate Overview The following is an extremely simplified view of how SSL is implemented and what part the certificate plays in the entire process. Normal web traffic is sent unencrypted over the Internet. That is, anyone with access to the right tools can snoop all of that traffic. Step 1: Generate a Private Key The openssl toolkit is used to generate an RSA Private Key and CSR (Certificate Signing Request). Step 2: Generate a CSR (Certificate Signing Request) Once the private key is generated a Certificate Signing Request can be generated. Step 3: Remove Passphrase from Key One unfortunate side-effect of the pass-phrased private key is that Apache will ask for the pass-phrase each time the web server is started. Step 4: Generating a Self-Signed Certificate At this point you will need to generate a self-signed certificate because you either don't plan on having your certificate signed by a CA, or you wish to test your new SSL implementation while the CA is signing your certificate.