https://www.makingsoftware.com/ Making Software Making Software A reference manual for people who design and build software. Written and illustrated by Dan Hollick. # FIG_001[ 3.5" floppy disk ] (c) 1986 Have you ever wondered how a touch screen knows you are touching it? Well, it has these layers of transparent metal electrodes embedded in the display. When your finger gets close to the screen it causes a disturbance in the magnetic field that the electrodes sense. FIG_002 Because the electrodes are laid out on a grid, they can report back the x and y co-ordinates of the disturbance to the operating system. Pretty neat. Or maybe you've wondered why we call it a Gaussian blur? When we blur an image, we look at all the neighbouring pixels and multiply them by a matrix of weights called a kernel. FIG_003 The most common type of kernel has a gaussian distribution, meaning it gets stronger towards the middle and weaker at the edges. This produces a more realistic blur without being too computationally expensive. Maybe you've always wanted to know how the pen tool works in Figma and what those handles actually do when you move them. t = FIG_004 They control the points on a bezier curve which is a cool piece of math we use to draw curves in vector graphics, like fonts and SVGs. But of course, our screens are made of pixels and struggle to display smooth curves. So we have to take these curves and figure out how to display them so that they represent the shapes as accurately as possible. FIG_005 This is called rasterisation but it's not as simple as it seems and we need a whole bunch of clever tricks like, anti-aliasing to trick our eyes into thinking we are looking at straight lines. If you've ever wondered about any of these things or if they've sparked your curiosity, then this is for you. This book won't teach you how to actually make software - it's not a tutorial or a guide but rather something more interesting than that. It's a manual that explains how the things you use everyday actually work. As everything around us has become more complicated our understanding of technology has diminished. It used to be that we needed to understand our tools deeply but today we understand them in a shallow, abstracted way. It won't make you a better designer or programmer tomorrow - there's nothing actionable in here. But knowing how things work comes in handy when you find yourself out of your depth. Or at the very least, you can pretend to be smart in front of your friends. You don't need to be technical to read this - there are a lot of pictures and diagrams to do the heavy lifting. You just need to be curious. MAKING SOFTWARE FIG_006[ cathode ray tube display ] (c) 1980 Signup for updates: I promise to only email you cool shit. Draft chapters, progress updates, sneak peaks at illustrations I'm working on. Stuff like that. [ ]Join mailing list Table of contents [v1.0] [ chapters: 8 [?] articles: 46 ] 1. Pixels and Color + How does a screen work?-+ + Touch screens.-+ + What is an image?-+ + Colour spaces, models and gamuts.-+ + Why calculating colour contrast is so difficult.-+ + Gradients and perceptual uniformity.-+ + The maths behind blending modes-+ 2. Fonts and Vectors + Drawing curves.-+ + Rasterisation and anti-aliasing.-+ + SVG Viewbox-+ + SVG paths-+ + SVG filters.-+ + Doing maths with shapes.-+ 3. 3D and Shaders + How does a GPU work?-+ + What even is a shader?-+ + Signed Distance Fields-+ + Blurs, noise and other effects.-+ + Casting, marching and tracing rays-+ + 3D projection-+ 4. AI and ML + Machine Learning vs neural networks.-+ + How an LLM works.-+ + Attention is all you need.-+ + Generating images.-+ + How AI infrastructure works.-+ 5. Compression and Data + What is a byte?-+ + Binary, hexadecimal and decimal.-+ + Entropy-+ + Lossless vs Lossy-+ + Cryptography-+ + Image compression.-+ + CRDTs-+ 6. Networking and The Web + What is a browser?-+ + Clients and servers.-+ + How DNS lookup works?-+ + Protocols-+ + Serialisation-+ + Streaming-+ + What is a cache?-+ 7. Compilers and Interpreters + How does code run?-+ + What is an interpreter?-+ + What is a compiler?-+ + What makes code fast?-+ 8. Misc + Regular Expressions-+ + QR codes-+ + How a fingerprint sensor works-+ + Quantum computing-+ FIG_007[ 3.5" hard disk drive ] (c) 2003 Common Questions NO QUESTION ANSWER Not to start with. it'll be a digital book, 01 Will this be a probably with the option to download a PDF. If physical book? there is enough interest, I'd love to do a print run but it's a bigger project. I'm not entirely sure yet. I'd love to get it out 02 When will it before the European summer this year. It's a lot of launch? work to illustrate everything so you might need to have some patience. I'm going to do a pre-order, where you'll get 03 What if I want access to the chapters that are already written. it right now? You'll get to see each chapter slowly take form as I push out new drafts. Can you write If you join the pre-order, you can help shape some 04 about x? of the books topics. I'm always looking for stuff to add but can't guarantee anything. How much will I'm also not sure yet, but it will cost something. 05 it cost? A good portion of the content will be free though, especially if you are on the mailing list. Do you offer No, mainly because I don't have the time to manage 06 discounts or any of that. I get emails everyday about it and I PPP? can't keep up. How do you By hand, in Figma. There's no secret - it's as 07 make the complicated as it looks. illustrations? 08 What font is Departure Mono. that? Signup for updates: I promise to only email you cool shit. Draft chapters, progress updates, sneak peaks at illustrations I'm working on. Stuff like that. [ ]Join mailing list current progress: ################# *** | making software | A reference manual for people who design and build software. Written and illustrated by Dan Hollick | (c) 1990 |