Thence to the butteries!

No comments:
I like making toast on the stovetop - you can use the warm pan to melt the butter that goes on the toast! I wonder, though, how many children brought up in the age of toasters have ever done it this way. Or how many have ever boiled water in a teakettle.

I have a very small kitchen and very few appliances. Here are some of the things I've done away with:
  1. Microwave. Just about the only thing I miss is reheating rice and pasta. What amazes me the most is how amazed people are when I tell them I don't have one.
  2. Toaster. Turns out this just doesn't do as good of a job as the stovetop.
  3. Coffee maker. I live within walking distance of a coffee shop that makes better coffee than I ever could. If I need something at home I make tea.
  4. Garbage disposal. Ok, I kind of miss this one. However, one beneficial side-effect is that my trash goes out almost every day, keeping my kitchen nice and tidy. It also makes my trash really, really nasty which prevents the alley scavengers from digging through it too much.
  5. Dishwasher. I really miss this one, actually. I don't like doing dishes at all.
  6. Counter-top blender. I use a hand blender, which does a better job on smoothies and is easier to clean, to boot.
Looking over these discarded items, it's interesting to note that they all run on electricity. So I'm probably saving money and the environment along with space and ownership headache.

I will note, however, that teakettles do seem to encourage drinking more than just one cup of tea. I'm not sure if this is a good or bad thing yet.

(I also love the fact that my apartment came with a quite serviceable four-burner gas range, with a smallish stove underneath. Gas rocks for real cooking, and the small stove is a huge benefit in terms of time - a small stove heats up much faster than a large one. I kind of like the soft "wooshing" sound it makes, too. :)

Extra credit to the person who knows where the title for this post comes from.

U.S. is now an "endemic surveillance society"

No comments:
[ramble alert: needs an edit]

This post has three parts. First, a troubling report from Privacy International. Basically the US is just as bad as China and Russia when it comes to protecting liberty and privacy. However, I must really keep in mind that this is the internet, and Privacy International could very well be a lonely fat and sweaty individual with PowerPoint skillz and too much time on his hands. It's certainly not a source I've heard of before.

Second, I found this article via Digg. Maybe there really is wisdom in crowds.

Third, the problem with getting people riled up about privacy is the abstractness of it, and by far the most frequent thing I hear is that "well, I don't have anything to hide. Do you?". So let's take a stab at making the risk more concrete:
  1. privacy is important because if it can be abused it will be abused. You don't have to have done something wrong; they'll make something up or interpret the facts in a negative light.
  2. privacy helps keep power decentralized. another way to put it if that's too abstract: privacy protection keeps nameless thugs out of your life. You may still have thugs in your life, but they'll at least have names and you'll know where they live!
That last point is worth exploring. One privacy principal I like to live by keeping information parity: I should know as much about you as you do about me. And this should apply to individuals, organizations, and governments.

I also like the "no gossip" rule. You should have a chance to speak for yourself. If you come into my life with a big long rap sheet, and I believe it, then you're starting off down at the bottom and that's not fair to you.

I think that people who move into a community should introduce themselves and become part of it. I would support city laws that forced renters and new owners to attend the occasional community BBQ. (Most criminals, especially the violent ones, are unintelligent, shady people who would HATE to meet their neighbors.)

Maybe the same approach could be applied at airports. Instead of asking people to come in 2 hours early to wait in line, have them come in 2 hours early for a meet and greet with their fellow passengers and the flight crew. Have people vote on who seems shady, and have the shady ones searched (along with some random ones.). Rely on people's intuitions and sense of self-preservation.

Regarding the immigration thing, I just don't get it. Let em all in! I didn't even realize we had limits on that. When did that start?

Anyway, here are the key points about the US:
  • No right to privacy in constitution, though search and seizure
    protections exist in 4th Amendment; case law on government searches has
    considered new technology
  • No comprehensive privacy law, many sectoral laws; though tort of privacy
  • FTC continues to give inadequate attention to privacy issues,
    though issued self-regulating privacy guidelines on advertising in 2007
  • State-level data breach legislation has proven to be useful in identifying faults in security
  • REAL-ID and biometric identification programs continue to spread without adequate oversight, research, and funding structures
  • Extensive data-sharing programs across federal government and with private sector
  • Spreading use of CCTV
  • Congress approved presidential program of spying on foreign
    communications over U.S. networks, e.g. Gmail, Hotmail, etc.; and now
    considering immunity for telephone companies, while government claims
    secrecy, thus barring any legal action
  • No data retention law as yet, but equally no data protection law
  • World leading in border surveillance, mandating trans-border data flows
  • Weak protections of financial and medical privacy; plans spread for
    'rings of steel' around cities to monitor movements of individuals
  • Democratic safeguards tend to be strong but new Congress and
    political dynamics show that immigration and terrorism continue to
    leave politicians scared and without principle
  • Lack of action on data breach legislation on the federal level
    while REAL-ID is still compelled upon states has shown that states can
    make informed decisions
  • Recent news regarding FBI biometric database raises particular
    concerns as this could lead to the largest database of biometrics
    around the world that is not protected by strong privacy law

Building FireFox

No comments:
Found a good HOWTO on building FF on Windows [update: don't use this page. Use this one instead], but that document is a bit out of date and needs some updating. In particular:
  1. Better to download a tarball of the source rather than do a CVS checkout. Note that the tarball includes CVS meta data so if you want to get updates later, you can. This reduces load on the mozilla servers (good for them), and is a fast way to bootstrap good for you).
  2. .mozconfig is optional - and the parameters have changed significantly since that document was written, and they no longer work.
  3. You need Cygwin, but you need to make sure Perl, Python, and Make are present. And possibly more stuff.
be careful noto to save in PC format as make doesn't like CRLFs.

One bummer about this build is that it spends about 10 minutes doing environment checks. I bet there's a way to skip it, but I don't know what it is yet (probably setting correct build options). This wouldn't be so bad, except that the loop is {run build, get error, fix dependancy, repeat}. Every iteration gets you a bit farther, but it takes a lot of time. (Personally, I find solace in blogging about the experience while I wait.) A nice touch would be if make could remember all the checks it did last time it ran.

The HOWTO above very wisely warns the user that it probably won't work right the first time. But it should add that it probably won't work right the 2nd, 3rd, or 4th time either. :)

Things I had to install (or fix):
  1. make (cyg)
  2. bad options (edit .mozconfig)
  3. python (cyg)
  4. makensis (skip: --disable-installer)
  5. iconv (a character conversion library. at first I added C:\bin\xampp-1.6.4\apache\bin to build path but that didn't work; I read the gnu page and noticed it's probably called libiconv in cygwin. added the "dev" version, and that worked)
And at this point it's actually generating more makefiles, which is a start, I guess. I'll be really happy once it starts actually compiling stuff. :)

Getting this build to work reminds of me of a nice little puzzle game I ran into yesterday called "Thief" that basically dumps you into a puzzle with neither explanation or context. You just have to figure it out. I kind of like that genre of game.

