photo

Richard Whitehead

    Future Book Ideas

coverphoto

Future Book Ideas
About The Book

  Reviews
  Overview
  Preface
  Contents
  Comment On It
  Buy It
  Errata 


Future Book Ideas


Book Recommendations


Software Jokes


Contact Me

 

photo

 

    
    
   

Future Book Ideas

These are some ideas I’ve had for future books. Do any of these interest you, or would they interest other people you know? Please let me have your thoughts in the form below. Thanks!

How Do Digital Gadgets Work?

This would be a book for technical people, including "serious teenagers", who want to understand how gadgets work. It would be seriously technical, but written to entertain. There would be no equations, but lots of diagrams.

Examples of gadgets to be covered would be:

  • GSM telephone (including WAP);
  • DVD, CD, CDROM (including recordable CDROM);
  • Global Positioning System;
  • The internet - 56K modem, TCP/IP, the web, e-commerce;
  • Digital camera, movie camera

Examples of things that I think would be interesting to read about include:

  • The way the laser head in a CD or DVD player can track the surface of the disk and follow the spiral of dots on it, which are only a few wavelengths of light appart, while the disk is spinning and wobbling and being bounced about;
  • The way the clock on a GPS satellite has to be set to run slow because of Einstein's relativity;
  • The way your telephone manages to cover up the fact that the radio signal path is completely changing every few seconds, and has to be instantaneoudsly switched as you drive from one transmission cell into another.
This would be an adult-level book for the technically minded, not a "cross-sections" type book. It would assume that the reader was familiar with basic technical concepts and so would introduce ideas quite quickly.

Please comment on this idea.

Software: Design for Profitability

Often we read software books or go on courses, and come out convinced of the need to do exhaustive requirements capture, do the most detailed analysis and design, write clear and robust code at all times, follow the best processes, write the best documents. So why don’t we always do these things in real life - are we following inferior practices? Or is it just possible that in fact we may be following practices that are less perfect, but more profitable?

Quality is defined in terms of "fitness for purpose". If the main purpose of writing software is to make a profit, then one measure of the quality of a software product is the amount of profit it makes.

Maximum profit will usually be found at some compromise point between the approach that would deliver maximum product quality (as measured by the user) and downright hacking. Rather than feeling guilty about not always doing perfect design we should find this ideal, profitable compromise, by analysing the situation and striving to achieve the most appropriate approach.

This book would take a pragmatic look at the specific area of software design, exploring the ways in which good design can be used to make maximum profit for the organisation you work for.

Please comment on this idea.

Understanding Software Development
for senior managers

Software is a relatively young discipline, and it is changing very rapidly. It’s likely that anyone who is a senior manager has either never developed software, or did it so long ago that their experience is now irrelevant or even counterproductive.

This would be a book explaining software development to senior managers. However it would take a very unusual approach: it would get them to write some software. There are many points to get over: Why does it take so long? Why are the estimates so bad? Why are there bugs? Why is maintenance such a problem? It seems to me that the only way to understand these points is to come up against them oneself.

So I propose a book that sets out a simple programming task, and uses it to hit all the snags we come across in real life - unclear requirements, estimating the unknown, change requests, bugs etc. - by leading the reader through practical exercises, making sure they are not given too much help or they will never hit the problems (though there might be a "cheats" section as well!). The "programming" might take the form of VBA or simply of using a spreadsheet to do a calculation - it must be something that doesn't need to be purchased.

The aim is not to lecture to the reader or make excuses, but to give them personal experience to use as a reference for understanding situations that arise in software departments.

Please comment on this idea.

Mathematics For Software Engineers
(with another author)

I looked recently for a good book to brush up on my mathematical skills. I didn’t find one. There are books about mathematics, including some aimed specifically at engineers, but none of them seem both to cover the basics and also to be aimed at software engineers. So I thought: why not team up with someone whose maths is excellent, and write the sort of book that I need?

Software engineers use maths in quite a different way from other people, even from other engineers, in that we implement the mathematics in code. We don't need to see all the proofs and derivations, but we do need the equations and an understanding of how to use them. We especially value sample code, so long as it’s clearly written, well commented and bullet-proof.

This would be a very practical book, using spreadsheets and code to explain and illustrate algorithms hands-on, as well as presenting the equations. It would cover:

  • The basics - trigonometry, algebra, vectors, mechanics, calculus, complex numbers, matrices, probability - all with examples of their use;
  • Data containers - lists, trees, maps, hash tables, sparse matrices; tiling and indexing
  • Specific areas of theory - sampling theory (interpolation and extrapolation; optimum filtering), information theory (coding and compression), quantisation and noise, control theory, Fourier, wavelet and other transforms, data encryption;
  • Statistics and probability - probability, game theory, significance tests
  • Geometry - polygons & polytopes, area and overlaps, intersections and tests, convex hulls. Voronio / watershed diagrams. Motion planning; shape metrics.
  • Graphics and images - 2D and 3D line drawing; rendering; basic image processing - filtering, line detection
  • Approximations for modelling - linear approximations, interpolation and extrapolation, polynomials and splines, finite element methods, least squares fits, Kalman filtering, simulated annealing, genetic and evolutionary programming; likelihood tree searching
  • Shapes and fields - vector calculus, surfaces, shape metrics;
  • How to choose a commercial maths tool, visualisation package or runtime library.

Code would be included (in C++), which would be well commented and made to "industrial strength". The code would also be supplied on CD or downloadable from a web site. Pre-built versions (libraries and COM components) would also be available.

There would be a reference section full of standard formulae and tables, cross-referenced to the pages in the body of the book that describe how to use them.

Please comment on this idea.

Start Writing Your Own Software

Long ago when I was learning about Electronics there was a great book called "The Art of Electronics" by Horowitz and Hill. It covers the whole subject of electronics, touching on the different specialist area, taking a quite serious approach but without being boring.

I’m thinking of a similar book on software. It would be aimed not at practising engineers but at amateurs who want to go beyond the stuff they can read in magazines, but don’t want to read a pile of heavy tomes delving into every intricacy of programming in a given language. It would also be useful for people who don't know if they want to buy a particular product, such as Visual Basic, and want to see what it can do for them.

It might spend 50 pages or so each on subjects such as: Office Automation; Programming in Visual Basic; Web Sites; Databases. Along the way there would be lots of assides and hints, for instance OO could be explained as part of talking about components, which would be part of talking about VB. It would not tell you each keystroke and mouse click but would assume you can already use a computer as an operator, and now want to know a bit about writing software.

Please comment on this idea.

 

Comment On These Ideas

Please contact me at richard(at)richardwhitehead.com. I'm always interested to hear what people do and where they work!