<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Musings on Web Technologies, with a dab of Sports and Science.
My Web site: Neonguru
Follow me on </description><title>Neonguru's musings</title><generator>Tumblr (3.0; @neonguru)</generator><link>https://neonguru.tumblr.com/</link><item><description>&lt;p class="npf_link" data-npf="{&amp;quot;type&amp;quot;:&amp;quot;link&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;https://www.findrvparks.com/blog/2023-s-top-rv-camping-destinations-in-florida-you-cant-miss&amp;quot;,&amp;quot;display_url&amp;quot;:&amp;quot;https://www.findrvparks.com/blog/2023-s-top-rv-camping-destinations-in-florida-you-cant-miss&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;2023's Top RV Camping Destinations in Florida You Can't Miss!&amp;quot;,&amp;quot;description&amp;quot;:&amp;quot;Florida, known as the Sunshine State, is a haven for RV campers seeking year-round balmy weather, enchanting landscapes, and diverse…&amp;quot;,&amp;quot;site_name&amp;quot;:&amp;quot;findrvparks.com&amp;quot;,&amp;quot;poster&amp;quot;:[{&amp;quot;media_key&amp;quot;:&amp;quot;43d0cee927703c916cccfb2a6ea495bb:1243bb647ccd25ae-37&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;image/jpeg&amp;quot;,&amp;quot;width&amp;quot;:640,&amp;quot;height&amp;quot;:499}]}"&gt;&lt;a href="https://www.findrvparks.com/blog/2023-s-top-rv-camping-destinations-in-florida-you-cant-miss" target="_blank"&gt;2023&amp;rsquo;s Top RV Camping Destinations in Florida You Can&amp;rsquo;t Miss!&lt;/a&gt;&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/720392081397448704</link><guid>https://neonguru.tumblr.com/post/720392081397448704</guid><pubDate>Sat, 17 Jun 2023 09:30:25 -0700</pubDate><category>florida</category><category>rv camping</category></item><item><title>How to find RV Parks</title><description>&lt;p&gt;

For RVers looking to research RV Parks or Campsites to visit, there is a new website that is great for that at &lt;a href="https://www.findrvparks.com"&gt;FindRVParks.com&lt;/a&gt;. I use it’s RV specific Google maps feature a lot to narrow down the RV Parks I research to those in the general area I want to visit. &lt;/p&gt;&lt;p&gt;Then I use the filter feature to filter out sites I don’t want by filtering on rating, has 50amp service, has wifi, has sewer, allows pets, etc. There are a bunch of different filters you can apply.&lt;/p&gt;&lt;p&gt;After I have narrowed down the sites I want to research, I just click on them on the map and it brings up an info page with contact info, Website and amenities, as well as tab links to reviews, photos, videos and weather report for that RV Park or Campground. Along with these pages is a close up overhead satellite view you can access by clicking on ‘Locate on Map’. I use that to see if there are any good places or trails to walk our dogs in the area.&lt;/p&gt;&lt;p&gt;These features give me all the info I need to make a good decision on which park to stay at. I highly recommend &lt;a href="https://www.findrvparks.com"&gt;FindRVParks.com&lt;/a&gt;.&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/180019940358</link><guid>https://neonguru.tumblr.com/post/180019940358</guid><pubDate>Sun, 11 Nov 2018 19:13:21 -0800</pubDate><category>RV</category></item><item><title>Four Diet Rules</title><description>&lt;div&gt;&lt;strong&gt;Four Diet Rules:&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;ol&gt;&lt;li&gt;Plants&lt;/li&gt;
&lt;li&gt;Eat&lt;/li&gt;
&lt;li&gt;Discipline&lt;/li&gt;
&lt;li&gt;Patience&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Plants&lt;/strong&gt;: Emphasize plants in your diet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eat&lt;/strong&gt;: Don&amp;rsquo;t miss any meals, even eat more meals per day if possible. Eat a balance of nutrients, but don&amp;rsquo;t over-emphasize this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Discipline&lt;/strong&gt;: measurement, diligence, incremental changes - do I really need to explain this? It will become a habit, and no longer require discipline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patience&lt;/strong&gt;: This is not a quick fix, it is a way of life.&lt;/p&gt;

