<?xml version="1.0" ?><rss version="2.0"><channel><title>Techno Gumbo</title><link>http://www.technogumbo.com</link><description>Techno Gumbo.com RSS Feed</description><language>en-US</language><lastBuildDate>Sat, 19 May 12 19:47:49 -0400</lastBuildDate><image><title>Techno Gumbo</title><width>800</width><height>150</height><url>images/TGOHeadV2_Plain2.gif</url><link>http://www.technogumbo.com</link></image><webMaster>palen1c@gmail.com</webMaster><ttl>120</ttl><item><link>http://www.technogumbo.com/2012/05/The-Motorola-i265-and-what-it-has-to-do-with-the-Maker-Movement/</link>http://www.technogumbo.com/<title>The Motorola i265 and what it has to do with the Maker Movement</title><pubDate>Fri, 11 May 2012 10:13:41 EST</pubDate><description>&lt;p&gt;&lt;img alt="The relic Motorola i265." src="Classes/phpThumb/phpThumb.php?src=../../images/MotoI2651.jpg&amp;h=200"align="left" hspace="4" vspace="2" /&gt;Ever since I got my first plan based mobile phone, I have had the exact same handset; the Motorola i265 which predates flip phones. This phone has been a constant joke when I pull it out because of the high technology nature of the work I do (I use an Android phone and ipad for development, but not for calls).  Why would I use such a relic phone? During the course of regular usage, I dropped this phone on cement and the microphone stopped working.  In response to that, I purchased a specialized screwdriver especially for the phone; took it apart, and fixed the microphone.&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;img alt="The i265 and Husky hex type screwdriver." src="Classes/phpThumb/phpThumb.php?src=../../images/MotoI2652.jpg&amp;h=150"align="right" hspace="4" vspace="2" /&gt;&lt;p&gt;&lt;img alt="The i265 dissasembled." src="Classes/phpThumb/phpThumb.php?src=../../images/MotoI2653.jpg&amp;w=150"align="left" hspace="4" vspace="2" /&gt;</description><category>Personal</category></item><item><link>http://www.technogumbo.com/2012/05/Drupal-7-Services-3-REST-Server-C-Sharp-Example/</link>http://www.technogumbo.com/<title>Drupal 7 Services 3 REST Server C Sharp Example</title><pubDate>Fri, 4 May 2012 10:13:40 EST</pubDate><description>&lt;p&gt;&lt;img alt="An image of the the drupal services 3 tool." src="Classes/phpThumb/phpThumb.php?src=../../images/DrupalRESTTool542012.jpg&amp;w=200"align="left" hspace="4" vspace="2" /&gt;I have been doing a lot of work lateley in the Windows Presentation Foundation(wpf) in my favorite  .NET language, c#.  As with many projects, I like to incorporate the Drupal content management system. With Services 3 you have to throw your knowledge of previous Drupal Services out the window. There is no service browser and several paradigms have changed.  After examining REST vs the XMLRPC server I decided to focus on REST because it is just like POSTing and GETing data to/from web forms, in combination with specific url schemes. I&amp;#39;ve created a demo application that will allow people to test out the REST server....at the time of writing anyway. Here are a couple of points about services 3.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Login&lt;/h3&gt;In Services 3 logged in state is determined by a cookie that the login method returns if valid credentials are provided.  There is no system.connect needed. People used to legacy Drupal Services will probably find this really annoying...I kind of did. However it conforms to the same behavior as other popular API&amp;#39;s like Facebook and Twitter. This is a POST request.&lt;br/&gt;&lt;br/&gt;In this example, by default there is no cookie management when using the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx&quot;&gt;HttpWebRequest&lt;/a&gt; so we utilize a &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.net.cookiecontainer.aspx&quot;&gt;CookieContainer.&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Logout&lt;/h3&gt;Logout is also handled by a POST.  You can call it as many times as you want, but it will only return a valid result if you currently have a valid cookie.&lt;br/&gt;&lt;br/&gt;The example was created using using Visual C# 2010 Express and compiled for an x86 target. Take a close look at the source code and you may happen to stumble uppon several other examples. If you have any questions, please use the comments and I&amp;#39;ll be happy to help.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Example Download&lt;/h3&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;DrupalRestTool.exe&quot;&gt;Download the Executable Sample&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;TechnoGumbo_CSharpDrupal_Svcs3.zip&quot;&gt;Download the C# Project&lt;/a&gt; &lt;/p&gt;</description><category>Programming</category></item><item><link>http://www.technogumbo.com/2012/03/Persistent-and-Session-Cookies-in-Windows-and-Adobe-AIR/</link>http://www.technogumbo.com/<title>Persistent and Session Cookies in Windows and Adobe AIR</title><pubDate>Fri, 30 Mar 2012 1:45:40 EST</pubDate><description>&lt;p&gt;&lt;img alt="Posting some media to Facebook from a kiosk." src="Classes/phpThumb/phpThumb.php?src=../../images/CookiesInWindowsAndAIR.jpg&amp;w=200"align="left" hspace="4" vspace="2" /&gt;In this article I am going to save you the trouble of researching how Windows XP, Vista, and 7 handle cookies in Internet Explorer and how those rules are delegated to Adobe AIR. You need to know some of the fundamentals before we can jump in.  I had to learn all of this to be able to create a kiosk framework with a colleague that safely allows visitors to post to social media sites such as Twitter and Facebook from public kiosks. In my experience, social media sites cannot be trusted to provide proper logout methods for their API&#039;s, so our framework took a nuke all cookies and trust no one approach, which lead to several difficulties.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Adobe AIR on Windows Shares Internet Explorer Settings&lt;/h3&gt;As far as network timeouts, proxy settings, and cookies go; Adobe AIR shares those settings with IE on Windows.  So set a proxy in IE, and AIR will obey the proxy.  Set a network timeout in the registry for IE, and AIR will obey that too.  &lt;strong&gt;The critical item here is that AIR shares Internet Explorers cookies and cookie behavior.&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;What are Persistent and Session Cookies?&lt;/h3&gt;A persistent cookie is a cookie that exists on a computer after a user has visited a site in a web browser.  It is written as a small text file onto the computers hard drive.  These small files are often used to keep visitors logged into a website after they have left the site and not explicitly logged out.  The contents of the cookie differ greatly, and are usually just a bunch of random gibberish that servers use to uniquely identify a visitor or restore state.&lt;br/&gt;&lt;br/&gt;A session cookie is a cookie that is only valid until the user leaves the website or closes the web browser. In the case of Internet Explorer, session cookies are held in memory until Internet Explorer is closed, or conversely the Adobe AIR application is closed.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Persistent Cookie Storage Location&lt;/h3&gt;In Windows Vista and 7, cookies for IE and AIR are stored at:&lt;br/&gt;C:\Users\logged in user name\AppData\Roaming\Microsoft\Windows\Cookies&lt;br/&gt;and&lt;br/&gt;C:\Users\logged in user name\AppData\Roaming\Microsoft\Windows\Cookies\Low&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;The Challenge With Session Cookies, Windows, and Untrustworthy Social Networking Sites&lt;/h3&gt;Because session cookies are stored in memory, even when programming in native Windows applications; session cookies are in protected memory for the application that created them.  In an Adobe AIR application this means the &lt;strong&gt;ONLY WAY&lt;/strong&gt; to destroy a session cookie for good is to kill the application.  As all of the official IE documentation states; session cookies are only destroyed when Internet Explorer is closed. This behavior is part of AIR on Windows as well.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;What about persistent cookies?&lt;/h3&gt;On a public kiosk persistent cookies have no business existing in the first place. It is important that for untrustworthy social media sites (all of them). That persistent cookies be purged. Windows, for obvious reasons usually doesn&#039;t allow a persistent cookie to be deleted if it is in active use by the application.  The solution is to delete all persistent cookies after the offending native exe or air application is closed.&lt;br/&gt;&lt;br/&gt;For kiosk applications made in Adobe AIR or native Windows applications this means that programmers need to plan on killing the process for whatever part of the application interacted with the social media site.  Maybe other kiosk vendors were so far on top of this in 2011 when I tackled it that it wasn&amp;#39;t funny; but honestly I doubt it.&lt;br/&gt;&lt;br/&gt;</description><category>Programming</category></item><item><link>http://www.technogumbo.com/2012/03/Account-of-Learning-in-2011/</link>http://www.technogumbo.com/<title>Account of Learning in 2011</title><pubDate>Fri, 16 Mar 2012 1:44:39 EST</pubDate><description>&lt;p&gt;&lt;img alt="Transcending Digital Logo." src="Classes/phpThumb/phpThumb.php?src=../../images/LearningIn2011.jpg&amp;w=200"align="left" hspace="4" vspace="2" /&gt;Another year has gone by since the last annual account.  You can go back each March to read the prior years if interested. In this article I try and summarize the major learning points over the course of the year. March is the month of my birthday so I like to hold myself accountable to my actions over the last year.  I personally feel that this year has been the greatest leap forward in my life so far for one big reason; I was finally able to start a company and absorb many of the learning opportunities that come along with it. I also returned to my home state for the second half of the year, so spending time with my family was a rewarding experience this year.  Please join me with this fun list.&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Learned how to move to another state again – it was no big deal this time. I was able to do a living expense estimate long before taking the plunge which turned out pretty accurate.&lt;/li&gt;&lt;li&gt;Learned a huge amount about Federal and State taxes and regulations.&lt;/li&gt;&lt;li&gt;Learned about starting a company in Michigan and Massachusetts.&lt;/li&gt;&lt;li&gt;Learned important lessons about contract pricing.&lt;/li&gt;&lt;li&gt;Learned a ton about accounting. I feel much more comfortable dealing myself with several aspects of accounting.&lt;/li&gt;&lt;li&gt;Learned a small amount about copywriting.&lt;/li&gt;&lt;li&gt;Learned more about universal design principals.&lt;/li&gt;&lt;li&gt;Learned several manufacturing processes, materials, and paradigms (in overview).&lt;/li&gt;&lt;li&gt;Learned more about graphic design and was real proud of myself this year for making a brochure and handouts that went through six revisions, but proves that I can still do design work.&lt;/li&gt;&lt;li&gt;Learned about rapid selling on craigslist. Very effective if you know how to frame items correctly in photos.&lt;/li&gt;&lt;li&gt;Learned a lot about articles of incorporation across different states and drafted my own.&lt;/li&gt;&lt;li&gt;Learned a lot about an operating agreement and also drafted my own.&lt;/li&gt;&lt;li&gt;Learned about working with an attorney.&lt;/li&gt;&lt;li&gt;Learned about working with contractors (I&amp;#39;ve been lucky to work with some really great people).&lt;/li&gt;&lt;br/&gt;Ok – here we go into all the computer related items.&lt;li&gt;Learned a lot more about Drupal 6 and 7.&lt;/li&gt;&lt;li&gt;Learned a bunch about Virtual Box.&lt;/li&gt;&lt;li&gt;Learned a bunch about Java 7.&lt;/li&gt;&lt;li&gt;Learned a lot about cookies in Windows and Adobe AIR.&lt;/li&gt;&lt;li&gt;Learned a lot about social media APIs.&lt;/li&gt;&lt;li&gt;Learned a lot about proxies in Java and in general. Used squid a bunch and wireshark finally in an effective manner.&lt;/li&gt;&lt;li&gt;Learned about manipulating 4x40 character displays.&lt;/li&gt;&lt;li&gt;Learned a great deal about programming design patterns.&lt;/li&gt;&lt;li&gt;Learned the Adobe Carignorm paradigms.&lt;/li&gt;&lt;li&gt;Learned how to use the Robotlegs framework and all the fun paradigms that go along with that.&lt;/li&gt;&lt;li&gt;Solidified a few testing paradigms I had about museum exhibits.&lt;/li&gt;&lt;li&gt;Increased understanding of performance based rendering in Flash and AIR.&lt;/li&gt;&lt;li&gt;Learned about the Google Maps Javascript v3 API.&lt;/li&gt;&lt;li&gt;Learned a lot more about dynamically creating pdfs.&lt;/li&gt;&lt;li&gt;Learned a lot more about the guts of MIME messages and the importance base64 encoding plays in images and attachments in email. For the record, I love Base64 encoding.&lt;/li&gt;&lt;li&gt;Learned about implementing cloud services.&lt;/li&gt;&lt;li&gt;Learned a lot more about automated testing and documentation tools.&lt;/li&gt;&lt;li&gt;Finally learned how to program a PLC and understand the challenges and advantages of using one depending on the environment.&lt;/li&gt;&lt;li&gt;Learned a decent chunk of RLL (Relational Ladder Logic).&lt;/li&gt;&lt;li&gt;Learned how to program the Microchip PIC Platform.&lt;/li&gt;&lt;li&gt;Learned how to program the NXP ARM 32 Bit Platform. Extremely impressed here compared to many 8bit chips. Wow.&lt;/li&gt;&lt;li&gt;Learned how to program an 8bit Freescale USB offering.&lt;/li&gt;&lt;li&gt;Learned about kiosk work challenges in .NET.&lt;/li&gt;&lt;li&gt;Learned about programming the Kinect.&lt;/li&gt;&lt;li&gt;Learned a little about programming on Android.&lt;/li&gt;&lt;li&gt;Learned more about HTML5.&lt;/li&gt;&lt;li&gt;Learned a ton about Watchout and their socket API. (Watchout is a popular software solution for multi screen A/V presentations).&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;In summary I am extremely pleased with progress made this year across several facets. This is probably the biggest list since I have started recording these each March.  In terms of well being I&amp;#39;ve been able to reconnect with old friends and make new ones this year as well. It&amp;#39;s been a great year and I am very thankful for all the people who have been involved in it.&lt;br/&gt;&lt;br/&gt;</description><category>Personal</category></item><item><link>http://www.technogumbo.com/2012/03/Kaltura-HTML5-Video-And-Media-JavaScript-Library-and-Problems-With-Captions/</link>http://www.technogumbo.com/<title>Kaltura HTML5 Video And Media JavaScript Library and Problems With Captions</title><pubDate>Tue, 6 Mar 2012 11:25:38 EST</pubDate><description>&lt;p&gt;&lt;img alt="The Kaltura media player in action. With captions." src="Classes/phpThumb/phpThumb.php?src=../../images/KalturaCaptions_362012.jpg&amp;h=200"align="left" hspace="4" vspace="2" /&gt;I wanted to quickly highlight an issue I ran into with the great Kaltura HTML5 Video and Media JavaScript library.  I&amp;#39;m using it commercially as a way to deliver video messages to clients across platforms in conjunction with Amazon S3. As I highlighted previously I go into great agony making sure these videos are accessible via captions/subtitles.&lt;br/&gt;&lt;br/&gt;The Kaltura HTML5 Video and Media JavaScript Library uses javascript to load the srt caption files.  This makes caption files unable to be hosted on content delivery networks like S3. In Javascript as well as a little bit of Flash(unless the programmer makes specific allowances) there is a &lt;a href=&quot;http://en.wikipedia.org/wiki/Same_origin_policy&quot;&gt;security policy called same origin&lt;/a&gt; which prevents the caption files form being loaded from a different domain via javascript.  My S3 solution dynamically uses their notion of expiring links so people can&amp;#39;t crawl my site and see marketing content. The fact that my caption files couldn&amp;#39;t be served on S3 caused a lot of pain for me.&lt;br/&gt;&lt;br/&gt;I came up with the solution to use my own server side scripts to make a copy of the srt captions from S3 on demand, then use cron in Linux, to periodically purge all caption files. (This site is hosted on Gentoo by a very talented admin, not myself). This really is a patch of a solution that really frustrated me with Kaltura. But how could they load captions and remain fully compliant? The only way I can think of is to provide some sort of proxy, but it sill messes up the S3 paradigm no matter what. Don&amp;#39;t get me wrong, I still like &lt;a href=&quot;http://www.kaltura.org/project/HTML5_Video_Media_JavaScript_Library&quot;&gt;Kaltura&lt;/a&gt;; but had trouble finding any documentation for solutions on this.  In the trunk right now it looks like they are working on solutions to this.&lt;br/&gt;&lt;br/&gt;A great solution would be to allow loading of captions by text embedded in the web page. That way server side scripts could dynamically pull captions from anywhere and incorporate it into the dynamic page.&lt;br/&gt;</description><category>Programming</category></item></channel></rss>
