<?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>Marcus Ficner</title>
	<atom:link href="http://www.marcusficner.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.marcusficner.de</link>
	<description>Software Developer. Audio Engineer.</description>
	<lastBuildDate>Fri, 24 Jun 2011 10:16:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Eclipse Demo Camps Indigo 2011</title>
		<link>http://www.marcusficner.de/?p=101</link>
		<comments>http://www.marcusficner.de/?p=101#comments</comments>
		<pubDate>Mon, 13 Jun 2011 13:34:41 +0000</pubDate>
		<dc:creator>Marcus Ficner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcusficner.de/?p=101</guid>
		<description><![CDATA[Eclipse Indigo is coming and from June 1-30 you are invited to attend an Eclipse Demo Camp, near you. Me and my collegues, from itemis mobile, will showcase APPlause, a DSL and Eclipse Toolkit for cross-plattform mobile development. APPlause is based on Xtext, which also will be covered on several demo camps. Here are the [...]]]></description>
				<content:encoded><![CDATA[<p>Eclipse Indigo is coming and from June 1-30 you are invited to attend an Eclipse Demo Camp, <a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">near you</a>.</p>
<p>Me and my collegues, from <a href="http://mobile.items.de">itemis mobile</a>, will showcase <a href="https://github.com/itemismobile/APPlause">APPlause</a>, a DSL and Eclipse Toolkit for cross-plattform mobile development.<br />
APPlause is based on <a href="http://www.eclipse.org/Xtext/">Xtext</a>, which also will be covered on <a href="http://blog.efftinge.de/2011/06/upcoming-eclipse-democamps-featuring.html">several demo camps</a>.</p>
<p>Here are the dates:</p>
<ul>
<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Bonn">14.06.2011, Eclipse Demo Camp Bonn</a> (me)</li>
<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Muenchen">20.06.2011, Eclipse Demo Camp Munich</a> (<a href="http://www.peterfriese.de">Peter Friese</a>)</li>
<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Dresden">21.06.2011, Eclipse Demo Camp Dresden</a> (<a href="http://arnewiggers.de/">Arne Wiggers</a>)</li>
<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Darmstadt">21.06.2011, Eclipse Demo Camp Darmstadt</a> (me)</li>
<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Berlin">29.06.2011, Eclipse Demo Camp Berlin</a> (<a href="http://heikobehrens.net/">Heiko Behrens</a>)</li>
</ul>
<p>If you&#8217;re not able to attend, but are interested in APPlause and mobile development in general, be sure to keep an eye on our <del datetime="2011-06-22T22:13:20+00:00"><a href="https://github.com/itemismobile/APPlause">repo on github</a></del> <a href="https://github.com/applause/APPlause">repo on github</a>, which will be updated very soon. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcusficner.de/?feed=rss2&#038;p=101</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 development in a virtual machine</title>
		<link>http://www.marcusficner.de/?p=92</link>
		<comments>http://www.marcusficner.de/?p=92#comments</comments>
		<pubDate>Mon, 13 Jun 2011 01:12:23 +0000</pubDate>
		<dc:creator>Marcus Ficner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcusficner.de/?p=92</guid>
		<description><![CDATA[For developing apps for Windows Phone 7 I&#8217;m running Windows 7 in a virtual machine using VMware Fusion. As long as you keep all your project files locally in your virtual machine everything works fine. But as soon you&#8217;ll use any remote files, maybe some generated files out of a running Eclipse instance on your [...]]]></description>
				<content:encoded><![CDATA[<p>For developing apps for Windows Phone 7 I&#8217;m running Windows 7 in a virtual machine using VMware Fusion. As long as you keep all your project files locally in your virtual machine everything works fine. But as soon you&#8217;ll use any remote files, maybe some generated files out of a running Eclipse instance on your Mac host machine, which are reachable through a shared folder, you&#8217;ll get in trouble, because Visual Studio won&#8217;t build your project anymore and leaves you with this error message:</p>
<blockquote><p>Error	1	Could not load the assembly file:///Z:\itemisApp.wp7\obj\Debug\ItemisApp.dll. This assembly may have been downloaded from the Web.  If an assembly has been downloaded from the Web, it is flagged by Windows as being a Web file, even if it resides on the local computer. This may prevent it from being used in your project. You can change this designation by changing the file properties. Only unblock assemblies that you trust. See http://go.microsoft.com/fwlink/?LinkId=179545 for more information.	ItemisApp</p></blockquote>
<p>If you follow the given <a href="http://go.microsoft.com/fwlink/?LinkId=179545">link</a>, you&#8217;ll be informed that you have to unblock these &#8220;web assemblies&#8221; and give them trust in order to be build within Visual Studio. The solution seems annoying but easy. So I used the Explorer to navigate to my shared folder, right-clicked and selected properties to find out that there was no unblock button.</p>
<p>The note on the website says:</p>
<blockquote><p>The <strong>Unblock</strong> button will not appear if the assembly is already unblocked and available.</p></blockquote>
<p>Ok, now what?</p>
<p>After a little research I found this website: <a href="http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/08/15/windows-phone-7-vs2010-and-vmware.aspx">http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/08/15/windows-phone-7-vs2010-and-vmware.aspx</a></p>
<p>There, the same error is described and the solution looked promising. All you have to do is to add this entry</p>
<pre>&lt;loadFromRemoteSources enabled="true"/&gt;</pre>
<p>into the file &#8216;devenv.exe.config&#8217;, somewhere in the &lt;runtime&gt; section.</p>
<p>Problem is, there was no such file.</p>
<p>To keep it short: If  you have Visual Studio Express installed you&#8217;ll have to search for the file &#8216;VPDExpress.exe.config&#8217; and add the implied line into it.</p>
<p>I was not able to find this file with the file search from the &#8216;start&#8217;-menu, but you&#8217;ll find it in a sub-directory where you&#8217;ve installed Visual Studio Express into. In my case it was &#8216;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\&#8217;. Trust me, it&#8217;s there. Ok, you won&#8217;t see the extension &#8216;.config&#8217; anyway, but if you open &#8216;VPDExpress.exe&#8217; with a text editor (I used Notepad++) it is the &#8216;.config&#8217; file. To be able to save your changes you&#8217;ll need admin rights.<br />
After a restart of Visual Studio and a rebuild of the project the error message disappears.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcusficner.de/?feed=rss2&#038;p=92</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MobileTechCon 2011 Spring Edition</title>
		<link>http://www.marcusficner.de/?p=80</link>
		<comments>http://www.marcusficner.de/?p=80#comments</comments>
		<pubDate>Sun, 27 Mar 2011 21:48:30 +0000</pubDate>
		<dc:creator>Marcus Ficner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcusficner.de/?p=80</guid>
		<description><![CDATA[Today I arrived in Munich to attend the MobileTechCon 2011 Spring Edition which takes place in a high-class hotel. The conference will start tomorrow with four different workshops, each dealing either with a different mobile plattform (iOS, Android, WP7) or a general cross-plattform approach in the form of web apps. I will participate in the [...]]]></description>
				<content:encoded><![CDATA[<p>Today I arrived in Munich to attend the MobileTechCon 2011 Spring Edition which takes place in a high-class  hotel. The conference will start tomorrow with four different workshops, each dealing either with a different mobile plattform (iOS, Android, WP7) or a general cross-plattform approach in the form of web apps. I will participate in the workshop about Windows Phone 7. Although I&#8217;ve already made my hands dirty on this new platform, I&#8217;m excited to hear about it from someone more experienced. Having read the profile of Ingo Rammer (<a href="http://www.twitter.com/ingorammer">@ingorammer</a>) I claim that he&#8217;s an experienced .NET developer, who can show some interesting approaches for programming apps for WP7.</p>
<p>I must admit, that my favorite platform (I think you can guess it&#8230;), both for everyday use and for programming is iOS. However, I think that WP7 with its Metro design and the technologies and tools being used (.NET, Silverlight, Visual Studio) is quite innovative and more pleasant than the development for Android. Nevertheless it will be a huge challenge for Microsoft to keep it rolling and to stand out against its competitors. From my point of view, Microsoft tries very hard to make it possible for developers new to the platform to develop ordinary apps (newsreader and the like) in a snap and with a huge community of developers there will be more exciting apps for Microsoft&#8217;s market place, which will utilise the full potential of this plattform. </p>
<p>I won&#8217;t tie myself to a specific plattform or language to create apps our customers at <a href="http://mobile.itemis.de">itemis</a> are demanding or will demand in the future. From this it follows, that I will keep my eyes open for the different technologies and approaches for building mobile apps.<br />
As long as the web technologies cannot be used to fully exhaust the capabilities each platform offers, we as developers have no other choice either way. </p>
<p>I&#8217;m really excited and look forward to discuss each of the diverse possibilities for creating mobile apps.</p>
<p>See you in the sessions or at the bar!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcusficner.de/?feed=rss2&#038;p=80</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone ambient light remote</title>
		<link>http://www.marcusficner.de/?p=25</link>
		<comments>http://www.marcusficner.de/?p=25#comments</comments>
		<pubDate>Fri, 11 Feb 2011 13:36:09 +0000</pubDate>
		<dc:creator>Marcus Ficner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcusficner.de/?p=25</guid>
		<description><![CDATA[Ever since I saw in this youtube video how you can use an iPhone to control some fancy light in your living room I wanted to build something similar. Now I finally found some time to play around with this topic. In this post I’ll show you how easy it is to do what you’ve [...]]]></description>
				<content:encoded><![CDATA[<p><!-- p.p1 {margin: 8.0px 0.0px 0.0px 0.0px; text-indent: 18.0px; font: 13.0px Optima} -->Ever since I saw in this youtube <a href="http://www.youtube.com/watch?v=O_5S2bHuXxo">video</a> how you can use an iPhone to control some fancy light in your living room I wanted to build something similar. Now I finally found some time to play around with this topic.</p>
<p>In this post I’ll show you how easy it is to do what you’ve seen in the video with very little effort. The setup is a bit different, however. I’m not using DMX to control a light. Instead the Arduino board is wired directly to a BlinkM RGB LED via the I2C bus. Furthermore the iPhone does not communicate directly with the Arduino. To keep it simple I’ve decided to use OSC (<a href="http://opensoundcontrol.org/introduction-osc">Open Sound Control</a>) and some existing libraries within Processing to handle the communication.</p>
<p>Here’s my setup:</p>
<ul>
<li>iPhone</li>
<li><a href="http://itunes.apple.com/de/app/touchosc/id288120394?mt=8">TouchOSC</a></li>
<li><a href="http://hexler.net/software/touchosc">TouchOSC Editor</a></li>
<li><a href="http://www.processing.org">Processing</a></li>
<li><a href="http://www.arduino.org">Arduino Duemilanove</a></li>
<li><a href="http://thingm.com/products/blinkm">BlinkM</a></li>
</ul>
<p>Touch OSC is available for Android, but it is not possible to import custom layouts to your device at the moment of writing. (Look <a href="http://hexler.net/touchosc-for-android-released">here</a> for further information)</p>
<p>We&#8217;ll begin by creating the remote interface with the Touch OSC Editor.</p>
<div id="attachment_32" class="wp-caption aligncenter" style="width: 566px"><a href="http://www.marcusficner.de/wp-content/uploads/2011/02/Touch-OSC-Editor.png"><img class="size-full wp-image-32 " title="Touch OSC Editor" src="http://www.marcusficner.de/wp-content/uploads/2011/02/Touch-OSC-Editor.png" alt="" width="556" /></a><p class="wp-caption-text">Touch OSC Editor</p></div>
<p><!-- p.p1 {margin: 8.0px 0.0px 0.0px 0.0px; text-indent: 18.0px; font: 13.0px Optima} -->On the left you can choose whether the layout should fit on an iPhone/iPod Touch or on an iPad and switch the orientation between vertical and horizontal. By right-clicking on the black area on the right you can insert different UI elements like labels and LEDs for showing some information or fader and buttons to receive user input.</p>
<p>The BlinkM LED consists of three small LEDs with the colors red, green and blue. Each of them can shine with a different luminosity, which allows a nice additive color mixing (<a href="http://en.wikipedia.org/wiki/File:RGB_illumination.jpg">example</a>).</p>
<p>To trigger each LED individually there are three faders, one for each color. The resulting layout looks like this:</p>
<p><a href="http://www.marcusficner.de/wp-content/uploads/2011/02/TouchOSCLayout.png"><img class="aligncenter size-medium wp-image-37" title="TouchOSCLayout" src="http://www.marcusficner.de/wp-content/uploads/2011/02/TouchOSCLayout-200x300.png" alt="" width="200" height="300" /></a></p>
<p>To use the layout on the iPhone, start the TouchOSC app and configure the network settings properly. Your iPhone and your computer running Processing have to be in the same wifi network. When you&#8217;re finished it&#8217;ll look similar to this:</p>
<p><a href="http://www.marcusficner.de/wp-content/uploads/2011/02/TouchOSCNetworkSettings.png"><img class="aligncenter size-medium wp-image-43" title="TouchOSCNetworkSettings" src="http://www.marcusficner.de/wp-content/uploads/2011/02/TouchOSCNetworkSettings-200x300.png" alt="" width="200" height="300" /></a></p>
<p>Now it&#8217;s time to switch to the Processing IDE and write a little program to receive the OSC Messages.</p>
<p>First you&#8217;ll need to import the afore-mentioned libraries:</p>
<pre class="brush: java">import oscP5.*;
import netP5.*;
import processing.serial.*;</pre>
<p>oscP5 and netP5 are written by Andreas Schlegl and are available through his <a href="http://www.sojamo.de/libraries/oscP5/index.html">website</a>.</p>
<p>The initial setup consists of three steps.<br />
1. Setup the Processing sketch<br />
2. Instantiate a Osc5 object, which will open a communication port for OSC<br />
3. Instantiate a Serial object, which will handle the communication to the Arduino board</p>
<pre class="brush: java">void setup() {
  size(300, 300);
  background(0);
  oscP5 = new OscP5(this, 8000);    // OscP5(Object theParent, int theReceiveAtPort) 

  if(portName == null) {
    portName = (Serial.list())[0];
  }

  port = new Serial(this, portName, portSpeed);

  if(port.output == null) {
    println("ERROR: Could not open serial port: "+portName);
    exit();
  }
}</pre>
<p>When Processing runs the draw()-method gets called in a infinite loop. Here we&#8217;ll define the behaviour of the sketch.</p>
<pre class="brush: java">void draw() {
 // update Processing sketch
 fill(redValue, greenValue, blueValue);
 ellipse(150,150,200,200);

 // send message to BlinkM
 fadeToColor(redValue, greenValue, blueValue);
}</pre>
<p>As you can see from the code two things are happening:<br />
1. A filled ellipse (in this case a circle) gets drawn with a color which is specified by three parameters.<br />
2. The method fadeToColor sends the three color values to the Arduino board and finally to the BlinkM. Therefore the values<br />
have to be stored in a byte array. The byte array cmd itself is wrapped into another array cmdfull, which includes the I2C address of the BlinkM.</p>
<pre class="brush: java">public void fadeToColor( float r, float g, float b ) {
    byte[] cmd = {'c', (byte)r, (byte)g, (byte)b};
    sendCommand( blinkMAddr, cmd );
}

public synchronized void sendCommand( byte addr, byte[] cmd ) {
    println("sendCommand: "+(char)cmd[0]);
    byte cmdfull[] = new byte[4+cmd.length];
    cmdfull[0] = 0x01;                    // sync byte
    cmdfull[1] = addr;                    // i2c addr
    cmdfull[2] = (byte)cmd.length;        // this many bytes to send
    cmdfull[3] = 0x00;                    // this many bytes to receive
    for( int i=0; i
</pre>
<p>What&#8217;s still missing is the possibility to receive the actual color values from the iPhone.<br />
Because we&#8217;ve instantiated an oscP5 object we can include a callback method to receive OSC messages.</p>
<pre class="brush: java">
void oscEvent(OscMessage theOscMessage) {
 
  String addr = theOscMessage.addrPattern();
  OscArgument arg = theOscMessage.get(0);
 
  if(addr.equals("/1/fader1")) {
     redValue = arg.floatValue();
  } 
 
  if(addr.equals("/1/fader2")) {
     greenValue = arg.floatValue();
  }
 
  if(addr.equals("/1/fader3")) {
     blueValue = arg.floatValue();
  } 
}
</pre>
<p>You can browse and download the full source code and the TouchOSC layout on my <a href="https://github.com/mficner/iPhoneBlinkMRemote">github</a>.</p>
<p>Now let&#8217;s look at the result:<br />
<iframe src="http://player.vimeo.com/video/19827898" width="400" height="300" frameborder="0"></iframe></p>
<p>As you can see in the video the candle power is not sufficient to lighten up the corner of your living room.<br />
I&#8217;ll try the <a href="http://thingm.com/products/blinkm-maxm.html">BlinkM MaxM</a> in the near future.<br />
Also, I&#8217;ve already purchased a wifi shield for the Arduino to decouple the whole communication through processing.</p>
<p>So, stay tuned for further writings about this topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcusficner.de/?feed=rss2&#038;p=25</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meet me at the Embedded Software Engineering Kongress in Sindelfingen</title>
		<link>http://www.marcusficner.de/?p=13</link>
		<comments>http://www.marcusficner.de/?p=13#comments</comments>
		<pubDate>Tue, 10 Aug 2010 23:03:55 +0000</pubDate>
		<dc:creator>Marcus Ficner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcusficner.de/?p=13</guid>
		<description><![CDATA[I&#8217;m happy to announce, that my paper for the ESE-Kongress was accepted. I will give a talk about model-driven software engineering for iPhone and Android based on Xtext and Xpand.]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m happy to announce, that my paper for the ESE-Kongress was accepted. I will give a talk about model-driven software engineering for iPhone and Android based on Xtext and Xpand.</p>
<p><a href="http://www.ese-kongress.de/"><img class="aligncenter size-full wp-image-17" title="ESE-Kongress" src="http://www.marcusficner.de/wp-content/uploads/2010/08/ESE-Kongress.png" alt="" width="328" height="85" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcusficner.de/?feed=rss2&#038;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
