Try to find some people on the net, and it’s pretty hard. There are a lot of Gen Xer’s that don’t really have any footprint on the internet. So it still seems somewhat plausible to disappear. In the Star Wars universe, computing seems quite ubiquitous, yet it isn’t as “in your face” as we encounter on a daily basis. Nobody has smartphones or anything similar. I mean there was HoloNet, but that was really more of a government sponsored propaganda communications network. There wasn’t really an internet of any sort (otherwise it would likely have been easy to google the plans to the Death Star).
That’s probably why people could often hide in plain sight. The “Empire” didn’t really have a means of easily finding people. It’s not like Jedi had profiles on some community force website, or Princess Leia was posting hairstyles to Aldergram . Star Wars was has a lot of tech, but networks actually seem quite localized in structure. Data was more likely to be downloaded to a localized device than somehow zapped over a network. It goes to show that a society can be technology affluent, but limit how much it influences everyday life. We could learn a lot from this approach to technology.
The Dragon curve, is a recursive non-intersecting curve, also known as the Harter-Heighway curve or the self-squared dragon. The Dragon curve was created by NASA physicist John E. Heighway, and named by colleague William Harter. In 1960 he used paper to construct Dragon curves, through a folding process. Each added crease doubled the number of folds and complexity. By folding a sheet of paper in half, and then opening it so that the halves are at right angles, it forms an order-1 dragon. Fold the sheet twice and it forms a 2nd order dragon, etc. In general n folds produces an order-n dragon.
The dragon curve illustrated by folding paper
If a piece of paper is folded three times, then unfolded it produces a series of creases which could be labelled U (up) and D (down) (or 1’s and 0’s). The curve was popularized by Martin Gardner in his Mathematical games column in Scientific American in 1967 [1,2]. He described both the paper folding method, and a technique using a sequence of binary digits with 1’s for left turns and 0’s for right turns. Gardner described the resulting curve as resembling a sea dragon drawn from tail to snout, swimming to the right.
The geometric construction was discovered by NASA physicist Bruce Banks. It begins with a line, which is replaced by a right angle. Then at each step each line segment is replaced by a right angle of smaller segments. This is very similar to how Koch snowflakes are constructed. Many of the curves properties were first described by Chandler Davis and Donald Knuth in 1970 [3]. The curve is constructed based on a simple two-line construction.
One way of generating a dragon curve
So how can we represent the Dragon curve as a program? Well, it can be easily achieved using mutual recursion. The dragon curve can be generated by specifying the length of the edge, and the number of iterations. Then two functions are created dragonX(), and dragonY(). The algorithm below starts with invoking dragonX(). It uses a form of mutual recursion, whereby dragonX() calls dragonY(), and vise-versa. Here is a program to generate a dragon curve using Processing.
The first function drawDragon() draws the first line at level 0, uses left() to orient the first stage vertically, and then initiates the first call of the function dragonX().
Next is the function dragonX(). If the value of n is 0, the function terminates. The function recursively calls itself moving backwards horizontally one unit, rotates right by 90°, and then makes a mutual call to dragonY() which moves down one unit. Finally it moves forward by length l.
void dragonX(int l, int n) {
if (n == 0)
return;
dragonX(l,n-1);
right(radians(90));
dragonY(l,n-1);
forward(l);
}
The function dragonY() is similarly defined, except the rotation is replaced by a 90° left rotation.
void dragonY(int l, int n) {
if (n == 0)
return;
forward(l);
dragonX(l,n-1);
left(radians(90));
dragonY(l,n-1);
}
Here is the setup info for the Processing program, using a sample length of 8, and 10 iterations.
PVector loc; // current location
float orientation;
void setup() {
size(800, 800);
loc = new PVector(width/2, height/2);
background(255);
fill(0);
noLoop();
}
void draw() {
drawDragon(8,10);
}
Here are the functions which perform the graphics functions.
void forward(float pixels) {
PVector start = loc;
PVector end = PVector.add(loc, polar(pixels, orientation));
line(start, end);
loc = end;
}
void left(float theta) {
orientation += theta;
}
void right(float theta) {
orientation -= theta;
}
void line(PVector a, PVector b) {
line(a.x, a.y, b.x, b.y);
}
PVector polar(float r, float theta) {
return new PVector(r*cos(theta),r*sin(-theta)); // negate y for left handed coordinate system
}
Dragon curves with various values of n.
The curve can also easily approximated using a Lindenmayer system.
Further reading
Gardner, M., “Mathematical Games”, Scientific American, 216(4), pp.116-123 (1967).
Gardner, M., “Mathematical Games”, Scientific American, 216(3), pp.124-129 (1967).
Davis, C., Knuth, D.J., “Number representations and dragon curves”, J. Recreational Math., 3, pp.66-81 (Part 1) (1970)
There was a time of great computer scientists. Learning CS in the 80’s everyone had a basic understanding who they were – Dijkstra, Wirth, Turing, Knuth, Ritchie, Thompson, Hopper,… the list is quite extensive. These were the people who crafted the field, and gave us much of what we have today. But how many computer science students these days know any of these names?
Alan Turing (1912-1954) – A mathematician, logician, and crypt-analyst during World War II, he was the father of theoretical computer science.
Grace Hopper (1906-1992) – American computer scientist, developed the first compiler, and helped create COBOL.
John von Neumann (1903-1957) – Hungarian-American mathematician and computer scientist played a vital role in the development of the modern digital computer.
C.A.R. Hoare (b.1934) – British computer scientist who contributed to programming languages, algorithms, and operating systems, to name but a few things. Designer of the Quicksort algorithm.
Edsger Dijkstra (1930-2002) – Dutch computer scientist who made monumental contributions to programming language design and algorithm development.
Donald Knuth (b.1938) – American computer scientist and mathematician, a pioneer in programming language design, and creator of the TeX typesetting language.
Sir Tim Berners-Lee (b.1955) – British computer scientist who invented the World-Wide-Web. He created the first web browser, web server, and HTML.
Marvin Minsky (1927-2016) – American computer scientist who helped pioneer the field of AI.
Linus Torvalds (b.1969) – Finnish-American computer scientist who created the Linux operating system.
James Gosling (b.1955) – Canadian computer scientist, leader designer behind the Java programming language.
Guido van Rossum (b.1956) – Dutch computer scientist who created the Python programming language.
Bjarne Stroustrup (b.1950) – Danish computer scientist who created the C++ programming language.
Niklaus Wirth (1934-2024) – Swiss computer scientist who designed a number of pivotal programming languages (Algol W, Pascal, Euler, Modula, Modula-2, Oberon, Oberon-2, Oberon-7). Was a pioneer in computer science education.
Dennis Ritchie (1941-2011) – American computer scientist who developed the C programming language, and together with Ken Thompson the Unix operating system.
Ken Thompson (b.1943) – American computer scientist who helped design Unix, the B programming language, and helped define UTF-8 variable length character encoding.
John Backus (1924-2007) – American computer scientist who lead the team that designed and implemented the programming language Fortran.
John McCarthy (1927-2011) – American computer scientist who help found the field of AI, developed the programming language Lisp, and heavily influenced the design of the language ALGOL. Also invented Garbage Collection for memory management.
Sir Maurice Vincent Wilkes (1913-2010) – English computer scientist who helped design and build the Electronic Delay Storage Automatic Calculator (EDSAC), one of the earliest stored program computers, and also invented microprogramming.
Alan Kay (b.1940) – American computer scientist known for his work in the early development of object-oriented programming, via the language Smalltalk, and graphical user interfaces.
There are hundreds more people who played some role or another in the defining years of computer science, but it is these people who really helped shape modern computer science. The question of course is where are the notable contemporary computer scientists? I’m sure they exist, but in the CS community there aren’t many who have become well known in the CS community. The problem in CS is that we just don’t spend enough time educating our students on the history of computer science, and it’s pioneers.
Note: For the sake of brevity, I have limited this mostly to software computer scientists, as hardware is more in the scope of computer engineering. I have also not included technology pioneers.
Remember when the iPhone first came out in 2007? It was a pretty radical thing. But now it is so ubiquitous, it has just become another tool in our daily lives. It was the first really modern smartphone where navigation could be achieved by using your finger. It also put the internet into our pockets, allowing us to access the web from wherever, and helped shape social media a we know it today. It didn’t have the highest resolution camera at 2MP, but the phone had a huge impact on the market. Those first few years were the glory years of apps, new games, new applications, until the bottom eventually dropped out of the app market.
Lots of things have changes in the intervening years. iPhones have become a little larger, with better screens, better and more cameras, and increased memory. But better apps? No, there aren’t that many really good apps these days, and good apps often become obsolete when iOS is upgraded, because the company went defunct, or frankly just doesn’t care about the app anymore. Initiating a new iPhone is easy these days, and all data/apps are pulled across from an old iPhone like magic. But how many of us still have an iPhone full of old apps? A lot. Then you begin to question what we actually use iPhone’s or any smartphone for these days?
Most people still use the iPhone as a phone, but I don’t imagine that often. Here are my thoughts on use (and this is likely largely dependent on demographics):
Social media
Messaging
Photography
Web-surfing
Specific applications, e.g. banking, weather
Music
The iPhone has in some respects become a truly mobile computer. But not really one that is evolving to any great extent. Despite all the advances, the biggest bugbear of iPhones, or any mobile device for that matter is battery life. Phones have to be plugged in every day, or you have to carry a battery pack along to ensure enough juice when vacationing etc. It’s one of the reasons that an iPhone makes a terrible travel camera (it’s okay as a secondary camera, but not for primary use). It’s one of the reasons that smartphones will never replace dedicated digital cameras. With the current state of batteries, it’s unlikely anything will change anytime soon. The only way to get longer battery life is to have a larger battery.
We carry our smartphones with us everyday, to be without it is like missing a limb. Although drive to somewhere with no cell coverage (those places still exist, particularly in vast places like Canada) and suddenly the functionality of your smartphone diminishes tremendously – no web, no GPS, no nothing. Why do we have such a reliance on these devices? In many ways it is because our world has become too electronic. It is easier to pay for a parking space with an app, it is easier to find out where to go with a GPS mapping system, it is convenient to take photographs (even if they really aren’t the best), it is easier to find things via the web, and it is easier to use a digital credit card to pay for things.
People wonder how we use to survive, but the world was much less complicated 30, or even 20 years ago. Here’s a tip though, regardless of where you are travelling in a car, always car a paper map with you. Just because we live in the age of data doesn’t mean the iPhone, or the information it peddles is infallible.
I love reading nonfiction books, but the ones I am usually very weary of are those written by academics. Now I’m not going to throw all academics under the bus, because some can certainly write, but many only write from the perspective of having an academic audience. There are some who write non-fiction books for a general audience that just don’t read well. Now these books have a pretty good tell-tale – at the end of the book there is often a large bibliographic section full of notes, the book almost becomes a very large academic paper (sometimes there are copious footnotes as well). Now in a non-fiction book, I have no problem with providing notes on topics discussed, and providing the reader with “further reading” should they be so interested, or perhaps a link to the source of some vital piece of information. It is when nearly everything written has a citation that it becomes a problem.
Academic writing is often hard for people to read, because it is often not written in a style that makes it the least bit interesting. Maybe this is down to the fact that academics don’t read enough non-academic material, or perhaps in disciplines like STEM, they were never taught to write in anything but a staid fashion. Or perhaps use non-conventional words like staid – it would have been better if I had used written stuffy instead. Ask a first year student to read an academic paper of some sort, even on a benign topic such as food history, and they will often baulk at the task, explaining that the article was boring to read. Yes, it likely was. Like in all walks of life there are people who are good story tellers and others who can string a series of words together int a sentence, but who cannot write a convincing story.
One academic whose writing I greatly admire is food historian Annie Gray. Ms Gray can’t write books fast enough for me to read. That being said, you are more likely to find good writing from humanities academics, probably because many have exceptional writing skills. STEM students are never taught to write much beyond scientific things as undergrads, and never really learn how to write. Ever read a scientific journal paper? They are on the whole pretty boring. The more degrees people get, the more their writing becomes pigeonholed into being pretty monotonous. Humanities profs also tend to actually write books throughout their careers, and perhaps the broader their audience the better? STEM academics very rarely write books, because career advancement is all about writing journal papers. That’s not to say that the humanities are perfect. In the past few years I have glanced through a couple of books on food history that had titles that implied they were worth reading. But both were uber heavy on referencing, and lacked flow, making the books far to formal for the interested reader (almost like a thesis).
This is the one thing I always disliked about academia – the computer science articles are often super boring to read, with the likes of physics and chemistry being even worse. It’s no wonder the average person doesn’t understand what goes on in academia. It’s one of the reasons I started blogging. Because writing blog posts allows me to write in my style of writing, rather than the style expected by some publisher (or heaven forbid some self-absorbed “peer” reviewer). It also allows me to express things that I want to express, rather than touting someone else’s standard way of thinking about things. Personally, one of the worst tasks one has to perform in academia is reading other people’s work, either peer-reviewing papers, or heaven forbid reviewing a thesis (these have become progressively worse over the past two decades, as writing skills have declined).
At the end of the day, the best writers are often those with little or no formal training. They just write. Some are natural writers, others hone their craft over years of practise. But as I have said before, good writers are also prolific readers, as writing is not a craft that exists in a vacuum. If you don’t read anything, then I doubt you will ever become a good writer.