There is a common misconception, repeated here, that fractals are defined by their self-similarity. This is not true. Fractals are mathematical objects which have non-integral dimensionalities: that is, they exist in a space somewhere between (n)D space and (n+1)D space for some integer n.[1] The exact Hausdorff dimension, the number quantifying their dimensionality, is not in general the same for each construction. For the Koch curve, the Hausdorff dimension is ln(4)/ln(3) = log_3(4) approximately 1.2619.[2] This is because for each iteration of the curve's construction, the perimeter of the curve grows by a factor of 4 while the area enclosed by the curve only grows by a factor of 3. That makes it fill space faster than a growing 1D line, but slower than a growing 2D surface.
>There is a common misconception, repeated here, that fractals are defined by their self-similarity.
This is not a misconception. Self-similarity at all length scales is indeed a defining factor of fractals.
From that fact it _does_ follow that _most_ fractals have a non-integer fractal dimension. However it is absolutely not true that fractals have non-integral dimensionalities; for example the most famous fractal of them all, the Mandelbrot set, has an integer Hausdorff dimension of 2.
There'll doubtless be more argument about this, but I think that, before disagreeing with you, people should note that 'fractal' is not a disembodied term, but the creation of one person who has the right to define it—but who unfortunately can't make up his mind. Per Wikipedia (https://en.wikipedia.org/wiki/Fractal):
> Mandelbrot himself summarized it as "beautiful, damn hard, increasingly useful. That's fractals." More formally, in 1982 Mandelbrot stated that "A fractal is by definition a set for which the Hausdorff–Besicovitch dimension strictly exceeds the topological dimension." Later, seeing this as too restrictive, he simplified and expanded the definition to: "A fractal is a shape made of parts similar to the whole in some way." Still later, Mandelbrot settled on this use of the language: "… to use fractal without a pedantic definition, to use fractal dimension as a generic term applicable to all the variants".
(Note that the mention of dimension only requires one notion of dimension to exceed another, not that either dimension be non-integral!)
To what extent is the concept of 'dimension' here the same as in everyday experience? (or, e.g. Linear Algebra, where the number of vectors in a basis correspond to dimension. I see that concept as roughly similar to the 'everyday' concept.)
From this comment I would guess this is an alternate meaning of 'dimension' which captures one key property from the usual meaning (i.e. ratio of surface to interior space depends on dimension), but leaves out the rest.
Like is there a sense in which we can rotate onto a fractional axis or something like that?
First it's useful to understand why e.g. a Koch curve has fractional dimension. The answer informally is that it has "too much area" to be just a line, but it's "too much a line" to be a 2d figure. Just notice that its length (1D measure) is infinite (just like a square has "infinite length"), so its dimension must be >1D, but also its area) 2D measure is zero (just like a line has 0 area), so it must also be <2D.
Then if you want to make this intuition precise, you need to look into the box-counting dimension, and then the Hausdorf dimension.
There was a specific thing I was looking for in my original question which was to understand how related vs. arbitrary the shared term 'dimension' is.
I think I found an answer after browsing a few Wikipedia articles—but happy to be corrected if it doesn't sound right:
The usual notion of dimension that people think of is topological only; fractal dimension (i.e. Hausdorf dimension) is also concerned with metric properties. These metric properties are what creates the need/possibility for fractional measures.
In that case, the scenario I was considering with 'fractional axes/directions' is not implied by the fractal dimension concept: fractal dimension is dealing with new subject matter, not just an extension of the old concept to deal with real numbers.
It's a generalization of the everyday concept in an analogous way to how the reals generalize the integers. Obviously fractals exist in ordinary integer-dimensional space, but the Hausdorff (or fractal) dimension provides additional descriptive mathematical insight.
I think that's a misleading characterization. It's actually a particularization not a generalization: the ordinary notion only deals with topological properties, fractal/Hausdorff dimension deals with metric properties as well.
That's the main distinction: the old notion doesn't care about roughness or changes in measurement at varied scales since it has nothing to do with metric properties.
The generalization from integers to reals in the actual values is not indicative of the relationship between the two concepts.
Trying to explain fractional dimensions is probably not conducive to an HN post. but fortunately, 3blue1brown converted this: https://youtu.be/gB9n2gHsHN4
Which also nicely and conclusively shows why self-similarity is just a special case of things that have fractional dimension.
This is how I understood the notion of Hausdorff dimension when reading Mandelbrot's book.
Pick a stick to measure the length of the curve. As you break it into smaller sticks, you can fit them in tighter niches within the curve, and your measure of the curve's length becomes greater and greater. In the case of the Koch curve, breaking your stick in 3 means you'll be able to measure a length 4 times greater.
This is the first time I've seen the Scratch Wiki listed on Hacker News, which surprises me and doesn't. It's nice how Scratch easily supports simple projects while having a high ceiling, as noted by people making 3D projects and fractal art. That reflects somewhat in the wiki's diverse articles.
I'm a system administrator for the international Scratch Wikis. While I haven't been that active recently, I'll try and answer any questions that people want to ask. :)
Processing and Scratch are completely and totally different by the way - Scratch is a visual programming language designed principally to teach kids programming while Processing is the main language used for generative art and is used by adults more than kids generally.
It partly depends on who you're teaching. For a young audience, Scratch is great at introducing basic problem solving in a creative format. It can used for many means, including crafts and robotics. For example, at the 2016 Scratch conference, there was an exhibition of student projects that used Scratch extensions (ex: Makey Makey, Arduino) to create animated crafts. One project, a paper city, had copper strips which when touched caused various sounds to play.[0] Another project recreated robot boxing.
The CS teacher at a local high school switched to using Scratch as a casual introduction to programming, moving away from Alice (and previously, I believe, a straight jump into Java). They use it for a few weeks to begin each term. I can get their thoughts if you're interested?
There are several books, and Scratch itself provides many lessons and features for teachers, see this page: [1] At one point, Pursuitery held an introduction to coding "camp" with Scratch, and you can read about their lessons here: [2] I've had less experience with Scratch in education, so it's hard for me to comment on what materials are the most effective. However, there are educator groups that can give advice, see the Facebook group listed on [1].
If I can go on a winding tangent, and this applies stronger to elementary & middle school... I think two of Scratch's strongest appeals are its freedom and feedback. It's okay to experiment, try new things, and fail. And the debugging that occurs along the way, in a way helps students debug their own thought processes. Giving some creative leeway for students can help them help themselves. Many students who are introduced to Scratch, stick with it personally after the class ends.
In other words, it can be great to focus on teaching algorithms or concepts, but letting people learn through projects often helps make learning more engaging. It helps to show that computers are not just something you do stuff on, but are part of a broader culture. It can be another medium for self expression, as many people share art, games, stories, and other content regularly on Scratch.
A few ideas were taken from Mitchel Resnik's keynote at the 2016 conference, which talks about a mix of how Scratch is used and powerful ideas.[3]
I'll add that if you are looking at books, to make sure that they are Scratch 3 not Scratch 2 (most of the books out there are still Scratch 2).
I've got lots of experience with kids with Scratch (via my kids, and running a Code Club and CoderDojo - the Raspberry Pi Foundation has quite a few projects) and went to this year's Scratch Europe conference. As well as the advantages of being a visual programming language (so younger kids who struggle with typing don't get frustrated, and no syntax errors!), it does make it extremely easy to do visual stuff, moving sprites etc. to do things like make games which means that kids can do fun stuff very quickly.
I do wish it made it a bit easier to introduce slightly more advanced programming concepts though. You have to do a lot of stuff via broadcasting messages and cloning which gets really messy when you try and do anything complicated, and although sprites are objects, it doesn't map as nicely onto conventional object-orientation as I would like for example.
I love the idea behind blockly of bringing back structured editors to teach beginners in a way that side-steps the time waste of syntactically malformed code. And also the mix direct manipulation and indirect manipulation via coding. But the drag and click input system seems horrendously inefficient even for novice needs; it's not just super-slow to select the desired building block but also seems very frustrating to re-arrange anything; e.g. I couldn't work out a way to reliably select and move out a sub-block etc. Scratch also doesn't save to some human editable format.
Is there some more UI depth that I've missed on my first spin that allows more ergonomic usage?
Scratch is what got me into programming, and why I'm here today. It's awesome to see that it's still growing and new things are possible. Back when I started you couldn't define your own functions so you had to use a stack (and that only worked after they added arrays) or BYOB (a scratch variant where you could define functions).
[1] https://www.youtube.com/watch?v=gB9n2gHsHN4
[2] https://en.wikipedia.org/wiki/List_of_fractals_by_Hausdorff_...