Most active commenters
  • bitwize(3)
  • jancsika(3)

←back to thread

235 points ChrisArchitect | 11 comments | | HN request time: 1.448s | source | bottom
Show context
berg01 ◴[] No.16849989[source]
I played with one back when it was just launched. Besides the innovative outdoor-friendly display it was an insanely bad experience. MIT Media Lab (and with that I mean Nicholas Negroponte) gone crazy.

The UX (both keyboard and software) was .. just awful.

replies(1): >>16850048 #
whitepoplar ◴[] No.16850048[source]
Any chance you could comment further on this? What in particular made it bad?
replies(4): >>16850102 #>>16850259 #>>16850411 #>>16850781 #
1. switchbak ◴[] No.16850411[source]
I had one back in the day, and it was the worst computing experience I can remember. The keyboard was like what you'd find on a speak-and-spell, and the system had the performance of a low-end 486 under heavy swap.

I still don't understand why the system performed so poorly, I know a lot of Sugar was written in Python, but there must have been some very fundamental problems with it. Switching to an existing lightweight X window manager was a much better (but still not good) experience.

replies(4): >>16850765 #>>16851160 #>>16852132 #>>16856103 #
2. floren ◴[] No.16850765[source]
> I still don't understand why the system performed so poorly, I know a lot of Sugar was written in Python, but there must have been some very fundamental problems with it.

Fundamental problem identified. I believe the Inferno port tended to run better.

replies(1): >>16852498 #
3. bitwize ◴[] No.16851160[source]
Sugar wasn't just written in Python. Parts of it were literally coded in the worst way possible. We're talking Daily WTF levels.

For example, the icon for each Sugar "activity" was an SVG file. When you started an activity, its icon would "throb" in the center of the screen, fading in and out. Guess how the throbbing was implemented.

That's right, it would perform string substitution on the SVG file, filling in the actual colors for macros embedded in the SVG, then reparse and redisplay the SVG. For each frame.

Had it been a simple matter of being written in Python, Sugar might've been usable. But it was shitty Python and that's what killed it.

replies(1): >>16855044 #
4. avhon1 ◴[] No.16852132[source]
The keyboard is probably a lot nicer to use if you can fit all of your fingers on it. (I usually use my IBM model M with my XO-1 laptops.) Also, the newer models are available with a chiclet-style keyboard.

As bitwize said, not only is Sugar written in Python, but it's also badly written. In one of my other comments in this thread, I mentioned the memory leak [0] which has been a problem in Sugar since 2013.

Without Sugar, the experience is better. I run dwm in debian, and it works well as long as I don't have any complicated web pages open. 400 MHz i586 and 256 MB of memory is enough to be useful. The keyboard provides ESC and F1-F12. It's just a little, weird-looking laptop with a transflective display.

5. avhon1 ◴[] No.16852498[source]
> the Inferno port tended to run better.

Cool. I hadn't heard about this! It looks like it's being actively maintained on bitbucket, too! [0]

It looks like someone else also got Plan9 booting on the OLPC [1].

[0] https://bitbucket.org/inferno-os/inferno-os/

[1] http://gsoc.cat-v.org/people/ameya/blog/2007/08/19/1_Plan9_K...

6. jancsika ◴[] No.16855044[source]
> That's right, it would perform string substitution on the SVG file, filling in the actual colors for macros embedded in the SVG, then reparse and redisplay the SVG. For each frame.

That's intriguing!

I can imagine a path to how they got there:

1. PyGTK (or whatever they were using) has methods to load and display an image.

2. A supported image type is svg+xml

3. SVG is vector graphics. Awesome! Let's use that.

4. Animation is needed, so we consider just ramping the opacity attribute, scaling attribute, etc.

5. We don't have any methods for DOM access. Oops.

6. However, we do have our loaded SVG file which is just plain text.

7. Well, we can just s/OPACITY/RAMP_VALUE or whatever and display that for our animation. That at least doesn't require a read from the harddrive for each frame. :)

Speaking of which-- I've seen developers do animation by repeatedly reading a file from the harddrive in the same process/thread as a realtime audio engine.

Edit: clarification

replies(1): >>16860727 #
7. blackrock ◴[] No.16856103[source]
As much as I like Python for data analysis, I do not understand why a very high level language was chosen to write a GUI window manager.

Was Python chosen as the technology stack by someone inexperienced in developing operating systems?

8. bitwize ◴[] No.16860727{3}[source]
I uh...I don't remember for sure, but I can't guarantee that the Sugar code didn't reload the SVG file from disk for each frame.

The whole thing was madness, all the way down. It's a wonder it worked at all.

replies(1): >>16862589 #
9. jancsika ◴[] No.16862589{4}[source]
At 24 FPS that gives you a total of 41.67 milliseconds to fetch the file from the harddrive, parse it, and display it.

The harddrive was flash memory, no? So we're probably talking hundreds of microseconds to read the file into memory. Let's say 670 microseconds for a rough guess.

That still leaves 41 milliseconds to parse and display the file.

Of course the animation is happening at an arbitrary program's load time which is probably particularly CPU heavy. But OLPC apparently had two cores, so the process controlling the SVG animation should have been able to safely hit its deadlines.

I'm going to guess that the animation was smooth when trivial consumer single-process apps were loaded and janky when something like an office application was opened.

Am I right, or was it always janky?

replies(1): >>16871714 #
10. bitwize ◴[] No.16871714{5}[source]
It was never smooth, I don't think it ever ran at 24 fps. But the throbbing was slow enough you didn't notice.

There were no "office" applications for Sugar. The closest it got were Sugarized versions of Firefox and AbiWord. The animation, as I recall, was somewhat jankier when attempting to load one of these.

replies(1): >>16872380 #
11. jancsika ◴[] No.16872380{6}[source]
I checked out a few youtube videos like this one[1].

Now I'm wondering whether the lack of smoothness was actually jank or just the choice to animate at a low frame rate.

The animation looks bad but generally uniform in its timing. So I'm guessing whoever coded that just assumed their method of animation was so klunky that they went ahead and set the delay interval to a large value.

It might have helped to use a retro-style step animation, like filling up a cup a quarter at a time where each 1/4 cup is a lighter shade of the same color.

[1] https://www.youtube.com/watch?v=cdUSpkghdA4