<?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>Jopsen.dk/blog &#187; School</title>
	<atom:link href="http://jopsen.dk/blog/category/school/feed/" rel="self" type="application/rss+xml" />
	<link>http://jopsen.dk/blog</link>
	<description>Thoughts mixed with random memory dumps...</description>
	<lastBuildDate>Mon, 23 Jan 2012 22:38:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Petri Nets With Discrete Variables, &#8211; A Bachelor Project</title>
		<link>http://jopsen.dk/blog/2011/07/petri-nets-with-discrete-variables-a-bachelor-project/</link>
		<comments>http://jopsen.dk/blog/2011/07/petri-nets-with-discrete-variables-a-bachelor-project/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 21:50:05 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/?p=240</guid>
		<description><![CDATA[A few days ago a diploma dropped in the door, meaning that after 3 years at Aalborg University I&#8217;ve got a &#8220;Bachelor of Science (BSc) in Computer Science&#8221;, as it says on the paper&#8230; I&#8217;m of course continuing as a master student next &#8211; no reason to get out &#8220;there&#8221; in the real world, where you have [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago a diploma dropped in the door, meaning that after 3 years at Aalborg University I&#8217;ve got a &#8220;Bachelor of Science (BSc) in Computer Science&#8221;, as it says on the paper&#8230; I&#8217;m of course continuing as a master student next &#8211; no reason to get out &#8220;there&#8221; in the real world, where you have to work, assuming you don&#8217;t what to starve <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyways, it occurred to me that I haven&#8217;t blogged about my Bachelor project. So I better get it done now, as I&#8217;m off for vacation in California later tonight&#8230; This semester we worked in groups of 3, and was supposed to write a 12-20 pages article, as opposed to a 100-200 pages report. Which turned out to be quite challenging, but also somewhat nice, because we got to polish every sentence.</p>
<p>As the title of the post indicates we did a project about <a href="http://en.wikipedia.org/wiki/Petri_net">Petri nets</a>, a very simple but powerful modeling language. To achieve a &#8220;feeling&#8221; of novelty we introduced global discrete variables, that you can condition on and modify in transitions, and called our new model for Petri nets With Discrete Variables (PNDV). Whilst, to my knowledge, this have not been done before, we didn&#8217;t focus on showing that PNDVs where particularly useful for any specific purpose. So that part of the project feels a little shoehorned, at least to me, and maybe only me, because we all got an A for the project.</p>
<p>Nevertheless, assuming that the PNDV model (we invented) is interesting, then the graphical Petri net editor and verification tool we wrote during this project might also be interesting. In a desperate search for a name we came up with PeTe, yes is spelled pretty weird, but also quite cute <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://jopsen.dk/blog/wp-content/uploads/2011/07/PeTeSS.png"><img class="alignnone size-full wp-image-243" title="PeTe" src="http://jopsen.dk/blog/wp-content/uploads/2011/07/PeTeSS.png" alt="" width="716" height="572" /></a></p>
<p>Given a PNDV or Petri net PeTe can determine if a state satisfying a given formula is possible. This problem is very hard (EXPSPACE-hard), but we had a lot of fun writing different search strategies for exploring the state space of a PNDV. Most notably we found that even quite simple heuristics can provide a huge performance improvement by guiding a search in state space. We also had great success with over-approximation, by using state equation and trap testing to disprove the satisfyability of a formula.</p>
<p>The heuristics and methods implemented in PeTe is presented in the article we wrote, available for download below. This article also present some, in my opinion, rather shoehorned results, like translation from Discrete Timed Arc Petri Net to PNDV. I also can&#8217;t help but feel that the direction and goal in the article could have been more clear. But done is done, and I&#8217;m off to vacation when I&#8217;ve added some links <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/PetriNetsWithDiscreteVariables.pdf">Petri Nets With Discrete Variables</a> (pdf, 0.7MiB)</li>
<li><a href="http://github.com/jopsen/PeTe">PeTe project page at github</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2011/07/petri-nets-with-discrete-variables-a-bachelor-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Project on Optimal Triangulation of Bayesian Networks</title>
		<link>http://jopsen.dk/blog/2010/12/triangulation-project/</link>
		<comments>http://jopsen.dk/blog/2010/12/triangulation-project/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 19:28:04 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/?p=224</guid>
		<description><![CDATA[This semester we did a project in machine intelligence, however, as I find probability calculus and Bayesian networks utterly boring I convinced my group to do a project about triangulation of Bayesian networks. A triangulation of an undirected graph G, is a set of edges called fill-ins, such that G with these fill-ins added is [...]]]></description>
			<content:encoded><![CDATA[<p>This semester we did a project in machine intelligence, however, as I find probability calculus and <a href="http://en.wikipedia.org/wiki/Bayesian_network">Bayesian networks</a> utterly boring I convinced my group to do a project about triangulation of Bayesian networks. A triangulation of an undirected graph G, is a set of edges called fill-ins, such that G with these fill-ins added is a <a href="http://en.wikipedia.org/wiki/Chordal_graph">chordal graph</a> (a graph that doesn&#8217;t have a chord-less cycle of more than 3 node). Triangulation is of graphs is used for many purposes, and with difference optimality criteria, such as minimum fill-ins, minimum clique size (tree width) and minimum maximal clique sum (optimal table size), as is relevant for Bayesian networks.</p>
<p>The problem of finding an optimal triangulation is NP-Hard (with respect to mentioned optimality criteria). And since there&#8217;s many fairly good simple greedy heuristics, it can be argued that algorithms for optimal triangulation of Bayesian networks are uninteresting. However, to check of a greedy heuristic is good, optimal triangulations are needed. It&#8217;s also possible that optimal triangulation might be worthwhile if  computed offline, especially if the application needs to process a lot of data or work on an embedded platform. Or whatever, optimality is always slightly interesting, if not for anything useful, than for the fun of finding them&#8230;</p>
<p>In this project we implemented some simple greedy triangulation heuristics, compared their result to the optimal solutions. But most interesting is probably our work on search algorithms for optimal triangulations of Bayesian networks. We based our work on <a href="http://www.helsinki.fi/pgm2010/papers/ottosen1.pdf">two</a> <a href="http://www.helsinki.fi/pgm2010/papers/ottosen2.pdf">articles</a> by <a href="http://www.cs.aau.dk/~nesotto/">Thorsten J. Ottosen</a> and <a href="http://www.cs.aau.dk/~fvj/">Finn V. Jensen</a>, who does a best or depth first search in the space of all elimination orders. As far as we&#8217;re aware these articles are the only ones that proposes algorithms for optimal triangulation of  Bayesian networks.</p>
<p>In this project we&#8217;ve created good improvements to the optimal triangulation algorithms. We reduce the search space by excluding elimination orders resulting in the same triangulation. Our improvements provides around 5x speedup on sparse graphs, and can be applied to regardless of the optimality criterion. I think this project was really cool, because I got to play with something that was new and fairly untouched. And the fact that I managed to propose a a few interesting improvements didn&#8217;t make it any less cool <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Report and source code:</p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/triangulation-report.pdf"> Project report</a> (0.7 MiB PDF)</li>
<li><a href="http://jopsen.dk/blog/downloads/bnc.tar.gz">Source code for implementation</a> (47.8 MiB tarball)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2010/12/triangulation-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>groo, a GRim Object Oriented programming language</title>
		<link>http://jopsen.dk/blog/2010/06/groo-a-grim-object-oriented-programming-language/</link>
		<comments>http://jopsen.dk/blog/2010/06/groo-a-grim-object-oriented-programming-language/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:46:26 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/?p=195</guid>
		<description><![CDATA[Hmm&#8230; Not the official title of my fourth semester project at Aalborg University. For which I just got an A&#8230; and have been thinking about publishing since I handed it in. This semester my group have designed and implemented a small statically typed object oriented language slightly inspired by Python. We wrote our own lexer [...]]]></description>
			<content:encoded><![CDATA[<p><em>Hmm&#8230; Not the official title of my fourth semester project at Aalborg University. For which I just got an A&#8230; and have been thinking about publishing since I handed it in.</em></p>
<p>This semester my group have designed and implemented a small statically typed object oriented language slightly inspired by Python. We wrote our own lexer and parser generator in Python, and implemented the compiler in C++. And just for the record we implemented the DFA of the lexer and PDA of the parser using goto&#8217;s, inspired by <a href="http://re2c.org/"><span style="color: #000000;">re2c</span></a>, this was quite fun and the result very fast.</p>
<p>The language is called groo (that was the best name we could come up with), it compiles into gril (groo intermediate language) which in turn run on VROOM (groo virtual machine) where memory is managed by MOM (Mark-sweep Object Manager). Whilst this isn&#8217;t the best project yet, and all the acronyms doesn&#8217;t make much sens, I really like to say that when we need to release memory we call MOM to clean up <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
(I appoligies for my crazy sens of humor).</p>
<p>I don&#8217;t think the project is of much use to anybody else&#8230; But if you want to play with simple, well documented compiler in C++, this might be it&#8230; Also the parser generator is AFAIK pretty unique, haven&#8217;t see anybody else implement a parser using goto&#8217;s&#8230; Anyway the project report and groo compiler source code is all in English and available here:</p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/d201a-report.pdf">Project report</a> (1.5 MiB PDF)</li>
<li><a href="http://jopsen.dk/blog/downloads/groo-1.0.tar.gz">Compiler source code</a> (16,5 MiB tarball)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2010/06/groo-a-grim-object-oriented-programming-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Foodolini, A food management system</title>
		<link>http://jopsen.dk/blog/2009/12/foodolini-a-food-management-system/</link>
		<comments>http://jopsen.dk/blog/2009/12/foodolini-a-food-management-system/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 19:51:10 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/?p=156</guid>
		<description><![CDATA[Now I&#8217;m done with my third semester at Aalborg University. The focus on this semester was software engineering with the Object-Oriented Analysis (OOA&#38;D). Personally I found this subject rather boring, I guess making pretty diagrams trying explain technical stuff in a manner &#8220;mortals&#8221; can understand maybe utterly uninteresting Anyway, for this project we analyzed, designed [...]]]></description>
			<content:encoded><![CDATA[<p>Now I&#8217;m done with my third semester at Aalborg University. The focus on this semester was software engineering with the Object-Oriented Analysis (OOA&amp;D). Personally I found this subject rather boring, I guess making pretty diagrams trying explain technical stuff in a manner &#8220;mortals&#8221; can understand maybe utterly uninteresting <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyway, for this project we analyzed, designed and implemented system for managing recipes and food in a common household. The system was suppose to compute nutritional intake and manage diets and exercises as well, however, these features were never fully designed and implemented. Nevertheless, it uses the <a href="http://www.ars.usda.gov/Services/docs.htm?docid=8964">USDA National Nutrient Database for Standard Reference</a>, to find the nutritional content of various groceries.</p>
<p>The system is called Foodolini and was implemented in C# on <a href="http://www.mono-project.com">Mono</a> using Gtk#, but also runs on .Net and <a href="http://www.mono-project.com/Gtk-Sharp_Installer_for_.NET_Framework">Gtk# for .Net</a>. Foodolini uses Sqlite as database, and we wrote a simple and neat ORM tool, inspired by <a href="http://subsonicproject.com/">SubSonic</a>&#8216;s <a href="http://subsonicproject.com/docs/Using_SimpleRepository">SimpleRepository</a>. However, the most interesting feature in my opinion is the bar code scanner used when registering groceries in the system. It&#8217;s implemented using a <a href="http://zbar.sourceforge.net/">ZBar</a> which captures and scans images from a webcam. I&#8217;ll be release C# bindings for ZBar and a Gtk# widget in an upcoming blog post, when I&#8217;ve cleaned it up a bit&#8230;</p>
<ul>
<li><a title="Sources and binaries for Linux and Windows, sort of large (100 MiB)..." href="http://jopsen.dk/blog/downloads/Foodolini.zip">Foodolini 1.0.0</a> (sources, binaries and documentation)</li>
<li><a title="A very long and boring report... :)" href="http://jopsen.dk/blog/downloads/Foodolini_Report.pdf">Report</a> (documenting the analysis, design and implementation of Foodolini)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2009/12/foodolini-a-food-management-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TheMatrixDistributed, distributed realtime ray tracing</title>
		<link>http://jopsen.dk/blog/2009/05/thematrixdistributed/</link>
		<comments>http://jopsen.dk/blog/2009/05/thematrixdistributed/#comments</comments>
		<pubDate>Sun, 24 May 2009 12:07:24 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/?p=111</guid>
		<description><![CDATA[Now I&#8217;m finally done with my second semester project at Aalborg University, and as usually I publish my things here. This project is about distributed realtime ray tracing. Which have been fun, because ray tracing is CPU bound and it have been a joy to play with all sorts of hacks and optimizations. The report [...]]]></description>
			<content:encoded><![CDATA[<p>Now I&#8217;m finally done with my second semester project at Aalborg University, and as usually I publish my things here. This project is about distributed realtime ray tracing. Which have been fun, because ray tracing is CPU bound and it have been a joy to play with all sorts of hacks and optimizations.</p>
<p>The report discusses what the demand for ray tracing is, what ray tracing is and how a ray tracer can be implemented, covering the basics of ray tracing and bounding volume hierarchies. It also discusses how distribution could be done, which is the only slightly new thing in it&#8230; It&#8217;s not a perfect report there&#8217;s still some areas where the English is kind of bad and some sections that could use a rewrite or two <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Nevertheless, considering the circumstances I&#8217;m satified the result. And the group have worked fine&#8230;</p>
<p><strong>Now the interesting part</strong>, TheMatrixDistributed, as a part of this project we implemented a distributed realtime ray tracer, with bounding volume hierarchies, spheres, planes and  triangles that supports textures. We also did a small obj parser to import models exported from <a href="http://en.wikipedia.org/wiki/Blender_(software)">Blender</a>. TheMatrixDistributed is implemented in C++ and it&#8217;s turned out to be quite fast, considering that the rest of my group have little to no programming experirence. When distribution to 6 dualcore laptops and a quadcore desktop we got around 8 FPS at best with 1024&#215;768 screen and about 100,000 triangles in the scene, not filling the entire screen.</p>
<p><img class="size-full wp-image-114 alignnone" title="TheMatrixDistributed" src="http://jopsen.dk/blog/wp-content/uploads/2009/05/frontpage.png" alt="TheMatrixDistributed" width="600" height="394" /></p>
<p>The frontpage image (original 1024&#215;768) seen above has about 1,000,000 triangles it was render on 6 dualcore laptops and a quadcore desktop at about 0.6 FPS with 4x antialias.</p>
<p>Though the report and TheMatrixDistributed probably isn&#8217;t of much value to anybody it&#8217;s published here if anybody should be interested. The report is released under Creative Commons Attribution-Noncommercial-Share Alike 2.5 and TheMatrixDistributed is released under GNU GPL.</p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/RayTracing.pdf">Realtime ray tracing distributed</a> (<a title="Report prepared for printing." href="http://jopsen.dk/blog/downloads/RayTracing_twoside.pdf">twoside</a>)</li>
<li><a href="http://jopsen.dk/blog/downloads/TheMatrixDistributed.tar.gz">TheMatrixDistributed</a> (source and binaries)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2009/05/thematrixdistributed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RaptorMail, an encrypting GMail client</title>
		<link>http://jopsen.dk/blog/2008/12/raptormail-an-encrypting-gmail-client/</link>
		<comments>http://jopsen.dk/blog/2008/12/raptormail-an-encrypting-gmail-client/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 00:30:12 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/2008/12/raptormail-an-encrypting-gmail-client</guid>
		<description><![CDATA[Tomorrow, I&#8217;m finally turning in my P1 project, that&#8217;s the first semester project, at Aalborg University. The project is about RSA, and usability of encrypting email clients, and as a part of the project we&#8217;ve implemented an encrypting email client for GMail. In Python, with PyGTK and SQLite as backend, e.g. access mail while not [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow, I&#8217;m finally turning in my P1 project, that&#8217;s the first semester project, at Aalborg University. The project is about RSA, and usability of encrypting email clients, and as a part of the project we&#8217;ve implemented an encrypting email client for GMail. In Python, with <a href="http://pygtk.org">PyGTK</a> and <a href="http://pysqlite.org">SQLite</a> as backend, e.g. access mail while not online.</p>
<p>Anyway, I thought I&#8217;d publish the report here for anyone to stumble upon. Honestly it&#8217;s not that great, it&#8217;s written in English and is subject to some serious gramma issues, as we&#8217;ve been pretty busy actually getting it ready&#8230; For those who does not know what a P1 project at <a href="http://en.wikipedia.org/wiki/University_of_Aalborg">AAU</a> is, it is a project conducted by a group of 4-7 students. Most of the education at AAU, happens through these kind of projects, which is kind of nice and gives a lot of freedom. But just for the record, I have not written the entire report myself, so do not blame me all the horror that may be found within it&#8230; <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Enough about the report, during the project we also wrote an encrypting GMail client, called RaptorMail &#8211; don&#8217;t ask <a title="Seriously, I told you, don't ask!" href="http://xkcd.com/292/">why</a>. A GMail client is actually quite interesting, if I managed to find the time, it would be real nice to nail the last few bugs and integrate it with GPG&#8230; An application to access GMail through a non-webinterface while still maintaining the same feature set would be nice to have. And cacheing all mail for offline usage is an absolute killer-feature.</p>
<p>But I&#8217;m afraid I have a lot of other small projects on my mind too, so actually getting it out there is probably not going to happen. But if anybody is looking for a way to synchronize and interface GMail with a local database from Python the &#8220;gmail_cache&#8221; module I&#8217;ve written for this project is fairly comprehensive and well documented.</p>
<ul>
<li><a title="Download sourcecode for RaptorMail, including gmail_cache" href="http://jopsen.dk/blog/downloads/RaptorMail.tar.gz">Download sourcecode for RaptorMail</a>.</li>
<li><a title="Download the report as pdf." href="http://jopsen.dk/blog/downloads/P1_report.pdf">Download the report</a>, (<a title="Download the report as pdf, double sidded." href="http://jopsen.dk/blog/downloads/P1_report_twoside.pdf">twoside</a>).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2008/12/raptormail-an-encrypting-gmail-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Så blev man student, med hue på hovedet</title>
		<link>http://jopsen.dk/blog/2008/06/sa-blev-man-student-med-hue-pa-hovedet/</link>
		<comments>http://jopsen.dk/blog/2008/06/sa-blev-man-student-med-hue-pa-hovedet/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 12:17:51 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Dansk]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/2008/06/sa-blev-man-student-med-hue-pa-hovedet</guid>
		<description><![CDATA[I den forgangne uge er jeg blevet student, og har hermed afsluttet HTX. Med et snit på 9,6 kan jeg også godt være meget godt tilfreds med mine karakterer. Herunder ses mine eksamenskarakter: Studie område 2 7 Matematik Skriftlig 12 Dansk Skriftlig 10 Fysik Skriftlig 12 Engelsk Mundtlig 12 Teknik 12 Dansk Mundtlig 7 Jeg [...]]]></description>
			<content:encoded><![CDATA[<p>I den forgangne uge er jeg blevet student, og har hermed afsluttet HTX. Med et snit på 9,6 kan jeg også godt være meget godt tilfreds med mine karakterer. Herunder ses mine eksamenskarakter:</p>
<table>
<tr>
<td>Studie område 2</td>
<td>7</td>
</tr>
<tr>
<td>Matematik Skriftlig</td>
<td>12</td>
</tr>
<tr>
<td>Dansk Skriftlig</td>
<td>10</td>
</tr>
<tr>
<td>Fysik Skriftlig</td>
<td>12</td>
</tr>
<tr>
<td>Engelsk Mundtlig</td>
<td>12</td>
</tr>
<tr>
<td>Teknik</td>
<td>12</td>
</tr>
<tr>
<td>Dansk Mundtlig</td>
<td>7</td>
</tr>
</table>
<p>Jeg synes også selv at alle mine eksamener er gået meget godt. Der var lige teknik, hvor tiden gik lidt for hurtigt og jeg ikke fik sagt noget fornuftigt, men så var projektet heldigvis så godt at de ikke kunne give mig mindre end 12. Til dem der ikke har hørt om mit afsluttende teknik projekt, så var det et intelligent hjem under navnet iHome. Systemet var bygget op omkring en webserver, der bestod af et atmega644, et SD-kort, en enc28j60 ethernet controller og lidt andet godt. På webserveren kørt uip (Tcp/Ip stack), Tiny FatFs (FAT implementating), diverse drivere, en simpel HTTP server til både statistiske sider og Web API, diverse hardware drivere og en mDNS-responder name resolution implementering. Sidst nævnte er jeg selv lidt stolt af at have skrevet, mange af de andre komponenter er tyv stjålet andre steder fra. Webserveren var tilsluttet LCD, keypad, tribleastabilmultivibrator (alarm), dørlås, vindue åbner samt diverse sensorer. Jeg har valgt ikke at frigive projektet da kildekoden er en smule mixed og meget hacked. Men dele af systemet er tilgængeligt i SVN hos <a href="http://code.google.com/p/avr-uip">avr-uip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2008/06/sa-blev-man-student-med-hue-pa-hovedet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sidste skoledag&#8230;</title>
		<link>http://jopsen.dk/blog/2008/05/sidste-skoledag/</link>
		<comments>http://jopsen.dk/blog/2008/05/sidste-skoledag/#comments</comments>
		<pubDate>Fri, 16 May 2008 17:22:58 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Dansk]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/2008/05/sidste-skoledag</guid>
		<description><![CDATA[Så er min skole tid på HTX forbi, nu mangler jeg blot eksamenerne og så er jeg student. I går var det min sidste skoledag på HTX, og da skolen var færdig, var vi til galla på HTX. Hvilket var vældig hyggeligt, og danset fik vi i sagens natur heldigvis ikke Kl 24.00 fik vi [...]]]></description>
			<content:encoded><![CDATA[<p>Så er min skole tid på HTX forbi, nu mangler jeg blot eksamenerne og så er jeg student. I går var det min sidste skoledag på HTX, og da skolen var færdig, var vi til galla på HTX. Hvilket var vældig hyggeligt, og danset fik vi i sagens natur heldigvis ikke <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Kl 24.00 fik vi udleveret årskarakter og eksamens udtrækninger, og jeg fik trukket Dansk, Engelsk mundtlig samt Dansk, Fysik og Matematik skriftlig. Derudover skal jeg selvfølgelig op i Teknik A og desværre også studie område 2 (&#8220;desværre&#8221;, fordi ikke engang <a href="https://www.retsinformation.dk/Forms/R0710.aspx?id=25427#B3">bekendtgørelsen</a> definere tydeligt hvad det går ud på). I årskarakter har jeg fået som følger:</p>
<table>
<tr>
<td>Astronomi C mdt.</td>
<td>10</td>
</tr>
<tr>
<td>Dansk A mdt.</td>
<td>10</td>
</tr>
<tr>
<td>Dansk A skr.</td>
<td>7</td>
</tr>
<tr>
<td>Engelsk A mdt.</td>
<td>7</td>
</tr>
<tr>
<td>Engelsk A skr.</td>
<td>7</td>
</tr>
<tr>
<td>Fysik A mdt.</td>
<td>12</td>
</tr>
<tr>
<td>Fysik A skr.</td>
<td>10</td>
</tr>
<tr>
<td>Kemi B skr.</td>
<td>7</td>
</tr>
<tr>
<td>Kemi B mdt.</td>
<td>7</td>
</tr>
<tr>
<td>Matematik A mdt.</td>
<td>4</td>
</tr>
<tr>
<td>Matematik A skr.</td>
<td>10</td>
</tr>
<tr>
<td>Programmering C mdt.</td>
<td>12</td>
</tr>
<tr>
<td>Teknik A samlet vurdering</td>
<td>10</td>
</tr>
<tr>
<td>Teknologi B samlet vurdering</td>
<td>10</td>
</tr>
<tr>
<td>Teknologi Historie C mdt.</td>
<td>7</td>
</tr>
</table>
<p>Der er selvfølge intet overstående jeg kan være utilfreds med, udover Dansk A mdt. selvfølgelig, der ville jeg nok gerne nøjes med 7 <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Men jeg føler ikke der grundlag for en klage. Derudover er jeg personligt lidt skuffet over min Engelsk A, hvor jeg plejer at kunne gøre det lidt bedre, men jeg er nok faldet lidt af på den her til sidst&#8230; Min matematik mdt. er heller ikke overraskende, men aktivitet i matematik timerne taget i betragtning, ikke at jeg har nogle faglige problemer der. Men alt i alt er jeg godt tilfreds&#8230; Nu skal jeg bare over mine 7 eksamener.</p>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2008/05/sidste-skoledag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HSH &#8211; A simple hash algorithm + embedded webserver</title>
		<link>http://jopsen.dk/blog/2008/01/hsh-a-simple-hash-algorithm/</link>
		<comments>http://jopsen.dk/blog/2008/01/hsh-a-simple-hash-algorithm/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 18:01:33 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/2008/01/hsh-a_simple_hash_algorithm_on_embedded_webserver</guid>
		<description><![CDATA[Lately I&#8217;ve been building a webserver, in school as a light and curtain controller, on top of an AtMEGA168 and ENC28J60, I&#8217;ve based it off an article I found at TuxGraphics.org. Which by the way is a fine place to order components for personal usage &#8211; They&#8217;re cheap and they shipped to Denmark in 2-3 [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been building a webserver, in school as a light and curtain controller, on top of an AtMEGA168 and ENC28J60, I&#8217;ve based it off an article I found at <a href="http://tuxgraphics.org/electronics/200611/embedded-webserver.shtml">TuxGraphics.org</a>. Which by the way is a fine place to order components for personal usage &#8211; They&#8217;re cheap and they shipped to Denmark in 2-3 days&#8230;</p>
<p>Anyway, the webserver software I found sends a plaintext password over HTTP for authentication. This is of course not desirable since anybody with access to the same network link can see the password. This is very bad security, especially if it&#8217;s a wireless link. And who would want a light and curtain controller if the neighbor kid suddenly hacked it.</p>
<p>Therefore I decided that I needed a secure authentication method. Asymmetric cryptographic algorithms are already out of the question since I&#8217;m working on a microprocessor with 16kbytes program memory. I tried to find a conventional md5 or sha1 implementation, however they were very easily too big in program size and inefficient. So I looked around and found <a href="http://herbert.gandraxa.com/herbert/hsh.asp">HSH 11/13</a> by Herbert Glarner.</p>
<p>HSH 11/13 looked to be efficient, small and easy implement. Later I discovered that with my  lack of experience with bit manipulation in C ladder was not true. However, I did manage to get an implementation working, it&#8217;s written in C and I&#8217;ve tested it with GCC and AVR-GCC against glibc and AVR-libc respectively. You may download it here:</p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/HSH_1.0.1.tar.gz">Download C implementation of HSH 11/13</a>.</li>
</ul>
<p>Now having a webserver with a serverside hash algorithm doesn&#8217;t solve the issue. The client needs to have the hash algorithm as well. Therefore I wrote a compatible implementation of HSH 11/13 in Javascript. This may seam rather weird, and it&#8217;s sure not efficient anymore. I&#8217;ve only tested the script in Firefox 2.0, however I&#8217;d imagine that it works in other browsers as well. You may download the Javascript implementation here:</p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/HSH_ECMAscript.zip">Download Javascript implementation of HSH 11/13</a>.</li>
</ul>
<p>Like I said before this may seam rather weird, as the webserver isn&#8217;t capable of serving pages as big as the Javascript implementation. However the solution is to let the main page of the embedded webserver be:</p>
<pre>&lt; script src = 'http://mywebhost.com/myjsfile.js' &gt; &lt; / script&gt;</pre>
<p>Where &#8220;http://mywebhost.com/myjsfile.js&#8221; is a file located on a remote ordinary webserver, e.g. not served from the embedded webserver. The included Javascript file then writes an entire web 2.0 application using &#8220;document.write&#8221;. Once the web 2.0 application have been loaded it can use AJAX requests and the HSH 11/13 implementation to communicate with the embedded webserver.Apart from the main page, a simple AJAX API is all the embedded webserver needs to host. Authentication against the webserver may then be done using a HSH hashsum of a timestamp + password + data, referred to as token. Where timestamp, data and token, are send everytime an API request is made. The embedded webserver then knows the password and generates the token from the given timestamp and data, one can then authenticate the request by comparing the generate token with the received token. Note, it may not be desirable to keep track of time on a embedded webserver, so it&#8217;s easier to just check if received timestamp is bigger than the latest received timestamp, and then save the timestamp for later use.</p>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2008/01/hsh-a-simple-hash-algorithm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SimpleECDSA, a simple implementation of ECDSA in C</title>
		<link>http://jopsen.dk/blog/2007/12/simpleecdsa-a-simple-implementation-of-ecdsa-in-c/</link>
		<comments>http://jopsen.dk/blog/2007/12/simpleecdsa-a-simple-implementation-of-ecdsa-in-c/#comments</comments>
		<pubDate>Sat, 29 Dec 2007 12:32:32 +0000</pubDate>
		<dc:creator>Jonas Finnemann Jensen</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://jopsen.dk/blog/2007/12/simpleecdsa-a-simple-implementation-of-ecdsa-in-c</guid>
		<description><![CDATA[2 weeks ago I did a school project on ECDSA (Elliptic Curve Digital Signature Algorithm). At HTX we have to do a project that goes beyond the curriculum, we must combine two subjects and do an individual project about something we find interesting. I decided to combine mathematics and programming in a project about ECDSA. [...]]]></description>
			<content:encoded><![CDATA[<p>2 weeks ago I did a school project on <a href="http://en.wikipedia.org/wiki/Elliptic_Curve_DSA">ECDSA</a> (Elliptic Curve Digital Signature Algorithm). At HTX we have to do a project that goes beyond the curriculum, we must combine two subjects and do an individual project about something we find interesting. I decided to combine mathematics and programming in a project about ECDSA. Personally I think it was great fun, but perhaps I have a twisted sense of humor <img src='http://jopsen.dk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyway, I&#8217;ve publish my report <a href="http://jopsen.dk/blog/2007/12/elliptic-curve-digital-signature-algorithm">here</a>, it&#8217;s in Danish though. But I did also write an implementation of ECDSA in C. The implementation is called <a href="http://jopsen.dk/blog/downloads/simpleecdsa-1.0.0.tar.gz">SimpleECDSA</a>, though I must admit it not very Simple anymore. It uses <a href="http://gmplib.org/">GMP</a> as integer library, and uses the standardized curves cryptographic operations.</p>
<p>The comments in my source is in English, though I did translate them to Danish, before delivering my paper. Anyway, I still have the source with English comments, so I thought I&#8217;d post the source here.</p>
<p>As I had a little spare time this holiday I&#8217;ve configured the source with the GNU build system. It my first tarball created with Autotools, and it&#8217;s mostly hacked together of snippets from the <a href="http://www.gnu.org/software/automake/manual/automake.html">automake</a> and <a href="http://www.gnu.org/software/autoconf/manual/autoconf.html">autoconf</a> manual. But it works and the package compiles, and &#8220;./configure&#8221; complains if GMP isn&#8217;t present. I did also manage to get &#8220;make check&#8221; to run my internal tests, so I think it&#8217;s pretty good, considering the fact that is my first package build with autotools.</p>
<p>If you&#8217;ve any comments, bug-reports or questions to my packaging or SimpleECDSA, feel free to leave a comment. SimpleECDSA is ofcourse released under <a href="http://www.gnu.org/copyleft/gpl.html">GNU GPLv3</a>, and can be downloaded here:</p>
<ul>
<li><a href="http://jopsen.dk/blog/downloads/simpleecdsa-1.0.0.tar.gz">Download SimpleECDSA</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jopsen.dk/blog/2007/12/simpleecdsa-a-simple-implementation-of-ecdsa-in-c/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
	</channel>
</rss>

