Great looking and working sample. Complete with highlighter pen and selection.
This is well timed–I need to learn how to create a highlighter effect–duh just set the opacity value on the ink color. I think I have too much chemo on my brain! A good color for a yellow highlighter is “#80ffff00″. Simple.
After adjusting and tweaking code to get it to work, I’ve messed up the app a bit, so it’s going to take a couple days before I have it back in order. I’ll post a link to the program then, which will enable you to post an inked drawing to flickr.
I’ve been thinking a lot lately about what would happen if the Silverlight canvas, such as that used in the MathTIP here, would grow in size as it is being used. Likewise, what does the experience mean if the writing area were sized to the browser window? What other types of Math could I or should I integrate in? Is a browser writing surface really a good idea?
I want to keep pushing the idea further and I have some raw ideas. Nothing to post about yet, but some ideas that will be sure to keep me up late at night trying to figure out how to make things work. I love those kinds of problems. Not too hard. Not too easy.
This is the exact issue I ran into with the Silverlight version of InkPlayer. I’m thinking I went too far trying to make Javascript names unique. We’ll see.
One such example is with math problems. Already, your favorite search engine probably is able to calculate the answer to simple math problems. Type “2+2″ into one of the leading search engines and it’ll probably realize you want to an answer to the problem rather than a literal search and the engine will most likely return “4.”
What I’d like to see is this notion taken even further. Of course, entering complicated math problems textually, for instance, can get very painful. One alternative is to support handwritten input of equations as I’m showing here.
I’ve posted a simple demo app, written with Silverlight and a web service, that can take handwritten math equations, recognize them, format the problems sufficiently for Google, and then passes them off to Google to be solved.
Here’s a video of the app in action:
And a screenshot for reference:
Of course, you might ask why doesn’t the recognizer solve the problem too? Why involve Google or some other “answer engine.” Well, it could. But the idea here is to emphasize here in the demo that I don’t think it’s just any old webservice that is needed–it’s one of authority. One that you go to whenever you’re looking for an answer–particularly answers that you are occasionally looking for.
I’d like to see the search engines become answer engines for a whole host of problems. Math being one problem type.
A few things to note about this demo app. The equation recognizer is based on one that was written by someone else. I don’t know the person’s name, but I think the original code was called MathInk or something like that. I believe it dates back to the early days of the Tablet PC. (Update: It was called MathsInk.)
The recognizer does have some quirks and can get rather slow with large equations. It’s also fairly limited in its grammar. It does support the square root symbol, sin, cos, tan, and log. You can also use a vertically oriented numerator and denominator.
A couple tips:
* If you’re having trouble getting “sin” to be recognized, try not dotting the letter “i”.
* Don’t use parentheses around the values that immediately follow sin, cos, tan, and log. The recognizer will work with parentheses, but it often misrecognizes them. So write “log10″ rather than “log(10)”.
* The multiplication symbol is an “x” rather than an “*”
I’ve also noticed a couple performance bugs, but since this is one of those “I threw this together in under a day demos,” so I’m afraid I haven’t had a chance to clean them up. I hope you don’t mind and that it doesn’t cloud the idea I’m trying to get across too much.
In it she mentions that you can access the recognition alternates for words by tapping on the recognized words themselves. For example, let’s say you handwrite the query “Tablet PC”:
As you can see the handwriting recognizer recognized the words correctly and displayed “Tablet PC.”
However, what if this wasn’t the case? You can get alternate recognition results by tapping on the recognized words. The reco word will cycle through the various alternates that the recognition had returned. For instance, one tap on the word “Tablet” changes the recognition to lowercase “tablet PC”:
Tapping again, changes “tablet” to “tabla”:
And one more click turns “tabla” into “Tabler”:
And, finally, one more click restores “Tabler” to the correct word, “Tablet”:
There really should be a correction UI that appears when you click on a word, but that’ll have to wait.
Oh, and by the way, I think I fixed the resizing bug which was accidentally reducing the size of the ink surface when the window width was reduced. I hope it’s fixed anyway.
I’m trying to figure out all the ducks I need and what order they should be in to get Moonlight (Novell’s Linux implementation of Silverlight) and oh how this reminds me so much of the Linux world. Lots of pieces to download, build, tweak, and so on. It’s going to be brittle. It’s not a simple matter of installing an app. It’s not a simple matter of following a dozen cookbook steps. It’s the steps that are implicit that I’m concerned about.
You can argue that this is no big deal. After all the code is still under development. But I see it more as a mindset. I had a boss once challenge me by forcing us to build a simple install procedure for a very complicated app from day one. I’m not so sure it’s the best thing to do on day one, but it sure got us to think and rethink what it meant to install the app. And it sure helped those that wanted to check out the app before it was done. People could install and uninstall it with ease–even though this particular product was very extensive and complicated. Anyway, back to Moonlight.
I understand that Novell is working towards creating an image that others can use. I imagine it’s the best way to proceed. If I could just clone one of the development machines of those working on Moonlight, I would.
Maybe I’m being too concerned and the build process will go fine. Experience tells me not. This is probably one of those times I should set experience aside and just jump in. I’ll learn more that way. That’s for sure.
This is one of my down days so I decided to learn a little about facebook development. After a bit of a struggle trying to find the info I needed, I got a simple Hello World style app working. Now I want to try something more elaborate and Silverlight has come to mind.
But how?
I’ve seen a few references to Silverlight and facebook, but I don’t see any good step-by-step instructions in terms of what can be done. Just bits and pieces. Clearly I need to use that other half of my brain that currently has the day off. So I’ll try again tomorrow.
I hope the Silverlight folks aren’t running into a problem here. I kind of feel like each way I turn, Silverlight or WPF can’t do this or that until “a future version.”
I’m confused. Is it OK for developers to be posting Silverlight 1.1 apps or not? It seems like everywhere I turn that’s what community developers are doing. They’re voting with their keyboards and skipping the 1.0 JavaScript implementation of Silverlight and opting for 1.1.
But I thought the license didn’t allow developers to post their 1.1 wares. I’m totally confused. If Microsoft was ever wanting to keep the cat in the bag, it’s too late. The challenge I see here is that the search engines are going to be filled with apps that probably won’t run right when Silverlight 1.1 is actually released–because of the inevitable changes to the implementation along the way.
Anyway, I’d prefer jumping up to 1.1 if it was OK. But I don’t see where it is and I don’t understand why so many community developers are going fullsteam ahead with it.
I can appreciate sharing coding tidbits that’ll work with 1.1, but full apps? I’m not sure which way to go? 1.0? or 1.1?
I just tried to help a friend install Silverlight on their Windows XP (Version 2002) system which is running IE6. The setup program reported that the OS/browser was unsupported.
What I don’t get is that the Silverlight Requirements page indicates that Windows XP and IE6 are supported. I guess the Version 2002 of XP is not. Confusing. I’m not sure what the big deal would be.