While the build runs, I ran a search to see if anyone has built FF with the Eclipse CDT. The best link I found was from over 2 years ago, and the short answer is "not really". For a FF build I might try something like Pulse with only the single project in the workspace. (Holy crap I'm the 5th result for "genuitec pulse".)

(Ooh and now gcc is getting called, and it's not puking! Cool!)

Anyway, so yeah a stripped down, shiny new Eclipse 3.0 with just the CDT installed, a workspace with just one monster project.... Sounds to me like the experiment should be tried again.

(OMG it looks like the build is doing a depth-first traversal of a tree of about 6000 files, building a command line and then calling gcc on each file. I mean, whoah.)

Sigh. I should have known. 5 hours later, the build failed. Here's the output:

Creating .deps
/cygdrive/c/home/josh/moztools/mozilla/build/cygwin-wrapper /cygdrive/c/home/josh/moztools/bin/nsinstall -m 644 /
e/c/home/josh/moztools/mozilla/xpinstall/cleanup/InstallCleanupDefines.h ../../dist/include/xpinstall
make[5]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall/cleanup'
make[5]: Entering directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall/stub'
Creating .deps
make[5]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall/stub'
make[4]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/xpinstall'
make[4]: Entering directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/security/manager'
/usr/bin/make -C /cygdrive/c/home/josh/moztools/mozilla/security/coreconf MAKE="/usr/bin/make -j1" -j1 CC="/cygdr
ome/josh/moztools/mozilla/build/cygwin-wrapper cl" SOURCE_MD_DIR=c:/home/josh/moztools/mozilla/firefox-objdir/dis
c:/home/josh/moztools/mozilla/firefox-objdir/dist NSPR_INCLUDE_DIR=c:/home/josh/moztools/mozilla/firefox-objdir/d
lude/nspr NSPR_LIB_DIR=c:/home/josh/moztools/mozilla/firefox-objdir/dist/lib MOZILLA_CLIENT=1 NO_MDUPDATE=1 NSS_E
CC=1 BUILD_TREE=c:/home/josh/moztools/mozilla/firefox-objdir NS_USE_GCC= NS_USE_NATIVE=1 OS_TARGET=WIN95 USE_DEBU
make[5]: Entering directory `/cygdrive/c/home/josh/moztools/mozilla/security/coreconf'
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ warning: overriding commands for target `c'
../coreconf/ warning: ignoring old commands for target `c'
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ warning: overriding commands for target `c'
../coreconf/ warning: ignoring old commands for target `c'
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ warning: overriding commands for target `c'
../coreconf/ warning: ignoring old commands for target `c'
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ warning: overriding commands for target `c'
../coreconf/ warning: ignoring old commands for target `c'
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ warning: overriding commands for target `c'
../coreconf/ warning: ignoring old commands for target `c'
../coreconf/ target `c' doesn't match the target pattern
../coreconf/ warning: overriding commands for target `c'
../coreconf/ warning: ignoring old commands for target `c'
../coreconf/ *** multiple target patterns. Stop.
make[5]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/security/coreconf'
make[4]: *** [.nss.cleaned] Error 2
make[4]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir/security/manager'
make[3]: *** [export_tier_toolkit] Error 2
make[3]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir'
make[2]: *** [tier_toolkit] Error 2
make[2]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/home/josh/moztools/mozilla/firefox-objdir'
make: *** [build] Error 2

I may need to contact the developer list or google groups for this one. I feel strangely unmotivated.

9pm After dinner and a little nap, I feel better about the whole
situation. I did a little searching, and I'm not the only one with this
problem. Apparently the culprit is make, and I need to go back to v
3.80. Having this problem actually pointed out a very nice HOWTO from Mozilla itself which is much better than the HOWTO I started off with. Not quite sure how I missed it....

Pleasant voices

No comments:
This isn't about singers, it's about talkers. There are some people who's voices are almost hypnotic. It's a real gift. I've been lucky enough to meet a few of them. I really like the quirky hippy sort, as long as I avoid listening too closely to the content of their words. What is 'pure potentiality'? What is 'collective consciousness'? What is the allure of alliteration to these happy hippies? :)

I dislike jargon; I don't care if it's spiritual or scientific. People hide their ignorance behind jargon. That's why I don't like words when it comes to spiritual stuff. Words are hard enough with scientific stuff - when applied to the spirit, it always comes out sounding like nonsense. "the mass of the body which we think of as hardened mass is really just potentially. what you have is different forms of energy moving in different patterns. what we physically are is mostly potential, space, and only a part of us is being expressed." I kind of get what he's saying, but, not really.

I also dislike the way such people seem to emit all kinds of generalities about the natural world, but would be completely unprepared to back up any of their vague assertions with specific examples. This is especially bad when new age teachers try to pull science into their spiritual teachings. Scientists mean something very specific when they use certain words, and what they mean can always, in principle, be broken down into common sense experiment. A good example is the word "energy". Wow, what an overused word by new age gurus! That and "existance", "field", "consciousness".

My advice: Just meditate. Leave words behind. Appreciate these entrancing guru voices for what they are, hypnotic and soothing, but take the journey yourself. You'll experience some great things which are very hard to describe. But they don't need to be described - what good does it do the listener or the speaker?

(I ran across a nice voice on "Enlightenment Radio" in iTunes - the voice belongs to Steve Sadleir. I love the unselfconciousness with which he says such strange things. Such a voice that also had intellectual rigor would be fearsome indeed!)

(Oh dear, he's now saying that oxygen is he's basically using the phlogisten theory of oxidation/combustion, which has been out for a few hundred years. If you want a physical analogue to prana, then it would probably be ATP, or, more generally, the tendency of an ordered system to release heat when becoming more disordered. Come to think of it, the laws of thermodynamics are so singular that they are basically religious/spiritual in nature anyway. :)

Web 2.0, Linux Kernels, and Building FireFox

No comments:
How about a system where people collaboratively describe the components of their PC for fun (this would especially nice for the anandtech/extremetech/pcgamer crowd). But then this data could be fed into a service that creates custom kernels for people and/or bootable mini distributions maxed out for your machine without all the driver dross in a typical distro. (Of course, this would also be a nice place, like Visual History, to hang other meta data off of, perhaps even organize Linux driver projects like this one or this.)

(This occurred to me as I was looking testing LXR with Kernel sources, and realizing how much of Linux is actually "just" device drivers - 99% of which you don't need ever, and 99.9% you don't need to bootstrap to a system that can download what it needs. The idea also dovetails with an earlier idea to wrap common unix utilities in an easy-to-call document that can autogenerate UIs. That would possibly compete with Webmin and Cpanel, but I haven't written that idea up yet, at least not publicly :)

BTW if you want to build FireFox 3b2 get the sources here. Wow it's 220M uncompressed! How on earth do they compile it down to like 6M? I don't know what it is about this tarball, but it's taking even a fast archiver like 7-Zip like 30 minutes to expand all the files. Weird.

Idea: Toward Better Browser History (and bookmarks) - Visual History

No comments:
Consider a UI where, when you navigate, you see a quick, translucent graph of the sites you've visited overlaid over the browser content window. You get the option of clicking one of these ghostly icons. When you hit the back button, take a different path, a new "branch" is added to the tree. Over the course of seconds, the graph fades away. Call it "Visual History".

The data (your navigation tree, or "Visual History") could be stored locally, or shared, perhaps as simple HTML with some JSON meta-data. Sharing would be as simple as posting some HTML/JavaScript somewhere.

This would be the natural place to hang other meta-data, such as date of last visit, how many times you've visited, whether you "dugg" it, tagging (bookmark tagging is a nice feature of FireFox 3.0!) Of course, some this information probably wouldn't be very useful shared, and so would be elided on output.

I see this data structure as being "seeded" passively, and then actively maintained, perhaps by collaborators. It would be a visualization of some of the same things that are being done by human powered directories like But instead of lists of things, you get graphs, with lots of juicy meta data, etc.

The thing I really like about this idea is that it scales from something you could personally use all the way up to something everyone could use. It even has both passive and active data accumulation features, which is great.

I've always thought history and bookmarks lost a lot of information - yes, that URL bookmark or history entry is quite useful and wonderful, but how did you find it? That's perhaps even more important, as gateway sites tend to be used more than destination sites, and are somehow easier to forget in light of the 600lb Goorilla (heh, just made that up!). Indeed, if such a system got popular I think people would use specialist gateway sites and search more often than they do today where we all just "Google it". The marginally better results we get elsewhere just isn't worth the inconvenience of remembering another URL. For now. And anyone who knows me knows that I think concentration of power is never a good thing.

In a small related note, you may be noticing these little popups that preview a link. It's a handy, if somewhat superfluous thing which will probably go away in time. But you could present these "super-bookmarks" in a similar way, and that would be useful. I mean, the ideal client would be a browser addon, but you could get a lot of milage out of the data even without the addon.

[Update: one other big reason this needs to be done, memory. Sometimes I can't remember a site, but I might remember how I got there.]

Gmail on the Desktop - let's fix contacts, too.

No comments:
In an earlier post I mentioned the desire to run Gmail on the desktop, potentially in offline operation. This would have the added benefit of being able to use Gmail's contacts in a more useful way (try as I might, Gmail's contact management remains completely unusable). I think if I did something with Eclipse I might call it "Penumbra". Heh.

Dealing with problematic businesses.

1 comment:
Summary: In April I saw a doctor for some minor thing. I get a voicemail 4 months later: turns out under-billed me at the time of service for my copay by $15 and then added $95 in putative fees, and sent me to collections for the grand total of $110. Thinking there must be some mistake, I tried resolving the matter four times via phone, letter, and in person, and they would not be reasonable and withdraw my file from collections and settle the matter for the original $15. In this post, I detail the circumstances of the problem, the concerns I have with this business, consumer interaction with businesses in general, present an analysis, and lay out a potential plan of action. I hope that the analysis and plan will be useful in other contexts and perhaps other people as well.

(The good news: it turns out we consumers aren't quite as helpless as we think!)

The whole story (feel free to skip to Analysis):

Once upon a time in April of this year...

...I had a bee-sting on my big toe, it hurt, and went to see the doctor. I had never been to this particular doctor's office before, but they were local and convenient (I actually live on the same street within walking distance). They are called Seal Beach Family Medical Group. I won't link to there site for reasons that will become clear.

I waited for 2 hours to see someone - par-for-the-course at urgent care, I suppose. The medical care itself was adequate and brief. That wasn't the problem.

The real fun began with the front office.

I paid $25 copay at the time of visit, and thought the matter settled. The next thing I know I get a phone call 4 months later. "Mr. Rehman, you are in arears for $85, if you take care of this within 24 hours, we'll just charge the original $15." Turns out they under-billed me for my copay by $15, then added a $20 late fee per month for 4 months, and were gracious enough to permit me to pay only the $15. Awesome.

So I called them immediately, that evening, to resolve the matter. The office was closed, so I left a message. I didn't hear back. The next thing I know I receive a letter from a collections agency demanding $110 + interest. They had tacked on a $35 collections fee and sent me to collections for total amount. Wow, only $110 for a $15 bill 4 months old? How can they even stay in business charging punitive fees that low?

Needless to say, I was unhappy. The first thing I did was call the collections agency, acting as a prospective client, to see what their terms were. 30%, no fees. No fee to drop a a file if it was submitted to them in error. Good. This meant it would be easy for the doctor's office to do the right thing and just remove my file from the collections agency. (I had a feeling they would try to say it was "impossible" or "expensive" to remove my file from collections. By golly, I must be psychic because that's just what they did! Read on...)

So I went into the office to resolve the matter; the billing manager Emily was not available, and the office manager said that, because my account was in collections there was "nothing I could do, you'll just have to pay the agency". Obviously I needed to talk to Emily.

I went in again to resolve it, just 2 days ago. This time Emily was available. Wow, I felt honored to finally meet her. And she didn't disappoint: just like the office manager, she insisted that I pay the full amount to the collections agency, and that "there was nothing I could do." I told her that, if she wanted to do the right thing, it would be a simple matter to call them and have them stop collecting on my file. This really annoyed her, being called out on her "little white lie" like that. She dug in her heels, insisting that I pay the full amount, and there was nothing more she could do for me.


I think, overall, this problem arose out of a combination of problems. The doctor should have asked for the correct copay amount to begin with. That is a very easy thing to get right. Second, they should never have had a policy that charges $20/month on a bill of any amount, especially one that is small. That amounts to over 133% of interest a month, which about 2000% APR. I've never heard of any business, let alone a doctors office, with a billing policy like that. I realize they need to get paid to stay in business, but I this policy is obviously excessive and wrong. And it's embedded in the fine-print boiler-plate that you sign (something the billing manager Emily quite smugly pointed out).

One may argue, as Emily did, that since I signed the form I agreed to everything in there, including the $20/mo clause. However, that argument is flawed because, if it were true, then even if the amount were $200 or $2000 then it would be justified. And that's obviously not true, therefore the premise is false.

I think I did the best that I could. Once I became aware of the problem, I tried to resolve the issue 4 times, on the pone, with a letter and twice in person. They simply would not resolve the matter reasonably, saying that since the account was in collections, there was "nothing they could do", a bald faced lie. So now a billing error on their part, and usurious billing practices, has turned into an expensive headache for me.

Why do I care so much? I mean, given all the major injustice and tragedy in the world, why worry about such a minor issue? Why not just pay it and get on with life? Great questions. I have a theory about the "long tail" of injustice, and I think the actual cost of accepting this petty abuse is higher than $95 (plus interest). People suffer small injustices all the time, those mean petty abuses at the hands of those in power. For example, the petty injustice of bribery is a real and present problem for many people in the developing world. In the US, our injustices tend to be of the petty cruelty sort (authoritarian's drunk on their own small discretionary powers), incompetence (DMV), and the "careless tax" (late fees, street sweeping tickets). Occasionally there's outright systematic fraud. Perhaps more often than anything there is a systematic abuse of individual human beings by mechanistic organizations who penalize people for not being machines themselves. The real tragedy here is that people accept it; they really think they are to blame for not being a machine. A lot of this injustice goes untreated because as a society we are extraordinarily wealthy, and can afford the convenience of just pay and forget. Never mind that an evil person or organization is surviving and thriving because of our need for convenience. What is the hidden cost? By enduring petty injustice, you reward the perpetrators, enabling them to continue their behavior, and empowering them to expand it.

It will always be less convenient to fight than to accept. However, the cost of paying is larger than the monetary amount, especially taken in sum. If that is hard to accept, consider a bank that fudges interest calculations just a little in their own favor. Let's say it only costs a penny a day for the banks customers, but the bank has millions of customers. That means millions of dollars in revenue for the bank. The harm to each individual is very small, but the overall harm is actually very large. The long tail of injustice works like that. And really, citizens of this great country don't have enough tools to right these kinds of wrongs, alas.

What Now?

I think the best course of action is the following: for my own case, I can pay the collections agency the full amount, and then sue in small claims for the amount. For everyone else I can apply what pressure I can to make them change their practices (or go out of business) by reporting this incident and this company and it's practices to anyone I can think of. I'm not sure exactly where I can do that, but I'll keep track of who I complain to here:
  1. File in review Sites
    1. BBB
    2. Yelp
    3. Citysearch
    4. ePinions TODO
    5. TODO
  2. Bluecross (my insurance company) TODO
  3. Legal
    1. small claims court the form CA business search corp record handbook TODO
    2. local district attorney TODO
    3. legal counsel TODO
  4. CA Department of Consumer Affairs TODO
    1. Local consumer protection agency (federal list of them) TODO
      1. Consumer/Environmental Protection Unit
        Orange County District Attorney's Office
        401 Civic Center Dr.
        West Santana, CA 92701
        Fax: 714-648-3679
    2. legal aid society orange county legal aid TODO
    3. Medical Board department of Consumer Affairs TODO
  5. Voluntary mediation (recommended by one of the state legal guides. I like this idea.) TODO
Any suggestions you might have along these lines is appreciated.

Review: Amazon Affiliates Program

No comments:
I don't use it all that much. Why? I can never remember my affiliate code, and even if I did I'd probably be too lazy to put it on the links. It could be a nice source of revenue, as they pay 4% on general stuff, 6% on gift cards, and 10% on Kindle stuff.

My Affiliate id is adventuinbaby-20. I'll go ahead and add a few widgets here.

(Note that this greasemonkey script would be very easy to adapt as a template script that would add your affiliate code to all Amazon links in the page. However, I like the idea of just inserting the product name into the search widget. No, you don't get a pretty picture but you make the process simple for the author.)

(Note: adding widgets to this post made the entire blog not load correctly. It seemed like an HTML parsing problem on Blogger's side.)


No comments:
From the about page: " is an online community for enterprise Java architects and developers, providing daily news, tech talk interviews with key industry figures, design patterns, discussion forums, satire, tutorials, and more."

The meat of the site is Enterprise oriented social media, with some (generally pretty good) original content. I particularly like the Tech Talks which are videos of presentations and interviews with JEE luminaries.

I don't hang out there very often anymore, since I'm mostly doing internet development these days, but it's on my radar.

I've been a member since 2004 or so. My username/password are:

Version: GnuPG v1.4.7 (MingW32) - WinPT 1.2.0


Review: Kate Bush holds up well. Very well.

No comments:
Hounds of Love coverKate Bush wrote and recorded Hounds of Love in 1985, and there is not a bad track, and several magical ones - including "Under Ice", "The Morning Fog", and "Waking the Witch". Some of the instrumentation sounds a little dated, but it's not distracting at all. Highly recommended.

(I should re-rip this in lossless format.)

Review: My Mouse (Logitech MX610)

No comments:
MX610 Laser Cordless MouseMy mouse is a Logitech MX610. It's a right-handed, wireless (2.4GHz) laser mouse. I generally like it and thought it was time to review it after using it for about 18 months. (It's funny how people always want to review things when they're new, rather than when they're old; it seems like a review is more useful in the latter case.)

It's a good mouse; wireless, laser. Some quirks, of course:
  • Ugly transciever sticks out of the computer (needs bluetooth)
  • Uses batteries pretty fast: 2 AA every month or two (needs recharger)
  • I sometimes hit the special mouse buttons on accident (needs fancy buttons removed)
  • I never hit the special mouse buttons on purpose. (needs fancy buttons removed)
  • Occasionally disconnects for no reason; powercycle is a workaround (needs better QA)
  • Logitech's product page is very hard to find, and when you do find it and click "support" you have to select your mouse all over again from drop-downs! Quite annoying, and it affects all of Logitech's products, apparently. (They could fix this with a small amount of JavaScript on their support page that can infer a product from referrer.)
For the most part I've been running quite happily without SetPoint, Logitech's driver/utility package, quite happily. I just installed it and it remains to be seen whether it's worth the cost (11M of RAM, and a taskbar icon). I'm pretty happy with it's ability to remap buttons to things I actually need; I'm VERY happy with the ability to horizontally scroll (equivalent to left and right arrow keys). I'm thinking key remapping will be a useful in Photoshop.

You can get this mouse for about $40-$50. There is a new version, the 620MX, and it looks like the only difference is the texture of the mouse wheel.

iPower: The worst Registrar ever?

For the love of God, don't do business with iPower (or iPowerWeb as they are also known).

What a horrible registrar. I wanted to transfer a domain away from them, so I got the login information from my client. I login and search around for a while (20 minutes or so) looking for the transfer authorization (EPP) code. It is nowhere to be found. So I check the help documents. There's plenty of info on transferring NOTHING on transferring them OUT.

So I call the "24 hour customer service" line. I am on hold for 40 minutes. I get a kid who sounds like he's 12, but happy to help. He gives me an EPP code over the phone - a 5 digit number. "That doesn't sound right" I said to him. "Normally they are much longer, and consist of numbers, letters, mixed case, etc." He assures me it's right. "Oh," he says, "you have to unlock the domain from opensrs. I'll send a DIFFERENT username/password to the account holders contact email." "Fine," I said. Privately I had misgivings.

So I get off the phone and contact my client again - and ask him to forward me the new email. He does, I plug them into OpenSRS. They don't work. Oddly, they are the exact same crednetials as for the site. Basically, that kid didn't know what he was talking about, and I resign myself to calling them again.

And I do call them, and this time the wait is 50 minutes. But it seems the person knows what they're talking about (he sounds like he's early twenties which is an improvement, I suppose). The end result is that he sent the OpenSRS credentials to my client's email address. But by now it's too late to call, so I'll have to wait till tomorrow to ask him to forward the email.

Even godaddy's process isn't that messed up, and that's saying something.

(I discovered I'm not the only one who had a bad experience.)

[Update: I had to bother my client to check his email, and it turned out that NO EMAIL EVER ARRIVED from iPower. So now I'm on the phone, and on chat, hoping to get this resolved. This will be my third and final attempt. I'm thinking that I'm not getting paid enough to deal with this bullshit; alternatively, I could/should have told my client to get the EPP code himself, as he's the one who picked this god awful registrar.]

[Update: I finally had an epiphany: I should update the admin email so I don't have to bother my client. I got on chat, and after a 2 hour 40 minute wait (!), I got someone to email me to the new password, and it works! But get this, because the initial clueless person gave me the WRONG EPP code, and I initiated a transfer, I have to figure out how to stop the transfer with the bad EPP code and restart it with the new one. Lovely. But at least I don't have to deal with iPower ever again. And hey, at least now I know.]

Discover: Beautiful hand-made gifts at Etsy

No comments:
Courtesy of the Crunchies, I ran across this great site featuring hand-made stuff; you can also search for things made locally. A great resource for giving unique gifts. I was taken with this writer's journal featuring 96 pages of luscious hand-made paper bound in wood:

Handbound Deluxe Artists/Writers Journal

Flock and the "Red Leather Chair" Syndrome

No comments:
Flock is a startup with red leather chairs. I like their attempt to consolidate social networking data in one place, but I have to say that I would be unhappy as an investor to see the extravagance of their home office.

Kara Swisher: High end blogger

No comments:
Kara (who appears to be a quite influential and well connected blogger) visits the Christmas parties of the rich and famous in the tech world, with her video camera.

Sometimes the Onion gets it right

No comments:
The onion is quite hit and miss, probably because of how much output they create. But there are occasional gems amidst the comedic dross. Here are three:

Hot Synergy: GMail IMAP on the iPhone

No comments:
So I've been pretty disappointed in Spry, and I've been trying to figure out a way to replace them. I am quite happy to report that, not only have I been able to replace the mail server (exim, if you must know) but I've improved things considerably by switching to GMail's IMAP provider. It's easy to setup (and see a video, too) and it gives you these important features:
  1. Folders! I can finally see my tags on my iphone!
  2. Drafts! This is really just a happy side-effect of the folder thing, but it's important enough to mention on its own
  3. Spam! This is also just a folder thing, but I can now mark things as spam on the phone rather than just delete them.
  4. Synchronized "this has been read" state! Sync spam state! Sync responses without cc'ing myself!!!
  5. Vastly improved security with SSL. I was setup with unencrypted POP before, which was a really bad idea on a device like the iPhone which is bound to connect promiscuously to all sorts of shady networks, including unsecured WiFi hotspots.
  6. Unified email. was set to forward to, so messages sent directly to javajosh would not get picked up by the phone.
  7. Speed. I know it's crazy but somehow Google is able to serve mail MUCH faster than my custom exim installation.
All in all this is like getting an awsome, unexpected Christmas present. Thanks for screwing up, Spry! If not for you, I never would have found this delightful synergy between Gmail and the iPhone.

Open letter to the Internet

No comments:
Dear Internet,

Cool down those jets, turbo! You're moving too fast! You're giving people more ways than ever to use the internet for the purposes of good (and evil), but let's face it, it's a bit overwhelming. But the real problem is this: all of your services are competing for slices of me: my data, my life, my friends, my links, and my thoughts. But if I am not aware of this I may be tempted to spread myself thin, to loose track of myself, and so become overwhelmed with maintaining my identities and then disenchanted by the whole concept of contributing to the Infoverse. The misery of duplicating data is intense, but you leave me no choice when, inevitably, my friends use incompatible social networks.

Please stop trying to trick me into using just one service or another - that will never work! The reality is that I'll use a variety of online tools to describe various aspects of me. Each tool has it's own strengths and weaknesses, and that's okay.

So take care, Internet, to encourage me to have a coherent view of my online-self.

Warm regards,
Josh Rehman

An Answering Machine

No comments:

So this is an answering machine widget with a couple of twists. You can leave a message either with your mic or with a text-to-speech renderer, and you can pick your avatar within the widget. Pretty neat but the interface is still too intimidating for n00bs, I think. Gizmoz deserves props for making as easy as it is, though. One other nit: these widgets don't work very well mixed with other text. It may be a scribefire problem, though.

Gizmoz widget

No comments:

Okay, these are actually pretty fun. Gizmoz is taking widget creation to a new level: they have a neat SWF viewer that does rudimentary facial recognition and then animates a head-shot. It does lip-syncing, eye movements, head movements, and winking. You can use their stock photos and sounds, or record your own (Flash can access your microphone or webcam if you have one). Here are two I made from their stock assets:

A good 2007 movie list.

No comments:
A good 2007 movie list from A.O. Scott (erstwhile NY Times movie critic). The fact that Ratatouille is #2 on his list makes me take the rest of it quite seriously. (Into the Wild is hiding in there , too.)

Another neat controller: webcam joystick

No comments:
Check this out:

Things we think we can handle, but can't.

So I've been collecting sets of ideas. One set is all the unintuitive physical things in the world (like tops that don't fall down, or bubbles coming out of water when you heat it - this in response to a guy who criticized special relativity for being 'unintuitive'.). It occurs to me that I would like to collect other ideas as well, particularly very off-putting experiences, especially ones where you might thing "oh, that's no biggie" but it turns out to be quite disorienting. Here are two:
  1. Rotate your screen 90 degrees and try to use your mouse. Whoah! (Particularly easy to try on a tablet which has a built in button for this; however, most graphics displays offer rotation these days). It's almost impossible to use.
  2. Rotate one arm until the elbow and palm are facing up, top of the hand on a hard surface (for most people there is only one direction in which this works). Now look at your fingers and start moving them while watching. It's deeply strange.

Thinkpad Accelerometer: I did it!

No comments:
Quick update: I did it! I dug in a little further and solved the problem - turns out wrapping sensor.dll was the right approach after all.

However, it was quite a learning experience. It turns out that JNative comes with a bunch of pre-wrapped windows libraries including all of kernel32.dll's exports. It also turns out that JNative has a utility method that enumerates a DLL's exports (although it remains silent on expected arguments, alas). It also turns out that working with kernel32.CreateFile was a dead end (which I discovered only after trying to run the Perl and first version of the C# code on my machine.) Perhaps that strange file hand \\.\ShockMgr was for older thinkpads, I dunno.

Now I need to program a game to use the data. But first I need to write a calibration routine. It's funny how similar 2D accel data is to a joystick (it's analogue data which measures force)...

...and so I have discovered another example of a wildly over-designed Java API, called JInput. Check it out: (javadocs) (project home) (getting started)

JInput comes with it's own sizable JNI baggage, apart from a silly API, so I think I'll skip it for now. I may look at it later for examples on how to do high resolution polling with JNI if I need that.

Future directions: I think it would be great to get this working on Linux. I know that accel data is present in 2.6 kernels. It would also be cool to get this working on powerbooks (and what's really cool is that I guess they have a 3rd axis). In fact it looks like that would be easier because the code already exists:

Eventually I'll get something running on the iPhone, too. :)

Do you want to see the code? You can check it out at sourceforge. Here are some handy URLS: (project page) (code) (svn access)

Note that I tacked on a DLL export routine to main() for giggles.

I'll be integrating with the included space invaders code, and perhaps JInput, in the coming weeks.

Thought Experiment: can you reproduce a native app in Java?

No comments:
Here's an interesting challenge for the Java desktop programmer: can you reproduce an existing native application to the extant that a user would not know? And I mean everything from installation, invocation through usage and de-installation. What would this take? How much native code would you need to write?

If this is possible (and I have my doubts), can you do it again on another platform with a similar application?

If this is possible, can you merge the two codebases? If so, how much sharing can you achieve?

A micro nuclear reactor...hmm

No comments:
Wow, a self-contained generator that lasts 40 years and could power a whole town. Pretty cool. I could use it to refuel my Tesla.

Clever Ant script for Eclipse installs

No comments:
I wrote about Pulse earlier; here's the lightweight version using Ant. Haven't tried it yet so don't sue me if it doesn't work

The Shared Java Hosting problem

I'd love it if shared hosting for Java was a reality. I'm much more comfortable with a Java stack than LAMP, and I actually think that Java has a lot more to offer. It's ironic that a platform noted for it's isolation and security is so late in getting a shared hosting solution.

Could OSGi be the answer? A stated goal of OSGI is to allow application components to share the same VM without stepping on each others toes. Right now OSGi mainly seems to be on the desktop via Eclipse/Equinox.

Apropos of nothing: Why does OSGi see itself as a competitor to JMX (Java Management Extensions)?

ApacheCon wrapup: podcasts, markmail, apache felix

No comments:
So I stumbled upon a wonderful resource for those who like Apache software and may want to feel a little bit more "in the loop". It's called FeatherCast and it's a useful podcast (it's on iTunes, too) from Rich Bowen and David Reid. Through listening you not only get information about up-and-coming projects, but also a feel for the Apache community.

The podcast has already yielded fruit. First, I was introduced to MarkMail, a very very nice way to search the Apache mailing lists (and a nice AJAX application in it's own right). This is a great resource for searching lists before posting. I'd love to have it for other mailing lists too. (MarkMail also represents an interesting take on marketing for MarkLogic - to them, MarkMail is a free service is a showcase for their commercial XML database/search product.) Interestingly, I guess Jason Hunter (a fairly famous Java author) put it together.

The other thing of interest was Apache Felix. This is an OSGi implementation, alongside Equinox and Knoplerfish, which aims to be small and embeddable. OSGi is, in my mind, the forerunner of a CJAN, and so it's quite important. It's nice to see so much open-source interest in the area, although it takes commercial interest to really make a compelling product like Pulse, apparently.

Genuitec Pulse for Eclipse

No comments:
This is definitely one step closer to solving the CJAN problem. Basically Genuitec is offering a "free" tool that helps manage Eclipse configurations, in return for putting their non-free plugins up for sale in front of you. Not a bad trade off, actually.

I still have questions though. Like, what the heck is going on in the background? I'd love to just "not worry about it" but with a new meta-tool like Pulse, I think a bit of assuaging is in order. Also, it's great that you can share a "profile" but why can't you just install all of the features you want into one Eclipse profile? It seems like a recipe for disaster to maintain mutiple profiles on top of Eclipse's ability to offer multiple "Perspectives". That said, I've seen how plugins can step on each other (especially HTML and XML plugins), so perhaps it's not such a bad solution.

And what about workspace settings? That, actually, would make Eclipse profiles handy because you might have a "GWT" profile that uses a special code convention (in case you want to submit patches to Google). This is getting very close to having a "push button" installation manager, but it's only a month old and I'll have to keep an eye on it. Obviously Genuitec has big plans.

[Update: I can't recommend Pulse. It doesn't have an uninstaller. It doesn't have much in the way of plugins. I think that is a better alternative.]

A ten fold increase in Li-Ion energy density; the unheralded revolution

Researchers at Stanford have developed technology to increase the energy density of Li-Ion batteries ten-fold.

I don't understand why this is not all over the news. It will change
the world. This is not about allowing business people to work for 100%
of their flight, as the article suggests. This is about making semi-autonomous devices. This is
about making an electric car with a 2000 mile range. Cell phones that need to be recharged once a week.

This is HUGE.

Java: The Headless Platform

No comments:
[ramble alert: this post needs an edit, bad]

What is Java? Java is a VM and a computer language, and a bunch of "core" libraries for making desktop, web and mobile applications. Programs written in Java can be run on any computer platform (e.g. Windows, Mac, and Linux), and they can be much safer than native programs (but often aren't because of programmer laziness).

To an end user, this is gibberish.

What is Java? The answer is tough because Java doesn't have a head. That is, there's no visible core to Java, especially to the end user. To the end user, Java is just another part of the undifferentiated mass of stuff that comes out of that magical box. That's bad for Java, but what are you gonna do? (Well, if you're Sun you start nebulous ad campaigns trumpeting the equally nebulous benefits of "Java Everywhere"!) [an example of a visible head to a platform would be Windows Explorer for Wintel, or Eclipse for the Eclipse RCP, or the Bittorrent client for Bittorrent (and it didn't always have a head, either)]

I'm going to get back to the headless problem, but lets segue a bit with another question: Why isn't Java present on the desktop? Historically I think it's safe to say it's because the user experience was not as good when running a Java app as with a native app. At worst, Java apps need to be just as performant and functional as native apps; at best, they need to offer value-add above and beyond, to the point where my niece will say things like "Trillian is great but it sure would be nice to have a Java version!" To her, Java might mean greater safety, reliability, and portability. (Another reason is that more and more applications are being subsumed by the browser. But that's another topic.)

The fact of the matter is that, despite Sun's assertions, Java remains an implementation detail, and a nasty one at that, and it remains viable only because its an easy language to learn, and has found life on the server-side because the warts of Java are less visible, it's strengths are actually handy there, and Apache. It turns out that WORA is quite useful for developers working on Windows or Mac and deploying to Linux. This isn't to be scoffed at, but it's a lot different than Sun's original vision, obviously.

Back to an important point: when you install Java, what is it? Where is it's 'head'? What is the visual representation of "Java"? What do you click on to "start java"? Is it Java Web Start? Is it the Control Panel icon? Is it the tray icon that pops up if you are unfortunate enough to run across a site using applets? I actually think this is a big problem.

The fact of the matter is that for users installing Java (or anything) is an annoyance, a detail required to enable the use of other applications, similar to the installation of a PDF viewer or a Flash viewer or even an operating system. Users would rather not think about implementation details like Windows, let alone Java. And I think that's okay, too, unless you want people to start thinking about it to improve market share.

(Of course to the programmer Java's "head" could be considered either the command line tools (esp java and javac) an IDE or perhaps even a server of some sort like Tomcat.)

Ironically it's working with GWT that's made me think about this topic from a few different angles. First, GWT is to JavaScript what Java is to native code, in that it has to play catchup with the native platforms in terms of features. And that's Java's story, even now. And that catch up will only occur if people really start using GWT (or Java). And that will only happen if it makes sense.

Java needs top-notch application programmers to write great end-user applications for at least one platform (IDEs don't count). Java needs a text editor that takes moments to start, not seconds. Java needs a better (smaller, faster) Office alternative.

Java needs someone to demonstrate the viability of the platform, and that viability is no-compromise performance combined with WORA combined with the potential for incredibly enhanced runtime security. Users have learned to fear locally installed software, for very good reasons. Java could position itself as the answer to this fear.

Another fierce position to take would be to position itself to the end user as Cygwin or even Steam positions itself: you can take your apps with you. Java could be a true platform in the sense of providing an entire ecosystem for people to interact with their applications (and data). Users understand that reinstalling their applications is a nightmare. The fact that ALL of their Java applications can be reinstalled at the click of a button (even cross-platform) would actually be quite an effective selling point. The fact that they can feel safe about trying new Java apps is the other huge selling point. Safety, convenience, privacy, performance - that sounds pretty good, eh? Oh, I should also mention that some users might like that Java is kinda open source.

The irony, of course, is that RIAs are currently moving to fulfill these unspoken consumer needs quite happily. RIAs generally offer safety and convenience, but no privacy and only "good enough" performance, so although Java has a tough row to hoe on the desktop, it's not impossible to get in there and win.

Sun needs to make this message clear, then show the truth of it by systematically replacing popular software with Java implementations, and being very open about the techniques that used to do it. A good IM client would be a great start. A good music player would be excellent. Simple utilities like text editors and photo viewers would also be good candidates for porting. Rather than clone Office, clone Google Docs. A good email client. An Outlook clone. If programmers could see some successes here, then they may be tempted to try for the more difficult targets.

Best Buy Bodhisattva

No comments:
I'm not sure who the author really is, but it's a beautiful piece of writing, and a wonderful story about the intersection of gaming and enlightenment.

Best Buy Bodhisattva

It's also a very interesting site for some of my friends, "". Probably a more LOTRO than a WoW crowd, I reckon.

NSFW: Topless Wii, video games, and sleaze

No comments:
This video is an old meme, but one that is remarkable for a few reasons:
  • It came to my attention because of a video lambasting the meme, which is ironic.
  • It involves semi-nude attractive women, which is normally OK with me.
  • Despite beautiful, attractive women, it's not sexy and actually a bit sleazy.
That last part deserves explanation, I suppose. The lack of sexiness is not because the girls aren't themselves attractive, or slicked up with oil, or almost naked, or young and have flawless skin, it's just that they're doing something that isn't sexy. They are literally just playing a video game, naked. Perhaps I am odd, but this doesn't turn me on. In fact, it makes me feel a little bit rude.

It would be sexier if I got the impression that they were playing the game in order to titillate me, the viewer, in the same way that some exhibitionist women like to dance with each other suggestively on the dance floor. There is a big difference when the woman is really dancing with someone, and when they are doing it for a show. I got the impression with the Wii video that these young girls were actually enjoying the game, forgetting their nudity, and it made me feel a bit awkward, and, well, sleazy, to be watching them.

Taking a wild leaping guess, these girls are professional models, probably not technically inclined, and I bet they really were having a good time playing Wii sports for the first time. Who knows, it may be the first video game either of them had ever played. It's a moment of almost tender, innocent discovery, and to sexualize it doesn't seem right to me.

(At 15 I would have had a different opinion.)

An interesting side-effect of web-based mail: non-repudiation

No comments:
The thing about web-based mail is that you can't mess with the data. If you run you're own mail server, you can mess with the data. This is actually a very good reason to use webmail, even if you have the skill and desire to run your own webserver. Indeed, if you get in the habit of sending signed messages, it's even better.

Of course, privacy is very good reason to NOT use webmail.

There is an elegant solution that allows one to have both: encrypted web mail. FireGPG is a wonderful little plugin that modifies the gmail interface so that you can sign, encrypt, or sign & encrypt outgoing email.

The only drawback is that your recipient has to know how to deal with such messages, which is a nontrivial problem. (even with nice tools like GnuPG, FireGPG it's a tough row to hoe. PKI (public key infrastructure) is difficult for people because not only does it require the installation of special software, but it absolutely requires that they have some bits with them (their private key) and remember a password (to unlock the private key). There can be no "I forgot my password" function in the system (at least, AFAICT).

P.S. Solving the PKI adoption problem is bound to be more social than technical. However, one could go a long way by a) pre-installing PKI tools in operating systems and web interfaces, b) offering hosted private keys (very safe if password is strong), and c) reducing the number of passwords people have to remember to 1 and making sure that they never forget it (which really helps achieve b), too).

Movie: Into the Wild

No comments:
Into the Wild: A story about extreme pain, extreme action, hard-won wisdom, and one tiny, fatal mistake. It's a warning to parents about the pain they may cause their children; it's a catharsis to children who suffer but don't know why. One must see through the railing against society to see the inner core; yes, society is sick (aptly shown with the "waiting list to paddle down the river" thing), but that wasn't at the heart of Chris's pain. He needed to learn for himself about Truth, and first he had to throw everything away. And when he found Truth, he died.

Ain't life grand?

Don't put packing blankets in the dryer

No comments:
I have some nice packing blankets I picked up from Costco which I have been using to protect my car when I put stuff in it and also to go over my couch. I made the mistake of washing them today. Well, that wasn't the problem. It was the drying part. Now they have burn holes!

Warning to everyone who likes packing blankets: wash them all you want, but do NOT machine dry!

Help port Java 6 to the Mac!

No comments:
Danial Spiewak gushes about the Landon Fuller's attempt to do an open source, 3rd-party port of Java 6 to the Mac. Got a Mac and an itch to code? You might want to help out.


1 comment:
At the beginning of Ratatouille (my favorite movie) Rèmy asks Emil about the cheese he found. It was unpronouncably French and I couldn't find out what it was, until I hit on an idea: turn on English subtitles! And now I know what it is, it's not just any cheese it's:
Tomme de chèvre de pays!
Still needs mushrooms, rosemary, sweet grass, saffron...and lightening!

Ah ha! Here is a nice British site about cheese that mentions it. The vast majority of hits are french.

ScribeFire: don't get burned

No comments:
ScribeFire is one of the best Firefox plugins around. But it is a dangerous tool. It will destroy your work without warning. If you have a post active, unless you "Save As Note", or "Publish" the data will be lost, and there will be no warning. I've been pressing ScribeFire into service for more and more things (it's actually a very nice way to do WYSIWYG HTML editing), but there are a few rough edges.

Cooling Down an Overclocked World

No comments:
Polar ice is melting. Our world is overheating. Maybe humans should take a page out of Intel's playbook and start thinking more about efficiency than raw speed. People don't want loud, hot, obnoxious computers. And people don't want loud, hot, obnoxious planets either. So how about trying to live a bit more efficiently? Repair instead of buy. Shop used. Telecommute. Carpool on road-trips. This mostly corresponds to "living like you're poor." Except if you're not really poor, you can spend the money on items that last, perhaps even generations (in other words, avoid Wall-Mart).

Skip the kick-ass home theater. Go to a REAL theater instead. Get out of the house and get rewarded not just with a screen larger than you'll ever be able afford and loud sound that won't annoy the neighbors, but be happy that you don't have to worry about upkeep, and even at $10 a ticket, it will be cheaper in the long run. (I also find that the reaction of people around you can really add to the experience.)

Why buy DVDs? They're going to be outdated anyway, and you may as well do Netflix.

And for God's sake, don't buy stuff until you really need it. For example, your cooking and realize you can't slice through a tomato anymore, and you really need a sharp knife. And you can't slice cucumbers either. So you decide to buy a knife sharpener (and learn how to use it). (As opposed to going to the store and seeing a knife sharpener and thinking "gosh, that might be useful" and buying it. That's an impulse buy and bad bad bad!)

One way to live more efficiently is to use cash for everything. It hurts paying for stuff in cash, especially expensive stuff like flat screen TVs. I promise that you'll think more about whether you need a thing when you start counting out that stack of $100 bills. I highly recommend paying in cash for cars (and always pay in full for cars - no loans). You may think twice about buying that shiny new BMW, and that maybe that used Corolla wasn't such a bad deal after all. (When I get my Tesla I will pay in cash, promise!)

We are so wealthy (speaking of the west in general and Americans in particular) we've lost track of what is necessity and what is luxury. That's unfortunate because there is a certain joy in maintaining the distinction. In this season of giving, to be able to give and receive luxuries would be much more pleasant. It seems like gift-giving today is driven mostly by obligation and precedent. We know that the recipient could afford anything we choose to give them. The gift becomes more an expression of how we view that person rather than an act of generosity. (At it's worst gift-giving is a sycophant's attention-grabbing tool). However if the recipient is frugal, or genuinely poor, then we can truly give them something special - something they simply would not possess otherwise. To provide something that was wanted but denied either by circumstance or self-control is the best sort of giving. By not controlling our consumption we deny this pleasure to others (and heat up the planet, too).

[Update: just ran into this wonderful blog, to which I will subscribe. I really like this post about giving fewer gifts too, although I would add "gift exchange" to the list. This blog is written by someone named "Penny Nickel" of Washington DC.]

OCJUG Meeting December 2007 Notes

No comments:
Richard Brown of Allergen (makers of Botox) works exclusively with Documentum at work (and SharePoint for MS Project integration) and recommended that I check out Alfresco, a GPL CMS written in Java, and Stringbeans, an open source Portal. (Frankly I was more interested in Alfresco than in Stringbeans! I realized how very little I like even the idea of a portal...) Alfresco really does look quite impressive. I wanted to attempt a rewrite of the OCJUG using Alfresco right then and there, but Richard had to leave, so we nixed that idea.

There was a young database guy who's into groovy and postgres (good pick!) and an older Russian sounding fellow who claimed to be into "everything" Java. I am awful with names.

Jim White showed off his toy hydrogen car for a few minutes: it's a small device that has a balloon bladder for the hydrogen, a small open-air fuel cell, and a tiny engine. It had no radio control, but would run for several minutes on a full "tank". Hydrogen came from a tiny battery-powered generator that separates water into ozone and hydrogen via electrolysis. Very cool.

Later on Jim explained how he would like to solve the longstanding CJAN problem (CPAN for Java). However, he revealed that he's never used Maven in his life, nor has he ever written a package for any of the main package managers out there (apt-get, rpm, fink, etc) nor has he ever used the closest thing we have in Java, which right now is Maven (or arguably Eclipse's OSGi based plugin architecture). Nor was he aware of the upcoming Java module changes in Java 7 (JSR 277 and 294). Of course, this did not stop Jim from having deeply held beliefs on how it should (and should not) be done. In the end I was not convinced that he has the experience required to solve this important problem. (It also did not help his chances at getting collaborators that he declared "My part is done!", I think referring to his "Ant Anywhere" code. In my opinion the phrase "My part is done" should not be part of the vocabulary of any collaborative software effort before the final product is shipped. And given the inevitable burden of maintenance, perhaps not even then!)

In the end, given the option of either implementing someone else's half-baked idea and solving my own half-baked (but perhaps more humble) JNI accelerometer problem, I left a bit early so I could work on the JNI problem.

(I will hyperlink this post later. Promise.)

Personal: Year in Review

No comments:
  • Learned to corner well on my motorcycle
  • Learned to do a decent "warrior 2" - thanks to Omadawn
  • Learned to take better photographs
  • Didn't manage to meditate every day, but working on it
  • Started drinking. Quit drinking.
  • Won a few pool tournaments
  • Wrote some code.
  • Had a great time working at Blizzard.
  • Didn't get addicted to WoW - thankfully!
  • Got addicted to coffee - thanks Bogarts!
  • Discovered the Best Hummus in the World (Sunnin)
  • Having a great time at a secret Startup 2.0
  • Learned about sublime love
  • Learned about terrible love
  • Got seduced by a beautiful woman during a lunar eclipse.
  • Got rid of a lot of junk and organized my Seal Beach apt. thanks to my sister and brother-in-law.
  • Got an iPhone, love it
  • Got a scented oil burner, love it
  • Procrastinated on my taxes
  • Burma broke my heart
  • Lost friends
  • Made friends
  • Favorite book/movie/music: The Peaceful Warrior/Ratatouille/She Wants Revenge
A good year.

Idea: Sun Widgets with JavaME

No comments:
You know, I think Java may have a chance on the desktop. Konfabulator is a very nice development model. But it's a resource hog (10-20MB per widget). And I don't think people really know how to use these widget systems, yet.

Let me comment on that second part first. Widget systems should help people shrink down the information flow into the major pieces (e.g. summaries), and shrink down the type of interaction you have with programs (constrain the interface). And when you do this you also get an opportunity to make it pretty. Widgets should reduce clutter, not add to it. Widgets should always elide information. And yet, it seems like people think that widgets are for gathering even more information onto their desktop, usually crap they don't need. Indeed, even Yahoo seems to promote that idea by distributing all manner of useless widgets (who needs a weather widget?!) I actually believe that widgets would be hugely appealing to developers looking to control and manage their running services (think a Tomcat widget that allows for graphical start, stop, monitor of the server and all contexts, with pretty lights and sound effects.)

Widgets are small in every way. They are tiny programs that offer a subset of the functionality of their larger cousins. They have graphics, and maybe some vague interaction with the local system. What does that sound like? Sounds like JavaME to me.

So this hypothetical "Sun Widgets" (or how about "Solar Flares") product would be a JavaME VM - basically a Smart Phone on your desktop. On first principles, the overhead would be very small. I don't know much about JavaME development, but it seems to fit. I heard that Sun is working with OpenLaszlo on making a JavaME renderer - if that's true then OL would be the natural way to write graphically intense widgets.

Google's Android would also be a good fit for a widget host, come to think of it. I haven't looked at their Desktop SDK but I bet there are likenesses to Android.

Well, if Sun wants to make a play for mobile and the desktop at the same time, I think this is a way to do it.

Idea: the poor man's package manager for Windows

No comments:
We might also call this a "software mind-map". Wouldn't it be nice to keep track of all the stuff you install on your Windows box, especially when you're a developer who tends to install a LOT of different stuff? Here's one way you can use Windows folders to do this for you.:
  1. Create a new folder
  2. Adjust it's view settings
    1. set it to be an icon folder
    2. auto-arrange off,
    3. align-to-grid on.
  3. Go through your download folder and drag an "important" file, like Firefox, into the new folder.
  4. Repeat for every related file: add-ons, documentation, and even things like Fiddler.
  5. Add a note to the end for everything that isn't represented by a file (addons, and even special configuration. for some programs you can put special file locations and passwords in this file)
  6. Repeat for every "program of interest"
Here's what you might end up with:

What is a program of interest? Anything complicated enough to justify this treatment. For example, I have XAMPP with all it's addons (I included SQLyog with it for good measure), PostgresQL along with a Windows Service icon, pgAdmin III, and the JDBC driver, and installation notes, Eclipse with a bunch of stuff, Tomcat with a bunch of files (mostly docs but a few shared libs), and even Cygwin, PuTTY and PuTTYCyg (which is great, BTW) all lined up.

Stuff that isn't that customized and relatively standalone doesn't get this treatment. Things like Synergy, PSPad, Textpad, Photoshop, Office, JDiskReport, etc don't need to be laid out like this. However, I've made some exceptions. pgAdmin is basically standalone, but it's meaningless to me without PostgreSQL.

Why is this useful? It helps me remember what I have installed, how I installed it (and most importantly) how to start it, stop it, and mess with it. I guess it's kind of like a mind-map of software.

Warning: this positional information you worked so hard for can be lost in a variety of ways. Windows is very eager to move your icons around for you. If you right click and "arrange icons" in any way your work will be lost. If you change your view type (e.g. list details), your work will be lost. If, in another folder you "apply folder settings to all folders" (I think) your work will be lost. In addition, if you do this on the desktop and your screen resizes, you guessed it, your work will be lost. (I actually rather like the desktop as the place to do this. If Windows had a "don't move my icons no matter what" setting I would be pleased.) Trust me when I say that you won't want to do this work ever again. Here's a larger chunk of my desktop:

And yes, you can do this on your desktop, but I don't recommend it. If your screen resizes you loose all that positional information (horrible UI design, BTW - you should never make it easy for users to loose information).

Note in the above picture how I put a shortcut to Services next to SVN and CVS. This reminds me that to control these things I need to use a generic interface - they are headless services or daemons. Also notice I put a shortcut to tortoise next to SVN - that's really just to remind me I installed it, and it's related. Also note that, if I didn't have puttycyg installed, I wouldn't have put either putty or Cygwin on the desktop. Indeed, it may still come off!

With XAMPP you see above it bugzilla and mediawiki - two packages I will eventually install with XAMPP, but I haven't yet so their of to the side. (The installation of bugzilla is not going smoothly - I'll probably have a lot of notes for XAMPP by the time it's working, which I promise to share.) SQLyog is there because it's my favorite MySQL front-end, and XAMPP is in charge of the installation.

[Golly, I really don't feel like hyperlinking everything I should here. Seems like someone should write a "hyperlinker" that learns from you and can link stuff up automatically. I'm sure it exists, as the need is obvious and it would be simple to write.]

[Update: Just discovered another way to loose positional information - copy the folder. That's right, icon positions are lost when you try to copy the folder. Sigh.]

[Update: Discovered that others have had this problem, and there are many solutions. WinTidy 2 was the first util I found, but it doesn't work with SP2. Then I found this shiny, tiny little program. Yes, it's terribly unsafe, installing a mystery DLL into system32. But it seems to be innocuous. BTW it's a very elegant installer: a DLL, a batch file, and a .reg file. Nice!]

Idea: Mark exceptions to avoid long logs

No comments:
Mark an exception as "logged" so that catch blocks further up the call chain don't relog the stack trace. This gets a bit tricky for wrapped exceptions; I'll leave dealing with that as an exercise for the reader. :)

Smoking really does look cool...

No comments:

smoke &
Originally uploaded by cybele malinowski
...but too bad it smells like crap, tastes like dirt, and makes your lungs burn.

(What a wonderful candid.)

Thinkpad Accelerometer: mystery solved

No comments:
According to MSDN, that strange path-like structure is a "communication resource handle" on which there are several possible operations. These operations are fully documented (for example the CreateFile function).

Oddly, I noticed similar path strings in Windows Services. Take this executable path: "C:\bin\Tomcat 5.5\bin\tomcat5.exe" //RS//Tomcat5. My guess is this is an internal attempt to avoid running tomcat twice, similar to using a PID file. But that's probably not what it is since tomcat won't start again because of port conflicts - a sort of port PID.

Here's another - "C:\bin\Tomcat 5.5\bin\tomcat5w.exe" //MS//Tomcat5 (for monitoring tomcat)

When is Eclipse going to bundle Subclipse in the default download?

No comments:
It's weird that they don't. It reminds of of the bad old days when you had to download and install optional.jar for Ant.

Installing Bugzilla part 2

1 comment:
Well, I got this crazy idea to try to install Bugzilla on Windows using XAMPP.

Apache Forum :: View topic - Help on Bugzilla
I have tried to install Bugzilla on the XAMPP in the folder C:\xampp\htdocs\bugzilla for dates. I used (zipped versions) XAMPP 1.6.3a, XAMPP Lite 1.6.3a, Perl Addon 5.8.8-2.2.4 and Bugzilla 3.0.2 . basically, I unzip the xampp, unzip the bugzilla and follow the quickstart in the bugzilla folder. Is there anybody done that already ... please give me some clues.

Apache Forum :: View topic - Help on Bugzilla
When installing on Windows you follow the instructions from this page under the heading Configure Bugzilla. Most of the Win32 Instructions are for installing the components that you have already done by installing XAMPP. Did you create the database and then create a user for that database using phpMyAdmin? There is instruction on how to obtain free support for installation etc. here: The Win32 FAQ is here: This Google search might help:

But I wanted to do it the easier way, with XAMPP. Downloaded this, with the perl add-on (and the tomcat add-on for good measure).
Ran into some problems running bugzilla's - first, perl couldn't be found (add a symbolic link in /usr/bin/perl to wherever the XAMPP perl addon was installed). Then, the ppm instructions didn't work. This post said that I should use the interactive package manager (very slick BTW). And I did.

But insists that those packages are still not installed, and at this point I'm stuck. Is it possible the interactive installer does something different than the command line? One issue that I had was with cygwin paths versus real windows paths. Perhaps I shouldn't invoke ppm from Cygwin?

The problem is working with perl packages in XAMPP. I can't solve it right now because it's time for sleep.

Why the GPL is bad for the world

A recent Slashdot article on the Verizon GPL infringement suit got me to thinking - the reciprocal nature of the GPL may be partly to blame for the whole SAAS movement, which itself encourages the continued concentration of power into the hands of a few.

You can deploy all the GPL'd software you want to a server - in that case you're not distributing binaries, you're just using them to deliver something else. But for companies that want to sell software, GPL is a poison pill. They can't sell software that anyone can just take for free. Preventing people from selling software will tend to concentrate power into the hands of the few organizations that can use economies of scale to barter their services for end-users' attention.

That's right - I'm saying that commercial software is actually the answer to unchecked consolidation of power in the software business. It's time people got used to paying for software again, with cash, rather than paying for it below the table (where consumers tend to get screwed).

Heads up for OCAML folks: a new Eclipse plugin for you!

No comments:
Eclipse has a new OCAML plugin! Haven't used it yet, so I can't comment. The feature list looks good.

Java mobile edition in the browser?

No comments:
What about putting Java Mobile Edition on the browser (with a decent plugin installer, of course)? It's a shame that Java has so many unneccesary libraries - so why not shed them, as Java ME has done, for browsers?

Politics: the pleasing symmetry of Bush's policies on Iran and Iraq

No comments:
Libyan model Shaima in a show in TripoliBush's legacy will not be complete unless he manages to start a third war, hopefully preemptively, and hopefully soon, with Iran. And there's a pleasing symmetry to it. Let me explain.

Today Bush has taken a hopeful step toward attacking Iran by taking an NIE report that states that Iran had abandoned it's nuclear weapon ambitions 4 years ago and turning it into a confrontation, because Iran hasn't admitted that it had a nuclear program 4 years ago. (You can read about it at the BBC World News.)

Well that's cool. We attacked Iraq because we thought they might attack us with WMD in the future. We may as well attack Iran because they might have attacked us with WMD in the past. I think you'll agree there's a kind of pleasing symmetry there.

In another twist of irony, Ahmadinejad hailed the US Intelligence report as "announcing a victory for the Iranian nation in the nuclear issue against all international powers". What happened to not believing anything the "Great Satan" says? Man, they really don't make tyrants like they used to.

The woman in the photo is modeling Libyan fashion; militaristic, yet alluring don't you think?

(Sometimes when you wake up and find yourself in the Twilight Zone, you might as well go with it.)