Viewing Category: Geeky
After installing the pre-release version of Bad Behavior Alpha 3, I have seen the amount of spam blocked by Spam Karma 2 drop from about 3000 to 5. Wow.
I have also noticed that the website seems to have sped back up...was it possible that all that spam hammering was slowing thing down?
UPDATE June 03: A temporary lull: "There have been 1807 comment spams caught since the last digest report 1 day ago."
UPDATE June 04: 1307 comment spams (karma above -20)
UPDATE June 05: 214 comment spams (karma about -20)
However, how many comments with karma BELOW -20? Not sure.
It has been 14 years since I've wanted an Apple for its sexy hardware. I'm not talking, mind you, about Apple's industrial design (when Jobs is in charge). Nor am I talking about Mac OS X, which continues to delight me. I'm talking about the guts: the processor, memory bus, video card, and integration with the operating system.
Finally, the first Mac I could buy without feeling ripped-off on performance is here: The MacBook Pro, with Intel Inside. Glee!
Now, I am not saying that Intel Rules over PPC... the Intel architecture is rather kludgy compared to, say, the much-loved Motorola 68000 series of the original Macs. However, the Mac has been trailing PC hardware (not the OS, the hardware) for over a decade. In 1992, when the first 486-DX2 PCs because available at 2x the performance for 1/2 the price, the Macintosh has been outclassed in terms of raw speed. I should know...I was facing that decision in 1992, and reluctantly went with the PC. Full disclosure: The LucasArts game X-Wing was only available on PC at the time...that may have had something to do with my decision as well :-)
Anyway, speed still didn't matter as much because all the good graphics software was still Mac, but around 1995 things started to turn the other way when Adobe made a usable version of Photoshop (version 4) available. The rise of 3D gaming and the Internet further pushed the Mac into a game of catch-up. Great software design and a loyal user base is what kept the ball alive, not speedy hardware.
Despite all that, I've always wanted a G5 box. They just look so cool, and OS X is so sexy. But as soon as I touched the mouse and felt the lag, I just walked away and kept my money. I did succumb once and bought the cheapest PowerBook I could (a 12" 1GHz G4), and it's easily my favorite machine in terms of personality. But fast it ain't. My 1GHz Compaq Presario notebook is noticeably faster.
No more! The MacBook has a dual-core Intel processor in it (2 processors in one = faster data processing), a faster frontside bus (better cpu-to-memory speed = faster data handling) , and PCI express (quicker graphics transfer = faster screen refreshes). I imagine that some of those sluggish 3D acceleration issues will go away too, because now 3rd party vendors can incorporate portions of Intel-native hand-optimized driver code. It's all good...hooray! Mac OS X and speed. Together at last. At a competitive price. Someone pinch me.
I see that there's a new iMac too too, that's supposed to be 2x faster. The cynic in me was analyzing the ad copy on the iMac page: it sounds like with the dual-core CPU, it's of course 2x faster than the single-processor version. But there are so many fundamental improvements under the hood, I'm wondering if it's actually capable of more speed than they're willing to admit to, say, people who just bought a PowerBook or G5; sorry if that's you...it's one of the hazards of being an Apple person! And think of this: the 2x speed may be referring to emulated PPC code, not Intel-native versions of your favorite apps. I eagerly await benchmark results of a totally-native software suite. There will be dozens of announcements over the next few weeks.
Now it feels like 2006! There are new Macs! Will 2006 will be the year to switch?
My Dad has been having some trouble with his Windows PC...apparently some programs "disappeared" from his desktop under mysterious circumstances. He requested Remote Assistance, the Microsoft Windows XP feature that allows you to control a computer over the Internet. However, first we had to get Remote Assistance working. Compounding the problem: Dad lives 13 time zones away, and communication over the telephone is impossible because of his hearing disability.
I thought this would be a good opportunity to give Fog Creek Software's CoPilot a try. Like Remote Assistance, CoPilot makes it possible to control a computer over the Internet, except it uses a regular web browser to kick off the entire process and (this is important) works through firewalls automatically. Remote Assistance possibly needed some configuration on Dad's router, but since he hadn't set it up himself I was anticipating some issues.
I'd heard about CoPilot on Joel on Software; it's a product put together by the best interns Joel could find. Helping Dad with his computer was a great excuse to try out the latest from Fog Creek Software.
The CoPilot Experience
Setting up from the browser was very easy. The logistics of communicating what to do, however, still proved difficult.
Synchronizing: Some concepts, like using signals to coordinate and acknowledge action, are actually pretty geeky. Just coordinating a time when both of us would be sitting in front of the computer was surprisingly difficult, mostly because I was confused about what time it actually was in Taiwan. So I'd send Dad an email saying, "around this time let's try it, so send me an email when you're ready so I can start the connection" and then we'd miss each other. I ended up being off by an hour, or Dad would be waiting at the computer and not send me the email, or he'd send the email and I'd miss it in the flurry of other emails I get. We finally got it down after a couple of days. This could have been fixed with a quick phone call, and in retrospect we should have used that to signal. However, it's expensive to call, and it never occurs to me anymore because we can't communicate effectively via telephone in the first place. Used just as a signalling device, though, it would have saved some time :-)
Explaining: The CoPilot sign-up process requires that the person requesting assistance to enter a special code, then download a small program. This program is keyed with the special code, and allows only the helper with the same code to connect.
There were two problems. The first one was just a matter of Dad knowing that he had to download a program and then run it. Not as simple as it sounds. First of all, where does the downloaded program go? I told him it was on the Desktop, which is....what? And of course downloading a program off the Internet triggers all kinds of warnings with the anti-virus software, which doesn't make it seem like anything GOOD is happening. Eventually any sane person just loses patience and clicks OK to everything...it's no wonder that this is such a problem. Sheesh. Making matters worse was that long label of the file itself...it's FogCreekCoPilot.Exe or something like that, and it ends up being shown as FogCree... on his desktop. First we were at CoPilot.com, but now he can't find a file named CoPilot. Gah.
The second problem was that the downloaded CoPilot program does not identify which code it is using when you run it. The first code we used was for the two-minute trial, to ensure that CoPilot actually would work. It did, so I bought a 24 hoursday pass and sent Dad the new code link via email. Dad ended up using the wrong one the second time we did a connection, because he didn't know he had to use a new download. His desktop became quite cluttered with old versions of the program. We eventually get this sorted out, and he runs the right one (FogCreekCoPilot (5).exe).
After we got the program up and running, everything was OK. CoPilot is based on VNC (the source code is available, as it's open source). I could see JPEG artifacting as screen chunks were transferred over the net, but it worked. We encountered a few problems:
If both Dad and I tried to use the mouse / keyboard at the same time, we would disconnect. At least, that's what seemed to trigger the disconnect.
If I moved too many things on the screen, or caused too massive a screen update, we would get disconnected.
CoPilot is designed to automatically reconnect when the connection drops. In practice this didn't work for us. My side of the connection would display the "reconnecting" prompt, and nothing would happen except for the program entering a "not responding" state. If I force-quit the program and restarted, it would usually reconnect, and I would see a dialog box on my Dad's computer saying "The Fog Creek Copilot service can not connect because another user with your invitation code is already connected from a different computer. If you are sure that no one selse is connected, please wait a few minutes and try again." Some kind of race condition exacerbated by the long distance connection across half the world? Dad's laptop was purchased here in the US, and still has the US Version of Windows XP on it, so I'm stumped. The Testimonials page lists someone in India who had no problems, so there must be something fishy going on in Taichung...
Overall it was a usable experience, brought to the edge of frustration by the three problems I list above. Screen updates were pretty slow; Dad is on a high speed DSL line in Taiwan, I'm on Cable. His uplink speed is probably around 128-300kbps (12-30K/sec), which is going to be slow when screen-sized JPEG-encoded bitmaps are being sent back . The interactive performance between Dad's computer in Taiwan and mine here in the US averaged about 0.5 frame per second, with screen refreshes taking 10-20 seconds when a lot happened. This may not be typical for US-based broadband, but I didn't have an opportunity to try it out.
The Remote Assistance Experience
After using CoPilot to fix the immediate problems with Dad's computer, the next thing I did was install MSN Messenger, which I thought was one of the requirements of Remote Assistance. I set it up so would only see my MSN screenname, with his profile invisible.
We then worked out how to connect via the Remote Assistant Wizard built-into XP. This was fairly straightforward, with some gotchyas:
I'm using Trillian 3.1 for my MSN connection instead of the real MSN Messenger client. Trillian does not accept Remote Connection requests. Therefore, Dad had to use the "send email" function instead. This sends an attachment with a Remote Assistance "shortcut", which I can double-click to launch. Next time I'm on his computer, I'm going to nuke MSN off the machine and install Trillian instead.
When creating an "invitation" for Remote Assistance, the requester has the option of entering a password. The idea of the double password fields ("enter your password", "confirm your password") was confusing to Dad, and he entered only one password before clicking "confirm". The wizard complained, and did NOTHING to highlight the missing field. Crappy QA. The dialog could have been better design...small text just looks like background texture to Dad, and he's not in the habit of reading every bit of text on the screen. Who wants to? There's so much of it and it does a terrible job of explaining what to do. Instead it just describes what to do, which isn't the same thing. Useless!
Different generations assume different default capitalization rules for passwords. He automatically capitalized the words, because to him that seems more natural. I automatically typed mine in all lower case.
We kept CoPilot running at the same time so I could watch him. That was cool! It allowed me to watch Dad establish the remote connection from scratch. When he needed help, I'd send him an instant message through MSN.
On a side note, Remote Assistance is considerably faster than CoPilot in interactive performance. CoPilot was painfully slow at times; the update rate was on the order of half a frame per second at best. Remote Assistance could manage maybe 2 frames a second. A lot of it depends on how much screen is being redrawn, because all those bits need to be shipped back to the assisting computer; with CoPilot, a full screen refresh would take up to a minute if we didn't lose the connection. Remote Assistance seems to be a little smarter about refreshes (it's based on the mature Windows Terminal Services technology), which is where it picks up the speed advantage.
I was surprised that the Remote Assistance setup didn't have problems traversing our firewalls. While reading about firewall support for RA, I found out what the the UPnP router setting helps with automatic forwarding of ports injust this situation. I had never turned it on before. The receiving computer (the person being helped) needs port 3389 forwarded. That's a pickle! There should be a version of RA that's called Demand Help, which puts the onus on the EXPERT to handle the port forwarding :-) My Dad's router must have this UPnP feature enabled.
Is There Money in This?
Despite the issues we had with CoPilot, I like what it's capable of doing. They have flexible subscription models that allow a person to help any number of people. It's similar to a cell phone plan: buy the number of minutes you need at a certain level, then pay a per-minute rate if you use more than that. There's also pay-as-you-go, and you can choose to bill the person receiving help using either PayPal or a credit card. There's also the 24-hour day pass, which allows you unlimited use for a 24 hour period starting from time of first successful connection.
While I would hesitate to ask a novice computer user to pay a bill over the Internet, I could see using CoPilot to do virtual computer consulting and one-on-one training. You can see almost everything that the other person is doing; combined with telephone support, you could really do an effective training session without having to leave the house. Even the slow update rate is an advantage, as experts tend to type and move the mouse too fast for novices users to follow.
Unfortunately there's no Macintosh version of CoPilot; Timbuktu is probably the next most usable solution, though the version I last used had overly-complicated setup and firewall issues to work around. VNC is free, but do you really want to put Grandma through the setup process? We love Grandma! I like the idea of CoPilot's web-based setup far better: it's a clean and simple solution, once you handle the inherent lameness in downloading and running programs. For now, I'll stick with Remote Assistance for Dad because its quicker and more stable for my application, but it wouldn't have even been possible without CoPilot. That was totally worth the 10 bucks...beats the price of an international plane ticket handily!
For my birthday, I met up with some friends for Dim Sum at the China Pearl in Woburn. Normally I am a little grouchy on my birthday, but my mood quickly lifted when I saw my present: a Master Replicas ForceFX Star Wars Lightsaber.
I'd come across Master Replicas before, when I was ogling their delectable Star Trek Classic Communicator (sadly, it isn't on their site anymore). The company specializes in making high quality movie prop replicas. From their website:
“Master Replicas are a bunch of lunatics who watch too many movies, work too hard, have no lives, but make cool stuff that helps collector’s dreams come true. Word.”
The handle is made of metal, beautifully weighted and detailed. There are some plastic elements, but they're not in places where you'd be offended. There are no cheesy decals except for the labels that tell you where the on switch is. Overall it's a little light, but it is a real object.
The blade is a single piece of clear plastic with an inner luminescent coating. It's quite nice; the thickness of the plastic gives it that "iPod" look if you know what I mean. As you power it up, the blade doesn't just light-up...the blue glow illuminates from the bottom to the top. Sweet!!! When I powered it up held high overhead, the entire place quieted down. Little kids turned green with envy, and the manager came out to tell us that light sabers were not permitted out in the dining area. He admitted though that it was super cool.
The saber has all the sounds you expect: powerup and hum. For interactive effects, a sensor detects when you swing the saber, which plays the louder humming noise. There's another sensor that detects when the blade strikes something, so you get that clashing hit effect. Simply awesome.
The saber is powered by 3 AA batteries. Even the battery module is a work of art. The AA batteries are fitted into the notches on the side of the cylinder, and then the entire cylinder is placed back in the handle. It feels like you're really putting in a power cell! The position of the cell is at the very end of the handle, which I think contributes to the saber's excellent balance.
The battery cap on the end is beautifully detailed...check out the lettering! A metal ring unscrews, which allows the entire battery module to slide out.
This is simply the coolest Star Wars toy ever. Perfect for the geekus supremus in your life!
It's sitting on my desk right now in the display stand, power switch up and ready for emergency activation. The display stand is nice; the bottom has rubber feet, and there are also holes in the back of it to allow wall mounting with screws!
I shot some grainy video with my digital camera so you can see and hear the power-up effect. You'll need Flash8 player installed.
For real drama, check out this saber duel using the toys! It's good to know that Master Replicas tests these things out for real! QuickTime required.
P.S. HOLY CRAP CHECK OUT THIS ALIENS MOTION TRACKER!!!
Last night I started---finally---entering in all my QuickBooks data. It took a few hours to figure out the best way for me to enter the financial data, but once I figured out how QuickBooks was architected beneath the layers and layers of GUI, it became a lot simpler to understand. Starting over also helped, and knowing I'll be able to do some pretty cool reporting is very exciting. It's about time I got my crap together.
As I entered the various accounts, vendors, and items on-the-fly, I realized that part of the reason I'm able to deal with QuickBooks now is that I've been doing my own business taxes for about 8 years now. As a result, I have a good idea of the various expenses are, and I have a basic "My First Book of Accounting, For Ages 4-7" level of understanding regarding AP, AR, cashflow, etc. And the Tax Code starts to make a weird kind of sense when you realize that it's driven by one basic principle: if you receive a benefit, through any means, above and beyond what the government deems as the baseline, they want a piece of the action. And unless you have something to do with churches or babies, they will take their piece. Reminds me a bit of the Mafia.
Anyway, I've noticed a learning pattern in myself: I can be introduced to a new process and set of ideas once, and even if I don't do anything directly related to them, in about five years something seems to ripen and the task is easier. I actually first tried to use QuickBooks about 5 years ago, and found it confusing and lame. In the five years since, I became more familiar with relational database concepts, the idea of categorizing expenses, and the tax filing process. All these experiences have percolated together for a long time, creating a rich base that made my 2005 QuickBooks Initiative more successful. Of course, the product itself may have also improved in terms of user interface. To me, though, it still acts like two separate pieces of software: the database-driven accounting engine, and the wizards-based GUI. They don't quite mesh, because the overall principles that drive the system aren't expressed in a system view that clearly relates the two activities. But I digress...what's interesting is how some kinds of learning are akin to fermentation of concepts over a long period of time. Suddenly, you just get it.
I've experienced the inexplicable ripening of ideas in several areas. For example, my understanding of low-level computer programming (that is, assembly language) is entirely shaped by an old Apple II book called Beneath Apple DOS, a classic tome which detailed the inner workings of the core disk drive read/write/track/sector routines: RWTS. I was particularly interested in the inner workings of disk drives because they allowed me to copy game disks, back when software had protection schemes. The process of deprotecting the games was sometimes more rewarding than the game itself...very clever programming on both sides of the fence.
Initially, none of Beneath Apple DOS made any sense at all to me, and no one I knew could explain it to me. As I started to read more about computer hardware, I realized that digital electronics was similar to the children's game MouseTrap; that laid some foundation. Additional programming gave me the experience to understand how systems of data storage were implemented (data structures). Then one day, I was trying to figure out how one of Electronic Art's Apple II games loaded SO FAST---EA's games were unique in that they showed a graphics image as soon as the disk was booted, almost before you could blink. Imagine if you booted your computer and it was just ready for you with no waiting...it was on that level of amazement. I wanted to make my own version, so I started "boot-tracing" the disk. This is a technique of interrupting the computer at the moment it has loaded the first sector of the floppy disk (which always contained code for Apple II bootable floppies). Then, you can inspect the code to see what it does; on the Apple II, it was always code that loaded MORE code from the disk (hence the term "boot"...it's short for "pulling yourself up by your bootstraps"). When you understand that, you modify the process so it interrupts a little later so you can
To make a long story shorter, I got to a part where there was a lot of looping and tricky memory lookups. It eventually dawned on me that this was actually reading data from the disk drive, and it was in fact a highly-tweaked RWTS. And then at that moment, everything about disk drives came together in an enormous flash of insight...five years of study and confusion. For the first time, I really understood the genius of Wozniak.
What I'm trying to say is there are certain moments in learning that are the culmination of a long process of percolation over time. When people think of learning, usually it's in the form of a class or a concentrated burst of activity. Not necessarily, I think. Can this be actually formalized and applied consciously in day-to-day life?
Fermentation comes to mind because I am reminded of the cheesemaking process: The cheese maker starts with raw materials, which are processed under controlled conditions to guide the fermentation process until the final product is ready, ripe, and delicious. Any fact, any controlled process that takes place over a few months or longer---wine making, coffee roasting, tea making come to mind---are very much dependent on human judgment and perception. You can't automate these processes and maintain the same level of quality...when it comes to judging peak ripeness for human consumption, it takes human guidance. Our best sensors are our noses, our eyes, and our brains.
The two personal examples I gave aren't the result of a controlled process...they just happened. I'm sure that's how cheesemaking got started in the first place, then someone had the bright idea that this could be systemized into a process. So the question is: How can I take this to the next step in long term learning? Is it a viable technique? Here's my thoughts so far:
- What I'm calling "long term learning" (to coin a silly phrase: "fermentative learning") is a process of acquisition. New ideas, relations, some practical real-world know-how, and time come together to create a proto-insight. This I'm defining as a collection of ideas/relations/experience that is not quite a full insight. but may be able to link with other proto-insights that spontaneously arise. This is, I think, also an element of "the school of life".
- Everyone possesses a number of these proto-insights, but they are unable to combine because of compartmentalized thinking across social and functional lines. We've been conditioned this way from the 7th grade and up, at least here in the U.S, and it continues in our work lives. However, ideas are transportable, with adaptation as needed, across all lines. This allows more proto-insights to mingle, making the possibility for a critical-mass insight reaction to occur far more likely. And I don't mean just "assessing" or "considering" a proto-insight. You've got to really experience it for it to be useful, to see how things fit together spontaneously. Assessment causes a delay in action, which can be an experience-limiting factor. If it won't kill you just try it.
- Continuity is essential. As we live our lives, we weave a narrative about ourselves. As I grow older, I find this is more important that "what I do" or "who I am". The narrative of our experience becomes the context for our thoughts and actions, which drive the creative impulses that we all share. In the formation of proto-insights, continuity is an essential nutrient. This is my gut feeling right now; I can't otherwise justify it.
You know, continuity tends to get shattered in the educational context, at least here in the States. Up to the 9th grade, we have a single teacher who gets to know us over the year. In high school and college that officially goes away. The remaining sources of continuity are, of course, family and best friends. Then there are the special teachers you admire, mentors in real life, and so on. If you are lacking in any of these sources of continuity, it's that much tougher to self-motivate. One exception is when your OWN sense of personal continuity is so strong that it requires nothing else. Even in that case, I think alloying personal continuity with other sources makes the individual less "brittle" if something traumatic happend.
If I were to think of standard education as cheesemaking, it seems designed to make, on average, mediocre cheese because the process doesn't take the type of raw material you're getting. The raw materials are individuals of different backgrounds, interests, and talents. You now proceed to put them all through the same process. The ones that thrive on the educational system will become fine cheeses. The ones that don't mesh don't turn out so well. Now bear in mind that there are thousands of kinds of cheese, all of them delicious, that are made from different kinds of milk with different additive ingredients and aging procedures. You can't transplant the process for making aged gouda to cottage cheese. You can't substitute goat's milk for cow's milk. Even the region matters, as do available local resources. If you're not keeping an eye on your cheese as it ages, turning it every so often and brining it appropriately, you also might get a bad cheese. But still, the potential for creating great cheese no matter where you are exists.
I know I'm not saying anything new about education here...I just happen to have some nice gourmet cheese in my refrigerator right now, so I have it on the brain. But I am thinking that creating the conditions for fruitful learning can occur over the long term if you design a process to:
Seed experience with proto-insights. This is like getting the ingredients for your cheesemaking.
Remove boundaries of experience and function, at least experimentally, so the proto-insights can mingle and form new ones. As time goes by, they will start to produce significant insights. This is akin to providing the environment in which your cheeses age.
Provide continuous lifelong continuity, relevant to what you want to learn. The cheesemaker watches the cheeses develop under a careful eye...I bet the artisan cheese makers get to know each wheel of cheese under their care.
This idea seems a bit raw...I think it needs to sit for another week :-)