Lowdown of everything I know about how to get good at programming fast

Hi there,
The reason I did this page, was, because, I am having difficulty getting a teaching job, so I want to propogate everything I know, about programming, before, I kick the bucket ,in 20 odd years time, Fast.
 I am not sure if all the links are,  "legal", free copies of books, but I verified they are genuine & if you are poor, I hope the publishers, &, book sellers, don't mind you taking a pdf. 

If you really like the books, please buy the originals, or, get legitimate copy for your library. Printing them off on an inkjet printer, will, only cost you much more money than buying originals, printer companies don't make the money off the razors, they make it off the blades,

If I get a "cease and desist" email from publishers, I may have to take some/all of the links down.

The links, i hope, will teach someone, how to program, beyond, what a typical degree in computer science will get you, so, I hope they save you college fees which might be $100,000 in the States.

Admittedly you'd still need to socialise with programmers, practice coding, read others code to learn & github will help you do that.

This page, I believe, is the equivalent of a "college degree" in very marketable computer skills. In 2004, I was earning 72.9 euro an hour, on, a long term project based purely on the knowledge, I got from these books.... enjoy.

First link  How to install Ubuntu

Ubuntu Linux distribution download

First thing do is figure out what a unix shell is, look at bash keyboard shortcuts,  & in the unix shell type "man ls" "man cd" "man pwd" "man which", figure out what a path variable is & learn bash scripting.

My coderdojo how computers work tutorials are here the first tutorial is completely self contained and requires no extra understanding, I would recommend learning a bit of C code in  Beginning Linux Programming or   C/C++ Programming lessons before tackling the stuff with gcc, for loops, variables and printf in the second tutorial.

Basic Web Programming

Beginning Linux Programming a classic by Wrox press if you know everything in this book you'll be a good programmer by reading this book alone, just install Ubuntu,

Embedded Linux Systems the book you need to look at if your going messing with a Raspberry pi

C/C++ Programming lessons

Advanced Engineering Mathematics by Stroud is a nice simple classic, Advanced Engineering Mathematics is a book by a different author which does mathematical programming techniques also.


Control_engineering have a good read of this & at least be aware that the topic exists. It's the kind of mathematics used to keep Rockets Balanced so they don't fall over when going into space & has applications in Electronics & Mechanical Engineering

Machine learning ( a very hard topic ) explained for Kids by the excellent Siraj Raval


