Showing posts with label idea. Show all posts
Showing posts with label idea. Show all posts

Idea: Recover my stolen stuff (dot com)

No comments:
Ok, so I just had a camera with lenses stolen, and I'm determined to find it. How can I do that? One thing is to register the SN with the national stolen goods registry (whatever that is - I could find no reference on the Internet).

Another thing I was going to try is to see if the combination of items was for sale in the usual places: craigslist, ebay, the recycler, and the local used photography places. But that's a lot of work, and I think that at least some of it could be automated.

So why not "recovermystolenstuff.com"?

Idea: Sennhieser iPhone headphones; universal USB recorder; legit keylogging uses for authors

No comments:
To maximize PC performance, I listen to the music played by my iPhone snuggled in it's cradle next to my PC rather than iTunes. This is a nice arrangement, except I can't use last.fm, and more importantly when a phone call comes in I have to quickly unplug my headphones because they won't work with phone services (even though they work fine with iPod services). My Sennheiser HD560 headphones do not have a microphone, or an iPhone compatible jack. But they have a detachable cable at the headphone-end, and it would be a simple matter to manufacture a replacement cable with the appropriate plug and microphone. This would rock. I imagine this would be something of a niche market, but if you could build such a cable in China for $1 and sell for $30 over the internet, it might be worth doing. :) I wonder how many other headphones have removable cables?

The other idea came to me while playing piano: I want to jam on my keyboard and then sift through the MIDI results later, and I don't have a good way to do it right now. My keyboard does not have a built-in sequencer, and I would like to record my jams. It has a USB MIDI port though, and I was thinking it would be nice to attach a thumb drive, and transfer the data later to my computer with Ableton (this way I don't have to boot up into my computer to just jam and make ideas). But then I got to thinking, why not make it a universal recorder that just records whatever USB voltage wiggles it senses? You could use it as a keylogger, or a voice recorder, or whatever.

Speaking of keyloggers, here's a novel, legitimate use for them: let's say you're an author and you're going on a long trip and don't want to write in longhand (it's too slow, too illegible, etc), but don't want to bring a computer either. So you bring your favorite normal PC keyboard, and type blind into a special thumb drive. The thumb drive would need to be powered, but it would be a pretty darn efficient way to type simple journal-style content. Of course, higher end versions might have a tiny LCD display on the top so that you could catch your obvious mistakes as you type them, similar to what old Brother style hybrid typewriters used to give you. If you are a travel writer, you could slip the thumbdrive into an internet cafe, and dump the text into a web-based client software that would help you organize and edit what is bound to be a pretty messy text stream.


(Unfortunately this device would not be suitable for digicam backup because AFAIK cameras don't PUSH their data down USB, the data is PULLED by requesting client software. I'm not sure there are standards on requesting data. However, maybe the "direct print" interface present on some cameras) could be pressed into service for this purpose.)

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 Mahalo.com. 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.

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

2 comments:
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.

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?

The Shared Java Hosting problem

3 comments:
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)?

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:

http://joshrehman.com/img/firefox-stack.jpg

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:


http://joshrehman.com/img/software-stacks.jpg

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. :)

Web Tank revisited: AgentFrank

