<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>L&#039;ardoise eduvax - Tag pre-alpha</title>
	<link>http://eduvax.net/index.php?tag/pre-alpha</link>
	<language>en</language>
	<description>Blog, free software projects, computer tips and more</description>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://eduvax.net/feed.php?rss" />
	<lastBuildDate>Sun, 07 Sep 2014 15:47:00 +0200</lastBuildDate>
	<generator>PluXml</generator>
	<item>
		<title>Re-Synthesized Reality Transportation Game</title> 
		<link>http://eduvax.net/index.php?article9/re-synthesized-reality-transportation-game</link>
		<guid>http://eduvax.net/index.php?article9/re-synthesized-reality-transportation-game</guid>
		<description>&lt;p&gt;How to make long transportation time more fun ? Let&#039;s make the transportation itself a game. Using geographic database synthetic world generator coupled with GPS, the traveler may play inside a fantasy world directly derived from the real locations he is going through. All the needed pieces to build such entertainment are already almost freely available: geographic data, portable device integrating GPS and advanced graphics capabilities. Let&#039;s try to think about what is feasible by linking all that stuff.&lt;/p&gt;&lt;h1&gt;The game concept&lt;/h1&gt;

&lt;p&gt;A 3D shoot them up game without predefined levels: levels are built live using your location and geographic data. Of course, such game targets the passengers only, The player has no control over the movements of its in game vehicle. It&#039;s in game location is driven by its real location according the GPS sensor feed. He can only control an embedded device like a turret to lock and shoot targets. This would result to some kind of &lt;a href=&quot;http://www.system16.com/hardware.php?id=699&amp;amp;page=1#1860&quot;&gt;Rail Chase&lt;/a&gt; game where the track is drawn upon the road you are traveling on.&lt;/p&gt;

&lt;p&gt;Other possible variations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.arcade-museum.com/game_detail.php?game_id=10499&quot;&gt;bombing game / vertical scroll shoot them up&lt;/a&gt;, more suited for in plane use.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Trailblazer_%28video_game%29&quot;&gt;running and avoidance game&lt;/a&gt;, for in car or in train use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Security issues&lt;/h1&gt;

&lt;p&gt;The game use should push safe behavior of the car driver transporting the players. Then the game shall not become more challenging when the driver breaks the speed limit. It just have to become unplayable. Such system should not be used for building any kind of racing game.&lt;/p&gt;