&lt;/div&gt;</description><link>https://neonguru.tumblr.com/post/30524156638</link><guid>https://neonguru.tumblr.com/post/30524156638</guid><pubDate>Thu, 30 Aug 2012 08:54:14 -0700</pubDate><category>health</category></item><item><title>Why I switched from Google Search to DuckDuckGo</title><description>&lt;p&gt;The main reason I switched from Google Search to &lt;a href="http://DuckDuckGo.com" title="DuckDuckGo"&gt;DuckDuckGo&lt;/a&gt; is because of their  &lt;strong&gt;&lt;a href="http://duckduckgo.com/bang.html" title="DuckDuckGo !Bang"&gt;!bang syntax&lt;/a&gt;&lt;/strong&gt;. I use the Chrome browser, and with DuckDuckGo as the default search engine, I can bring up searches on ANY website that has search capability directly from the omnibox. Just add a bang syntax after the search term and DuckDuckGo will forward my search to that website. Here are a few that I use regularly:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;!g                  Google Search&lt;/li&gt;
&lt;li&gt;!b                  Bing Search&lt;/li&gt;
&lt;li&gt;!w                 Wikipedia Search&lt;/li&gt;
&lt;li&gt;!d                  Dictionary Search&lt;/li&gt;
&lt;li&gt;!t                  Thesaurus Search&lt;/li&gt;
&lt;li&gt;!clseattle       CraigsList Seattle Search&lt;/li&gt;
&lt;li&gt;!a                  Amazon Search&lt;/li&gt;
&lt;li&gt;!eb                eBay Search&lt;/li&gt;
&lt;li&gt;!mc                MetaCritic Search&lt;/li&gt;
&lt;li&gt;!i                   Google Images Search&lt;/li&gt;
&lt;li&gt;!gweek          Google Search this week&lt;/li&gt;
&lt;li&gt;!gs                Google Shopping Search&lt;/li&gt;
&lt;li&gt;!gh                Github Search&lt;/li&gt;
&lt;li&gt;!so                Stack Overflow Search&lt;/li&gt;
&lt;li&gt;!scala            Scala Language Search&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This &lt;a href="https://duckduckgo.com/bang.html" title="DuckDuckGo !Bang"&gt;list&lt;/a&gt; goes on and on and on and on&amp;hellip;&lt;/p&gt;
&lt;p&gt;And you can add your own custom bang syntax for the rare search that is not already supported. Or if you want to add custom search options.&lt;/p&gt;
&lt;p&gt;Plus, unlike Google and others, DuckDuckGo doesn&amp;rsquo;t do any tracking. As you can see from my personal list above, I still use Google Search a lot. But now I have plenty of options - directly from the omnibox.&lt;/p&gt;
&lt;p&gt;PS The omnibox is near the top of the Chrome browser where the webpage URL is displayed. Just below the tabs.&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/23175508786</link><guid>https://neonguru.tumblr.com/post/23175508786</guid><pubDate>Wed, 16 May 2012 11:54:51 -0700</pubDate></item><item><title>Javascript solution for the Github tree slider</title><description>&lt;p&gt;Want to know how &lt;a href="http://neonguru.net"&gt;neonguru.net&lt;/a&gt; does the dynamic page transitions? Here&amp;rsquo;s a post I put on &lt;a href="http://stackoverflow.com/questions/5419469/github-slider-jquery-plugin/8674268#8674268" title="stackoverflow" target="_blank"&gt;stackoverflow&lt;/a&gt; answering how they do it on Github:&lt;/p&gt;
&lt;p&gt;I looked through their source code and they are NOT using CSS3 or a plugin. It uses jquery animate. And the code snippets they give on the &lt;a href="https://github.com/blog/760-the-tree-slider" target="_blank"&gt;Github blog&lt;/a&gt; are a good start, but the popstate handler is misleading. Try this instead:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;    $(window).bind('popstate', function (e) {
        if (e.originalEvent.state &amp;amp;&amp;amp; e.originalEvent.state.path) {
            $.get(e.originalEvent.state.path, function(data) {
                $('#slider').slideTo(data);      
            });
            return false;
        }
        return true;
    }
 &lt;/pre&gt;
&lt;p&gt;The actual sliding uses more tricks:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;set #slider overflow: hidden&lt;/li&gt;
&lt;li&gt;get the width of the section to animate.&lt;/li&gt;
&lt;li&gt;create a transfer div twice this width (transfer).&lt;/li&gt;
&lt;li&gt;copy the contents of the original div to a temp div (current).&lt;/li&gt;
&lt;li&gt;put the new contents in another temp div (next).&lt;/li&gt;
&lt;li&gt;put current and next side by side into transfer.&lt;/li&gt;
&lt;li&gt;remove content from original div and put new transfer div in (should look the same).&lt;/li&gt;
&lt;li&gt;animate transfer div - new look complete.&lt;/li&gt;
&lt;li&gt;replace original div contents with new data (looks the same as previous step).&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Here&amp;rsquo;s slide left:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;    $.fn.slideTo = function(data) {
        var width = parseInt($('#slider').css('width'));
        var transfer = $('&amp;lt;div class="transfer"&amp;gt;&amp;lt;/div&amp;gt;').css({ 'width': (2 * width) + 'px' });
        var current = $('&amp;lt;div class="current"&amp;gt;&amp;lt;/div&amp;gt;').css({ 'width': width + 'px', 'left': '0', 'float': 'left' }).html($('#slider').html());
        var next = $('&amp;lt;div class="next"&amp;gt;&amp;lt;/div&amp;gt;').css({ 'width': width + 'px', 'left': width + 'px', 'float': 'left' }).html(data);
        transfer.append(current).append(next);
        $('#slider').html('').append(transfer);
        transfer.animate({ 'margin-left': '-' + width + 'px' }, 300, function () {
            $('#slider').html(data);
        });
    }&lt;/pre&gt;
&lt;p&gt;And here&amp;rsquo;s a working example: &lt;a href="http://neonguru.net" title="neonguru.net"&gt;Slider example&lt;/a&gt;. Click on the menu with a browser that supports history. I started to use CSS3, but detecting when the transition/transform is complete is easier with the jquery animate callback.&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;</description><link>https://neonguru.tumblr.com/post/14990202342</link><guid>https://neonguru.tumblr.com/post/14990202342</guid><pubDate>Thu, 29 Dec 2011 14:44:00 -0800</pubDate></item><item><title>Switching from Outlook 2007 to Thunderbird 8 and Lightning</title><description>&lt;div&gt;I’ve been having problems with Outlook 2007 locking up lately. And it wouldn’t connect to my work exchange server for some reason, even though my phone had no problems doing so. And it’s not as friendly about syncing with other apps through caldav and such.&lt;br/&gt; &lt;br/&gt;So I decided to give the latest Mozilla Thunderbird with Lightning a chance. Turns out it works great and handles all my email accounts just fine. It can even 2-way sync with my google calendar and Remember the Milk Tasks. And if you add the Google contacts extension, you can do stuff like auto tag groups in your gmail address book and easily filter for them.&lt;br/&gt; &lt;br/&gt;The only hiccup I had was accessing my work exchange account. There is an exchange plugin but it didn’t work. so I installed the DavMail gateway and it works fine.&lt;br/&gt; &lt;br/&gt;So if you’re looking to upgrade your existing email client, try out Thunderbird. It’s particularly useful if you want to see different accounts in one app. Then add the lightning plug-in to get great calendar support as well.&lt;/div&gt;
&lt;div id="-chrome-auto-translate-plugin-dialog"&gt;
&lt;div&gt;
&lt;div class="translate"&gt;&lt;/div&gt;
&lt;div class="additional"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><link>https://neonguru.tumblr.com/post/13911754220</link><guid>https://neonguru.tumblr.com/post/13911754220</guid><pubDate>Wed, 07 Dec 2011 22:05:42 -0800</pubDate></item><item><title>Meet Yohann Gène, the First Black Cyclist Ever in the Tour de...</title><description>&lt;img src="https://64.media.tumblr.com/tumblr_lo5j10MjiY1qzpqs0o1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.time.com/time/world/article/0,8599,2082253,00.html"&gt;Meet Yohann Gène, the First Black Cyclist Ever in the Tour de France&lt;/a&gt;&lt;span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/7481768335</link><guid>https://neonguru.tumblr.com/post/7481768335</guid><pubDate>Sun, 10 Jul 2011 21:27:00 -0700</pubDate></item><item><title>Samsung Charge YouTube video won't play solution</title><description>&lt;p&gt;I had this problem on my Samsung Charge where YouTube videos would play and I could hear it, but the video was blank. At first I just rebooted and it would then work fine, but I kept having to do this. So I did a search through some forums to see if anyone had found a way to fix it. Most just said to reboot, but that is a hassle that I kept having to do over and over again. But then I found somebody who said they uninstalled the twitter app and it worked fine. So I tried it and that did the trick for me. I use TweetDeck anyway on my android phone so no biggie. Problem solved! Still, what the hell could twitter be doing that would make videos not show?&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/7434960632</link><guid>https://neonguru.tumblr.com/post/7434960632</guid><pubDate>Sat, 09 Jul 2011 17:05:00 -0700</pubDate></item><item><title>Tylar Farrar honors Wouter Weylandt in his Tour de France stage...</title><description>&lt;img src="https://64.media.tumblr.com/tumblr_lntu4b7LAN1qzpqs0o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Tylar Farrar honors Wouter Weylandt in his Tour de France stage 3 win &lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/7239264753</link><guid>https://neonguru.tumblr.com/post/7239264753</guid><pubDate>Mon, 04 Jul 2011 13:55:23 -0700</pubDate></item><item><title>Iphone or Android?</title><description>&lt;p&gt;I decided a couple months ago that I was going to finally take the plunge and get a smart phone. I used them a long time ago when I worked at Microsoft on their Windows CE device. But it was big and didn&amp;rsquo;t have a lot of features that I cared about back then, so never bought one. Then the popularity of the iPhone caught my attention. But since I have a computer everywhere I go, I figured I didn&amp;rsquo;t really need one. But more recently, the GPS enabled applications started getting press, android started getting popular, friends started getting them, and I noticed people were making money on apps so I decided I needed one.&lt;/p&gt;
&lt;p&gt;But which platform should I choose? At first I thought that since I use a lot of Google products, I should go with Android. But iPhone gets high ratings, is more mature, has more apps and I know more people that have them. I heard that iPhone is tied to iTunes so I downloaded iTunes and gave it a spin. Unfortunately it couldn&amp;rsquo;t play most of my music since I have mostly wma format music. That reminded me of the reasons I like Windows, you can find software to run anything on it for a lower cost. And I expect Android to be more like Windows.&lt;/p&gt;
&lt;p&gt;So after all my reading and testing I came up with the following criteria for people to make their own decision:&lt;/p&gt;
&lt;p&gt;Choose the iPhone if:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;you like apple&lt;/li&gt;
&lt;li&gt;you like macs&lt;/li&gt;
&lt;li&gt;you like itunes&lt;/li&gt;
&lt;li&gt;you don&amp;rsquo;t use computer&amp;rsquo;s much&lt;/li&gt;
&lt;li&gt;you just want simplicity&lt;/li&gt;
&lt;li&gt;you don&amp;rsquo;t mind spending a little more&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Choose the Android if:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;you like windows&lt;/li&gt;
&lt;li&gt;you like google&lt;/li&gt;
&lt;li&gt;you like gmail&lt;/li&gt;
&lt;li&gt;you like flash&lt;/li&gt;
&lt;li&gt;you like widgets&lt;/li&gt;
&lt;li&gt;you like to customize things&lt;/li&gt;
&lt;li&gt;you want speed (4G only on android right now)&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;I compared a lot of other criteria, screen size, resolution, battery life, etc. But the above criteria I think are the most important. I got Verizon&amp;rsquo;s Samsung Charge Android and it&amp;rsquo;s great, but I&amp;rsquo;ll bet I would have liked the iPhone as well.&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/6666205582</link><guid>https://neonguru.tumblr.com/post/6666205582</guid><pubDate>Sat, 18 Jun 2011 14:14:10 -0700</pubDate></item><item><title>My summer blockbuster voice over from orange.co.uk.</title><description>&lt;iframe class="tumblr_audio_player tumblr_audio_player_6557024841" src="https://neonguru.tumblr.com/post/6557024841/audio_player_iframe/neonguru/tumblr_lmubn1FMqe1qzpqs0?audio_file=https%3A%2F%2Fa.tumblr.com%2Ftumblr_lmubn1FMqe1qzpqs0o1.mp3" frameborder="0" allowtransparency="true" scrolling="no" width="540" height="85"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My summer blockbuster voice over from &lt;a title="thefeed" target="_blank" href="http://thefeed.orange.co.uk/thissummer/531/"&gt;orange.co.uk&lt;/a&gt;.&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/6557024841</link><guid>https://neonguru.tumblr.com/post/6557024841</guid><pubDate>Wed, 15 Jun 2011 09:40:00 -0700</pubDate></item><item><title>Mobilize your site</title><description>&lt;p&gt;Want to make your site look good on mobile devices, but still look good on all browsers? Media Queries are your friend. It&amp;rsquo;s really not that hard and you can serve the same data to all page requests. You just modify your css to target different page widths. You can see how it works by changing the width of your browser on the &lt;del&gt;&lt;a href="http://www.neonenigma.com" title="neonenigma.com" target="_self"&gt;neonenigma.com&lt;/a&gt;&lt;/del&gt; (moved to &lt;a href="http://neonguru.net" title="neonguru.net"&gt;neonguru.net&lt;/a&gt;) website.&lt;/p&gt;
&lt;p&gt;The first thing I did was change the doctype to html5:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;&amp;lt;!doctype html&amp;gt;&lt;/pre&gt;
&lt;p&gt;Pretty simple and seems to work in all browsers. I also added a viewport meta tag for mobile devices:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;&amp;lt;meta name="viewport" content="width=device-width; initial-scale=1.0"&amp;gt;&lt;/pre&gt;
&lt;p&gt;Then I looked at the site and modified the css as I changed the width of the browser. I use the chrome browser mostly but it should work in any of the latest browsers. I noticed that Firefox has a minimum that it will shrink to though. The key to modifying your css is to create sections for certain widths:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;@media screen and (min-width: 970px)&lt;br/&gt;{&lt;br/&gt;    //css to override for wide widths&lt;br/&gt;}&lt;/pre&gt;
&lt;p&gt;I created the wide width css first, then looked to see how the page transitioned as I shrank the browser width. The end goal is to make the default css at the top apply to most browsers, then a section for minimum width and mobile devices:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;@media handheld and (max-width: 480px), screen and (max-device-width: 480px), screen and (max-width: 600px)&lt;br/&gt;{&lt;br/&gt;    //css for mobile and widths less than 600&lt;br/&gt;}&lt;/pre&gt;
&lt;p&gt;Then override that with incrementally larger widths further down in the css. For my page, I have the default section, then sections for mobile and less than 600, 840, 845, and 970 pixels.&lt;/p&gt;
&lt;p&gt;As I shrink or grow the browser width, I tried to make it fairly seamless in the transitions. So your min-width settings will vary depending on the width of the contents. You also want to make prodigious use of percentage widths. 100% is your friend here. Then, as the browser shrinks, your images and divs will resize to a percentage of the available width.&lt;/p&gt;
&lt;p&gt;For older browsers (IE!), you can use &lt;a href="http://code.google.com/p/css3-mediaqueries-js/" title="css3-mediaqueries" target="_blank"&gt;css3-mediaqueries&lt;/a&gt; javascript to use these techniques. That&amp;rsquo;s it! Check out  &lt;del&gt;&lt;a href="http://www.neonenigma.com" title="neonenigma.com" target="_self"&gt;neonenigma.com&lt;/a&gt;&lt;/del&gt; (moved to &lt;a href="http://neonguru.net" title="neonguru.net"&gt;neonguru.net&lt;/a&gt;) source and css for just how easy this is!&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/5484670921</link><guid>https://neonguru.tumblr.com/post/5484670921</guid><pubDate>Sat, 14 May 2011 10:11:00 -0700</pubDate><category>web development</category><category>Css</category></item><item><title>Me on Piano</title><description>&lt;figure class="tmblr-full" data-orig-height="480" data-orig-width="400" data-orig-src="http://neonguru.net/mepiano.gif"&gt;&lt;img src="https://64.media.tumblr.com/93bb552897fe1c5e953c284caa265ceb/f87780b9f496bf3f-fc/s540x810/b9dbe608224ac4dd053c038481e936d93698a85c.gif" alt="Me on Piano" data-orig-height="480" data-orig-width="400" data-orig-src="http://neonguru.net/mepiano.gif"/&gt;&lt;/figure&gt;
&lt;p&gt;Me on piano, thankfully no audio!&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/204415492</link><guid>https://neonguru.tumblr.com/post/204415492</guid><pubDate>Sun, 04 Oct 2009 12:31:00 -0700</pubDate></item><item><title>Steps to run Google AppEngine with Django in Windows</title><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update&lt;/strong&gt;: this post was written when the Google app engine didn&amp;rsquo;t have native django template support. Now it&amp;rsquo;s much easier. See the vogella.de &lt;a href="http://www.vogella.de/articles/GoogleAppEngine/article.html"&gt;app engine&lt;/a&gt; tutorial for current info.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This post outlines the steps necessary to setup google&amp;rsquo;s app engine and the following contributing software to start developing applications on windows. First you need the Google App Engine to see what versions of other software will be necessary:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google App Engine&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;a href="http://code.google.com/appengine/"&gt;http://code.google.com/appengine/&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;Currently, Google App Engine requires &lt;strong&gt;Python&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;a href="http://python.org"&gt;http://python.org&lt;/a&gt;&lt;br/&gt;Current best version required by App Engine is &lt;strong&gt;2.5.4&lt;/strong&gt; (not the latest!) found here:&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;a href="http://python.org/download/releases/"&gt;http://python.org/download/releases/&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;To also use Django it is best to use the &lt;strong&gt;Google App Engine Helper for Django&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;a href="http://code.google.com/p/google-app-engine-django/"&gt;http://code.google.com/p/google-app-engine-django/&lt;/a&gt;&lt;br/&gt;Current best version (latest) is &lt;strong&gt;r90 &lt;/strong&gt;found here:&lt;br/&gt;&lt;a href="http://code.google.com/p/google-app-engine-django/downloads/list"&gt;http://code.google.com/p/google-app-engine-django/downloads/list&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;Then you&amp;rsquo;ll need &lt;strong&gt;Django&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;a href="http://www.djangoproject.com"&gt;http://www.djangoproject.com&lt;/a&gt;&lt;br/&gt;Current best version required by Google App Engine Helper for Django is &lt;strong&gt;v1.0.3&lt;/strong&gt; (not the latest!) found here:&lt;br/&gt;&lt;a href="http://www.djangoproject.com/download/"&gt;http://www.djangoproject.com/download/&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;For development I tried PythonWin, IDLE, Komodo, Wing, Eric, and Pydev. &lt;strong&gt;Pydev &lt;/strong&gt;is the best in my opinion. If you don&amp;rsquo;t really like eclipse, then Wing would be my second choice.&lt;/p&gt;
&lt;p&gt;To use &lt;strong&gt;PyDev &lt;/strong&gt;plugin for eclipse, follow the installation instructions at:&lt;/p&gt;
&lt;blockquote&gt;&lt;a href="http://pydev.org/manual_101_root.html"&gt;http://pydev.org/manual_101_root.html&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;Main points of the pydev instructions are:&lt;/p&gt;
&lt;blockquote&gt;Download and unzip eclipse 3.5, classic is good enough or get the Java Developers version to start:&lt;br/&gt;&lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt;&lt;br/&gt;Use the &amp;ldquo;Install new software&amp;rdquo; option under the help menu of eclipse.&lt;br/&gt;Click the &lt;strong&gt;Add &lt;/strong&gt;button and enter the following in the location textbox and click ok to get Pydev:&lt;br/&gt;&lt;a href="http://pydev.org/updates"&gt;http://pydev.org/updates&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;Once Pydev is setup, create a new project of type: &lt;strong&gt;Pydev Google App Engine Project&lt;/strong&gt;.&lt;br/&gt;Add the files from Google App Engine Helper for Django&lt;br/&gt;Modify to suit using the following as a guideline:&lt;/p&gt;
&lt;blockquote&gt;&lt;strong&gt;&lt;a href="http://code.google.com/appengine/articles/appengine_helper_for_django.html"&gt;http://code.google.com/appengine/articles/appengine_helper_for_django.html&lt;/a&gt;&lt;/strong&gt;&lt;/blockquote&gt;
&lt;p&gt;Main point is to create a django.zip file in the root of your project.&lt;br/&gt;Create a run configuration for &lt;strong&gt;PyDev Google App Run&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;Copy the path to the google dev_appserver.py file as the Main Module, my machine looks like this:&lt;br/&gt;&lt;blockquote&gt;&lt;strong&gt;c:\Program Files (x86)\Google\google_appengine\dev_appserver.py&lt;/strong&gt;&lt;/blockquote&gt;
Under the arguments tab in the Run Configurations dialog, set to:&lt;br/&gt;&lt;blockquote&gt;&lt;strong&gt;${workspace_loc:AppName/src}&lt;/strong&gt;&lt;/blockquote&gt;
Replace AppName with your eclipse application name and src is the path to your main.py module.&lt;/blockquote&gt;
&lt;p&gt;You should now be able to run and debug your application from here.&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/202171669</link><guid>https://neonguru.tumblr.com/post/202171669</guid><pubDate>Thu, 01 Oct 2009 18:01:00 -0700</pubDate><category>code</category><category>python</category><category>web development</category></item><item><title>Another site: entropykiller.com released</title><description>&lt;p&gt;I just released another website at &lt;a href="http://www.entropykiller.com"&gt;http://www.entropykiller.com&lt;/a&gt;. That site uses Google App Engine, Python and Django to achieve similar results to those at &lt;del&gt;&lt;a href="http://neonenigma.com"&gt;http://neonenigma.com&lt;/a&gt;&lt;/del&gt; (moved to &lt;a href="http://neonguru.net" title="neonguru.net"&gt;neonguru.net&lt;/a&gt;) which uses ASP.net MVC. Although I tried a number of different combinations to producing entropykiller.com, it turns out that using Google App Engine Helper for Django was the most intuitive to use in conjunction with Pydev on Eclipse for development. More on how I set this up in another post. Both sites use jQuery for client side scripting. At this point I will give a slight nod in preference to using Python over .net to develop a site, while .net has the more favorable visual studio development environment.&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/200670417</link><guid>https://neonguru.tumblr.com/post/200670417</guid><pubDate>Tue, 29 Sep 2009 21:33:00 -0700</pubDate><category>web development</category></item><item><title>neonenigma.com released</title><description>&lt;p&gt;I just released an ASP.net MVC application to my website located at &lt;del&gt;&lt;a href="http://neonenigma.com"&gt;http://neonenigma.com&lt;/a&gt;&lt;/del&gt; (moved to &lt;a href="http://neonguru.net"&gt;http://neonguru.net&lt;/a&gt;). In addition to MVC it uses jQuery and Silverlight to produce dynamic content. For instance, on the Web Dev tab I put a link that goes to a page that mirrors all tabs on the site using a single dynamic jQuery page. No http get is required to change tabs. See the &lt;del&gt;&lt;a href="http://neonenigma.com/All" title="All"&gt;All&lt;/a&gt;&lt;/del&gt; (gone now) link. I have also aggregated the contents of a couple of blogs. The Blog tab comes from &lt;a href="http://neonguru.tumblr.com"&gt;http://neonguru.tumblr.com&lt;/a&gt; and the Humor tab contents come from &lt;a href="http://neonguru.blogger.com"&gt;http://neonguru.blogger.com&lt;/a&gt;. The main page has an animation that uses either jQuery or Silverlight depending on your browser. This site will be used for future web testing of these and other web technologies..&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/188954218</link><guid>https://neonguru.tumblr.com/post/188954218</guid><pubDate>Tue, 15 Sep 2009 18:15:00 -0700</pubDate><category>web development</category></item><item><title>North Bend, WA native Thomas Peterson wins Stage 2 of the Tour...</title><description>&lt;img src="https://64.media.tumblr.com/PBsUOys9ak4eh608kXD7LzSJo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;North Bend, WA native Thomas Peterson wins Stage 2 of the Tour of California&lt;br/&gt;
(Armstrong 4th overall with 4 stages to go)&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/79544354</link><guid>https://neonguru.tumblr.com/post/79544354</guid><pubDate>Wed, 18 Feb 2009 19:10:26 -0800</pubDate></item><item><title>Dream Gadget</title><description>&lt;p&gt;My dream gadget is a car stereo that comes with an MP3 player which can sync bi-directionally to the car stereo and windows media player via bluetooth.&lt;/p&gt;

&lt;p&gt;Are you listening Microsoft?&lt;br/&gt;
Or Apple, or &amp;hellip;&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/77183366</link><guid>https://neonguru.tumblr.com/post/77183366</guid><pubDate>Tue, 10 Feb 2009 07:00:36 -0800</pubDate></item><item><title>Improving your Web Site's Front End Performance</title><description>&lt;p&gt;Last week Steve Souders of Google via Yahoo! gave a talk at Myspace regarding improving web site front end performance. See &lt;a href="http://stevesouders.com" title="http://stevesouders.com"&gt;http://stevesouders.com&lt;/a&gt;, especially the section about his book, cuzillion and ySlow. This talk was about dramatically improving you site&amp;rsquo;s performance without writing a lot of code. He has a list of 14 rules that you can use to achieve this. The list has some very simple rules like make fewer HTTP requests or put stylesheets at the top. But the part that intrigued me the most was his discussion about how much of a bottleneck loading javascript is for most all sites and some tricks you can do to eleminate this problem. It turns out that when you load javascript via a script tag in the head section of your html, the browser will load each in order, and forego any parallel optimization it would otherwise be doing. He lists around six different methods, but there are 2 that stood out as being most effective for most situations. Those are XHR injection and Script DOM element. The first is best for same domain and the latter for cross domain scripting.&lt;br/&gt;&lt;br/&gt;Script DOM element (best for cross domain) is a fairly simple way of loading javascript AFTER the page has loaded AND rendered. So you only want to do this for script that doesn&amp;rsquo;t need to run before onLoad. But most all javascript is intended to run after onLoad anyway. Basically you just create a script tag dynamically and add it to the head section of your HTML page:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;    &amp;lt;script type"text/javascript"&amp;gt;
        var se = document.createElement('script');
        se.src = 'http://anydomain.com/yourScript.js';
        document.getElementsByTagName('head')[0].appendChild(se);
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This replaces the usual script tag put inside the head section:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;&amp;lt;head&amp;gt;
    &amp;lt;script type"text/javascript" src="http://anydomain.com/yourScript.js" /&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Notice the placement of the end body tag &amp;lt;/body&amp;gt; directly after the script to dynamically load the javascript. So instead of loading the javascript before even reading the body, it will load everything first, then load the javascript while it renders the html. Makes your users much happier about the load time.&lt;br/&gt;&lt;br/&gt;In jQuery you can include the minified jQuery in a script tag in the head section. Then add the following to the bottom of the body to acheive the same result:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;    &amp;lt;script type"text/javascript"&amp;gt;
        $.ajax({
            type: "GET",
            dataType: "script",
            url: "http://anydomain.com/yourScript.js"
        });
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The second method, XHR injection, has the same great performance as the script DOM element with the added advantage of not triggering any browser busy indicators. XHR stands for XMLHTTPRequest. Here&amp;rsquo;s how you inject your script with this method:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;    &amp;lt;script type"text/javascript"&amp;gt;
        var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
        xhr.onreadstatechange = function() {
            if (xhr.readyState != 4) return;
            var se = document.createElement('script');
            se.text = xhr.responseText;
            document.getElementsByTagName('head')[0].appendChild(se);
        };
        xhr.open('GET', 'http://anydomain.com/yourScript.js', true);
        xhr.send('');
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;p&gt;For this one in jQuery you can again include the minified jQuery in a script tag in the head section. And add the following to the bottom of the body:&lt;/p&gt;
&lt;pre class="brush: javascript;"&gt;    &amp;lt;script type"text/javascript"&amp;gt;
        $.ajax({
            type: "GET",
            url: "http://anydomain.com/yourScript.js"
            success: function(responseText){
                var se = document.createElement('script');
                se.text = xhr.responseText;
                $('head:first').append();
            }
        });
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Lacking a &amp;lsquo;script&amp;rsquo; dataType, this one will perform an XHR injection upon a successful get. That&amp;rsquo;s it. Now you have dynamically loaded javascript in your application!&lt;/p&gt;</description><link>https://neonguru.tumblr.com/post/57360128</link><guid>https://neonguru.tumblr.com/post/57360128</guid><pubDate>Fri, 31 Oct 2008 16:07:00 -0700</pubDate><category>web development</category></item><item><title>Book Review: I am a Strange Loop - by Douglas Hofstadter</title><description>&lt;img alt="I am a Strange Loop" src="http://images.barnesandnoble.com/images/27450000/27451979.JPG" align="right" border="0" vspace="10" width="185" height="279" hspace="10"/&gt;This book was a compelling read for me since: it is very new at this time; it investigates the origin of consciousness; and it seemed to have less scientific or religious fervor behind it. Plus the author has won a Pulitzer and seems to be a well respected professor teaching this topic. Having read it, I find Hofstadter to be a master at using analogy to elicit deep insight into every topic he presents. And he writes from his heart. You will learn much about the man behind the words. Which shows he is fully accountable for any bias or personal perspectives he may have. Although he clearly expresses his hope that you will share in his perceptions. I surely do.&lt;br/&gt;&lt;br/&gt;Is the mind a separate entity from the body? If not, then where does it come from? These questions are not immediately apparent but ultimately they are the questions he has written this book to address. The entire first half is spent introducing the reader to some background information that is presented in seemingly random fashion. But expressed in an entertaining, beautifully descriptive and informative way.&lt;br/&gt;&lt;br/&gt;There are many examples he uses to show the occurance of loops in everyday life. He starts with simple ones, like the toilet flush valve loop. Then more identifiable ones like looking into parallel mirrors which create what seems to be a corridor of forever repeating images. Or a microphone&amp;rsquo;s feedback squeal when placed too close to the speaker. My favorite was his experiments with a camcorder pointed at the monitor. The crux of this background knowledge is his presentation of the work of Gödel - the only part of the book I found difficult to fathom. But this example shows how even mathematics creates loops, and has the incredible consequence of rendering logic inconclusive.&lt;br/&gt;&lt;br/&gt;This background information provides a perspective of thought that serves to show that the mind actually creates itself! He proposes that the mind does not exist until it becomes self aware. Before that, we are just unconscious beings on the level of base animals.  His ideas about the levels of mindfullness of animals and even insects is also quite interesting to me, since it is something that most of us have considered but rarely speak about. His compassion has prompted him to become a vegetarian, yet interestingly, he has absolutely no respect for mosquitos!&lt;br/&gt;&lt;br/&gt;But then he goes on to explain how our consciousness evolves as it experiences itself, and the selfs of others. Adding another wrinkle to his theory to shows that there is cross-talk between &amp;lsquo;souls&amp;rsquo; and that seeing others is key to seeing ourselves. He brings up quite a few other interesting topics and perspectives that explain his reasoning, all of which he presents with great skill.&lt;br/&gt;&lt;br/&gt;As you read this, without the tremendous insight of Hofstader, I don&amp;rsquo;t expect you to take my word for it. And of course, I wouldn&amp;rsquo;t have either, before reading this book. But perhaps, if you read it, you will learn something about yourself that right now, seems absolutely impossible.</description><link>https://neonguru.tumblr.com/post/46344019</link><guid>https://neonguru.tumblr.com/post/46344019</guid><pubDate>Sun, 17 Aug 2008 17:51:08 -0700</pubDate><category>book</category></item></channel></rss>