No comments:
Years ago (1996-ish) I envisioned something similar to AgentFrank that I called the "Web Tank" - Tank in the sense of an armored vehicle, but also as a container (I'm fond of double/triple meanings). I never got around to writing it.

I like the description of AgentFrank - it's a strong metaphor: "The goal of Agent Frank is to be a personal intelligent intermediary
and companion to internet infovores during their daily hunter/gatherer
excursions." Sounds delicious!

AgentFrank is actually more comprehensive than my original vision - heck, it includes RDF. Unfortunately, it looks like the project is all-but-dead. My first clue that this is the case is that he refers to using "Avalon Phoenix" as a "future direction". Avalon is dead. The second clue is that the wiki was last updated Nov 2003.

Idea: Iphone speakerphone volume booster

No comments:
Many users report that the iPhone speakerphone volume is too low, even when on the highest setting. It would be a nifty device for home or car that would attach to the base of the iPhone and boost the speaker. Well, actually it would probably *replace* the speaker.

Come to think of it, I wonder if the new generation of iPod speaker docks (the old generation does not work with my iPhone, alas) could be used for this purpose.... It's worth a shot, even if the iPhone mic might get obscured (the mic is also on the bottom of the phone, and would be blocked by the doc.) One could "mod" the doc by, say, drilling a hole in it to give the mic some space.

Idea: virtual KVM

3 comments:
Ok, so I often have two machines running, a desktop with two screens and a laptop with one screen. It looks like this:
photo.jpg
(Click on the photo for an explanation of each screen). It would be cool if my mouse would work on all three screens, even though it's another computer. It would be REALLY useful if they also shared a clipboard. How would it work?

A program runs on both the master and slave computer. The slave waits for mouse event information on a port, and when it's recieved the slave software generates low-level mouse events. The master waits for a certain gesture (in this case, hitting the edge of the middle screen) and then starts sending mouse events to the slave. Moving clipboard information around is more interesting - basically I would make it so that when the "remote" cursor copies something and then it comes back, a clipboard transfer occurs. I have no idea how copy/paste information is stored or how it would be transferred - and that's where the interest lies. One could extend this easily to transmit keyboard events as well.

This is kind of like CrossLoops or LogMeIn but without the need to reproduce video data.

This would be a really nice little utility for a Windows hacker to come up with. (Could it be done in Java? probably)

[Note on making this post: what a cool workflow! I took the photo with my iPhone, emailed it to flickr, went to my flickr account and dragged the photo into Scribefire. I then posted, looked at my blog in another tab and copied the link into Flickr. Sweet.]

[Update: Jim White points out a wonderful tool called Synergy that does exactly what I want. Big thanks to Chris Schoeneman & friends for writing it.]

[Update: Well, Synergy works great. I still think it would be a fun Java
project though (and heaven knows that we computer programmers will never tire
of reinventing the wheel).

Additionally there are four enhancements I would like to see:
  1. Support for cross-machine drag-n-drop.
  2. Improved security (when on the client machine keystrokes and clipboard data are transmitted in the clear; could be solved with a simple tunnel)
  3. Improved usability (setup could be a lot more intuitive)
  4. Support for arbitrary screen locations (screens are always assumed to be at the same height, which is often wrong; my tablet is often *below* my primary screen when used as a writing surface)

And as much as I love cross-platform C++, I'm a Java guy. :)


Technorati Tags: , ,

Crayon Physics at Thanksgiving

No comments:
I couldn't resist - I brought my tablet to Thanksgiving dinner, with Crayon Physics loaded up, and showed it around. Watching people work with it was even more interesting than the game itself!

My older aunt (in her late sixties), who plays a lot of online poker, was a bit mystified by the whole thing. I had to explain what the point of the game was several times (e.g. 'get the red ball to the star'). I found it rather interesting that something as simple as that sort of objective would be difficult to understand. I suspect that she didn't get it because the game has no "payoff" - loud sounds or images to celebrate your "victory". Also, there was no money involved. :)

Once she sort of got the point, she was very tentative with the stylus. She didn't want to touch the screen with it. Once she sorta got over that, she kept wanting to "push" the ball directly. Of course, this is not the nature of this game - you can only indirectly interact with the ball by creating a variety of objects).

Then, when the ball wasn't rolling fast enough for her, she tried tilting the tablet! That was awesome. It gives me an idea for a little card (either pc card, sd card, or whatever) that could give that sort of feedback. Note: the iPhone has a limited accelerometer of that sort.

When I showed her how to reset the level (by pressing escape and
clicking "reset level") she was also a bit confused. She never did get
used to just touching things with the stylus. Once again, I would guess this is because of the great pains she had to go through to unlearn all of that intuition when working with computers, and is now loath to give that up!

Next up was my small cousin. He's five. He had absolutely no problem with the stylus. In fact, he took to the whole interface like a fish in water and was delighted (at least for about 30 minutes). The interesting thing with him is that he liked to draw smaller squares right on top of each other, and right on top of the ball, which has an interesting (and useful) effect in the game. He got through "teeter-totter" level by basically squirting the ball with a succession of small squares. (for the record, when I solved it, I was enthralled with the idea of using the the teeter totters to hurl the ball in an elegant arc. I eventually settled on an elegant two box approach, which none of the children ever figured out. But when I showed them they were duly impressed.).

He had a few good ideas on the "space" level - building a structure on the lower level, rapidly drawing boxes to try to control the ball's decent. But he eventually started trying the "shotgun" approach of drawing lots of (big) squares over the ball and hoping that it would squirt in the right direction. He got really close a couple of times. (The solution I used is 3 boxes. I tried to give him hints in that direction, but I don't think it took).

Anyway, I could see him getting frustrated and by this time we had a crowd of little cousins watching us, so I skipped the level. Once again, he surprised me with a new approach to the "barrier" level - after a few false starts, he used little boxes to successively raise the ball to an equal height with the barrier and then push it over. I think that was clever. (My own solution was very, very different, and relied on getting the ball under the barrier.)

If you have a tablet, I highly recommend doing this experiment. Let me know how it goes (either in email or comments.)

New developments in desktop applications written with web technology

No comments:
Adobe AIR is a skunkworks type tool that allows developers to write desktop apps using their favorite web technology (HTML/JavaScript, Flash, Flex). There are also lots of tools that go "the other way", that let desktop developers write desktop apps and publish them on the web. Is AIR good? Is it a good direction for software to take? Or is it a short lived distraction? I think its good. I hope that all client code can one day be deployed regardless of target environment. Furthermore, although they've been derided for many years as simply poor replacements for desktop apps, many web applications actually have a lot going for them in terms of architecture.

A related idea I had some time ago is to use the Eclipse Rich Client platform to give users a way to execute their favorite webapps in special windows. Using this hypothetical tool, Gmail would have it's own icon and look like a normal application to the operating system, rather than just another browser window. You wouldn't see or be bothered with all the browser crap you don't need with gmail. You'd have a recognizable icon in your taskbar (rather than a generic browser icon). And you won't worry about mixing tabs around, etc, or accidentally closing the application. In addition you could support a high degree of offline operation. Of course, this could (and should!) be applied to any webapp which is designed and intended to run for a long time on the desktop - think enterprise cms tools, etc.

[Update] Thanks to Eric Case for pointing out the wonderful Mozilla Lab's Prism Project. This project doesn't use the Eclipse RCP, but it's goals are essentially the same as mine. He also pointed out a Mac/Gmail specific desktop integration product called Mailplane. Indeed, Mailplane goes even further than I was thinking, supporting things like drag-n-drop for adding attachments (which is really nice!). Although it doesn't seem to support offline operation, which is kind of odd. That kind of environment could provide a Greasemonkey like facility allowing developers to insert something like the Dojo Offline Toolkit. (You could do something in native code too, but why bother?)


Idea: secure webmail proxy

No comments:
Ok, so it's well-known that travellers of the world are being keylogged and hacked big time. Additionally there are growing concerns about webmail privacy.

Solve both problems with a private secure webmail proxy that does two things: defeat key loggers with a graphical challenge response credential check, and defeat eavesdropping by making encryption easy to use with webmail.

The system consists of some host on the internet - preferably one that's stable and owned by the user. E.g. a home server. (This minimizes some risks, but maximizes others...) That system provides a web interface that can be accessed world wide (unfortunately most consumer ISPs block port 80, and some internet cafes block alternate ports...). The system contains your username password for gmail, for example, and prompts you with a fancy graphical clickable scheme to verify who you are. It then logs into your webmail, and provides you with content.

This is enough to defeat keyloggers (although there are easy tricks to do that), but since we're proxying, why not go one step further and make PKI services easy to use? The basic idea is that a small piece of software on the proxy will be looking for encrypted content and unencrypt it for you. It could be presented as text, but it would be even cooler to present it as an image, making it that much harder for someone to eavesdrop assuming they have complete control over the client machine.

This addresses one of the severe usability flaws of modern PKE software - it's too easy to mess up. It's easy to loose your private key; it's easy to forget your private key decrypt passphrase. It's hard to install the correct software and use it properly, on all the systems you might want to use it on. In this system the private key file is stored on your (presumably secure) home system, and the proxy has the ability to decrypt the private key.

Because of the nature of this sort of software, it basically must be open source. Ironically, as it becomes more popular so the countermeasures will become more popular as well. However, it's like those red bars people put in their cars - they are possible to remove, but if presented with two cars one with and one without, why bother?

A "not too shabby" variation is to use something like FireGPG, which is a Firefox plugin that at least eases the integration woes between GPG4Win and the browser. Frankly I think my idea is better. :)