&lt;h1&gt;What&#039;s need to be done&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;drive in game position from GPS (quite easy)&lt;/li&gt;
&lt;li&gt;build a live synthetic world using geographic data&#039; that is a kind of 3D skinning of geographic data. &lt;a href=&quot;http://www.openstreetmap.org&quot;&gt;OpenStreetMap&lt;/a&gt; data is freely available for such use and contains many &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/Map_Features&quot;&gt;featured object&lt;/a&gt; from which game objects may be derived.&lt;/li&gt;
&lt;li&gt;setup a cool gameplay by integrating location management with the synthetic world.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;More advanced functions and features&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;record GPS track to replay at home.&lt;/li&gt;
&lt;li&gt;exchange cool recorded tracks between users over internet.&lt;/li&gt;
&lt;li&gt;multi-player: at home while replaying recorded tracks or live while traveling for the ones that can share a network link (group of travelers in train or bus using wifi, strangers crossing using 3/4G)&lt;/li&gt;
&lt;li&gt;more immersion in the re-synthesized world by using other sensors (gyro/accelerometers) to also also integrate a line of sight, not only the location.&lt;/li&gt;
&lt;li&gt;improved and advanced accuracy of the re-synthetised world in the case of availability of more accurate and complete data (especially the 3rd dimension and complete buildings&#039; layout) compared to what is freely available from &lt;a href=&quot;http://www.openstreetmap.org&quot;&gt;Open Street Map&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
		<pubDate>Sun, 07 Sep 2014 15:47:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
	<item>
		<title>Anti Visual (Meta) Programming</title> 
		<link>http://eduvax.net/index.php?article8/anti-visual-meta-programming</link>
		<guid>http://eduvax.net/index.php?article8/anti-visual-meta-programming</guid>
		<description>&lt;p&gt;More than ten years after the delivery of the first really useable UML software engineering tools, it&#039;s time to look backwards and think about the real gains enabled by those tools. It appears that the promises are not yet there and finally many have failed to increase significantly software engineers productivity than just using paper and pen. Most coders are skilled in thinking of classes and writing line of codes, not drawing. But good drawing are really useful, those are only too costly to build and maintain. Then imagine if you can drawing by coding. The same coders that didn&#039;t produce any documentation before the availability of doc extractors like &lt;a href=&quot;http://www.doxygen.org&quot;&gt;doxygen&lt;/a&gt; won&#039;t no more refuse to present diagrams if their drawing does no more require overwork.&lt;/p&gt;&lt;h1&gt;Assumptions&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Designing software by drawing and aligning boxes using the mouse and editing properties through forms is not efficient.&lt;/li&gt;
&lt;li&gt;Keeping code and diagram synchronized is time consuming and in most practical cases, synchronization is definitely broken as soon as the real implementation starts.&lt;/li&gt;
&lt;li&gt;most coders are more skilled at typing text than drawing nice diagrams.&lt;/li&gt;
&lt;li&gt;whiteboard, paper and pen remain the best tool to support software engineers brainstorming.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;First proposition - reverse the process&lt;/h1&gt;

&lt;p&gt;Instead of drawing many diagrams and then generate code, why not do just the opposite: write some code and interactively, while entering text, let the tool render automatically some diagrams of the edited code. For most coder, it is quicker to just enter &quot;class MyClass&quot; than drag and drop a class widget, then click, then enter class name... Instead of opening forms when selecting a box on the graphical view, locating the cursor to the textual definition location of the pointed entity is enough to navigate the code and enable the coder to edit the entity’s properties. This of course does not forbid to keep some cool toolbar to have some one click template application features.&lt;/p&gt;

&lt;h1&gt;Second proposition - a true and complete textual (extended) UML&lt;/h1&gt;

&lt;p&gt;Think about software as a high dimensional space. Then any UML diagram is in fact a projection of the wide space into a narrower one. Then there is many information loss from the full space to the projected one. The implemented code itself is also a projection with information loss (for instance: think about how to implement aggregation and composition using a language like java or C#, no really visible difference). Then today software engineering remains a very difficult task because it consist in defining a very complex object only through restricted and limited views. And many coders still think only the code view matters.&lt;/p&gt;

&lt;p&gt;UML stands for Unified Modeling Language. But in fact, where is the language? We only have some kind of graphical grammar, not so easy to process. Indeed, XMI has been introduced, but it was designed only to support modeling tools interoperability (that is still so limited than finally it is rarely use). It is so hard to read (by human), so don&#039;t think about edit XMI files by hand. However a modeling &lt;em&gt;language&lt;/em&gt; like what anyone may imagine when thinking about what the &lt;em&gt;language&lt;/em&gt; word means in any acronym ending by L letter is a great idea. So why not define one? A real textual language not just only hieroglyphs. Think about why most humans today use alphabets to tell stories in place of some shiny little icons sequences! May be because images is not enough to let people understand each other. Don&#039;t be too focus on the learning curve. The most easy to learn tool is rarely the most powerful and efficient. Something like actual UML diagram should be a view and only a view. Such view shall be defined as a query from the high dimensional space :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the list of entity it shall display.&lt;/li&gt;
&lt;li&gt;the projection direction, e.g. the diagram type (class, sequence, collaboration, etc)&lt;/li&gt;
&lt;li&gt;some rendering options: layout, coloring, filtering some details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A complete modeling language should be able to describe the whole high dimensional space defining software, not only what is describe by the today known projections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;main entities as UML does: package, classes, relations...&lt;/li&gt;
&lt;li&gt;algorithms, processes and equations (are you really able to design any algorithm using sequence or state diagrams?)&lt;/li&gt;
&lt;li&gt;threading and synchronization (I simply don&#039;t know how to figure threading aspects meaningfully with UML).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;documentation&lt;/em&gt; (documentation of entities may also be rendered live as the diagrams).&lt;/li&gt;
&lt;li&gt;etc: there&#039;s surely many missing things that didn&#039;t came in my mind while writing this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It&#039;s sad to say we still need another language. Too many people lose time in creating new languages while most of them really need only a good new library of an existing one. Then, if something that looks like what is describe here already exists, please leave a comment. I&#039;d rather like to extend or improve if needed something already there than implementing something completely new.&lt;/p&gt;

&lt;h1&gt;Third proposition - meta programming&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Design_Patterns&quot;&gt;Design patterns&lt;/a&gt; are to me the best improvement in the scope of object oriented software engineering of the last years. Then our next generation software engineering shall support design patterns. It shall also support some way of programming automation. Think about how many time you write the same lines of code, specially when applying &lt;a href=&quot;http://en.wikipedia.org/wiki/Programming_style&quot;&gt;coding standards and rules&lt;/a&gt;: most private class members will need the same getter and setter. Having a collection requires to the enclosing class to have also members to add/remove/check members. Writing all this common stuff can involve more than half the coding effort of a class. Then such definitions should be implemented automatically just by defining some attributes to the class properties that need it.&lt;/p&gt;

&lt;h1&gt;What is already available&lt;/h1&gt;

&lt;p&gt;Most of the basic features needed to implement a tool such as the one described above are already available from the &lt;a href=&quot;http://www.eclipse.org&quot;&gt;eclipse&lt;/a&gt; platform and its many plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;advanced text editors with automatic completions.&lt;/li&gt;
&lt;li&gt;structural model extraction from plain text (or XML) files.&lt;/li&gt;
&lt;li&gt;synchronized views&lt;/li&gt;
&lt;li&gt;UML drawing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://www.plantuml.com&quot;&gt;Plantuml&lt;/a&gt; is a good example of how to draw diagram by text. It is in fact today my favorite UML drawing tool. It is for me the fastest one. And since it use text file, it is easy to manage under revision control aside the code as any source file. But it remains far away what I dream for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is finally a drawing tool only. It is not designed to do anything else even I don&#039;t see anything preventing the addition of some cool feature looking like the ones described above.&lt;/li&gt;
&lt;li&gt;the syntax is not so convenient. It is quite easy to learn because it tries to match the UML drawing. Going back to real UML concepts should be better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the case I can&#039;t find any existing relevant base language, prototyping the ideas above will probably make use of my own &lt;a href=&quot;http://www.eduvax.net/jdev/net.eduvax.heml&quot;&gt;HEML&lt;/a&gt;.&lt;/p&gt;</description>
		<pubDate>Mon, 01 Sep 2014 09:51:00 +0200</pubDate>
		<dc:creator>Sebastien Devaux</dc:creator>
	</item>
</channel>
</rss>