
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Examancer &#187; webapp</title>
	<atom:link href="http://examancer.com/tag/webapp/feed/" rel="self" type="application/rss+xml" />
	<link>http://examancer.com</link>
	<description>take in moderation</description>
	<lastBuildDate>Fri, 16 Dec 2011 00:15:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>ExaNotes &#8211; An Overdue Introduction</title>
		<link>http://examancer.com/2009/06/exanotes-an-overdue-introduction/</link>
		<comments>http://examancer.com/2009/06/exanotes-an-overdue-introduction/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 05:12:13 +0000</pubDate>
		<dc:creator>Carl Zulauf</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[exanotes]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://examancer.com/2009/06/exanotes-an-overdue-introduction/</guid>
		<description><![CDATA[Several months ago I started working on ExaNotes as a lightweight personal tool to write, access, and search notes from one of the many computers I may use throughout the day. I told a good friend of mine about the simple web app I was building and she said it sounded like a great tool [...]]]></description>
			<content:encoded><![CDATA[<p>Several months ago I started working on <a title="ExaNotes - Secure Note Taking" href="https://exanotes.com/">ExaNotes</a> as a lightweight personal tool to write, access, and search notes from one of the many computers I may use throughout the day. I told a good friend of mine about the simple web app I was building and she said it sounded like a great tool for keeping a journal. I asked her if she could help test the app by keeping a journal and she hesitated. As good of friends as we were the idea of me having access to her journal was not a comfortable one. The convenience of being able to access her journal from any computer was appealing but she didn&#8217;t want to trade control of her privacy for convenience. Her desire for privacy gave me the idea of developing a system that was so secure that even the developer or administrator of the tool could not access the content users of the application have stored within it.</p>
<p>I decided to use this as a chance to learn much more about building secure web applications and I spent a few hours diagramming the concept. Then, I spoke with my friend again. I explained the design to her and she agreed the design would keep her journal secure enough that she would feel comfortable testing it and using it.<span id="more-136"></span></p>
<p>The basic design of <a href="https://exanotes.com/">ExaNotes</a> is that the a user&#8217;s password is used to encrypt each user&#8217;s notes using the very strong <a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a>-256 cipher. This password is only available to ExaNotes during the duration of the user&#8217;s browsing session. Once a logout or timeout has occurred the session data is destroyed and there is no longer any information left on the server which could be used to decrypt a user&#8217;s notes. The only thing stored on the server are the <a href="http://en.wikipedia.org/wiki/Salt_%28cryptography%29">salted</a> <a href="http://en.wikipedia.org/wiki/SHA_hash_functions">SHA-256</a> <a href="http://en.wikipedia.org/wiki/Cryptographic_hash">cryptographic hashes</a> of the user&#8217;s username and password. Even the username is anonymized!</p>
<p>In reality there is no way to completely secure any web application from someone who has all the keys and the knowledge. A sufficiently skilled developer or administrator could modify ExaNotes in such a way that user credentials were captured at the time of login and stored somewhere, allowing them the ability to decrypt the notes of users whose logins they have captured. As it currently stands ExaNotes only retains the login credentials for the duration of the user&#8217;s session and the session data is not easily accessible. More than just my good nature allows me to promise ExaNotes will remain this way as long as I am administrating it. My own self interest is to thank as well. If I had access to the content of ExaNotes&#8217; users I would assume a level of liability I do not want. Building a way to gain access to user content could force me to reveal content to a 3rd party. If the 3rd party was a good intentioned police officer wanting access to content to solve or prevent a murder there is very little ethical dilemma from my perspective. However, if an agent of an oppressive political organization attempted to coerce or force me into providing access to a user&#8217;s notes in an attempt to track and suppress political dessent it would be nice if I could avoid the ethical quandary by being able to truthfully respond that I simply have no way to provide access. I feel preventing myself from assuming that liability and building a truly secure and anonymous system is even more important than providing any mechanism for 3rd party investigation.</p>
<p>For some my promise is understandably not enough. To allow for independent validation of ExaNote&#8217;s design and security and to allow people to run ExaNotes on their own server I am offering the source code to anyone who requests it. For now anyone interested can send me an email and I will send you the source. Eventually I plan to start an open source project and release the source code under an open source license. I simply have not found the time and have not yet had requests from other developers to do so. For those interested ExaNotes is built using PHP,MySQL,HTML,CSS, and JavaScript. ExaNotes makes use of the prototype javascript library and tinyMCE rich text editor for its web interface. ExaNotes also contains a small API which could be used for desktop or &#8220;native&#8221; clients. If there is interest the API will be published with documentation.</p>
<p>The user interface of ExaNotes is clean, simple, and easy to learn. I generally follow the KISS principle in my interface design, which stands for &#8220;Keep It Simple, Stupid!&#8221; I&#8217;m sure you will agree that I have done that with ExaNotes. While the interface <strong>is</strong> simple I do not believe it is boring. ExaNotes provides a slick, even elegant interface for writing and managing your notes. This interface is lightweight yet modern, making use of modern web development tools like Ajax and Rich Text Editing while running fast on even the slowest computers and the smallest screens. ExaNotes even runs well on some mobile devices and is particularly optimized for use with the <a href="http://www.palm.com/us/products/phones/pre/index.html">Palm Pre</a>.</p>
<p>ExaNotes has been functional for a few months now and has been my primary note taking tool for roughly as long. I have been developing ExaNotes to fit my needs and those of a few of my friends and colleagues. I now feel this application is mature enough that it is ready for a larger audience and hopefully there is a large audience out there who will find it as useful as I do.</p>
<p>The public beta begins today. Simply visit <a href="https://exanotes.com/">ExaNotes</a> to participate.</p>
<p>Please send me questions, criticism, suggestions, bugs, or any other feedback you have regarding ExaNotes. Leave a comment here, <a href="mailto:carl@examancer.com">send me an email</a>, message me on <a href="http://twitter.com/examancer/">twitter</a>, even find me on AIM or Facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://examancer.com/2009/06/exanotes-an-overdue-introduction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

