Hey Thomas,
The itch I was scratching with this tool is that there isn't a built-in way in Windows to get a digest of a file, so... what better way than doing it in the browser?
Also, I'm the paranoid type and don't like the idea of uploading a file to someone else's server if I want the digest.
You aren't worried that doing this via Javascript will make it insecure for that use? In almost the same manner as uploading your file to a server (simply to get the hash) would be?
I dont' really understand what you're saying here. Other services that calculate the digest of a file online require you to upload your file to the service/site where you don't know what they will do with it. With Browser Hash, not one bit of your file leaves your computer or travels over the network.
How do I know that my file is never leaving my computer? To verify that, I have to verify every line of Javascript code influencing that page, every time I use it, to make sure it isn't spiriting away my file contents or feeding bogus SHA fingerprint values back to me.
I think what xtacy means by MITM is that the javascript sent by the server might be MITM'd and altered to return a different value than the actual hash.
But for instance, if I'm trying to SHA1 a Windows 8 iso (the kind which I imagine would be by far the most common use case - in which a cryptographically secure hash algorithm isn't even a prerequisite any checksum would do).
It's not any worse than downloading the sha1sum app from any http site.
No, it's worse than downloading the "sha1sum" app, because you only have to download "sha1sum" once. You can use a variety of out-of-band methods to verify the file that you can't reasonably or cost-effectively do with a website.
A website is essentially "installed" every time you visit it.
1. Haha, I agree that files will eventually become less accesible for the majority of computer users. Something like how the iPad handles projects/songs/documents instead of the generic "file".
2. Due to HTML5 limitations, you will need to drop the file from your local storage onto the browser window.
3. Yes you can get digests of a file on Windows, but it doesn't come with a built-in program.
There's a certain cool factor of file drag/drop but I think that the click-to-browse paradigm is useful on certain laptop trackpads where dragging isn't a pleasure and other situations. It would be nice if you made the drag area clickable (like min.us).
This could be useful to validate large files after downloading them, e.g. ISO files for Linux distributions--however that goes out the window with the 10MB size limit.
Why the limit? Does it take too long to compute hashes for larger files?
You could split up the file chunks by reading in sections (blob.webkitSlice and mozSlice) as array buffers and sending them to a worker object. Then you could process those in chunks with WebWorkers (or WebGL) and have a progress indicator.
CanvasXpress has got some pretty cool examples. I am currently using a not-free-for-commercial highcharts (http://highcharts.com). It is pure javascript, depends on jQuery or MooTools and I like it.
Thanks for the suggestions. A comment system is on my list of features to work on.
I think I have been fleshing out an idea like what you are suggesting from the turtle cursor. I would like to add a step-by-step debugging to WizBang that allows the user to watch variable values and step through each Wizzy (with it being highlighted graphically). If I implemented that, I think it would be a great way to visualize different sorting algorithms.
Edit: I'm also not quite a computer scientist! College drop out! :)
I just wanted to know if any actual computer scientists had input on the project's goals. I have looked into Alice, scratch, Popfly (discontinued), and couldn't really find one that was very similar to WizBang, so I was also thinking putting it on HN would dig out any project that was amazingly similar.
Great! There isn't much instruction on what to do once it's installed, so I recommend opening up the examples (available from the sourceforge files page) to get an idea how the blocks behave.
I don't think WizBang could ever take away the beginner running into compiler errors, but I feel that the beginner programmer has so many problems to face at once that this situation can be improved. By using WizBang, they can interactively learn about looping and branches without worrying about syntax.
I taught Computer Science 101 in grad school. I think this has a lot of potential.
I wonder if syntax errors could be made friendlier by animating them as visual pieces that don't fit together or that do not stick? I can imagine an editor that always keeps the text syntactically correct (by adding in closing brackets, boilerplate text to be typed over, etc). A visual editor that behaved in the same way would be very useful. Especially if the program code would dynamically update in a parallel window!
I think that people can relate to some widget or puzzle piece fitting or not fitting onto another widget or piece. Certainly, one can relate to this more readily than cryptic messages like "syntax error."
I taught Computer Science 101 in grad school. I think this has a lot of potential.
Well, that remark certainly devaluated my opinion of grad schools. I understand not everyone is fit for SICP at 18 (I certainly wasn't), but this is quite on the opposite end.
It is definitely intended for beginners, but I wanted to let HN know about it since I've seen a lot of posts wondering "how I can teach my kid to program?" and think that this is a good app for that.
WizBang is designed to teach the most basic programming fundamentals: loops, conditional branches, numeric operations, and how these blocks interact with eachother.
I am in no way trying to get any current developer to switch over to building programs in WizBang. This was never an intention. The goal is to present a simple, minimal, visual environment in which to build simple programs.
After the beginner learns the basics, WizBang eases them into the next step of learning a real language, such as C++, Java, or Python, by allowing them to compile their WizBang programs into valid code in any language that's supported.
To answer your final question: the only advantage WizBang has over a textual language is that I think there are more grade school (and even high school) students that would experiment building programs with colorful shapes than typing commands into a text editor, then running a compiler or interpreter to see what they get.
Also, I'm the paranoid type and don't like the idea of uploading a file to someone else's server if I want the digest.