tag:blogger.com,1999:blog-1368115163566068223Sat, 08 Dec 2018 16:02:47 +0000code monkeyhttp://jpobst.blogspot.com/noreply@blogger.com (Jonathan Pobst)Blogger66125tag:blogger.com,1999:blog-1368115163566068223.post-1395669626799904291Thu, 27 Dec 2012 05:54:00 +00002012-12-26T23:54:50.989-06:00Pinta Effects for Your .NET Apps<a href="http://pinta-project.com/" target="_blank">Pinta</a> wouldn't exist today without the amazing code from the previously open source <a href="http://www.getpaint.net/" target="_blank">Paint.NET</a>.&nbsp; Now we've decided to pay it forward and make that same code available for other developers to easily use in their applications.<br /><br />To accomplish this, we've extracted the code for all of Pinta's effects into a graphics toolkit agnostic library called Pinta.ImageManipulation and posted it up on NuGet for easy use.&nbsp; This includes over 35 multi-threaded effects exposed as cancelable Tasks.<br /><br />The core of Pinta.ImageManipulation is graphics toolkit agnostic and only works on arrays of BGRA bytes, but we've also included wrappers for System.Drawing (GDI+) and Cairo (GTK+).<br /><br />Now that you've got all those great new holiday photos, let's see how to apply an effect to them in 5 lines of code.<br /><br />Create a new project, bring up the NuGet dialog, and search for Pinta:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-gNd9n7Hv9pQ/UNveTmsOBpI/AAAAAAAAA8A/-6uDhL0Sejc/s1600/nuget1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="http://4.bp.blogspot.com/-gNd9n7Hv9pQ/UNveTmsOBpI/AAAAAAAAA8A/-6uDhL0Sejc/s640/nuget1.png" width="640" /></a></div><br />Select the Pinta.ImageManipulation.System.Drawing package and install it...<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-ek3Q6OKST0c/UNven144dfI/AAAAAAAAA8I/KtP_4C5nSlw/s1600/nuget2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ek3Q6OKST0c/UNven144dfI/AAAAAAAAA8I/KtP_4C5nSlw/s1600/nuget2.png" /></a></div><br />..which adds 2 new project references, the toolkit agnostic core and the System.Drawing wrapper.<br /><br />Now we need to:<br /><ul><li>Load an image into System.Drawing.Bitmap</li><li>Wrap it into a BitmapWrapper we can pass to Pinta.</li><li>Create a new emboss effect.</li><li>Render the emboss effect to the image.</li><li>Save the result. </li></ul><blockquote class="tr_bq"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">var photo = new Bitmap (@"C:\helo.png");</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">var photo_wrapper = new BitmapWrapper (photo);</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"></span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">var blur = new EmbossEffect ();</span><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">await blur.RenderAsync (photo_wrapper);</span><br /><br /><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"></span><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">photo.Save (@"C:\helo2.png");</span></blockquote>Resulting in:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-AaSW0llaVPY/UNvf5ZSu0KI/AAAAAAAAA8g/XXfugEV5WOI/s1600/emboss.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="http://3.bp.blogspot.com/-AaSW0llaVPY/UNvf5ZSu0KI/AAAAAAAAA8g/XXfugEV5WOI/s400/emboss.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><br />A full list of available effects can be found <a href="https://github.com/PintaProject/Pinta.ImageManipulation/tree/master/Pinta.ImageManipulation/Effects">here</a>.<br /><br />Pinta.ImageManipulation retains Paint.NET and Pinta's <a href="http://opensource.org/licenses/MIT" target="_blank">MIT X11</a> license, so feel free to use this in your applications.<br /><br />If you want to submit new effects, send us a pull request on GitHub:<br /><br /><a href="https://github.com/PintaProject/Pinta.ImageManipulation">https://github.com/PintaProject/Pinta.ImageManipulation</a><br /><br />Enjoy!http://jpobst.blogspot.com/2012/12/pinta-effects-for-your-net-apps.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-5419639934710063886Sat, 21 Apr 2012 21:29:00 +00002012-04-26T09:23:20.871-06:00Mono for Android Portable Libraries in VSThanks to Scott Hanselman's <a href="http://www.hanselman.com/blog/HiddenGemsInVisualStudio11BetaNETPortableClassLibraries.aspx">recent article</a> on .NET's support for <b>Portable Class Libraries </b>(PCLs), there has been some renewed interested in using them for <b>Mono for Android</b>.<br /><br />If you try to add a reference to a compiled PCL <b>assembly</b>, things should work, as VS simply checks that the version of mscorlib.dll referenced is the same as the MFA project (2.0.5).&nbsp; However, if you try to add a reference to a PCL <b>project</b>, you get this nasty dialog box:<br /><br /><img alt="" src="data:image/png;base64,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" /><br /><br />The bad news is we don't ship any tooling for supporting these out of the box yet.&nbsp; The good news is it's trivial to do it yourself!<br /><br />The portable libraries are installed in .NET's <b>Reference Assemblies </b>folder, which is here:<br /><br /><i>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0</i><br /><br />If you explore around in that folder, you will see there are something called "<b>Profiles</b>" which specify the common assemblies for a given set of targets.<br /><br />For example, "<b>Profile2</b>" targets <b>.NET 4, Silverlight 4, </b>and <b>Windows Phone 7</b>.&nbsp; This is the set that matches <b>Mono for Android </b>best, so we want to tell Visual Studio that it's okay for <b>Mono for Android</b> projects to use this set as well.<br /><br />This is done by files in the "<b>SupportedFrameworks</b>" folder, specifically:<br /><br /><i>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile2\SupportedFrameworks</i><br /><br />You can see there are <b>already </b>files for .NET 4, Silverlight 4, and Windows Phone 7:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="data:image/png;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" src="data:image/png;base64,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" /></a></div>In order to support <b>Mono for Android</b>, we just need to add a .<b>xml </b>file to this directory called "<b>MonoAndroid,Version=v1.6+.xml</b>":<br /><br /><img alt="" src="data:image/png;base64,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" /><br /><br />The contents of the file are simply some metadata to tell Visual Studio about our target:<br /><br /><pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;Framework DisplayName="Mono for Android"<br /> Identifier="MonoAndroid"<br /> Profile="*"<br /> MinimumVersion="1.6"<br /> MaximumVersion="*" /&gt;<br /></pre><br />Once you have this file created, restart Visual Studio, and you should be able to add references to PCL projects in Mono for Android projects!<br /><br /><b style="color: red;">NOTE</b><span style="color: red;">: Last time I checked, the Mono for Android profile is not an exact match for Profile2.&nbsp; There are a few rarely used methods that Mono for Android lacks, so you still have to be slightly careful about what you use.</span>http://jpobst.blogspot.com/2012/04/mono-for-android-portable-libraries-in.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-7996905557319380673Mon, 24 Oct 2011 19:02:00 +00002011-10-24T13:02:15.271-06:00Playing With RoslynAs a tools guy, I've been fascinated with <a href="http://msdn.microsoft.com/en-us/roslyn">Roslyn</a> ever since Microsoft previewed it. It looks like it provides lots of power for tools to consume. Now that the first CTP is out, I spent some time over the weekend playing with it.<br /><br />The first thing it gives you access to is parsing source code, giving you an object model you can play with, and then letting you spit the modified source code back out. Reading source code in is easy:<br /><pre>var source_text = File.ReadAllText ("input.txt");<br /><br />var tree = SyntaxTree.ParseCompilationUnit(source_text);<br />var root = (CompilationUnitSyntax)tree.Root;</pre>Now we have an object model we can play with. We can search through the model for specific tokens and replace them with new ones, like this:<br /><pre>// Replace "Hello World!" with "Goodbye World!"<br />var output = root.GetFirstToken (p =&gt; p.Kind == SyntaxKind.StringLiteralToken);<br /><br />var new_output = Syntax.StringLiteralToken ("\"Goodbye World!\"", "Goodbye World!", output.LeadingTrivia, output.TrailingTrivia);<br /><br />root = root.ReplaceToken (output, new_output);</pre>We can do source code formatting:<br /><pre>// Add a space in front of all open parentheses<br />var parens = root.DescendentTokens ().Where (p =&gt; p.Kind == SyntaxKind.OpenParenToken &amp;&amp; p.LeadingWidth == 0);<br /><br />var new_parans = parens.Select (p =&gt; p.WithLeadingTrivia (Syntax.WhitespaceTrivia (" ")));<br /> <br />root = root.ReplaceTokens (parens, (p, q) =&gt; p.WithLeadingTrivia (Syntax.WhitespaceTrivia (" ")));</pre>Finally, we can do syntax highlighting:<br /><pre>private static void OutputNode (CompilationUnitSyntax token)<br />{<br /> var default_color = Console.ForegroundColor;<br /><br /> foreach (var t in token.DescendentTokens ()) {<br /> // Make keywords blue<br /> if (SyntaxFacts.IsKeyword (t))<br /> Console.ForegroundColor = ConsoleColor.DarkCyan;<br /><br /> Console.Write (t.ToString ());<br /> Console.ForegroundColor = default_color;<br /> }<br />}</pre>Putting this all together and running it results in:<br /><a href="http://4.bp.blogspot.com/-N87VjLEuLh0/TqTspN9FBmI/AAAAAAAAA54/bBS8LkhCeLo/s1600/mokii.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5666914424003561058" src="http://4.bp.blogspot.com/-N87VjLEuLh0/TqTspN9FBmI/AAAAAAAAA54/bBS8LkhCeLo/s400/mokii.png" style="cursor: hand; cursor: pointer; display: block; height: 280px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br /><br />Note the "Hello World" has changed to "Goodbye World", open parentheses now have spaces in front of them, and we colored the keywords blue with very few lines of code.<br /><br />The tools guy inside of me loves playing with the API, but the Mono guy inside me has to go further and actually play with implementing the API, so the screenshot is actually running on a toy implementation of Roslyn's VB syntax tokenizer that I whipped up. I want to stress that it's just a quick hack that pretty much only parses my sample program and I know nothing about writing parsers, but it was a fun exercise.<br /><br />The other nice feature of the Roslyn APIs is that it makes each compiler step independently testable, so I know I produce the same 59 syntax tokens as the MS implementation with the same leading and trailing trivia.<br /><br />If you want to play with the code, it's available on GitHub:<br /><a href="https://github.com/jpobst/Mokii">https://github.com/jpobst/Mokii</a>http://jpobst.blogspot.com/2011/10/playing-with-roslyn.htmlnoreply@blogger.com (Jonathan Pobst)2tag:blogger.com,1999:blog-1368115163566068223.post-348530913783244801Wed, 27 Apr 2011 22:13:00 +00002011-04-27T16:22:39.009-06:00Pinta 1.0 ReleasedAfter roughly 16 months of development, Pinta is proud to join the ~1% of open source projects that make it to version 1.0!<br /><br />I am extremely pleased of how Pinta has turned out, and extremely grateful for everyone who sent encouragement, bug reports, patches, and translations.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-X3QefH-Ho88/TbiW__kZZRI/AAAAAAAAA40/lG9mF5432Zs/s1600/pinta-1-0.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://3.bp.blogspot.com/-X3QefH-Ho88/TbiW__kZZRI/AAAAAAAAA40/lG9mF5432Zs/s400/pinta-1-0.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5600392162775229714" /></a><br /><br />Some 1.0 Links:<br />- <a href="http://pinta-project.com/Release-Notes-1-0.ashx">Release Notes</a><br />- <a href="http://pinta-project.com/download.ashx">Downloads</a><br />- <a href="https://bugs.launchpad.net/pinta/+bugs">Bug Tracker</a><br />- <a href="http://pinta.uservoice.com/">Feature Requests</a><br /><br />In the next month or so I'll get up a roadmap of where future Pinta development will be going. Hint: Plugins.<br /><br />Thanks again to everyone who helped make this happen, and here's hoping for another great 16 months of development!http://jpobst.blogspot.com/2011/04/pinta-10-released.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-7430303046027001822Fri, 18 Feb 2011 17:19:00 +00002011-02-18T11:21:18.733-06:00Lesson of the WeekApparently if you want third parties (Apple App Store, Google Marketplace, MS App Store) to distribute your software for you, you shouldn't choose a license that forces requirements on distributors.http://jpobst.blogspot.com/2011/02/lesson-of-week.htmlnoreply@blogger.com (Jonathan Pobst)2tag:blogger.com,1999:blog-1368115163566068223.post-801751114053939103Wed, 08 Dec 2010 17:26:00 +00002010-12-08T11:51:45.693-06:00MonoDroid ProgressAbout 4 months ago, I worked on porting some of the <a href="http://developer.android.com/resources/samples/index.html">Android SDK samples</a> to run on MonoDroid. It was a soul-crushing failure. Every line of code I wrote exposed a new bug in MonoDroid which I had to wait until it got fixed to continue. Eventually I gave up on doing anything more than the absolutely trivial Hello World.<br /><br />What a different story things are today!<br /><br />I dusted off my unfinished <a href="http://developer.android.com/resources/samples/Snake/index.html">Snake</a> port, and it now works without modification.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/TP_CfBa6SOI/AAAAAAAAA3o/bqK6qT6cbN4/s1600/snake.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 269px; height: 400px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/TP_CfBa6SOI/AAAAAAAAA3o/bqK6qT6cbN4/s400/snake.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5548367104156780770" /></a><br />Since I did it so long ago, there was no telling what magic I had in there to make it work on MonoDroid, so I ported another one from scratch. I grabbed the hardest sample I think they have: <a href="http://developer.android.com/resources/samples/JetBoy/index.html">JetBoy</a>. It's basically a fast-paced, Guitar Hero-esque game where you have to fire your laser to the music as each asteroid passes across the beat line.<br /><br />After an afternoon of literal translation to C# (over 1k LOC), I fixed up the few Java porting issues like anonymous classes and nested classes accessing the parent class's private variables, and it *<span style="font-weight:bold;">just worked</span>*.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/TP_Ce595lFI/AAAAAAAAA3g/K3s0BLsYA54/s1600/jetboy.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 270px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/TP_Ce595lFI/AAAAAAAAA3g/K3s0BLsYA54/s400/jetboy.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5548367102156051538" /></a><br />I think we're getting pretty close on finishing up our first release MonoDroid, and I can't wait to see what apps people write with it.<br /><br />Both samples are available in our <a href="https://github.com/mono/monodroid-samples">MonoDroid samples GitHub repository</a>.http://jpobst.blogspot.com/2010/12/monodroid-progress.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-6081617542180666592Mon, 08 Nov 2010 04:10:00 +00002010-11-07T22:32:00.552-06:00Full of Hot Air<div style="font-weight:bold;align:center;">Today there were several hot air balloons out when I came home.</div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/TNd4ochlwLI/AAAAAAAAA2Y/Saq8Z6QCDK0/s1600/DSC01802.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/TNd4ochlwLI/AAAAAAAAA2Y/Saq8Z6QCDK0/s400/DSC01802.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5537026903122493618" /></a><br /><br /><div style="font-weight:bold;align:center;">One came closer and closer to my house.</div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/TNd4ohbivtI/AAAAAAAAA2g/PAl2_M_nP-Q/s1600/DSC01814.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/TNd4ohbivtI/AAAAAAAAA2g/PAl2_M_nP-Q/s400/DSC01814.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5537026904439307986" /></a><br /><br /><div style="font-weight:bold;align:center;">And landed in the street in front of my house.</div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IfYnHLEdnY/TNd4omABg6I/AAAAAAAAA2o/mCBltuqfzFw/s1600/DSC01818.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4IfYnHLEdnY/TNd4omABg6I/AAAAAAAAA2o/mCBltuqfzFw/s400/DSC01818.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5537026905666061218" /></a><br /><br /><div style="font-weight:bold;align:center;">It was then deflated and sent on its way.</div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IfYnHLEdnY/TNd4o2TcUyI/AAAAAAAAA2w/IpnWiwmpto8/s1600/DSC01827.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4IfYnHLEdnY/TNd4o2TcUyI/AAAAAAAAA2w/IpnWiwmpto8/s400/DSC01827.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5537026910042477346" /></a><br /><br /><div style="font-weight:bold;align:center;">Shot from the inside.</div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/TNd4o0rd8pI/AAAAAAAAA24/mOY_51IuOO4/s1600/DSC01836.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/TNd4o0rd8pI/AAAAAAAAA24/mOY_51IuOO4/s400/DSC01836.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5537026909606376082" /></a><br /><br /><a href="http://bit.ly/9aHZER">Full Photo Set On Flickr</a>http://jpobst.blogspot.com/2010/11/full-of-hot-air.htmlnoreply@blogger.com (Jonathan Pobst)0tag:blogger.com,1999:blog-1368115163566068223.post-5434806945276378230Tue, 02 Nov 2010 19:57:00 +00002010-11-02T14:00:16.181-06:00Pinta 0.5 ReleaseJust a quick note that Pinta 0.5 has been released today, with a few big features like multiple images support, fun new brushes, and clone stamp.<br /><br />Full release notes are available here:<br /><a href="http://pinta-project.com/release/0.5">http://pinta-project.com/release/0.5</a><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://pinta-project.com/Images/ss4.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 571px; height: 403px;" src="http://pinta-project.com/Images/ss4.jpg" border="0" alt="" /></a>http://jpobst.blogspot.com/2010/11/pinta-05-release.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-4758488141107299617Wed, 02 Jun 2010 23:38:00 +00002010-06-02T17:50:25.052-06:00You Can't Please EveryoneIf there's one thing I've learned in designing GUI's and websites is you can't please everyone. One person's favorite part is another's "worst idea ever".<br /><br />Same goes for <a href="http://pinta-project.com/">Pinta</a>. Some people want to be able to move the various widget pads away from their canvas. Others want them to always be visible and easy to reach.<br /><br />For Pinta 0.4, we're going to try to please as many people as possible. To do that, we've brought in <a href="http://monodevelop.com/">MonoDevelop</a>'s incredibly awesome docking library. This allows you to resize, move, close, float, and autohide pads.<br /><br />Here's the default:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/TAbrucVJmEI/AAAAAAAAAzw/Hodiu_E7-fw/s1600/dock.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/TAbrucVJmEI/AAAAAAAAAzw/Hodiu_E7-fw/s400/dock.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5478325179854198850" /></a><br /><br />Here's an example of a customized layout:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/TAbruhAsJRI/AAAAAAAAAz4/yvrepzJ-J4U/s1600/float.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/TAbruhAsJRI/AAAAAAAAAz4/yvrepzJ-J4U/s400/float.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5478325181110560018" /></a><br /><br />Hopefully this will please 90% of our users! Many thanks to the MonoDevelop team for such as awesome (and small!) library!http://jpobst.blogspot.com/2010/06/you-cant-please-everyone.htmlnoreply@blogger.com (Jonathan Pobst)6tag:blogger.com,1999:blog-1368115163566068223.post-6770835208337840216Mon, 03 May 2010 20:10:00 +00002010-05-03T14:20:36.920-06:00Pinta 0.3 Released!<a href="http://jpobst.blogspot.com/2010/05/wet-weekend.html">Twenty inches of rain</a> couldn't stop the release of <a href="http://pinta-project.com/">Pinta 0.3</a>.<br /><br />This is a great release, as it brings us pretty close to feature parity with Paint.NET.<br /><br />I think the most important new feature is live preview, especially as this release adds 25 new effects to play with. It also adds 3 new tools (gradient, text, magic wand select) and has several visual improvements to make image editing / painting better.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/S98uz02rtVI/AAAAAAAAAyw/T4T--JNIqBU/s1600/live.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/S98uz02rtVI/AAAAAAAAAyw/T4T--JNIqBU/s1600/live.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5467139940547278162" /></a><br /><br />I've posted packages/installers for SUSE/Mac/Windows/Zip, and the excellent Debian guys should have the Ubuntu PPA updated shortly.<br /><br />Check out the <a href="http://pinta-project.com/release/0.3">full release notes for Pinta 0.3</a>!<br /><br />Thanks to everyone who made this release possible!http://jpobst.blogspot.com/2010/05/pinta-03-released.htmlnoreply@blogger.com (Jonathan Pobst)9tag:blogger.com,1999:blog-1368115163566068223.post-1124861863588003821Mon, 03 May 2010 03:36:00 +00002010-05-02T22:15:05.588-06:00A Wet WeekendIt's been a wet weekend here in Tennessee. On Saturday, my town got an estimated 12-15" of rain in about 12 hours. Obviously, no place is designed to handle that much rain that quickly. Then it repeated again today, causing widespread flooding throughout the entire Middle Tennessee area. Any kind of previous record for rainfall or rivers heights have been demolished.<br /><br />I think about the only thing they've shown on national news is this video of a portable classroom cruising down the interstate. (Note this is I-24, a 4-lane national highway.)<br /><br /><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/zHuMn1AVRDg&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zHuMn1AVRDg&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object><br /><br />That was yesterday, things got a lot worse today, as the water made it to the streams and rivers, which then overflowed their boundaries.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/S95GN08c28I/AAAAAAAAAyA/ROpwwsQprsE/s1600/image1.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 214px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/S95GN08c28I/AAAAAAAAAyA/ROpwwsQprsE/s400/image1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466884201038797762" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/S95Gh1we3jI/AAAAAAAAAyY/hI8f-cHgSQo/s1600/DSC01728.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/S95Gh1we3jI/AAAAAAAAAyY/hI8f-cHgSQo/s400/DSC01728.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5466884544854416946" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/S95GhjhVWrI/AAAAAAAAAyQ/HK_QTZPuDZk/s1600/DSC01736.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/S95GhjhVWrI/AAAAAAAAAyQ/HK_QTZPuDZk/s400/DSC01736.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5466884539959040690" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IfYnHLEdnY/S95GhAJErGI/AAAAAAAAAyI/6-Yl2rAmYJ8/s1600/30963_1279029423257_1455660203_30634234_1042425_n.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_4IfYnHLEdnY/S95GhAJErGI/AAAAAAAAAyI/6-Yl2rAmYJ8/s400/30963_1279029423257_1455660203_30634234_1042425_n.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466884530462043234" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/S95GqxkLOEI/AAAAAAAAAyg/COZTKBncYqQ/s1600/DSC01739.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/S95GqxkLOEI/AAAAAAAAAyg/COZTKBncYqQ/s400/DSC01739.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5466884698347878466" /></a><br />It's impossible to capture in a few pictures how widespread this is. Everything in about a 50 mile radius is flooded and shut down. They actually imposed a curfew where I live, so I'm not allowed to leave my house, not that I could probably get anywhere with most major roads closed. My city is one of the hardest hit, with the most rain, and a major waterway runs through the middle of the city.<br /><br />Personally, I've been pretty lucky, as I live on relatively high ground on the outskirts of the city. Middle Tennessee is rather hilly, so it all depends exactly on where you live. Tons of water has passed through my yard, but it fortunately keeps flowing and not backing up. This ditch beside my house is normally empty. This is about as high as it ever got, and it has stayed rapidly flowing for about 36 hours.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/S95IMtDFyCI/AAAAAAAAAyo/6Zk0dWWkDo0/s1600/DSC01703.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/S95IMtDFyCI/AAAAAAAAAyo/6Zk0dWWkDo0/s400/DSC01703.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5466886380762548258" /></a><br /><br />It's nice that I work from home so I don't have to try to go to work tomorrow. Of course, if I worked local, I'm sure I'd get the day (or week) off. :)<br /><br />It's finally stopped raining. The rivers will continue to rise for a few more hours as the water continues to drain. Then they should slowly recede and people can begin to see what's left. Thousands of homes have probably been destroyed. Probably tens of thousands of cars. Some interstates and roads may be closed for weeks until they are deemed safe or will have to be rebuilt. Likely, the final bill for this will be close to a billion.http://jpobst.blogspot.com/2010/05/wet-weekend.htmlnoreply@blogger.com (Jonathan Pobst)0tag:blogger.com,1999:blog-1368115163566068223.post-7938986530410757125Thu, 01 Apr 2010 08:00:00 +00002010-04-01T02:00:04.999-06:00Kicking Pinta in to High GearAs people may or may not be aware, even though I work for Novell, <a href="http://pinta-project.com/">Pinta</a> is not sponsored by Novell. It is a project I do purely in my free time. Since it's getting kinda popular, I thought it'd be nice to earn some money with it so I can dedicate more time to it.<br /><br />Unfortunately, society has decided that creative works (software, music, movies, tv) aren't worth paying money for. So far, I think the only successful business model for open source software is to have a browser and sell your homepage to Google or Yahoo. I thought about adding a browser to Pinta, but it was hard to justify as enhancing the user experience.<br /><br />Advertising is the only other legitimate option, but I was reluctant to degrade the GUI by placing ads in it. However I've come up with a brilliant and creative idea that adds advertising in a fun way that I think users will enjoy.<br /><br />I am still working out the deals with advertisers, but the plan is to add sponsored effects. Basically, we've come up with some effects that are helpful to users and tie in great with some great products.<br /><br />As I said, these aren't final yet, but I wanted to give a preview of a couple I've been working on. From now on, Gaussian Blur will be known as the Bud Light Golden Wheat with Lime (tm) Drunken Blur:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IfYnHLEdnY/S7QqT1ALk3I/AAAAAAAAAxw/7F4itLdJ_xg/s1600/blur.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://1.bp.blogspot.com/_4IfYnHLEdnY/S7QqT1ALk3I/AAAAAAAAAxw/7F4itLdJ_xg/s400/blur.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5455031568786232178" /></a><br /><br />I've replaced the boring old "Radius" option with a slider of how many beers you've had to determine how much blur is applied!<br /><br />Another new effect is the VISINE "Get the Red Out!" (tm) Red Eye Reduction filter:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/S7QqURwL_eI/AAAAAAAAAx4/Z8icgBBTbp0/s1600/redeye.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/S7QqURwL_eI/AAAAAAAAAx4/Z8icgBBTbp0/s400/redeye.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5455031576503778786" /></a>(Image courtesy of <a href="http://commons.wikimedia.org/wiki/File:Red-eye_effect.jpg">wikipedia</a>.)<br /><br />Red eye reduction is a very important effect for users, and the synergy with VISINE is a natural fit!<br /><br />If everything goes according to plan, we'll ship Pinta 0.3 with several sponsored effects. The income from these opportunities will allow us to fund additional hacking on Pinta.<br /><br />I think today, the first of April, is going to be the start of a wonderful new phase of development for Pinta!http://jpobst.blogspot.com/2010/04/kicking-pinta-in-to-high-gear.htmlnoreply@blogger.com (Jonathan Pobst)6tag:blogger.com,1999:blog-1368115163566068223.post-5314532668584189208Mon, 15 Mar 2010 06:05:00 +00002010-03-14T23:34:16.449-06:00Pinta: Nil Dot DuoI am extremely excited to announce the release of <a href="http://pinta-project.com/">Pinta 0.2</a>!<br /><br /><a href="http://pinta-project.com/">Pinta 0.2</a> is a big step towards general feature parity with PDN, by adding great new features like:<br /><br />- 5 new tools (Paint Bucket, Recolor, Line, Zoom, Pan)<br />- 5 new adjustments (Levels, Curves, Brightness/Contrast, Hue/Saturation, Posterize)<br />- 5 new effects (Ink Sketch, Oil Painting, Pencil Sketch, Gaussian Blur, Glow)<br />- Enhanced layer and history pads<br />- Multithreaded adjustments/effects rendering<br />- Basic OS X integration<br />- and more!<br /><br />Full release notes (with pictures!) are available <a href="http://pinta-project.com/release/0.2">here</a>.<br /><br />Packages are available <a href="http://pinta-project.com/download">here</a>, and likely more will be contributed.<br /><br />The most exciting part about this release is that it isn't all my work. <a href="http://pinta-project.com/">Pinta</a> has attracted several great contributors who are helping it quickly move towards maturity. Without their awesome work, <a href="http://pinta-project.com/">Pinta</a> would be releasing today with only about half of these new features!<br /><br />With 0.2 out the door, now I can turn to the merge requests already waiting to make 0.3 an even better release!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/S53EiUkOD5I/AAAAAAAAAxk/H00XhSvHmag/s1600-h/watching.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 282px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/S53EiUkOD5I/AAAAAAAAAxk/H00XhSvHmag/s400/watching.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5448727218103390098" /></a>http://jpobst.blogspot.com/2010/03/pinta-nil-dot-duo.htmlnoreply@blogger.com (Jonathan Pobst)6tag:blogger.com,1999:blog-1368115163566068223.post-6962206377114044735Thu, 04 Mar 2010 00:21:00 +00002010-03-03T18:34:05.176-06:00Delayed TransitionAfter Comcast's year-long advertising blitz on how their customers were safe from the analog->digital TV transition, I got a nice letter in the mail today informing me that Comcast is going, *gasp*, all digital. All I need to be ready for the transition is a digital converter box for every television, which they will gladly rent me!<br /><br />Maybe the government will offer vouchers for them. ;)http://jpobst.blogspot.com/2010/03/delayed-transition.htmlnoreply@blogger.com (Jonathan Pobst)1tag:blogger.com,1999:blog-1368115163566068223.post-2121695520830652774Sat, 20 Feb 2010 21:08:00 +00002010-02-20T15:40:20.840-06:00Internet TVDear Internet Media companies,<br /><br />Have I got a deal for you!<br /><br />Looking at my cable bill, I currently pay $88.59 a month for basic cable (no premium channels) and one HD DVR. If everything I watch is in-season, I watch about 50 hours of television a month plus local football (CBS). Obviously, this is ridiculous and needs to stop very soon.<br /><br />So here's a chance for me to pay you cash money, Apple/Microsoft/Google/Hulu/whoever. I would gladly pay, lets say, $30-$40 a month for up to ~60 hours of television. It can be DRM'd, it can be "rented", I don't care, as long as I can play it in HD on my TV. I would also greatly prefer to be able to pre-download it so I can have high quality without network hiccups.<br /><br />Unfortunately, the current internet TV model is ~$3 per HD episode, which makes it remarkably more expensive than cable, even for my limited usage.<br /><br />As it stands, it looks like I'm going to have to cobble together my own solution of Windows Media Center DVR for OTA stuff, Hulu for some stuff, and iTunes for what I can't get elsewhere. And yet you wonder why people turn to BitTorrent...http://jpobst.blogspot.com/2010/02/internet-tv.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-4081071619872390550Tue, 16 Feb 2010 20:13:00 +00002010-02-16T14:40:46.089-06:00Calling All Testers!We recently released a beta version of our upcoming <a href="http://go-mono.com/monotools/">Mono Tools for Visual Studio</a> version 1.1, containing a couple of nifty new features.<br /><br />- File copying is smarter, and no longer copies files that haven't changed.<br /><br />- It is now easier to package a pre-compiled copy of a web site:<br /><br /><img src="http://mono-project.com/files/f/ff/Monotools1-1-c.png" /><br /><br />- And, most importantly, a preview of VS2010 support that works with VS2010 RC!<br /><br /><img src="http://mono-project.com/files/a/a8/Monotools1-1-a.png" /><br /><br />Give it a shot and let me know if something is broken so I can fix it before we release! <br /><br />Full release notes and download links can be found <a href="http://mono-project.com/Release_Notes_MonoTools_1.1">here</a>. Enjoy!http://jpobst.blogspot.com/2010/02/calling-all-testers.htmlnoreply@blogger.com (Jonathan Pobst)0tag:blogger.com,1999:blog-1368115163566068223.post-1586041623034267061Mon, 15 Feb 2010 15:38:00 +00002010-02-15T10:03:42.706-06:00A Great First WeekI wanted to thank everyone for the tremendous show of support for <a href="http://pinta-project.com/">Pinta</a> in it's first week!<br /><br />A few stats:<br /><br />- The announcement of <a href="http://pinta-project.com/">Pinta</a> was picked up by several large tech news sites.<br /><br />- The <a href="http://pinta-project.com/">Pinta</a> web site received over 29,000 hits.<br /><br />- 23 people sent me emails of encouragement. (And 1 of discouragement.)<br /><br />- People contributed packages for Ubuntu, OS X, and Pardus Linux. I was also contacted by people making packages for Fedora and Windows.<br /><br />- Roughly 10 people sent me email offering to translate <a href="http://pinta-project.com/">Pinta</a> into a variety of languages. (We're not ready for translations yet, but I have a bunch of emails to send when we are!)<br /><br />- 7 people have contributed code which has already been merged into <a href="http://pinta-project.com/">Pinta's</a> master <a href="http://github.com/jpobst/Pinta">repository</a>.<br /><br />Overall, it was a great week! I also wanted to thank everyone that I didn't personally reply to. I was flooded with emails all week and couldn't respond to them all!<br /><br />Anyways, work has begun on <a href="http://pinta-project.com/">Pinta</a> 0.2. Thanks to many great contributions, my <a href="http://groups.google.com/group/pinta/web/roadmap?hl=en">roadmap</a> for 0.2 is already over halfway complete, so I guess I'll have to expand the feature list for 0.2!http://jpobst.blogspot.com/2010/02/great-first-week.htmlnoreply@blogger.com (Jonathan Pobst)7tag:blogger.com,1999:blog-1368115163566068223.post-6287459795361824452Sun, 07 Feb 2010 17:07:00 +00002010-02-07T12:03:14.248-06:00Introducing PintaOver the holiday break, I stumbled upon <a href="http://www.osnews.com/story/22541/Ubuntu_Dumps_the_GIMP_Really_Needs_a_Paint_NET">this article</a> from <a href="http://www.osnews.com/">OSNews</a> stating that there was a need for something like <a href="http://getpaint.net/">Paint.NET</a> for Gtk. Having some <a href="http://code.google.com/p/paint-mono/">experience</a> with porting Paint.NET to Mono Winforms before, I knew that that was a massive task. But it still got me curious about Cairo and creating a layered canvas, since I had never played with Cairo or Gtk.<br /><br />After playing around for a few hours, I actually had a working paintbrush and canvas. Intrigued by my success, I played around with it for a few more days. By the end of the week I had a nifty little paint program with a few features. Now, a month later, it's time to open my little project up to the world: <a href="http://pinta-project.com/">Pinta</a>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IfYnHLEdnY/S271Dz-FWDI/AAAAAAAAAws/ggbXYZfr6Ns/s1600-h/ss1.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://1.bp.blogspot.com/_4IfYnHLEdnY/S271Dz-FWDI/AAAAAAAAAws/ggbXYZfr6Ns/s400/ss1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5435551246121785394" /></a><br /><a href="http://pinta-project.com/">Pinta</a> is a clone of Paint.NET. It already has a small, but hopefully useful, set of features like multiple layers and infinite levels of Undo/Redo.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/S271EDaNbbI/AAAAAAAAAw0/uujW2M23ztA/s1600-h/ss2.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/S271EDaNbbI/AAAAAAAAAw0/uujW2M23ztA/s400/ss2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5435551250266287538" /></a><br />I hope to implement the same feature set as Paint.NET. Currently there are several tools missing, as well as adjustments like brightness/contrast and levels and Paint.NET's effects.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/S271EVYGlBI/AAAAAAAAAw8/BpnFg4yyf5s/s1600-h/ss3.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/S271EVYGlBI/AAAAAAAAAw8/BpnFg4yyf5s/s400/ss3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5435551255089288210" /></a><br />Being written in Mono/Gtk, <a href="http://pinta-project.com/">Pinta</a> is naturally cross-platform.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/S271EkUszSI/AAAAAAAAAxE/a_IUcmMgAbg/s1600-h/ss4.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 260px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/S271EkUszSI/AAAAAAAAAxE/a_IUcmMgAbg/s400/ss4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5435551259101547810" /></a><br />To download Pinta or the source code, check out the <a href="http://pinta-project.com/">website</a>!<br /><br /><span style="font-style:italic;">Note: I didn't misspell "Hello" in my screenshot, my dog's name is Helo. ;)</span>http://jpobst.blogspot.com/2010/02/over-holiday-break-i-stumbled-upon-this.htmlnoreply@blogger.com (Jonathan Pobst)44tag:blogger.com,1999:blog-1368115163566068223.post-7269986731385410504Wed, 27 Jan 2010 19:36:00 +00002010-01-27T13:43:09.773-06:00Taking All BetsWith the massive success of the iTunes App Store (over 3 billion apps downloaded), I think it's safe to assume the next version of OS X will include an App Store for Mac software.<br /><br /><span style="font-weight:bold;">The question is:</span><br /><br />How many iterations of OS X will it take before Mac software can only be distributed (without "jailbreaking") through the App Store, thus ensuring Apple gets their cut of all Mac software sales?http://jpobst.blogspot.com/2010/01/taking-all-bets.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-1510234633336175518Tue, 05 Jan 2010 17:35:00 +00002010-01-05T11:41:25.062-06:00Merry Christmas BackMy Christmas gift to myself (mainly my back) this year was a spiffy Aeron chair, since I spend probably 10+ hours sitting at my desk each day. It is a considerable upgrade from what I've used for the last 2 years:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/S0N5ICXo7-I/AAAAAAAAAwM/W4BeYP4z5Jw/s1600-h/DSC01595-1.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 520px; height: 390px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/S0N5ICXo7-I/AAAAAAAAAwM/W4BeYP4z5Jw/s400/DSC01595-1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5423311555266146274" /></a><br />We're cool now, right vertebrae?http://jpobst.blogspot.com/2010/01/merry-christmas-back.htmlnoreply@blogger.com (Jonathan Pobst)0tag:blogger.com,1999:blog-1368115163566068223.post-8635315786740478977Fri, 16 Oct 2009 22:04:00 +00002009-10-16T16:19:01.317-06:00If you build it, they will comeEver since I got a dog, and realized said dog would fetch himself to death given the opportunity, I have threatened to build him an automatic ball thrower. Unfortunately, I have the mechanical skills of a chinchilla. Fortunately, someone else has done all the hard work for me:<br /><br /><a href="http://www.hammacher.com/Product/77912?source=CJ&cm_mmc=CJ-_-1408768-_-1830967-_-Hammacher+Product+Catalog">The Automatic Canine Fetch Machine</a> (catchy name!)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4IfYnHLEdnY/StjvJ7A0JxI/AAAAAAAAAuE/U32kDtPw3co/s1600-h/77912.jpeg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_4IfYnHLEdnY/StjvJ7A0JxI/AAAAAAAAAuE/U32kDtPw3co/s400/77912.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5393323507515139858" /></a><br /><br />This is great for those people who want a dog, but don't want to have to actually interact with the dog. It's like getting a television for your toddler.<br /><br />Even a cold, soulless ball throwing mechanotron bucket can't say no to these eyes:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4IfYnHLEdnY/StjwL57heRI/AAAAAAAAAuM/pjDmD0SUlm0/s1600-h/DSC01546-1.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 301px; height: 400px;" src="http://3.bp.blogspot.com/_4IfYnHLEdnY/StjwL57heRI/AAAAAAAAAuM/pjDmD0SUlm0/s400/DSC01546-1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5393324641095874834" /></a>http://jpobst.blogspot.com/2009/10/if-you-build-it-they-will-come.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-4349060869804196990Wed, 07 Oct 2009 04:33:00 +00002009-10-06T22:55:58.844-06:00I don't get KDELast night while browsing the internets, I saw some screenshots of KDE 4.3 running on openSUSE 11.2. I've never tried KDE, so I installed the openSUSE 11.2 M8 build to briefly play with it.<br /><br />What got me interested was this element of the KDE desktop:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/SswayeFslhI/AAAAAAAAAto/GTyf1-X4Zcw/s1600-h/kde1.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 111px; height: 400px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/SswayeFslhI/AAAAAAAAAto/GTyf1-X4Zcw/s400/kde1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389712308428379666" /></a><br />I look at that and see hope. It is elegant and refined. It is glassy and tasteful. It says: "I can easily compete with Windows 7 and OSX." Simply put, it is beautiful.<br /><br />Yes, there are some problems with it. The buttons do not highlight in any way on hover. There are no tooltips, so I don't even know what the top two buttons do. From what I can tell, they do absolutely nothing. But it really lives up to KDE's reputation of eye candy.<br /><br />And then you open a window:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4IfYnHLEdnY/Ssway_E-AlI/AAAAAAAAAtw/Lg-Enb1W0yY/s1600-h/kde2.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://4.bp.blogspot.com/_4IfYnHLEdnY/Ssway_E-AlI/AAAAAAAAAtw/Lg-Enb1W0yY/s400/kde2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389712317283697234" /></a><br />It is.. gray. There is no glass. There are no gradients. There is no depth. There is no elegance. There is just gray. It says: "I am kicking Windows 95's ass! Barely!"<br /><br />I just don't get it. How can half of your desktop (let's call it "Plasma") be so beautiful, while the other half (let's call it "the stuff that is always going to be covering up Plasma") be so ugly and uninspired?<br /><br />Errata:<br />- I do not know if I am complaining about KDE, or openSUSE's implementation of KDE, or both.<br />- I lamented on the aesthetics of GNOME <a href="http://jpobst.blogspot.com/2009/07/my-gtk-pet-peeve.html">previously</a>, so it's not "let's start a desktop war".http://jpobst.blogspot.com/2009/10/i-dont-get-kde.htmlnoreply@blogger.com (Jonathan Pobst)15tag:blogger.com,1999:blog-1368115163566068223.post-1160706974573866792Mon, 05 Oct 2009 01:39:00 +00002009-10-04T19:43:21.455-06:00iInnovationHas anyone created a farting app using MonoTouch yet, or is my golden ticket to riches still available?http://jpobst.blogspot.com/2009/10/iinnovation.htmlnoreply@blogger.com (Jonathan Pobst)0tag:blogger.com,1999:blog-1368115163566068223.post-6260046644325426496Wed, 30 Sep 2009 18:25:00 +00002009-09-30T12:54:08.262-06:00RMS mistakes and malattributionGiven the recent environment of <a href="http://www.fsf.org/blogs/rms/mac-osx-mistakes-and-malfeatures">reflection on past statements made</a>, I have looked at my past to see if there are things I have said that might not be verifiably true.<br /><br />I have said multiple times in the past that <a href="http://en.wikipedia.org/wiki/Richard_stallman">Richard Stallman</a> was actually <a href="http://en.wikipedia.org/wiki/Weird_al">Weird Al Yankovic</a> with a costume beard. I had heard this through various sources, but there is no published source that confirms this, and I now believe I may have accidentally completely made that up and passed it off as fact.<br /><br />I have no way to verify that Stallman is not Yankovic, but there is no basis to claim he is. I apologize to Mr. Stallman, and, should he be a separate person, Mr. Yankovic.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4IfYnHLEdnY/SsOmTjctSyI/AAAAAAAAAtg/MY3myQT5fGE/s1600-h/proof.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 246px;" src="http://1.bp.blogspot.com/_4IfYnHLEdnY/SsOmTjctSyI/AAAAAAAAAtg/MY3myQT5fGE/s400/proof.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5387332434128620322" /></a><br /><br />While Mr. Yankovic may not actually be RMS, he does a have a history of Stallman-esque leanings, as exhibited by the original titles of his hit songs before the record labels changed them:<br /><br />- It's All About the GNU/Pentiums<br />- Living in an Amish Paradise (To Escape the Evil, Proprietary Monopoly that is Microsoft)<br /><br />So I don't withdraw my claim that RMS and Weird Al might be the same person. But I do withdraw my claim that RMS and Weird Al are the same person.http://jpobst.blogspot.com/2009/09/rms-mistakes-and-malattribution.htmlnoreply@blogger.com (Jonathan Pobst)3tag:blogger.com,1999:blog-1368115163566068223.post-6349062084951975854Thu, 17 Sep 2009 04:09:00 +00002009-09-16T22:49:26.070-06:00Planning for SpontaneityI have recently felt like my popularity is waning a bit, people just aren't talking about me enough. Fortunately, current events have given me an idea. At this year's PDC, if I go, I will yell something horribly distasteful during the keynote, and then immediately apologize like I never meant for it to happen.<br /><br />What this means to you dear reader is that we only have roughly two months to come up with what I should spontaneously yell with no forethought whatsoever. I'll start the ball rolling with a few:<br /><br />- "Clippy is racist."<br />- "Windows ME was the best version of Windows ever."<br />- "You lie", in response to the cloud being the future.<br />- "Steve Jobs is a handsome man."<br />- "That guy was lucky Ballmer only threw a chair at him."<br />- "Anders Hejlsberg is a no-talent hack."<br />- "I'm really happy for you Windows 7, I'm gonna let you finish, but Vista SP1 had <a href="http://www.youtube.com/watch?v=sPv8PPl7ANU">one of the best videos of all time</a>."<br />- "Hitler used Windows."<br />- "Google apps are an adequate replacement for desktop apps."<br />- "I swear to God I'm [expletive] going to take this [expletive] Zune HD and shove it down your [expletive] throat, you hear that? I swear to God."<br /><br />Feel free to leave your suggestions in the comments, and let's make this a PDC to remember! (for being about me!)<br /><br />[Reporters and podcasters, feel free to begin booking me now for my heartfelt apology!]http://jpobst.blogspot.com/2009/09/planning-for-spontaneity.htmlnoreply@blogger.com (Jonathan Pobst)6