When googling a machine learning or another advanced topic it helps to type eli5 ( explain like I'm 5 ) into the search so you don't get some clown trying to baffle you with heavy mathematics.

If you want to develop for android phones look at this, more serious low level hackers look at this.

Here is a link from github on very advanced machine learning & computer vision if you want to outy google google, you could spend the next 20 years reading if you want to become a Doctorate in computers, read my stuff first it's easier ;)

Digital Fundamentals by Floyd a true lowdown on how Digital Electronics work I had this book in college in 1986 absolutely essential if you want to become a good low level programmer.

PHP, MySQL and basic Javascript essential if you want to write a carpool website or similar.

Xilinx Student Edition  in it's current incarnation go at this if you want to become a digital hardware engineer. Learn VHDL/Verilog.

LTSpice for Linux  this is an powerful free open source electronics simulator LTSpice with loads of electronic device models it is designed to run on Windows & runs on Ubuntu via a windows emulator called Wine, install pSpice & Oregano if you want to stay open source pure. Windows version of LTSpice available here

Pro Git  git is a tool to allow multiple programmers work on the same source code at the same time and keep backups of working code, I have a love hate relationship with the program, it's absolutely neccessary for you to become proficient with at least github if you want to work with multiple programmers as a pro, it's complicated but absolutely neccessary. With the GitHub takeover is Microsoft trying to kill open source, learn the tecknologies Brad Traversy  on YouTube is teaching quickly Bootstrap 4, WebPack & Gulp come to mind, I'm not gone on, Angular yet, &, mailing list technologies, so we can erect, &, architect an alternative  GitHub quickly, thanks @NikitasFrs & CleverChuk, for your help. My opinions, on Bill Gates ,can be found here.

Reverse engineering stuff, link on quora, gnu debugger tutorial, to learn how to trace syscalls on Linux type "man strace" after that "man objdump" in a bash terminal. Another topic important in debugging or reverse engineering Linux Programs is the ELF ABI, get the ELF ABI specific to the processor you are debugging. Type "cd /proc" in a terminal and have a good look around the files and subdirectories in here by catting them ( man cat ). Type "man strings", type "strings <programname>" and "man ldd"

Brad Traversy on YouTube is excellent for advanced Web Programming

JavaScript the good parts I wouldn't recommend this book to a beginner but it covers fairly advanced programming topics

Lex & Yacc is the basic stuff you need to know to write a computer language like python ( interpreted languages are easier ), After reading this if still interested I recommend you look at the Antlr project which couples the lexical analyser & parser together in a cohesive unit which gets over some of Lex & Yaccs inability to communicate with each other,&, uses EBNF which is better than BNF.

Basics of how compilers work is okay, Principles of Compiler Design "The Dragon Book" is much more thorough but I can't find it online, I've found a lot of bad links possibly malware while searching for this so I presume the publishers want you to pay for this one, it's a classic. However, Gnu C Compiler Internals might satisfy your hunger for knowledge though on compiler design.

UML2 for Dummies I think this book was written for IBM, UML is a graphical way of describing how programs and processes work.

Design Patterns this teaches you elegant coding solutions common coding design problems, a must read.

The Architecture of Open Source Applications a fantastic resource if you need to figure out how some open source works.

Network Security Hacks  a serious book if you want to become a cyber security expert.

Starting point on developing for android mobile phones you will need to learn Java or Kotlin first it's like C++ Derek Banas has very good YouTube Android Tutorials on his channel.

Siraj Raval on YouTube has the hottest machine/deep learning tutorials if you want to work for google doing their magic watch this guy for a few years.

x64 assembly language programming introduction

Scheme/Lisp Structure and interpretation of computer languages is the  book to go for recommended by a friend Pio, & a knowledgable reddit blog reader, lisp is an obscure old programming language you'll learn a lot from used to teach unusual programming design patterns, an easier tutorial The Little Schemer is here I'd recommend that first lisp/scheme have a strange way of doing things & it's one of the most versatile interpreted programming languages ever written. From talking to people who sing it's praises, I'd almost say if the queer design pattern you've in your head can't be implemented in Lisp it can't be implemented

Programming Forth another obscure old programming language you'll learn a lot from used in Bios'es like open firmware.

GitHub a huge repository where most of the free open source software in the world is stored

Design of the Unix Operating System a great first read before you jump into the Linux Kernel

Getting to know the Linux Kernel

Linux Device Drivers a classic, essential read before going at the guts of Linux

Source code of Linux kernel the Documentation directory in the source code explains almost everything about Linux internals.

My open source projects if you want to help me out have a look at fundamental.

When you want to change career from being a Physicist to a organic horticultrualist and want to look after the earth for your children here is a highly recommended pdf of a book on Permaculture ( Permanent Agriculture ) by Bill Mollison highly recommended by Paul which covers a lot of topics about how society can be less wasteful .

I'm pretty expert in most of the subjects in this page with the exception of permaculture, if you wish to start a conversation, please leave a comment below, if you want a mentor contact me, if you wish to collaborate with me in a project let me know...

Further interesting programming reading on this site....
The joys of reverse polish notation

People in the Mac/iOS Hacking community worth following on twitter planetbeing,geohot,RedSnow_JB,comex,saurik,stroughtonsmith


Thanks and God Bless,
D.J.

About this author

D.J. Barrow is a, "semi retired against his will", Engineer, and, Linux Consultant, based in Ireland, his website is here,  he's available for mentoring.

More Pages on this site

Recommended open source software

Comments

  1. Some great recommendations here !! Thanks

    ReplyDelete
  2. Can anyone recommend great design patterns books with links, possibly design and system analysis also.

    ReplyDelete
  3. I don't know J2EE, Spring, Hibernate, or Unit Testing frameworks which in my opinion were to a degree invented because the java debugger doesn't work in a browser, can someone who knows their stuff suggest good resources for those who want to study banking style software. It's not my thing but it pays well also SAP.

    ReplyDelete
  4. Correction to previous comment, the java debugger can't work in a web server AFAIK, making unit testing a neccessary & time consuming pain.

    ReplyDelete
    Replies
    1. Sorry java debuggers can be used in a web server just googled it.

      Delete

Post a Comment

Popular posts from this blog

The joys of Reverse Polish Notation

My efforts to crack RSA, it was maddening