Monday, January 2, 2012

Education => Technology, Technology => Education

"Technology is the art of doing well enough more cheaply." - David Packard




I came across this quote while reading through a lively discussion about Khan Academy and how online educational resources should not replace universities, but supplement them. The beginning of this post borrows from that discussion. I bring up some ideas in the second half of the post, but I'm not an educator, so my idea of areas for improvement might be way off.


I think the Dave Packard quote works well with some technological "advances", e.g., factory farming. Though, I don't think it is the intention of Khan Academy, MIT Open Courseware, or any of the other online university-ware, to turn our schools into factory schools. They are intended more as supplements.


Going back to the quote, one important bit is, who determines what is "well enough" for things like education, which is a long term investment, while it seems most policymakers simply want to look good in the short term? There is also the issue of "more cheaply". Educators are already cheap (not paid as well as most professions), but there are still not enough.


What about kids who would rather watch YouTube videos of kittens, than educational videos? I.e., does this really help a broad audience, or does it simply help the already-curious and bright children learn more? One father/professor noted that even bright children would rather play xbox than read about your-favorite-theory. The same professor also noted that curiosity and motivation to learn often arrive slowly over time. Perhaps additional sources of educational-encouragement (e.g., Khan Academy) will help stir that up, but only if it can compete for children's time against other technology (e.g., video games, Facebook). 


Actually, perhaps tech-enhanced-education does not need to compete over the same share of time! Tech can supplement and improve classroom time, and leisure time can remain leisure time, and if classrooms do their job then, over time, learning becomes leisure.


For learning as leisure, there are already resources like fun podcasts, museums, puzzle games, etc., so let's focus on the classroom bit.


What are some of the inefficiencies of classrooms? I've seen University experiments with tools for helping super-large lecture halls (200 students!) conduct question-and-answers. In this post, I'm not interested in those settings but am instead interested in grade school settings with "small" classrooms.


There is currently no way for one teacher to talk one-on-one to every child in the class for long. Could tech help identify children who are having similar issues and allow a teacher to address them more efficiently?


It currently takes a lot of time for a teacher to really get to know each child and really know how to teach them. Could tech observe children over a long period of time (years!) and help identify habits of children and identify strategies for reaching out to them? It is usually only the parent that has this privilege, as teachers change every year. This could provide a dossier of each child as they move from one grade to the next.


What are other inefficiencies of the way current classrooms work?


Of course, these ideas are all flawed, but we can discuss these flaws and discuss some more:
  • Most of these skills of observing and understanding people are very human, and out of the reach of computers. 
  • The thought of observing a child, and possibly providing teachers with biases from dossiers is quite scary.
  • These ideas all talk about "observing" and "identifying" characteristics of children. How? Universities are already interested in identifying characteristics of children (or at least "aptitude"), and tests, as they are currently designed, are already controversial.
  • It might "take 10 years to really know a person". By 16 (assuming observations start at age 6), a child will almost be an adult!
What else is possible:
  • For the issue of long-term observation: Have friends, or parents observe. They are trusted (sort of?), and are already interested in knowing the kids. This is sort of like the peer feedback system at Google (but that's for big kids, and your peers aren't really your friends). Alternatively, perhaps have teachers teach the same group of kids for more than a year. I remember taking two consecutive years of math with the same teacher. The first semester was scary and the second year was fun and exceptionally clear (though the class was also much smaller that second year, and much of the material was review...)!
  • For the issue of clustering and more efficiently addressing similar issues: perhaps technology can help provide a broader set of "regular" assignments (though cheating would be an issue) and could make grading automatic. Grading automatically will at least help teachers skip the boring part of assignments and tests, and focus on where misunderstandings occur and how to address those misunderstandings. The automated grading can then also automatically provide ranks of the toughest problems and frequencies in which people have trouble. These ranks can be shared across schools and teachers and share tips among each other over a social network or (umm) mailing lists. For harder-to-automate assignments like essays, software can do the boring parts of grading, like grammar and spelling (well... we all know how good Word's grammar checker is...). I'm not sure what else natural language processing and machine learning can do with essays.

Well, "hai kow lah" (that's it) for now.

Tuesday, August 30, 2011

Batteryless Electric Cars

John Peterson wrote an interesting article "It's Time to Kill the Electric Car, Drive a Stake Through its Heart and Burn the Corpse", which provides some numbers arguing that electric cars can never become widespread because of the limited amount of battery-making resources available in the world. Last weekend, I was in San Francisco and wondered, "why can't we make an electric car without batteries"? Why can't a car be like a trolley bus, and run off of the grid, literally? Behold, the trolley car:



Some issues to be solved by smarter people:
  • The existing power lines can handle the load of the small number of buses. Can it handle the increase in load if cars became trolley cars? The load of trolley cars is also heavier than what is needed if all cars became battery-based electric cars, since batteries can be charge at a slower rate.
  • You will need to go off of the grid and onto highways, especially in sparser population areas. The trolley buses may have batteries for this purpose, but perhaps a car could just go with a combustion engine. It will be a different kind of hybrid car.
  • How to automatically reach for the power lines and connect / disconnect as needed and stow away the connectors when not in use. I'm sure the trolley buses already need to deal with this, but perhaps they have more time to do so and fewer drivers honking at their slowness.
  • How to correctly account for usage and charge costumers.
  • How to make it not ugly (the cars, and perhaps the cities).
Well, there's the idea. There is also the issue of the electric motor itself. Does that use resource-constrained resources?

Wednesday, November 17, 2010

Nicole Scherzinger - Poison / TWEWY - Twister

A bit of a pointless post, but I noticed that the beginning of Nicole Scherzinger's Poison


samples from The World Ends With You:


There is even a guy with headphones at the beginning of the video =)

Wednesday, November 3, 2010

gdb instruction traces

> gdb [exe] --batch -x debug.cmds > trace.log 2>&1
with debug.cmds containing:
[prelude for misc setup including probably "b main" and "run"]
disp/i $pc
source stepiN.txt
and stepiN.txt containing N copies of "si\n" (Anyone know of a loop capability in gdb?). I tried to use this to get a good trace of an execution that happened to trail off into oblivion (executing "code" where there is none).

Other ideas for scripts:
[prelude]
b func_you_care_about
source cont_bt_N.txt

where "cont_bt_N.txt" contains N repetitions of
c
bt
i r
...
This will let you know the contexts in which "func_you_care_about" is reached.

This can also be done more simply by setting "commands" after setting the breakpoint (see http://johnnyjacob.wordpress.com/2009/07/07/gdb-scripting-short-article-for-internal-magazine/).


Misc: Just saw a talk on LLVM's lldb. It is also really scriptable. It provides scriptability from python and the ability to evaluate pretty complex C/C++ statements once a breakpoint is reached (e.g., a for-loop with printf to look through an array). One audience member commented that you could pretty much do Valgrind with these tools, but perhaps with higher overheads. Getting good traces with multi-threaded programs may also be a problem. I tried the instruction-by-instruction "stepi", and unfortunately, the trace got stuck in a CompareAndSwap loop.

Wednesday, September 15, 2010

Mugetsu



Lots of people reading Bleach =). There are no relevant links on the front page, but if you click the trends link then you will see many relevant blogposts:



Pretty cool.