<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>

<atom:link href="http://www.endseven.net/xml/rss.php" rel="self" type="application/rss+xml" />
<title>END[SEVEN] Web Development</title>
<description>I am a web developer living in Chicago, IL. I post projects, tutorials, articles and insights on my blog to help future programmers and web developers. Topics include: AS3 (ActionScript), JavaScript, MySQL, PHP and XML.</description>
<generator>END[SEVEN] Web Development RSS Feed Generator</generator>
<link>http://www.endseven.net</link>

<language>EN-US</language>
<lastBuildDate>Tue, 09 Mar 2010 23:11:09 CST</lastBuildDate>
<pubDate>Tue, 09 Mar 2010 23:11:09 CST</pubDate>

<copyright>Copyright 2009 END[SEVEN] Web Development</copyright>
<managingEditor>jimmy@endseven.net (Jimmy K.)</managingEditor>
<webMaster>webmaster@endseven.net (Jimmy K.)</webMaster>

<item>
<title>Because blue and green is better than orange.</title>
<pubDate>Wed, 27 Jan 2010 15:39:26 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/linkjoin-reskin-home-lg.jpg&amp;quot; alt=&amp;quot;linkjoin&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;Hey! I reskinned the &amp;lt;a href=&amp;quot;http://www.linkjo.in/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;linkjoin&amp;lt;/a&amp;gt; website. Orange was such a bad idea. It started out with a little splash of orange and by the time I put all the stuff into the site that I wanted, it was a mess of large, unwieldy shades of orange and yellow. And, while orange can definitely be fun, it wasn't the right fit for &amp;lt;strong&amp;gt;linkjoin&amp;lt;/strong&amp;gt;.&lt;br /&gt;&lt;br /&gt;In the process of re-skinning the website, a new color was born! &amp;lt;strong&amp;gt;Green&amp;lt;/strong&amp;gt;. Green is an amazingly awesome color and now the demographics charts (as well as some other focus areas) have green in them for some extra visual oomph. Check it out:&lt;br /&gt;&lt;br /&gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/linkjoin-reskin-demographics-lg.jpg&amp;quot; alt=&amp;quot;linkjoin&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;I also made the pie chart &amp;quot;slices&amp;quot; sort of pop out, because that's fun and, as the creator and developer, I get to do whatever I want to it.</description>
<guid isPermaLink="false">d82c8d1619ad8176d665453cfb2e55f0</guid>
<link>http://www.endseven.net/?sPermalinkID=d82c8d1619ad8176d665453cfb2e55f0</link>
</item>
<item>
<title>linkjoin is jam-packed with upgrades.</title>
<pubDate>Fri, 22 Jan 2010 14:45:35 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/linkjoin-demographics-lg.jpg&amp;quot; alt=&amp;quot;linkjoin Demographics&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;We've given &amp;lt;a href=&amp;quot;http://www.linkjo.in/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;linkjoin&amp;lt;/a&amp;gt; a few upgrades in the last week. Since hyperlink submission and tracking was managed solely on a per-computer basis, members have requested registration/login capabilities to enable them to view their hyperlinks and tracking information from multiple computers. &amp;lt;strong&amp;gt;This is now a possibility&amp;lt;/strong&amp;gt;.&lt;br /&gt;&lt;br /&gt;As well as being able to use &amp;lt;strong&amp;gt;linkjoin&amp;lt;/strong&amp;gt; as a completely anonymous user, users can also register for free and no matter where they log in from, they will be able to manage their data.&lt;br /&gt;&lt;br /&gt;&amp;lt;strong&amp;gt;We've also added demographics data&amp;lt;/strong&amp;gt;!! Now, in addition to being able to see which links are most popular and when users click on them, users can also view which browsers and referring websites are most popular. The image above is an example of my personal &amp;lt;strong&amp;gt;linkjoin&amp;lt;/strong&amp;gt; account.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.linkjo.in/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to try it out yourself.. &amp;lt;strong&amp;gt;IT'S FREE!&amp;lt;/strong&amp;gt;</description>
<guid isPermaLink="false">9a1158154dfa42caddbd0694a4e9bdc8</guid>
<link>http://www.endseven.net/?sPermalinkID=9a1158154dfa42caddbd0694a4e9bdc8</link>
</item>
<item>
<title>The Pseudo-Captcha Tutorial has been updated.</title>
<pubDate>Wed, 20 Jan 2010 08:28:48 CST</pubDate>
<description>I would like to thank Ryan from Reid Consulting for bringing a small, yet hindering bug to my attention regarding the &amp;lt;a href=&amp;quot;http://www.endseven.net/?sPermalinkID=a5bfc9e07964f8dddeb95fc584cd965d&amp;quot;&amp;gt;Pseudo-Captcha tutorial&amp;lt;/a&amp;gt;. It seems that I've accidentally typed a &amp;quot;Q&amp;quot; in the &amp;quot;W&amp;quot; spot on the character image that is read by end-users to prove that they are human.&lt;br /&gt;&lt;br /&gt;He had implemented the Pseudo-Captcha script into a website that he was developing and the verification kept failing. He took a quick look at the character image and to his surprise, it had two Q's in it.&lt;br /&gt;&lt;br /&gt;Needless to say, I am ashamed. How this travesty could happen, I don't know.&lt;br /&gt;I must be slipping in my old age. I apologize. :)&lt;br /&gt;&lt;br /&gt;Regardless, the download link is fixed and there is no need to worry.</description>
<guid isPermaLink="false">2838023a778dfaecdc212708f721b788</guid>
<link>http://www.endseven.net/?sPermalinkID=2838023a778dfaecdc212708f721b788</link>
</item>
<item>
<title>What exactly is Clear Home Internet's coverage?</title>
<pubDate>Wed, 20 Jan 2010 07:59:39 CST</pubDate>
<description>I was seriously considering using Clear High Speed Home Internet because it's an amazing deal, in my opinion, for the average internet user. If you're not doing activities that heavily rely on an internet connection (for example: surfing Facebook, talking to your friends, looking things up online), then Clear is definitely the way to go.&lt;br /&gt;&lt;br /&gt;&amp;lt;strong&amp;gt;The problem: &amp;lt;/strong&amp;gt; Like back when I tried to sign up for Verizon FiOS, Clear doesn't offer service in most locations. While Clear may offer their Mobile Internet service across the nation, they can't offer their Home Internet service in a lot of places. I live in the outskirts of Chicago and - even though their website coverage says Chicago - I plugged my address into their coverage checker and no dice.&lt;br /&gt;&lt;br /&gt;I would have really loved paying $25/mo for home internet from Clear, rather than paying $60+/mo for home internet from Comcast. And to be perfectly honest, my router never works in the first place so I end up having to &amp;quot;borrow&amp;quot; the internet from someone else anyway.&lt;br /&gt;&lt;br /&gt;Oh well. I'm sorry to have to say this, Clear, but if you had more coverage, I would switch to your service. Or, if you had a &amp;quot;Cellphone and Mobile Internet&amp;quot; plan, I would &amp;lt;strong&amp;gt;definitely&amp;lt;/strong&amp;gt; make the switch.&lt;br /&gt;&lt;br /&gt;Alas, you don't. But hey, feel free to check out &amp;lt;a href=&amp;quot;http://www.clear.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Clear's website&amp;lt;/a&amp;gt; and plans. Maybe you'll have better luck than I did.</description>
<guid isPermaLink="false">c0c7c76d30bd3dcaefc96f40275bdc0a</guid>
<link>http://www.endseven.net/?sPermalinkID=c0c7c76d30bd3dcaefc96f40275bdc0a</link>
</item>
<item>
<title>GOSEVEN2010 will now be known as Linkjoin.</title>
<pubDate>Tue, 19 Jan 2010 16:33:15 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/linkjoin-lg.jpg&amp;quot; alt=&amp;quot;LINKJOIN2010&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;The project I released about a week ago has gotten large enough that I would no longer like it to be hosted in a beta development environment. We've decided to move the &amp;lt;strong&amp;gt;GOSEVEN2010 Project&amp;lt;/strong&amp;gt; to another domain, &amp;lt;a href=&amp;quot;http://www.linkjo.in/?D9D446&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;http://www.linkjo.in&amp;lt;/a&amp;gt;. We figure this name is more catchy than &amp;lt;strong&amp;gt;go.endseven.net&amp;lt;/strong&amp;gt;. It's also shorter, which is a plus. I don't know about you, but I'm not about to pay $75/year to have a five letter URL. I looked into getting a *.ly domain, but I can't seem to find them anywhere. You must have to have VIP Status to get one of those bad boys.&lt;br /&gt;&lt;br /&gt;Anyhow, feel free to check out the project. We're still running the free t-shirt promotion for the 200th, 400th and 1,000th link submitted using a #linkjoin tag. Just submit your link, share your URL on Facebook or Twitter using a #linkjoin tag (optional, but required for the free t-shirt) and watch your link's traffic on &amp;lt;a href=&amp;quot;http://www.linkjo.in/?D9D446&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Linkjoin&amp;lt;/a&amp;gt;.</description>
<guid isPermaLink="false">f457c545a9ded88f18ecee47145a72c0</guid>
<link>http://www.endseven.net/?sPermalinkID=f457c545a9ded88f18ecee47145a72c0</link>
</item>
<item>
<title>The AS3 Twitter Feed module is done.</title>
<pubDate>Fri, 15 Jan 2010 13:07:06 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/twitter-feed-lg.jpg&amp;quot; alt=&amp;quot;AS3 Twitter Feed&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;It's amazing what you can program with four decent hours. This module is called &amp;lt;strong&amp;gt;AS3 Twitter Feed&amp;lt;/strong&amp;gt; and it was developed for the company that I work for. It's basically an improved version of the AJAX Twitter Feed module that was on this website before, which has since been replaced with this one.&lt;br /&gt;&lt;br /&gt;This module is powered, as most of my modules are, by ActionScript, PHP and XML. It's also resizable and completely skinnable including the color scheme (by changing the skin's XML values or using a built-in color scheme), a custom avatar (or leave the setting blank to use your current Twitter avatar) and a custom &amp;quot;Follow Me&amp;quot; image (I used a stupid blue bird holding a sign). Cliche, I know.&lt;br /&gt;&lt;br /&gt;This module isn't available to the public yet, but it should be soon. I'm still waiting on some technical things to get worked out before I can release it.&lt;br /&gt;&lt;br /&gt;If you want to check it out, just look at the lower-left section of this site.&lt;br /&gt;Thanks!</description>
<guid isPermaLink="false">642e92efb79421734881b53e1e1b18b6</guid>
<link>http://www.endseven.net/?sPermalinkID=642e92efb79421734881b53e1e1b18b6</link>
</item>
<item>
<title>Look out, bit.ly! Here comes GOSEVEN.</title>
<pubDate>Wed, 13 Jan 2010 15:29:51 CST</pubDate>
<description>Just kidding! I started a personal project yesterday called &amp;lt;strong&amp;gt;GOSEVEN&amp;lt;/strong&amp;gt;2010. It's very similar to &amp;lt;a href=&amp;quot;http://www.bit.ly&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;bit.ly&amp;lt;/a&amp;gt; and &amp;lt;a href=&amp;quot;http://www.tinyurl.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;tinyurl&amp;lt;/a&amp;gt;, in the sense that it makes really long URLs shorter.&lt;br /&gt;&lt;br /&gt;I wanted to wrap my head around how they do it, as well as a way to keep all of the hyperlinks that I share on Facebook, Twitter, MySpace, LinkedIn, etc in an easy-to-navigate, archived format. Alas, &amp;lt;strong&amp;gt;GOSEVEN&amp;lt;/strong&amp;gt; was born.&lt;br /&gt;&lt;br /&gt;&amp;lt;strong&amp;gt;** UPDATE **&amp;lt;/strong&amp;gt; We've decided to turn this project into a social experiment. Please read more about it on the project's homepage.&lt;br /&gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://go.endseven.net&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/goseven.jpg&amp;quot; alt=&amp;quot;GOSEVEN2010&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;For lack of a better name, I decided to call the project &amp;lt;strong&amp;gt;GOSEVEN&amp;lt;/strong&amp;gt;2010 after the URL for the project, &amp;lt;a href=&amp;quot;http://go.endseven.net&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;go.endseven.net&amp;lt;/a&amp;gt;. Despite it's under-abundance of nifty tracking features and.. well.. a logo.. It's actually pretty cool. You just type in the URL that you want to shorten or track and hit &amp;quot;Shorten!&amp;quot; It instantly creates a new (shorter) hyperlink for you and archives it on the screen for you to come back to later. You can then paste the shortened link into Facebook, Twitter or another social networking site, or give it to your friends, and any time someone clicks on your link it will store the tracking information for you.&lt;br /&gt;&lt;br /&gt;Please feel free to check it out. We're running a giveaway right now and the &amp;lt;strong&amp;gt;500th&amp;lt;/strong&amp;gt;, &amp;lt;strong&amp;gt;1,000th&amp;lt;/strong&amp;gt; and &amp;lt;strong&amp;gt;2,000th&amp;lt;/strong&amp;gt; hyperlinks shortened will automatically win a free t-shirt from &amp;lt;strong&amp;gt;Flying-J Studios&amp;lt;/strong&amp;gt;.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.go.endseven.net&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to check it out.</description>
<guid isPermaLink="false">67c6a1e7ce56d3d6fa748ab6d9af3fd7</guid>
<link>http://www.endseven.net/?sPermalinkID=67c6a1e7ce56d3d6fa748ab6d9af3fd7</link>
</item>
<item>
<title>Starting the new year with a few projects.</title>
<pubDate>Fri, 08 Jan 2010 12:42:36 CST</pubDate>
<description>Recently, I've decided to revamp some of our proprietary products at work. Some of the products that I've been wanting to update for a while now are: the outward-facing &amp;lt;b&amp;gt;BHI Marketing Tools&amp;lt;/b&amp;gt; website, our Rotating Banner (written in AS3) and our FLV Player (also written in AS3).&lt;br /&gt;&lt;br /&gt;We've been wanting to redesign our business website, &amp;lt;a href=&amp;quot;http://www.bhidesign.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;www.bhidesign.com&amp;lt;/a&amp;gt; ever since I first started working here. But let's be honest - that isn't going to happen anytime soon. So! Out of boredom - and a lack of anything better to do - I redesigned our sister website, &amp;lt;a href=&amp;quot;http://www.bhimarketingtools.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;BHI Marketing Tools&amp;lt;/a&amp;gt;, a website that I started about two years ago as an additional revenue source. The new design is fully implemented and includes features that we really needed for a while.&lt;br /&gt;&lt;br /&gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/bhi-marketing-tools.jpg&amp;quot; alt=&amp;quot;BHI Marketing Tools&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;Some of the features include: our parent business' contact information, a little auto-biography about the company and what we do, a completely different approach to our previous implementation of AJAX Forms (client login, feedback, etc), our featured projects, links to our Twitter and Facebook accounts and a way for visitors to join our electronic newsletter list.&lt;br /&gt;&lt;br /&gt;I really like the new layout and I think it conveys our message to visitors better than the previous version. We still have to migrate the application interface (what our clients see) to reflect the homepage a little better, but that isn't very important at the moment.&lt;br /&gt;&lt;br /&gt;I've also rewritten two of our smaller projects: FLV Player [AS3] and Rotating Banner [AS3]. As many of you can probably imagine, FLV Player is a simple video player that can stream any FLV file to your website. It supports any length of video and has been tested up to resolutions of 1280x720. There isn't a fullscreen mode yet, but it will definitely be added to any future releases if we get a request for it.&lt;br /&gt;&lt;br /&gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/flv-player.jpg&amp;quot; alt=&amp;quot;FLV Player&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;The Rotating Banner is pretty self-explanatory. You load the SWF onto your website and point it to an XML file containing image URLs, hyperlinks, transition type, etc.&lt;br /&gt;&lt;br /&gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/rotating-banner.jpg&amp;quot; alt=&amp;quot;Rotating Banner&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;Both of these projects can be seen in action on the &amp;lt;a href=&amp;quot;http://www.bhimarketingtools.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;BHI Marketing Tools&amp;lt;/a&amp;gt; website. (I know it seems like I'm trying to promote the crap out of that website, but it's where most of my projects end up being used).&lt;br /&gt;&lt;br /&gt;So, check them out. Let me know if you like them. If you have any questions or comments, please post them. Thanks!</description>
<guid isPermaLink="false">d9d4f495e875a2e075a1a4a6e1b9770f</guid>
<link>http://www.endseven.net/?sPermalinkID=d9d4f495e875a2e075a1a4a6e1b9770f</link>
</item>
<item>
<title>Barnes &amp;amp; Noble: Best. Bookstore. Ever.</title>
<pubDate>Mon, 28 Sep 2009 07:32:22 CST</pubDate>
<description>So, Ryan popped into town Friday night. We spent the weekend exploring the many facets of downtown Chicago and the Southwest Suburbs (Worth, Palos Park and Orland Park to be precise). We also took an unintentional trip toward Wisconsin because I can't navigate worth a damn.&lt;br /&gt;&lt;br /&gt;This is probably the coolest Barnes &amp;amp;amp; Noble I've ever been in. You can sit in sweet, comfy chairs that allow you to view most of the parking lot. While it isn't very a very &amp;quot;scenic&amp;quot; view, it's still pretty rad.</description>
<guid isPermaLink="false">6c8349cc7260ae62e3b1396831a8398f</guid>
<link>http://www.endseven.net/?sPermalinkID=6c8349cc7260ae62e3b1396831a8398f</link>
</item>
<item>
<title>No more jamming my bike in the MINI.</title>
<pubDate>Fri, 18 Sep 2009 15:10:37 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/saris.jpg&amp;quot; alt=&amp;quot;Saris 2 Bike Rack&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;The other day I was driving back to the office with my boss and we saw a MINI Cooper driving down LaGrange Road with a funky-looking bike rack that I'd never seen before. Instantly I was like, &amp;quot;OMG! Dave! CHECK THAT OUT!! It's a bike rack - that &amp;lt;b&amp;gt;fits the MINI Cooper&amp;lt;/b&amp;gt; - with no bolts!!&amp;quot; Dave was not as ecstatic as I was, to say the least. I did, however, peruse the &amp;lt;a href=&amp;quot;http://www.saris.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Saris website&amp;lt;/a&amp;gt; to find a bike rack that would be suitable for my MINI Cooper. Needless to say, I was surprised when I saw the prices because the Saris bike racks are hundreds of dollars cheaper than the typically-seen &amp;quot;let's cut a hole out of your rear bumper and weld/bolt this large, bulky, obnoxious t-shaped thing to carry bikes&amp;quot; solution. Also, the roof rack solution wasn't working for me either. Not because I don't want a roof rack - I would love a roof rack, actually - but because roof racks for the MINI range between $200 - $300, plus labor.&lt;br /&gt;&lt;br /&gt;So I bought this Saris bike rack on eBay the other day and I was like, &amp;quot;What are these noobs doing? They don't know how to bid on eBay. I've totally got this.&amp;quot; and sure enough I won it. (I'm one of those wait until the last minute and mash on the bid button until it's over kind of bidders.. and I usually win!).&lt;br /&gt;&lt;br /&gt;Anyway, this is it. Please pardon the crazy stuff happening in the background of the picture. Our office is a little color-hectic. I'll post some action shots this weekend when I use this puppy for the first time.</description>
<guid isPermaLink="false">17e62166fc8586dfa4d1bc0e1742c08b</guid>
<link>http://www.endseven.net/?sPermalinkID=17e62166fc8586dfa4d1bc0e1742c08b</link>
</item>
<item>
<title>Did you see this booth at PRINT 09?</title>
<pubDate>Wed, 16 Sep 2009 13:36:56 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/PRINT09.jpg&amp;quot; alt=&amp;quot;Fujifilm Graphic Systems, USA&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;If you saw this booth at PRINT 09 this year in Chicago, then you saw our work! The company I work for designed the booth graphics for &amp;lt;a href=&amp;quot;http://www.fujifilmgs.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Fujifilm Graphic Systems U.S.A.&amp;lt;/a&amp;gt; this year.&lt;br /&gt;&lt;br /&gt;There were a lot of good designs at the trade show this year, including Kodak's ridiculously expensive-looking booth - which had a very cool floating LED display. There were also a bunch of mom-and-pop and low-budget booths that were shoved toward the back of the show floor.&lt;br /&gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://www.twitter.com/edsohotski&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@edSoHotSki&amp;lt;/a&amp;gt; and I attended the show yesterday to promote our business as well as meet potential clients. We met a few people with very interesting ideas, including a company from Germany called Ribler America that has the capability to bind books in a way that allows them to lay flat on the table. I think their website is called &amp;quot;matik&amp;quot;, but I'm not sure. Here's the &amp;lt;a href=&amp;quot;http://www.matik.com/products/ribler_xb.htm&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;link&amp;lt;/a&amp;gt;.&lt;br /&gt;&lt;br /&gt;We also saw a guy with two European-looking women in neon blue skirts. That was it. That was his booth. He literally had a 10'x10' booth space with a shelf, a table and two attractive women. No machines, no displays, just some free swatch books. He works for GR Print, Inc, based out of California. Their website is &amp;lt;a href=&amp;quot;http://www.grprint.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;grprint.com&amp;lt;/a&amp;gt;. On the plus side, they have some pretty sweet paper stock.&lt;br /&gt;&lt;br /&gt;So that's it for the trade show. I was thoroughly bored after about an hour. I just finished a white paper registration page for &amp;lt;a href=&amp;quot;http://www.appmktg.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Applied Marketing&amp;lt;/a&amp;gt; so that should be up either today or tomorrow for everyone to check out.</description>
<guid isPermaLink="false">a1d0c6e83f027327d8461063f4ac58a6</guid>
<link>http://www.endseven.net/?sPermalinkID=a1d0c6e83f027327d8461063f4ac58a6</link>
</item>
<item>
<title>Our green screen is almost done! Woot!</title>
<pubDate>Thu, 27 Aug 2009 15:23:37 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/green-screen-test-lg.jpg&amp;quot; alt=&amp;quot;Green Screen Test&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;We finally finished painting the green screen wall... as well as rearranging everything in that area to make room for me to walk around and record semi-decent video. It took a lot of paint and roughly two weeks of off-and-on working, but it's done. Well, the painting is anyway.&lt;br /&gt;&lt;br /&gt;We still want to buy a set of track lights for more even lighting (does anyone know where we can pick up a cheap - decent - set of track lights?). The way it's set up now (relying on the fluorescent lights in the ceiling), there are obvious shadows being cast in less-than-ideal locations. However, once we get our hands on a set of track lights, we're going to be one step closer to making cheesy, Godzilla-esque horror films.&lt;br /&gt;&lt;br /&gt;I've posted the demo video of me walking around, talking and dangling things in front of the green screen. I brought it into After Effects CS4 and then converted the video to FLV for streaming it via Adobe Flash. I didn't, however, write a streaming component or a playback controller, so the movie is approximately 9MB.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;javascript:jShowPopupSWF('Green Screen (Demo)', 'http://www.endseven.net/dump/greenscreen.swf', 655, 480);&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to watch the demo reel.&lt;br /&gt;No fancy preloader, sorry.</description>
<guid isPermaLink="false">3416a75f4cea9109507cacd8e2f2aefc</guid>
<link>http://www.endseven.net/?sPermalinkID=3416a75f4cea9109507cacd8e2f2aefc</link>
</item>
<item>
<title>eMarketing Tools demo account now available!</title>
<pubDate>Tue, 25 Aug 2009 11:39:17 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/apple-pickery-lg.jpg&amp;quot; alt=&amp;quot;George Washington's Apple Pickery&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;So you might have noticed that I haven't been updating my blog as often as I used to. You might also be asking something like, &amp;quot;Why, Jimmy? Why haven't you been updating it as often? Have you been busy?&amp;quot; And I would reply with something like, &amp;quot;Yep!&amp;quot;. I've actually been devoting a lot of time to our online suite of eMarketing Tools called &amp;lt;b&amp;gt;BHI Marketing Tools&amp;lt;/b&amp;gt;.&lt;br /&gt;&lt;br /&gt;The system is starting to increase in popularity and with that comes a lot of troubleshooting, technical support, new services, yada yada. So, back to the purpose of my post...&lt;br /&gt;&lt;br /&gt;We've decided that we should have a demo account for this beast that potential clients and customers can use to log in, fiddle with the system, send some test emails to themselves and see if they like it enough to give us money to use it (we have bills too, you know!).&lt;br /&gt;&lt;br /&gt;The login information for the demo account is ridiculously easy to remember. You just go to &amp;lt;a href=&amp;quot;http://www.bhimarketingtools.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;bhimarketingtools.com&amp;lt;/a&amp;gt; in your browser, click &amp;quot;&amp;lt;b&amp;gt;Client Login&amp;lt;/b&amp;gt;&amp;quot; and use the username &amp;lt;b&amp;gt;DEMO&amp;lt;/b&amp;gt;, password &amp;lt;b&amp;gt;DEMO&amp;lt;/b&amp;gt; and Viola! You're in like Flynn.&lt;br /&gt;&lt;br /&gt;So, check it out, give it a whirl, see if you like it.&lt;br /&gt;If you do, tell &amp;lt;s&amp;gt;your friends&amp;lt;/s&amp;gt; people with gobs of money.</description>
<guid isPermaLink="false">d645920e395fedad7bbbed0eca3fe2e0</guid>
<link>http://www.endseven.net/?sPermalinkID=d645920e395fedad7bbbed0eca3fe2e0</link>
</item>
<item>
<title>Aha! The Pseudo-Captcha works!</title>
<pubDate>Sun, 23 Aug 2009 13:29:41 CST</pubDate>
<description>The feeble, automated attempts by would-be spammers to flood my comments with inappropriate content have been thwarted at last! Those newbs probably don't even know what hit them yet. I wish there was a way to turn the table around and have it re-spam them back. That would be awesome.&lt;br /&gt;&lt;br /&gt;I set up an automated system that automatically logs spam attempts (those who fail the Pseudo-Captcha Human Test). The results are available by opening the generated text document in your browser. The newest entries are on the bottom.&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Click &amp;lt;a href=&amp;quot;http://www.endseven.net/logs/comment-fail.txt&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to view the &amp;quot;&amp;lt;b&amp;gt;Comment Fail&amp;lt;/b&amp;gt;&amp;quot; log. --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;TO VIEW THE COMMENT FAIL LOG:&amp;lt;/b&amp;gt;&lt;br /&gt;http://www.endseven.net/logs/comment-fail.txt&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;EDIT, EDIT, EDIT.&amp;lt;/b&amp;gt;&lt;br /&gt;I've noticed that they're using simple browser HTTP/POST requests to automate their spam - it may only be controlled by a server-side or JavaScript backend to make requests at set intervals. I might be able to force a download dialogue to appear on their screen? That might slow them down... &amp;lt;i&amp;gt;What do you think?&amp;lt;/i&amp;gt;</description>
<guid isPermaLink="false">d67d8ab4f4c10bf22aa353e27879133c</guid>
<link>http://www.endseven.net/?sPermalinkID=d67d8ab4f4c10bf22aa353e27879133c</link>
</item>
<item>
<title>An interesting conversation with Comcast.</title>
<pubDate>Thu, 20 Aug 2009 14:32:13 CST</pubDate>
<description>This morning, all I wanted to do was transfer my Comcast Cable (internet) account from my old apartment to my new apartment. This small feat turned out to be far more complex than I had originally planned.&lt;br /&gt;&lt;br /&gt;I opened the Comcast website in my browser and navigated to the &amp;quot;transfer your service&amp;quot; form. I filled out the form and everything seemed gravy. Until the browser redirected me to a Live Chat Customer Support page. I was like, &amp;quot;Um.. What?&amp;quot;&lt;br /&gt;&lt;br /&gt;Apparently, you're &amp;lt;b&amp;gt;required&amp;lt;/b&amp;gt; to talk to someone online about transferring your service. This is worse than talking to them on the phone because you a) have to wait in a boring line queue, b) have to type (wtf? I just wanted to update my address!) and c) have to wait for them to respond.&lt;br /&gt;&lt;br /&gt;The new apartment was already serviceable, so I just plugged my modem in and it worked fine. No technician necessary. However, the chat analyst assumed that I would need a technician and wanted to charge me $27 (a discount from $99!), which is &amp;lt;b&amp;gt;unacceptable&amp;lt;/b&amp;gt; by any standards.&lt;br /&gt;&lt;br /&gt;You can read the chat transcript below. I soon caught on that some of the responses were pre-defined, so I figured I would have a little fun with whoever was on the other end.&lt;br /&gt;&lt;br /&gt;Grab your spectacles:&lt;br /&gt;&lt;br /&gt;&amp;lt;div style=&amp;quot;background-color: #FAFAFA; color: #333333; line-height: 16px; padding: 10px;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Hello Jimmy, Thank you for contacting Comcast Live Chat Support. My name is Manilyn. Please give me one moment to review your information.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Hi. My name is Manilyn. I can see that you are transferring your service, I will be glad to process it today from your current address to the new one. How are you doing today?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Gooood. Why did it bring me to a live chat?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Glad to know that, Jimmy.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I will process the transfer for you today.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I understand that you want to transfer your services of High-Speed Internet to (omitted for obvious reasons). Is that correct?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;If by 1, you mean Apartment #1, yes, that is correct.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Great! I will be happy to assist you with that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;For your account security. May I please verify the following information: 1. Account's holder first and last name (as shown on the bill). 2. Last four digits of the account's holder Social Security Number or the Comcast Account Number.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Great! The information you've requested is:&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;1. Jimmy K. 2. XXXX&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;This isn't very personalized at all. I can totally tell you're clicking pre-defined options.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;You're welcome. :)&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Nice! A smiley face.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;May you please provide your account number?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Ugh. XXXXXXXXXXXXXXXX.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Took me a second to find it.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;That is correct.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;You're welcome! :D&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I can see here that you want the disconnection to be on August 26 and the installation to be on August 26, is that correct?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;This is a bot, isn't it.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Yes.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;That is correct.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Haha.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Let me go ahead and check your new address if it is serviceable.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;One moment please.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;It is serviceable. My modem is connected to it right now.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Yes, you are correct. Your new address is serviceable.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I notice in your account that you only have internet service. We would like you to take advantage on our ongoing promotion for Triple Play Package. With this package, you get to enjoy the three services: high definition digital cable with free HD box, high speed internet and digital phone, at a low rate for 12 months and all will be charge in a convenience of one bill.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I don't want that. Can you add me to a &amp;quot;do not offer me things anymore&amp;quot; list?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Can you also click the &amp;quot;Thank you so much for that&amp;quot; button five times in a row?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Please.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;That would make my day.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I understand that you might not be interested at this time. We want you to enjoy more benefits while saving more without compromising the quality of the services. The Triple Package is one of our leading services because of the benefits and value for your money. Not a problem though, in case you change your mind you can always call to take our best deals.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I'm fairly certain I said no.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Can you just click the &amp;quot;Transfer service and be done w/ the chat&amp;quot; button now?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Or click the &amp;quot;Thank you so much&amp;quot; button.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I thoroughly enjoy that one.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Jimmy, we are almost done with the transfer process.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;With your permission we would like to add our Service Protection Plan (SPP) for only $1.49 a month to your account. Comcast is offering a Service Protection Plan with the transfer. This service plan covers all inside wiring for all Comcast products, Video, High Speed data, and Digital Phone. If anything goes wrong with the inside wiring for any of your products, our skilled technician will fix the problem at no charge. You could save a lot since we normally charge a minimum amount of $38.95 per tech visit. Would that be fine with you?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Nooooo.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;No worries.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Our technicians will be calling 15 minutes before the install scheduled time, can you please provide me the following information: 1. Two phone numbers which they can call. 2. Nearest cross street of the new address so that it will be easier for them to locate the new address.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;1. XXX-XXX-XXXX (Cell) XXX-XXX-XXXX (Work)&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;2. Harlem Ave. and 111th St.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;YES!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Four more times.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I have arranged the disconnection on August 26, 2009. No need to be there since the disconnection will be in the pole.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I will schedule the installation on August 26 between 1-4PM. Will that be fine?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Sure thing, Jelly Bean.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Awesome! I'll get you booked in right away!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Lmao, I can't stop laughing.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;In the event that you are not present during the installation day, please be aware that we need someone over the age of 18 and English speaking during the technician visit. Also, the technician will call 15 minutes before the appointment. If the call will not be answered, the appointment may not be honored.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;You are moving within the same market so you can take your equipment with you to your new address.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;There will be a one time installation charges for your installation jobs which will have a total of $27.99. This charge is already discounted as a Movers premium, and this will be for our technicians professional service fee. This charge will be added to your new bill at your new address and is not collectable during date of installation.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;WHAT?! Why?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;27 bucks? For what?!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;My equipment already works in the new apartment! There's no reason for you to charge me.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;What if I told you to not send a technician out?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Can't you just push the &amp;quot;disconnect service&amp;quot; button on your prompty thinger?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Manilyn.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;I am sorry for the delay, Jimmy. I was discussing with my Supervisor what option we can give you.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Good because that's ridiculous.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;The reason why your internet service is running in your new location is because the connection from the previous resident is still turned on. The moment it will be totally disconnected, you will be experiencing a service interruption, Jimmy.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Then why is my IP address still the same.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I bet I could plug this thing in anywhere and it'd work.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Whatever, you do what you have to do, but I'm going to look elsewhere for service.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;We need to create an account under your name in your new address and transition everything from your previous. This is also to prevent your bills from getting messed up.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;It doesn't cost 27 bucks to transfer my account information.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;What you need to do here is is just go to our nearest local office in your area to get a Self Install Kit for FREE.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;So you will not have to pay anything for the installation, Jimmy. &lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;No one has to install anything! That's what I'm trying to tell you.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I'm not technologically inept, you plug the machine into the wire and the wire into the wall.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Our office representative will take care of transfer of your account to your new address. This is only for system update.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Okay, so let me get this straight.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;What is the $27 actually for? The technician's professional fee, correct?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;That is the installation fee (which already includes the activation fee, transfer fee and professional fee with tax). That is actually a discounted amount from the regular $99 fee. We always discount it for moving customers.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;What exactly constitutes an &amp;quot;installation&amp;quot;?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;However, there is an easier option for you, which we highly recommend.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;And that is just have you change the service address and be done with it?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Because I don't need a technician.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;This is the SIK/Self Install Kit where it will give you the detailed instructions on how to activate the internet service on your own. This is for FREE and you can claim this from any available local office in your area.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;What's in the kit.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Let me check that for you.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;One moment please.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I found it.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you for that, Jimmy.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Shall I continue with the process? We are almost done.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Are you still going to charge me $27?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;You will not be charge if you are going to have the SIK.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;I'll go pick up the SIK.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;$27, ha!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Just give me one moment to summarize everything for you.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Today, you have requested to transfer your internet services to your new address (omitted for obvious reasons). Please take note of your job order number XXXXXX and new account number XXXXXXXXXXXXXXXX.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Your request for transfer has been successfully processed.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Would there be anything else that I can assist you with today?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for your time and patience.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Noooooope. Thanks for your help, Manilyn!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;You are most welcome.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;My pleasure assisting you today, Jimmy.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;You are all set. Please click on &amp;quot;End Session&amp;quot; to properly close this chat followed by a survey. I will sincerely appreciate if you could answer the survey, it will only take a few seconds of your time. This inspires us to be the best customer service as we can be. Thank you so much. Good luck with your move!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Will you please click the thank you button five times.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;May I ask why you want me to do that, if you don't mind?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Because I want to know if it's actually a button that you're pressing.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Actually, we have short cut keys and I am using it.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;A shortcut key is like a button.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Can you press the shortcut key five times?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Sure.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Thank you so much for that.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;YES!!!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;There you go.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Manilyn: &amp;lt;/b&amp;gt;Would there be anything else that I can assist you with today?&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Nope!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;That was totally rad.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Me: &amp;lt;/b&amp;gt;Thanks.&amp;lt;/div</description>
<guid isPermaLink="false">a5771bce93e200c36f7cd9dfd0e5deaa</guid>
<link>http://www.endseven.net/?sPermalinkID=a5771bce93e200c36f7cd9dfd0e5deaa</link>
</item>
<item>
<title>Take this, Spammers! Hello, Pseudo-Captcha.</title>
<pubDate>Wed, 19 Aug 2009 09:13:18 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/pseudo-captcha-lg.jpg&amp;quot; alt=&amp;quot;Pseudo-Captcha&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;Recently, spammers have been taking complete advantage of my unmonitored, open comment-posting system with posts to inappropriate websites and medications. Come on, I can't have this on my site. There was even one for Miley Cyrus. Seriously?&lt;br /&gt;&lt;br /&gt;I developed a small Captcha-like system called &amp;quot;&amp;lt;b&amp;gt;Pseudo-Captcha&amp;lt;/b&amp;gt;&amp;quot; (very clever, nej?). It basically reads two files: &amp;lt;b&amp;gt;background.jpg&amp;lt;/b&amp;gt;, which contains a fancy graphic - I used clouds, and &amp;lt;b&amp;gt;chars.png&amp;lt;/b&amp;gt;, which contains a strip of characters in the alphabet.&lt;br /&gt;&lt;br /&gt;When called, the script selects a pre-defined number of random, squiggly letters, assigns those values to the &amp;lt;b&amp;gt;$_SESSION['Captcha']['Values']&amp;lt;/b&amp;gt; variable and pastes them over a background image. The composite is then output as a jpeg at run-time. Validation can be done by comparing any values entered by the user to the &amp;lt;b&amp;gt;$_SESSION['Captcha']['Values']&amp;lt;/b&amp;gt; variable using PHP's built-in &amp;lt;b&amp;gt;implode()&amp;lt;/b&amp;gt; function.&lt;br /&gt;&lt;br /&gt;The script can be uploaded to any web server right out of the box as long as it supports PHP and sessions. Using it is quite simple, just peruse the &amp;lt;b&amp;gt;example.php&amp;lt;/b&amp;gt; file to find anything you need. If you would like more information on it's use, please leave a comment on this article.&lt;br /&gt;&lt;br /&gt;The contents of &amp;lt;b&amp;gt;captcha.php&amp;lt;/b&amp;gt;:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;session_start();&lt;br /&gt;header(&amp;quot;content-type: image/jpeg&amp;quot;);&lt;br /&gt;require(&amp;quot;./backend/captcha.php&amp;quot;);&lt;br /&gt;&lt;br /&gt;if (isset($_SESSION['Captcha']['Values'])) {&lt;br /&gt;$aValues = $_SESSION['Captcha']['Values'];&lt;br /&gt;} else {&lt;br /&gt;// Generate some random values because we're noob..&lt;br /&gt;$aValues = jGenerateCaptchaValues(5);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Open the background/character images..&lt;br /&gt;$oBackground = imagecreatefromjpeg(&amp;quot;./images/background.jpg&amp;quot;);&lt;br /&gt;$oCharacters = imagecreatefrompng(&amp;quot;./images/chars.png&amp;quot;);&lt;br /&gt;&lt;br /&gt;for ($i = 0; $i &amp;lt; sizeof($aValues); $i++) {&lt;br /&gt;// Copy the calculated portion of the character image to the background..&lt;br /&gt;imagecopyresampled($oBackground, $oCharacters, ($i * 92), 0, (array_search($aValues[$i], $GLOBALS['Captcha']['Values']) * 90), 0, 90, 90, 90, 90);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Output the composite background..&lt;br /&gt;imagejpeg($oBackground);&lt;br /&gt;&lt;br /&gt;// Destroy the original images..&lt;br /&gt;imagedestroy($oBackground);&lt;br /&gt;imagedestroy($oCharacters);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;The contents of &amp;lt;b&amp;gt;backend/captcha.php&amp;lt;/b&amp;gt;:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;// Create an array to hold the available characters..&lt;br /&gt;$GLOBALS['Captcha']['Values'] = preg_split(&amp;quot;//&amp;quot;, &amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&amp;quot;, -1, PREG_SPLIT_NO_EMPTY);&lt;br /&gt;&lt;br /&gt;/* Generates an array of random values. */&lt;br /&gt;function jGenerateCaptchaValues($iNumValues) {&lt;br /&gt;$aRandomValues = array();&lt;br /&gt;&lt;br /&gt;for ($i = 0; $i &amp;lt; $iNumValues; $i++) {&lt;br /&gt;array_push($aRandomValues, $GLOBALS['Captcha']['Values'][rand(0, sizeof($GLOBALS['Captcha']['Values']) - 1)]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return $aRandomValues;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;And finally, the contents of &amp;lt;b&amp;gt;example.php&amp;lt;/b&amp;gt;:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;session_start();&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Pseudo-Captcha by END[SEVEN] Web Development&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;body { background-color: #FFFFFF; margin: 20px; }&lt;br /&gt;img { border: 0px; }&lt;br /&gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;require(&amp;quot;./backend/captcha.php&amp;quot;);&lt;br /&gt;$_SESSION['Captcha']['Values'] = jGenerateCaptchaValues(5);&lt;br /&gt;$_SESSION['Captcha']['Values'] = array(&amp;quot;T&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;S&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;O&amp;quot;); // Comment out this line..&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;img src=&amp;quot;./captcha.php&amp;quot; alt=&amp;quot;Authentication Image&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;Like I said, it's very easy to use. I haven't tested it with any of the spammers on this site yet, so I'm not sure if it will stop automated attacks or not, but it's one more preventive step in the right direction (I think, anyway).&lt;br /&gt;&lt;br /&gt;I've never attempted to download/install Captcha before, nor do I want to try. I just wanted a sweet background with a custom font so I could make it look like the rest of my site (it doesn't right now, but maybe one day it will).&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=1f0e3dad99908345f7439f8ffabdffc4&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the source files.&lt;br /&gt;&lt;br /&gt;&amp;lt;strong&amp;gt;UPDATE:&amp;lt;/strong&amp;gt; I've tested it with spammers and it does work. We were getting rammed pretty hard by that Cialis bot. It was posting vulgar, inappropriate things in the comments section of each article and has since been blocked. There is a 2.5MB file if anyone wants to read it. :)</description>
<guid isPermaLink="false">a5bfc9e07964f8dddeb95fc584cd965d</guid>
<link>http://www.endseven.net/?sPermalinkID=a5bfc9e07964f8dddeb95fc584cd965d</link>
</item>
<item>
<title>We finally finished the Print Show '09 web banner!</title>
<pubDate>Tue, 18 Aug 2009 15:03:34 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/ps09-banner-lg.jpg&amp;quot; alt=&amp;quot;Print Show '09&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;Whoa, it's been quite some time since my last post. But guess what! We finished the &amp;lt;b&amp;gt;Print Show '09&amp;lt;/b&amp;gt; web banner for &amp;lt;a href=&amp;quot;http://www.fujifilmgs.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Fujifilm Graphic Systems USA&amp;lt;/a&amp;gt; today. We do a lot of work for this particular division of Fujifilm and since I'm the lead web developer, I get to work with all the fancy online stuff. &amp;lt;b&amp;gt;:D&amp;lt;/b&amp;gt;&lt;br /&gt;&lt;br /&gt;I honestly can't recall why it took so long to complete this project. One might think it would be as simple as: Here are some images, here are some quotes, here are some PDFs to link to, mash-mash-mash, done. That's what I get for being a perfectionist.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;EDIT:&amp;lt;/b&amp;gt; The pdf files are messed up and we can't figure it out. *sigh*&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;A LITTLE SIDE NOTE..&amp;lt;/b&amp;gt;&lt;br /&gt;Have you &amp;lt;a href=&amp;quot;http://www.print09.com/Attending/register-now.aspx&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;registered&amp;lt;/a&amp;gt; for &amp;lt;b&amp;gt;Print Show '09&amp;lt;/b&amp;gt;? The event runs September 11-16, 2009 at McCormick Place in downtown Chicago. If you work for a company that does large amounts of printing, you should probably convince your boss to send you because a) events are fun to attend and b) downtown Chicago is completely rad.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;javascript:jShowPopupSWF('Fujifilm Print Show \'09 Banner', 'http://www.endseven.net/projects/ps09-web-banner/main.swf', 600, 240);&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to view the banner.</description>
<guid isPermaLink="false">19ca14e7ea6328a42e0eb13d585e4c22</guid>
<link>http://www.endseven.net/?sPermalinkID=19ca14e7ea6328a42e0eb13d585e4c22</link>
</item>
<item>
<title>Google Adsense Optimization by @adsenseearner</title>
<pubDate>Thu, 13 Aug 2009 06:57:53 CST</pubDate>
<description>Twitter's &amp;lt;a href=&amp;quot;http://www.twitter.com/adsenseearner/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@adsenseearner&amp;lt;/a&amp;gt; has written a very helpful article for optimizing the position, size, color and what you should and shouldn't do to make your Google Adsense ads more visible to your visitors. The article also includes a link to the Google Adsense help page and an illustration of the &amp;quot;best performing ad position heat map&amp;quot;, which displays the most-effective locations of a website when combined with an advertisement.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://earnersvision.blogspot.com/2009/07/extreme-google-adsense-optimization.html&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to read the article.&lt;br /&gt;&lt;br /&gt;The website, &amp;lt;a href=&amp;quot;http://earnersvision.blogspot.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Adsense Earner's Vision&amp;lt;/a&amp;gt;, has articles related to Google Adsense and SEO (Search Engine Optimization) as well as other resources and tips. I would suggest that anyone who is implementing - or even thinking about implementing - Google Adsense into their website should stop by and read these articles because for an Adsense noob like myself, they've helped me understand Adsense a lot better.</description>
<guid isPermaLink="false">1c383cd30b7c298ab50293adfecb7b18</guid>
<link>http://www.endseven.net/?sPermalinkID=1c383cd30b7c298ab50293adfecb7b18</link>
</item>
<item>
<title>Does Adbrite affect Google Adsense?</title>
<pubDate>Tue, 11 Aug 2009 08:11:48 CST</pubDate>
<description>From what I've found, &amp;lt;b&amp;gt;YES IT DOES&amp;lt;/b&amp;gt;.&lt;br /&gt;&lt;br /&gt;Why do I say that? Because yesterday I was wondering if having ads from &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Adsense&amp;lt;/b&amp;gt; on the same page would effect one another. And from what I found last night while routinely checking my stats before I went to bed, &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; definitely effects my &amp;lt;b&amp;gt;Adsense&amp;lt;/b&amp;gt; account.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;THE SCENARIO&amp;lt;/b&amp;gt;&lt;br /&gt;&amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; doesn't always have ads to show on your site. Sometimes, they borrow ads from Google. How can they do this? Well, I'm supposing that Google and Adbrite have some sort of agreement worked out together. You can tell which ads from Google were served by &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; by the &amp;quot;Ads by Gooooogle&amp;quot; text directly below the ad, which is sort of a given that they work together.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;THE PROBLEM&amp;lt;/b&amp;gt;&lt;br /&gt;Google seems to know that the ads being served by &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; are shown on my website (http://www.endseven.net). Since this website's URL is linked to my &amp;lt;b&amp;gt;Google Adsense&amp;lt;/b&amp;gt; account, when the ad is served, it counts as an impression in both my &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; account &amp;lt;b&amp;gt;-AND-&amp;lt;/b&amp;gt; my &amp;lt;b&amp;gt;Adsense&amp;lt;/b&amp;gt; account.&lt;br /&gt;&lt;br /&gt;Clickthroughs don't seem to work the same way, however. Two &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; ads (running one Google ad each) were clicked yesterday and the clicks &amp;lt;b&amp;gt;DIDN'T EVEN REGISTER&amp;lt;/b&amp;gt; in my Adbrite control panel. The clicks did register in my Google Adsense control panel, but what's interesting is even though they weren't public service ads, I received no income for them.&lt;br /&gt;&lt;br /&gt;The &amp;lt;b&amp;gt;Google Adsense&amp;lt;/b&amp;gt; discrepency:&lt;br /&gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/discrepency-adsense-lg.jpg&amp;quot; alt=&amp;quot;Adsense Discrepency&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;The &amp;lt;b&amp;gt;Adbrite&amp;lt;/b&amp;gt; discrepency:&lt;br /&gt;&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/discrepency-adbrite-lg.jpg&amp;quot; alt=&amp;quot;Adbrite Discrepency&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;I don't know how I feel about this. If anyone can offer me any insight as to why this is, I would greatly appreciate it. I can't seem to find a definitive answer online.</description>
<guid isPermaLink="false">e369853df766fa44e1ed0ff613f563bd</guid>
<link>http://www.endseven.net/?sPermalinkID=e369853df766fa44e1ed0ff613f563bd</link>
</item>
<item>
<title>On my way to making millions.</title>
<pubDate>Mon, 10 Aug 2009 15:15:03 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/google-pin-lg.jpg&amp;quot; alt=&amp;quot;Google PIN&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;I have officially received my first piece of mail from &amp;lt;a href=&amp;quot;http://www.google.com/adsense&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Google&amp;lt;/a&amp;gt; today. It's my &amp;lt;b&amp;gt;Google Adsense Personal Identification Number (PIN)&amp;lt;/b&amp;gt; and it is the last piece of information that Google needs from me to be eligible to receive my millions.&lt;br /&gt;&lt;br /&gt;I'm still pretty new to the whole online advertising scene. I've never had a need to put ads on my sites before, but I figured that to the benefit of my employer and for my own personal knowledge, I might as well check it out and see if it yields results. The worst that could happen is that I don't make any money (Gasp!).&lt;br /&gt;&lt;br /&gt;So there it is. Enjoy those Photoshop-enhanced neon letters, my friends.</description>
<guid isPermaLink="false">182be0c5cdcd5072bb1864cdee4d3d6e</guid>
<link>http://www.endseven.net/?sPermalinkID=182be0c5cdcd5072bb1864cdee4d3d6e</link>
</item>
<item>
<title>AS3: Introduction to RTMP Streaming/Publishing.</title>
<pubDate>Sat, 08 Aug 2009 11:57:57 CST</pubDate>
<description>For the purpose of being awesome, I set out to educate myself in the process of streaming (downstream) and publishing (upstream) live, uninterrupted audio/video using RTMP (Real Time Messaging Protocol). Click &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; for technical info regarding RTMP.&lt;br /&gt;&lt;br /&gt;Are you interested in writing your own webcam delivery, surveillance or online audio/video chat application? Good news! &amp;lt;b&amp;gt;RTMP may be just the protocol that you need&amp;lt;/b&amp;gt;! I've created two small Adobe Flash (.fla) files that should get you started.&lt;br /&gt;&lt;br /&gt;The first, &amp;lt;b&amp;gt;upstream.swf&amp;lt;/b&amp;gt;, is the file you would use to upload your webcam's video feed to an RTMP server. (Usually a hosting company or in-house terminal running &amp;lt;a href=&amp;quot;http://www.adobe.com/products/flashmediaserver/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Flash Media Server&amp;lt;/a&amp;gt; or &amp;lt;a href=&amp;quot;http://www.wowzamedia.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Wowza Media Server&amp;lt;/a&amp;gt;.. I believe that both applications are free for up to 10 simultaneous streams).&lt;br /&gt;&lt;br /&gt;The contents of &amp;lt;b&amp;gt;upstream.fla&amp;lt;/b&amp;gt;:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;var sMediaServerURL:String = &amp;quot;rtmp://[YOUR_RTMP_SERVER]&amp;quot;;&lt;br /&gt;var sStreamName:String = &amp;quot;[YOUR_RTMP_STREAM]&amp;quot;;&lt;br /&gt;&lt;br /&gt;var oCamera:Camera;&lt;br /&gt;var oConnection:NetConnection;&lt;br /&gt;var oMetaData:Object = new Object();&lt;br /&gt;var oMicrophone:Microphone;&lt;br /&gt;var oNetStream:NetStream;&lt;br /&gt;var oVideo:Video = new Video(640, 480);&lt;br /&gt;&lt;br /&gt;NetConnection.prototype.onBWDone = function(oObject1:Object) {&lt;br /&gt;// Some media servers are dumb, so we have to catch a strange event.&lt;br /&gt;// Just go ahead and trust me on this one.&lt;br /&gt;trace(&amp;quot;onBWDone: &amp;quot; + oObject1.toString());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;this.oConnection = new NetConnection();&lt;br /&gt;this.oConnection.addEventListener(NetStatusEvent.NET_STATUS, eNetStatus, false, 0, true);&lt;br /&gt;this.oConnection.connect(this.sMediaServerURL);&lt;br /&gt;&lt;br /&gt;function eNetStatus(oEvent1:NetStatusEvent) {&lt;br /&gt;trace(&amp;quot;NetStatusEvent: &amp;quot; + oEvent1.info.code);&lt;br /&gt;&lt;br /&gt;if (oEvent1.info.code == &amp;quot;NetConnection.Connect.Success&amp;quot;) {&lt;br /&gt;trace(&amp;quot;Connected to the RTMP server.&amp;quot;);&lt;br /&gt;&lt;br /&gt;this.oCamera = Camera.getCamera();&lt;br /&gt;this.oMicrophone = Microphone.getMicrophone();&lt;br /&gt;&lt;br /&gt;// These settings worked fairly well for my purposes.&lt;br /&gt;this.oCamera.setMode(640, 480, 30, true);&lt;br /&gt;&lt;br /&gt;// Some servers limit your bandwidth so you &lt;br /&gt;// may have to adjust these numbers to suit your needs.&lt;br /&gt;this.oCamera.setQuality(0, 80);&lt;br /&gt;&lt;br /&gt;// Attach the camera to the video.&lt;br /&gt;this.oVideo.attachCamera(this.oCamera);&lt;br /&gt;this.addChild(oVideo);&lt;br /&gt;&lt;br /&gt;// Create a stream for the connection..&lt;br /&gt;this.oNetStream = new NetStream(oConnection);&lt;br /&gt;&lt;br /&gt;// Attach the camera and microphone to the stream..&lt;br /&gt;this.oNetStream.attachCamera(this.oCamera);&lt;br /&gt;this.oNetStream.attachAudio(this.oMicrophone);&lt;br /&gt;&lt;br /&gt;// Start publishing the stream..&lt;br /&gt;this.oNetStream.publish(this.sStreamName);&lt;br /&gt;&lt;br /&gt;// Listen for meta data..&lt;br /&gt;this.oMetaData.onMetaData = eMetaDataReceived;&lt;br /&gt;this.oNetStream.client = this.oMetaData;&lt;br /&gt;} else if (oEvent1.info.code == &amp;quot;NetConnection.Connect.Closed&amp;quot;) {&lt;br /&gt;trace(&amp;quot;Disconnected from the RTMP server.&amp;quot;);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function eMetaDataReceived(oObject1:Object) {&lt;br /&gt;trace(&amp;quot;MetaData: &amp;quot; + oObject1.toString());&lt;br /&gt;}&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;The second file, &amp;lt;b&amp;gt;downstream.swf&amp;lt;/b&amp;gt; is the file you would use to view your webcam's live video feed from the RTMP server. This file could also be exported to a SWF and embedded on your website to allow other people to view your stream.&lt;br /&gt;&lt;br /&gt;The contents of &amp;lt;b&amp;gt;downstream.fla&amp;lt;/b&amp;gt;:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;var sMediaServerURL:String = &amp;quot;rtmp://[YOUR_RTMP_SERVER]&amp;quot;;&lt;br /&gt;var sStreamName:String = &amp;quot;[YOUR_RTMP_STREAM]&amp;quot;;&lt;br /&gt;&lt;br /&gt;var oConnection:NetConnection;&lt;br /&gt;var oMetaData:Object = new Object();&lt;br /&gt;var oNetStream:NetStream;&lt;br /&gt;var oVideo:Video = new Video(640, 480);&lt;br /&gt;&lt;br /&gt;this.oConnection = new NetConnection();&lt;br /&gt;this.oConnection.addEventListener(NetStatusEvent.NET_STATUS, eNetStatus, false, 0, true);&lt;br /&gt;this.oConnection.connect(this.sMediaServerURL);&lt;br /&gt;&lt;br /&gt;function eNetStatus(oEvent1:NetStatusEvent) {&lt;br /&gt;// Trace the event code for debugging..&lt;br /&gt;trace(&amp;quot;NetStatusEvent: &amp;quot; + oEvent1.info.code);&lt;br /&gt;&lt;br /&gt;switch (oEvent1.info.code) {&lt;br /&gt;case &amp;quot;NetConnection.Connect.Success&amp;quot;:&lt;br /&gt;trace(&amp;quot;Connected to the stream!&amp;quot;);&lt;br /&gt;&lt;br /&gt;// Create a stream for the connection..&lt;br /&gt;this.oNetStream = new NetStream(oConnection);&lt;br /&gt;this.oNetStream.addEventListener(NetStatusEvent.NET_STATUS, eNetStatus, false, 0, true);&lt;br /&gt;this.oNetStream.bufferTime = 5; // Set this to whatever is comfortable..&lt;br /&gt;&lt;br /&gt;// Listen for meta data..&lt;br /&gt;this.oMetaData.onMetaData = eMetaDataReceived;&lt;br /&gt;this.oNetStream.client = this.oMetaData;&lt;br /&gt;&lt;br /&gt;// Attach the stream to the stage..&lt;br /&gt;this.oVideo.attachNetStream(oNetStream);&lt;br /&gt;this.oNetStream.play(sStreamName);&lt;br /&gt;this.addChildAt(this.oVideo, 0);&lt;br /&gt;&lt;br /&gt;break;&lt;br /&gt;case &amp;quot;NetStream.Play.StreamNotFound&amp;quot;:&lt;br /&gt;trace(&amp;quot;This stream is currently unavialable.&amp;quot;);&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function eMetaDataReceived(oObject1:Object) {&lt;br /&gt;trace(&amp;quot;MetaData: &amp;quot; + oObject1.toString());&lt;br /&gt;}&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;The code for each file is fairly straight-forward: Create a &amp;lt;b&amp;gt;NetConnection&amp;lt;/b&amp;gt; object to connect to the server, create a &amp;lt;b&amp;gt;NetStream&amp;lt;/b&amp;gt; object to handle the stream, do something with the content of the stream (publish it if we're broadcasting, download it if we're viewing) and VIOLA!&lt;br /&gt;&lt;br /&gt;Remember to replace [YOUR_RTMP_SERVER] with the URL that is provided to you by your RTMP hosting company (or &amp;lt;b&amp;gt;localhost&amp;lt;/b&amp;gt; if you're testing locally) and [YOUR_RTMP_STREAM] with the name of your stream (for multiple streams on the same server, this is the only part that will change).&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=6f4922f45568161a8cdf4ad2299f6d23&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the source files.</description>
<guid isPermaLink="false">6364d3f0f495b6ab9dcf8d3b5c6e0b01</guid>
<link>http://www.endseven.net/?sPermalinkID=6364d3f0f495b6ab9dcf8d3b5c6e0b01</link>
</item>
<item>
<title>Get ready for the money shot.</title>
<pubDate>Thu, 06 Aug 2009 08:31:05 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/the-moneyshot-lg.jpg&amp;quot; alt=&amp;quot;The Moneyshot&amp;quot; class=&amp;quot;articleBanner&amp;quot; /&amp;gt;&lt;br /&gt;I've decided to share a previously-unreleased movie poster with the members of this site. This poster, titled &amp;lt;b&amp;gt;The Moneyshot&amp;lt;/b&amp;gt;, didn't make the final cut for release on this site because of it's.. um.. slightly provocative nature.&lt;br /&gt;&lt;br /&gt;But there is a members area now so I can share it with anyone willing to register for this site. It's free, so you really have no reason not to (unless of course you don't like girls, in which case that's okay).&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=801ab24683a4a8c433c6eb40c48bcd9d&amp;amp;amp;sDownloadID=9bf31c7ff062936a96d3c8bd1f8f2ff3&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the &amp;lt;b&amp;gt;The Moneyshot&amp;lt;/b&amp;gt; movie poster.</description>
<guid isPermaLink="false">c16a5320fa475530d9583c34fd356ef5</guid>
<link>http://www.endseven.net/?sPermalinkID=c16a5320fa475530d9583c34fd356ef5</link>
</item>
<item>
<title>PHP: Using SMTP to send emails responsibly.</title>
<pubDate>Wed, 05 Aug 2009 08:41:27 CST</pubDate>
<description>For the last couple of years, I've been running an online marketing website called &amp;lt;a href=&amp;quot;http://www.bhimarketingtools.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;BHI Marketing Tools&amp;lt;/a&amp;gt;, an online interface for managing email campaigns, eNewsletters, landing pages and event registration. This service relies heavily on the ability to deliver email messages to our clients' potential customers in a responsible and efficient way.&lt;br /&gt;&lt;br /&gt;I've written a set of functions that use PHP's built-in &amp;lt;b&amp;gt;fsockopen()&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;fputs()&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;fread()&amp;lt;/b&amp;gt; functions to send an email message &amp;lt;b&amp;gt;responsibly&amp;lt;/b&amp;gt; using an SMTP (Simple Mail Transfer Protocol) server. I use the word &amp;quot;responsibly&amp;quot; because PHP's built-in &amp;lt;b&amp;gt;mail()&amp;lt;/b&amp;gt; function is terribly unreliable and doesn't include many appropriate email headers by default.&lt;br /&gt;&lt;br /&gt;There are two files: &amp;lt;b&amp;gt;functions.php&amp;lt;/b&amp;gt;, which houses the three main functions and &amp;lt;b&amp;gt;index.php&amp;lt;/b&amp;gt; which serves as a test page.&lt;br /&gt;&lt;br /&gt;Contents of the &amp;lt;b&amp;gt;functions.php&amp;lt;/b&amp;gt; file:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;    /* Pushes the specified value to an smtp connection. */&lt;br /&gt;    function jPushSMTP($oConnection, $sValue) {&lt;br /&gt;        fputs($oConnection, $sValue . &amp;quot;\r\n&amp;quot;);&lt;br /&gt;        $sResponse = fread($oConnection, 1024);&lt;br /&gt;        return $sResponse;&lt;br /&gt;    }&lt;br /&gt;	&lt;br /&gt;    /* Sends a message via the smtp service. */&lt;br /&gt;    function jSendMessageViaSMTP($a) {&lt;br /&gt;        // The boundary used for message headers..&lt;br /&gt;        $sBoundary = &amp;quot;Boundary-&amp;quot; . date(&amp;quot;U&amp;quot;);&lt;br /&gt;		&lt;br /&gt;		// The headers for this message..&lt;br /&gt;		$sHeaders  = &amp;quot;Date: &amp;quot; . date(&amp;quot;r&amp;quot;) . &amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;To: &amp;quot; . $a['ToAddress'] . &amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;From: &amp;quot; . $a['FromName'] . &amp;quot; &amp;lt;&amp;quot; . $a['FromAddress'] . &amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Reply-To: &amp;quot; . $a['ReplyAddress'] . &amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Return-Path: &amp;quot; . $a['FromName'] . &amp;quot;\n&amp;quot;; // This may not be required..&lt;br /&gt;		$sHeaders .= &amp;quot;Subject: &amp;quot; . $a['Subject'] . &amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;X-Mailer: END[SEVEN] Mail Delivery Service\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;X-Priority: 3\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;X-Unsubscribe: &amp;lt;http://www.yourdomain.com/unsubscribe&amp;gt;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;MIME-Version: 1.0\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Content-Type: multipart/alternative; boundary=\&amp;quot;&amp;quot; . $sBoundary . &amp;quot;\&amp;quot;\n\n&amp;quot;;&lt;br /&gt;		&lt;br /&gt;		// The text-only version of the message..&lt;br /&gt;		$sHeaders .= &amp;quot;--&amp;quot; . $sBoundary . &amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Content-Type: text/plain; charset=\&amp;quot;iso-8859-1\&amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Content-Transfer-Encoding: 8bit\n\n&amp;quot;;&lt;br /&gt;		$sHeaders .= $a['MessageTextOnly'] . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;		&lt;br /&gt;		// The html version of the message..&lt;br /&gt;		$sHeaders .= &amp;quot;--&amp;quot; . $sBoundary . &amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Content-Type: text/html; charset=\&amp;quot;iso-8859-1\&amp;quot;\n&amp;quot;;&lt;br /&gt;		$sHeaders .= &amp;quot;Content-Transfer-Encoding: 8bit\n\n&amp;quot;;&lt;br /&gt;		$sHeaders .= $a['MessageHTML'] . &amp;quot;\n\n&amp;quot;;&lt;br /&gt;        &lt;br /&gt;        // Close the boundary..&lt;br /&gt;        $sHeaders .= &amp;quot;--&amp;quot; . $sBoundary . &amp;quot;--\n&amp;quot;;&lt;br /&gt;        &lt;br /&gt;        // Connect to the server..&lt;br /&gt;        $oConnection = fsockopen($a['Server'], $a['Port'], $iErrorNum, $sErrorDescription, $a['Timeout']);&lt;br /&gt;        $sResponse = fread($oConnection, 1024);&lt;br /&gt;        $aLog[] = $sResponse;&lt;br /&gt;        &lt;br /&gt;        if (!empty($oConnection)) {&lt;br /&gt;			$aLog[] = jPushSMTP($oConnection, &amp;quot;EHLO &amp;quot; . $a['EHLO']);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;AUTH LOGIN&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, base64_encode($a['Username']));&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, base64_encode($a['Password']));&lt;br /&gt;			$aLog[] = jPushSMTP($oConnection, &amp;quot;MAIL FROM: &amp;lt;&amp;quot; . $a['FromAddress'] . &amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;RCPT TO: &amp;quot; . $a['ToName'] . &amp;quot; &amp;lt;&amp;quot; . $a['ToAddress'] . &amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;DATA&amp;quot;);&lt;br /&gt;			$aLog[] = jPushSMTP($oConnection, $sHeaders);&lt;br /&gt;			$aLog[] = jPushSMTP($oConnection, &amp;quot;.\n&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;NOOP&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;NOOP&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;NOOP&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;NOOP&amp;quot;);&lt;br /&gt;            $aLog[] = jPushSMTP($oConnection, &amp;quot;NOOP&amp;quot;);&lt;br /&gt;			&lt;br /&gt;            return $aLog;&lt;br /&gt;        } else {&lt;br /&gt;			return false;&lt;br /&gt;        }&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	/* Returns the default smtp values. */&lt;br /&gt;    function jDefaultValues() {&lt;br /&gt;        $a = array();&lt;br /&gt;        $a['FromAddress'] = &amp;quot;&amp;quot;;&lt;br /&gt;        $a['FromName'] = &amp;quot;&amp;quot;;&lt;br /&gt;        $a['EHLO'] = &amp;quot;localhost&amp;quot;;&lt;br /&gt;        $a['MessageHTML'] = &amp;quot;No message has been specified.&amp;quot;;&lt;br /&gt;        $a['MessageTextOnly'] = &amp;quot;No message has been specified.&amp;quot;;&lt;br /&gt;        $a['Password'] = &amp;quot;&amp;quot;;&lt;br /&gt;        $a['Port'] = &amp;quot;25&amp;quot;;&lt;br /&gt;        $a['ReplyAddress'] = &amp;quot;&amp;quot;;&lt;br /&gt;        $a['Server'] = &amp;quot;localhost&amp;quot;;&lt;br /&gt;        $a['Subject'] = &amp;quot;No Subject&amp;quot;;&lt;br /&gt;        $a['Timeout'] = 120;&lt;br /&gt;        $a['ToAddress'] = &amp;quot;&amp;quot;;&lt;br /&gt;        $a['ToName'] = &amp;quot;&amp;quot;;&lt;br /&gt;        $a['Username'] = &amp;quot;&amp;quot;;&lt;br /&gt;        return $a;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;There are three functions in this file: &amp;lt;b&amp;gt;jDefaultValues()&amp;lt;/b&amp;gt;, a helper function to auto-populate the required values of an array; &amp;lt;b&amp;gt;jSendMessageViaSMTP()&amp;lt;/b&amp;gt;, used to send a message via an SMTP server using the specified values and &amp;lt;b&amp;gt;jPushSMTP()&amp;lt;/b&amp;gt;, which pushes each line of SMTP communication.&lt;br /&gt;&lt;br /&gt;And the contents of the &amp;lt;b&amp;gt;index.php&amp;lt;/b&amp;gt; file:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;	require_once(&amp;quot;./functions.php&amp;quot;);&lt;br /&gt;	&lt;br /&gt;	$a = jDefaultValues();&lt;br /&gt;	$a['FromAddress'] = &amp;quot;sample@sample.com&amp;quot;;&lt;br /&gt;	$a['FromName'] = &amp;quot;Sample McSample&amp;quot;;&lt;br /&gt;	$a['EHLO'] = &amp;quot;localhost&amp;quot;;&lt;br /&gt;	$a['MessageHTML'] = &amp;quot;This is an &amp;lt;b&amp;gt;html&amp;lt;/b&amp;gt; message.&amp;quot;;&lt;br /&gt;	$a['MessageTextOnly'] = &amp;quot;This is a text-only version of the message.&amp;quot;;&lt;br /&gt;	$a['Password'] = &amp;quot;[YOUR_SMTP_PASSWORD]&amp;quot;;&lt;br /&gt;	$a['Port'] = &amp;quot;25&amp;quot;;&lt;br /&gt;	$a['ReplyAddress'] = &amp;quot;sample@sample.com&amp;quot;;&lt;br /&gt;	$a['Server'] = &amp;quot;localhost&amp;quot;;&lt;br /&gt;	$a['Subject'] = &amp;quot;I can send messages using SMTP!&amp;quot;;&lt;br /&gt;	$a['Timeout'] = 120;&lt;br /&gt;	$a['ToAddress'] = &amp;quot;sample@sample.com&amp;quot;;&lt;br /&gt;	$a['ToName'] = &amp;quot;Sample McSample&amp;quot;;&lt;br /&gt;	$a['Username'] = &amp;quot;[YOUR_SMTP_USERNAME]&amp;quot;;&lt;br /&gt;	&lt;br /&gt;	if (!jSendMessageViaSMTP($a)) {&lt;br /&gt;		print('Your message could not be sent at this time. :(');&lt;br /&gt;	} else {&lt;br /&gt;		print('Your message has been sent!');&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;This code has been slightly modified from the version that we use at our office, but it serves nearly the same purpose. (Our code allows attachments, which is a little more tricky). This script is very easy to implement and begin using right out of the box.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=801ab24683a4a8c433c6eb40c48bcd9d&amp;amp;amp;sDownloadID=c74d97b01eae257e44aa9d5bade97baf&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the source files.</description>
<guid isPermaLink="false">34173cb38f07f89ddbebc2ac9128303f</guid>
<link>http://www.endseven.net/?sPermalinkID=34173cb38f07f89ddbebc2ac9128303f</link>
</item>
<item>
<title>Create your own AddThis&amp;trade; icons for your site.</title>
<pubDate>Tue, 04 Aug 2009 07:35:15 CST</pubDate>
<description>Have you ever seen an &amp;lt;a href=&amp;quot;http://www.addthis.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;AddThis&amp;lt;/a&amp;gt;&amp;amp;trade; button? Apparently, it is the &amp;quot;#1 bookmarking and sharing service&amp;quot; and I'm not going to lie. I see them &amp;lt;b&amp;gt;everywhere&amp;lt;/b&amp;gt;. It's actually a very good idea. But what if you don't want 50+ icons on your site? Or what if JavaScript is disabled on your visitors computer? Or you don't want to affiliate with some of those services? You can just do it yourself!&lt;br /&gt;&lt;br /&gt;Basically, each online service such as &amp;lt;a href=&amp;quot;http://technorati.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Technorati&amp;lt;/a&amp;gt;, &amp;lt;a href=&amp;quot;http://digg.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Digg&amp;lt;/a&amp;gt; and &amp;lt;a href=&amp;quot;http://del.icio.us&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;delicious&amp;lt;/a&amp;gt; (these are just a few examples) allow users to share content passed through a simple URL. I'm going to share just the ones that I use on this blog:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://technorati.com/faves?add=[URL]&amp;quot; title=&amp;quot;Technorati&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/technorati.png&amp;quot; alt=&amp;quot;Technorati&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://twitter.com/home?status=[TITLE]%20%2D%20[URL]&amp;quot; title=&amp;quot;Twitter&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/twitter.png&amp;quot; alt=&amp;quot;Twitter&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://www.facebook.com/sharer.php?u=[URL]&amp;amp;amp;t=[TITLE]&amp;quot; title=&amp;quot;Facebook&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/facebook.png&amp;quot; alt=&amp;quot;Facebook&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://www.myspace.com/Modules/PostTo/Pages/?u=[URL]&amp;amp;amp;t=[TITLE]&amp;quot; title=&amp;quot;MySpace&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/myspace.png&amp;quot; alt=&amp;quot;MySpace&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://del.icio.us/post?url=[URL]&amp;amp;amp;title=[TITLE]&amp;quot; title=&amp;quot;Del.icio.us&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/delicious.png&amp;quot; alt=&amp;quot;Del.icio.us&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://www.stumbleupon.com/submit/?url=[URL]&amp;quot; title=&amp;quot;StumbleUpon&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/stumbleupon.png&amp;quot; alt=&amp;quot;StumbleUpon&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://digg.com/submit?phase=2&amp;amp;amp;url=[URL]&amp;quot; title=&amp;quot;Digg&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/digg.png&amp;quot; alt=&amp;quot;Digg&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;http://www.diigo.com/post?url=[URL]&amp;amp;amp;title=[TITLE]&amp;quot; title=&amp;quot;diigo&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/diigo.png&amp;quot; alt=&amp;quot;diigo&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=&amp;quot;https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;amp;mkt=en-us&amp;amp;amp;url=[URL]&amp;amp;amp;title=[TITLE]&amp;amp;amp;top=1&amp;quot; title=&amp;quot;Windows Live&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;./icons/windows.png&amp;quot; alt=&amp;quot;Windows Live&amp;quot; class=&amp;quot;shareIcon&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;Just paste this code into your website, upload the icons supplied with this tutorial, swap the [URL] and [TITLE] tags with your own values and you're done! Just remember that the [URL] and [TITLE] tags &amp;lt;b&amp;gt;must&amp;lt;/b&amp;gt; be replaced with URL-encoded values. This can be achieved easily using PHP's built-in &amp;lt;b&amp;gt;urlencode()&amp;lt;/b&amp;gt; function.&lt;br /&gt;&lt;br /&gt;A full list of services, icons and URLs can be found at &amp;lt;a href=&amp;quot;http://blog.xillent.com/index.php/codesharing/asp/how-to-add-links-for-delicious-digg-and-more-to-blog-posts-and-articles/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Xillent Studios&amp;lt;/a&amp;gt;.&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=aab3238922bcc25a6f606eb525ffdc56&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the source files.</description>
<guid isPermaLink="false">6ea9ab1baa0efb9e19094440c317e21b</guid>
<link>http://www.endseven.net/?sPermalinkID=6ea9ab1baa0efb9e19094440c317e21b</link>
</item>
<item>
<title>Can you spot the Imperial Storm Troopers?</title>
<pubDate>Mon, 03 Aug 2009 07:24:37 CST</pubDate>
<description>There are two &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/Imperial_stormtrooper&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Imperial Storm Troopers&amp;lt;/a&amp;gt; hidden in our office today and they can be found on our online webcams. If you can find one of the hidden Storm Troopers, be the first to post a comment on this article telling us where they are and you &amp;lt;b&amp;gt;WIN&amp;lt;/b&amp;gt;!&lt;br /&gt;&lt;br /&gt;The first person to find each Storm Trooper wins an unreleased copy of the &amp;lt;b&amp;gt;Money Shot&amp;lt;/b&amp;gt; movie poster, starring a sudsy &amp;lt;a href=&amp;quot;http://photos-g-3.ak.fbcdn.net/hphotos-ak-snc1/hs183.snc1/6095_1190460999348_1163057250_30567270_1063694_n.jpg&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Kiya Krivickas&amp;lt;/a&amp;gt; posing over a 2007 &amp;lt;a href=&amp;quot;http://www.caradvice.com.au/wp-content/uploads/2008/04/img_0157-800x600.JPG&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;BMW 335i&amp;lt;/a&amp;gt;.&lt;br /&gt;&lt;br /&gt;Good luck!</description>
<guid isPermaLink="false">02e74f10e0327ad868d138f2b4fdd6f0</guid>
<link>http://www.endseven.net/?sPermalinkID=02e74f10e0327ad868d138f2b4fdd6f0</link>
</item>
<item>
<title>Hello, Google Adsense.</title>
<pubDate>Sat, 01 Aug 2009 16:59:10 CST</pubDate>
<description>So a couple of weeks ago I implemented &amp;lt;a href=&amp;quot;http://www.google.com/adsense&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Google Adsense&amp;lt;/a&amp;gt; into this website. I wasn't entirely sure how it worked and I had a lot of questions. Questions like, &amp;quot;What sizes do ads come in?&amp;quot; and &amp;quot;Where can I put these ads?&amp;quot; And to be perfectly honest, there isn't a whole lot of help out there on the net when it comes to Google Adsense. There are a lot of &amp;quot;Oh, Adsense sucks. You should use (insert service here).&amp;quot; and &amp;quot;I don't make any money using Adsense. Complain, complain, complain.&amp;quot;, but to be perfectly honest, I've made &amp;lt;b&amp;gt;$9.13&amp;lt;/b&amp;gt; in just two weeks.&lt;br /&gt;&lt;br /&gt;Granted, nine bucks isn't a whopping amount of cash.. but &amp;lt;b&amp;gt;what have I actually done&amp;lt;/b&amp;gt;? Nothing. I haven't done a single thing except post articles about things that I feel would interest the rest of the online community.&lt;br /&gt;&lt;br /&gt;I've placed three ads on this website. The maximum number of ads that Google will allow to be placed on a single page is three. There is a &amp;lt;b&amp;gt;250x250 Rectangle&amp;lt;/b&amp;gt; ad placed in the lower-left column, a &amp;lt;b&amp;gt;120x600 Skyscraper&amp;lt;/b&amp;gt; ad placed in the right column and a &amp;lt;b&amp;gt;468x60 Rectangle&amp;lt;/b&amp;gt; ad placed directly below each webcam. I have set up Channels recently to determine the effectiveness of each category of ads. I will let everyone know the results when they mature to something distinguishable.&lt;br /&gt;&lt;br /&gt;I've also excluded myself from being able to view the ads shown on this website. Each page view counts as an impression, regardless of the number of ads on the page. Since this is my website and I work on it quite frequently, my page views also count as impressions. The problem? &amp;lt;b&amp;gt;The more impressions I have, the lower my CTR (Click Through Rate).&amp;lt;/b&amp;gt;&lt;br /&gt;&lt;br /&gt;I'm not sure what part the CTR plays in calculating the amount that I earn per click, or if it even matters at all. I have read that if you have a ridiculously low CTR (less than 1%, I believe) that your account can be terminated by Google.&lt;br /&gt;&lt;br /&gt;I've also looked into placement ads from &amp;lt;a href=&amp;quot;http://www.adbrite.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;AdBrite&amp;lt;/a&amp;gt;, but their ads are quite ugly.&lt;br /&gt;&lt;br /&gt;I still have a few questions about Google Adsense, such as &amp;quot;Does Google take care of your tax obligations before they cut you a check?&amp;quot; and &amp;quot;What does the minimum amount have to be for me to get a check each month?&amp;quot;. If anyone has any insight into Google Adsense, please share them with me.</description>
<guid isPermaLink="false">4e732ced3463d06de0ca9a15b6153677</guid>
<link>http://www.endseven.net/?sPermalinkID=4e732ced3463d06de0ca9a15b6153677</link>
</item>
<item>
<title>Released: Webcam Uploader v1 BETA</title>
<pubDate>Fri, 31 Jul 2009 09:43:29 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/webcam-uploader-beta-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;Webcam Uploader v1 BETA&amp;quot; /&amp;gt;&lt;br /&gt;Hey! I just released the beta version of Webcam Uploader v1 and I want &amp;lt;b&amp;gt;you&amp;lt;/b&amp;gt; to try it out. What is it? It's an Adobe AIR application that takes snapshots from your webcam and uploads them at predefined intervals to the END[SEVEN] Network.&lt;br /&gt;&lt;br /&gt;This service is completely &amp;lt;b&amp;gt;FREE&amp;lt;/b&amp;gt; for the first 20 or so people during the beta testing period. I'm never going to actually make someone pay for it, but I'm setting a speculative bandwidth limit just in case. Once I get my hands on &amp;lt;a href=&amp;quot;http://www.microsoft.com/windowsserver2003/default.mspx&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Windows Server 2003&amp;lt;/a&amp;gt; and &amp;lt;a href=&amp;quot;http://www.adobe.com/products/flashmediaserver/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Flash Media Server&amp;lt;/a&amp;gt;, you can bet that it will go from &amp;quot;snapshot, snapshot, snapshot&amp;quot; to &amp;lt;b&amp;gt;live, streaming video mayhem&amp;lt;/b&amp;gt; in no time flat.&lt;br /&gt;&lt;br /&gt;If you'd like, I'll supply you with a link to the external viewer so you can put your webcam feed on your website. Alternatively, you can directly link to the uploaded JPEG files and share them with people using your own method.&lt;br /&gt;&lt;br /&gt;Post a comment on this article to request your unique &amp;lt;b&amp;gt;Device Key&amp;lt;/b&amp;gt; to get started. Thanks in advance for anyone willing to help with this project.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=c51ce410c124a10e0db5e4b97fc2af39&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the application.</description>
<guid isPermaLink="false">8e296a067a37563370ded05f5a3bf3ec</guid>
<link>http://www.endseven.net/?sPermalinkID=8e296a067a37563370ded05f5a3bf3ec</link>
</item>
<item>
<title>OMGZ. We are 100% XHTML/CSS Compliant.</title>
<pubDate>Thu, 30 Jul 2009 09:44:03 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/xhtml-compliant.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;W3C Validator&amp;quot; /&amp;gt;&lt;br /&gt;Last night I posted an article stating that this website is not completely W3C XHTML/CSS Compliant. That changed today when I scrubbed the entire site's source code. I also moved a few modules around and condensed some files that were getting a little messy from the development phase.&lt;br /&gt;&lt;br /&gt;As you can see from the image above, there were 990 validation errors on a &amp;lt;b&amp;gt;single page&amp;lt;/b&amp;gt;. 90% of these errors were missing &amp;lt;b&amp;gt;alt&amp;lt;/b&amp;gt; tags. I can't entirely understand why it is *required* to include an &amp;lt;b&amp;gt;alt&amp;lt;/b&amp;gt; tag for each image on your website. Is this for people that can't view images? If anyone has knowledge about this, please enlighten me via this article's comment form.&lt;br /&gt;&lt;br /&gt;Links to validate the XHTML/CSS can be found at the bottom of each page.&lt;br /&gt;&amp;lt;b&amp;gt;EDIT: &amp;lt;/b&amp;gt; Our &amp;lt;a href=&amp;quot;http://www.endseven.net/xml/rss.php&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;RSS Feed&amp;lt;/a&amp;gt; is now compliant as well.</description>
<guid isPermaLink="false">1ff1de774005f8da13f42943881c655f</guid>
<link>http://www.endseven.net/?sPermalinkID=1ff1de774005f8da13f42943881c655f</link>
</item>
<item>
<title>Working toward 100% XHTML/CSS Compliance.</title>
<pubDate>Wed, 29 Jul 2009 22:00:27 CST</pubDate>
<description>Tomorrow, I plan to make this website 100% XHTML and CSS compliant. I've been implementing the Ajax-driven article submission and modification components of the new system. They seem to be working rather well.&lt;br /&gt;&lt;br /&gt;I wonder if this will be more secure than the last article submission system. It's funny to watch how many people think they can exploit my blog, as if I would be stupid enough to use &amp;lt;b&amp;gt;file_get_contents()&amp;lt;/b&amp;gt; on a $_GET variable without first escaping it with &amp;lt;b&amp;gt;htmlentities()&amp;lt;/b&amp;gt;. Hahaha... Right on.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;EDIT: &amp;lt;/b&amp;gt; This website is now 100% XHTML/CSS Compliant.&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/?sPermalinkID=1ff1de774005f8da13f42943881c655f&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to read the article.</description>
<guid isPermaLink="false">37693cfc748049e45d87b8c7d8b9aacd</guid>
<link>http://www.endseven.net/?sPermalinkID=37693cfc748049e45d87b8c7d8b9aacd</link>
</item>
<item>
<title>48HFP Desktop Wallpapers now available!</title>
<pubDate>Wed, 29 Jul 2009 13:46:55 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/maximum-attraction-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;Maximum Attraction&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;I've finally gotten around to converting the &amp;lt;b&amp;gt;Maximum Attraction&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;The Ringer&amp;lt;/b&amp;gt; movie posters into desktop-friendly wallpapers. The wallpapers come in four different sizes: 1024x768, 1440x900, 1600x1200 and 1920x1200. All four sizes come bundled in a single .zip file.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=c20ad4d76fe97759aa27a0c99bff6710&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the &amp;lt;b&amp;gt;Maximum Attraction&amp;lt;/b&amp;gt; desktop wallpaper.&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=6512bd43d9caa6e02c990b0a82652dca&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the &amp;lt;b&amp;gt;The Ringer&amp;lt;/b&amp;gt; desktop wallpaper.</description>
<guid isPermaLink="false">b6d767d2f8ed5d21a44b0e5886680cb9</guid>
<link>http://www.endseven.net/?sPermalinkID=b6d767d2f8ed5d21a44b0e5886680cb9</link>
</item>
<item>
<title>AS3: Webcam Upload Tutorial</title>
<pubDate>Wed, 29 Jul 2009 08:53:26 CST</pubDate>
<description>Have you noticed the two webcams located in the upper-right corner of this site? Those webcams are being monitored and uploaded using an Adobe AIR application, stored in a MySQL database and controlled with a PHP backend. I'm going to show you the bare bones approach to getting an image from your webcam onto your website.&lt;br /&gt;&lt;br /&gt;First, you are going to need to create a SWF file in Adobe Flash and place the following code on the main timeline. It is known to be bad practice to place code on the main timeline, so if you're comfortable with classes, please feel free to create a class for it.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;EDIT:&amp;lt;/b&amp;gt; You're also going to need to download the &amp;lt;b&amp;gt;adobe.images&amp;lt;/b&amp;gt; package from Adobe because this tutorial implements the &amp;lt;b&amp;gt;JPEGEncoder&amp;lt;/b&amp;gt; class.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;import flash.display.BitmapData;&lt;br /&gt;	import flash.events.Event;&lt;br /&gt;	import flash.events.IOErrorEvent;&lt;br /&gt;	import flash.media.Camera;&lt;br /&gt;	import flash.media.Video;&lt;br /&gt;	import flash.net.URLRequest;&lt;br /&gt;	import flash.net.URLRequestMethod;&lt;br /&gt;	import flash.net.URLLoader;&lt;br /&gt;	import flash.net.URLVariables;&lt;br /&gt;	import flash.utils.ByteArray;&lt;br /&gt;	import flash.utils.setTimeout;&lt;br /&gt;	&lt;br /&gt;	import com.adobe.images.JPGEncoder;&lt;br /&gt;	&lt;br /&gt;	var UPLOAD_TIMEOUT:uint = 2000;&lt;br /&gt;	&lt;br /&gt;	var aBitmapByteArray:ByteArray;&lt;br /&gt;	var iUploadTimeout:uint;&lt;br /&gt;	var oCamera:Camera;&lt;br /&gt;	var oJPGEncoder:JPGEncoder;&lt;br /&gt;	var oVideo:Video;&lt;br /&gt;	&lt;br /&gt;	jInitCamera();&lt;br /&gt;	&lt;br /&gt;	/* Initializes the camera. */&lt;br /&gt;	function jInitCamera() {&lt;br /&gt;		try {&lt;br /&gt;			this.oCamera = Camera.getCamera();&lt;br /&gt;			this.oCamera.setMode(640, 480, 15);&lt;br /&gt;			this.oCamera.setQuality(0, 100);&lt;br /&gt;			&lt;br /&gt;			this.oVideo = new Video(640, 480);&lt;br /&gt;			this.oVideo.attachCamera(this.oCamera);&lt;br /&gt;			this.addChild(this.oVideo);&lt;br /&gt;			&lt;br /&gt;			this.oJPGEncoder = new JPGEncoder(50);&lt;br /&gt;			this.iUploadTimeout = setTimeout(jUploadSnapshot, UPLOAD_TIMEOUT);&lt;br /&gt;			trace(&amp;quot;Camera has been initialized.&amp;quot;);&lt;br /&gt;		} catch (oException:*) {&lt;br /&gt;			trace(&amp;quot;Unable to initialize camera.&amp;quot;);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	/* Uploads a snapshot to our web server. */&lt;br /&gt;	function jUploadSnapshot() {&lt;br /&gt;		// Create a bitmap data object to hold our snapshot..&lt;br /&gt;		var oBitmapData:BitmapData = new BitmapData(640, 480, false, 0x000000);&lt;br /&gt;		oBitmapData.draw(this.oVideo);&lt;br /&gt;		&lt;br /&gt;		// Encode the bitmap data, free the memory..&lt;br /&gt;		this.aBitmapByteArray = oJPGEncoder.encode(oBitmapData);&lt;br /&gt;		oBitmapData.dispose(); oBitmapData = null;&lt;br /&gt;		&lt;br /&gt;		// Create a url request to send the bitmap data..&lt;br /&gt;		var oURLRequest:URLRequest = new URLRequest(&amp;quot;http://www.yourwebsite.com/upload.php&amp;quot;);&lt;br /&gt;		oURLRequest.method = URLRequestMethod.POST;&lt;br /&gt;		oURLRequest.data = aBitmapByteArray;&lt;br /&gt;		&lt;br /&gt;		// Create a url loader to perform the request..&lt;br /&gt;		var oURLLoader:URLLoader = new URLLoader();&lt;br /&gt;		oURLLoader.addEventListener(Event.COMPLETE, eUploadComplete, false, 0, true);&lt;br /&gt;		oURLLoader.addEventListener(IOErrorEvent.IO_ERROR, eUploadFailed, false, 0, true);&lt;br /&gt;		oURLLoader.load(oURLRequest);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	/* Triggered when the upload completes. */&lt;br /&gt;	function eUploadComplete(oEvent1:Event) {&lt;br /&gt;		this.iUploadTimeout = setTimeout(jUploadSnapshot, UPLOAD_TIMEOUT);&lt;br /&gt;		trace(&amp;quot;Snapshot has been uploaded.&amp;quot;);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	/* Triggered when the upload fails. */&lt;br /&gt;	function eUploadFailed(oEvent1:IOErrorEvent) {&lt;br /&gt;		this.iUploadTimeout = setTimeout(jUploadSnapshot, UPLOAD_TIMEOUT);&lt;br /&gt;		trace(&amp;quot;Error: Unable to upload snapshot.&amp;quot;);&lt;br /&gt;	}&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;Basically, this code initializes the default &amp;lt;b&amp;gt;Camera&amp;lt;/b&amp;gt; on your computer, attaches it to a &amp;lt;b&amp;gt;Video&amp;lt;/b&amp;gt; object and adds the &amp;lt;b&amp;gt;Video&amp;lt;/b&amp;gt; object to the stage. At set intervals (in this case, every two seconds), the code draws the &amp;lt;b&amp;gt;Video&amp;lt;/b&amp;gt; object's bitmap data, converts the bitmap data to a byte array using the &amp;lt;b&amp;gt;JPGEncoder&amp;lt;/b&amp;gt; class and uploads it as raw POST data to the &amp;quot;upload.php&amp;quot; file located on your web server.&lt;br /&gt;&lt;br /&gt;What do we do with the raw POST data when it's received by &amp;quot;uploader.php&amp;quot;? Well, we're going to need to save the POST data as an image. This was actually the most overly-complicated part of the whole process when I was looking for help online. It's amazing how simple it actually was:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;	// Save the fullsize image..&lt;br /&gt;	$oHandle = fopen(&amp;quot;./fullsize.jpg&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;	fwrite($oHandle, file_get_contents(&amp;quot;php://input&amp;quot;));&lt;br /&gt;	fclose($oHandle);&lt;br /&gt;	&lt;br /&gt;	// Create the thumbnail image..&lt;br /&gt;	$oSource = imagecreatefromjpeg(&amp;quot;./fullsize.jpg&amp;quot;);&lt;br /&gt;	$oThumbnail = imagecreatetruecolor(120, 90);&lt;br /&gt;	imagecopyresampled($oThumbnail, $oSource, 0, 0, 0, 0, 120, 90, 640, 480);&lt;br /&gt;	imagejpeg($oThumbnail, &amp;quot;./thumb.jpg&amp;quot;);&lt;br /&gt;	&lt;br /&gt;	// Free the memory..&lt;br /&gt;	imagedestroy($oThumbnail);&lt;br /&gt;	imagedestroy($oSource);&lt;br /&gt;	&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;The above code simply takes the raw POST input and saves it to a file using the &amp;lt;b&amp;gt;fopen()&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;file_get_contents()&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;fwrite()&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;fclose()&amp;lt;/b&amp;gt; functions. Raw POST data is available to PHP using the &amp;quot;php://input&amp;quot; protocol. I assume it's sort of like using &amp;lt;b&amp;gt;file_get_contents()&amp;lt;/b&amp;gt; with a &amp;quot;http://&amp;quot; protocol, only.. for PHP-related things. I'm not entirely sure how it works, but it does.&lt;br /&gt;&lt;br /&gt;Anyway, after we save the fullsize image, we're going to scale it down and save a thumbnail. This will help reduce server bandwidth consumption.&lt;br /&gt;&lt;br /&gt;As you can see, this tutorial won't create the &amp;lt;b&amp;gt;exact&amp;lt;/b&amp;gt; implementation that I have on my website, but I leave that to your imagination and willingness to create something on your own. I hope this tutorial helps point you in the right direction and also, if you do use the concepts included in this tutorial, please let me know. I would be very interested in seeing another person's take on it.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=801ab24683a4a8c433c6eb40c48bcd9d&amp;amp;amp;sDownloadID=d3d9446802a44259755d38e6d163e820&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the source files.</description>
<guid isPermaLink="false">3c59dc048e8850243be8079a5c74d079</guid>
<link>http://www.endseven.net/?sPermalinkID=3c59dc048e8850243be8079a5c74d079</link>
</item>
<item>
<title>XML: What is a cross-domain policy file?</title>
<pubDate>Tue, 28 Jul 2009 11:29:39 CST</pubDate>
<description>By definition, a cross-domain policy file is &amp;quot;an XML document that grants a web client - such as Adobe Flash Player (though not necessarily limited to it) - permission to handle data across multiple domains. When a client hosts content from a particular source domain and that content makes requests directed towards a domain other than its own, the remote domain would need to host a cross-domain policy file that grants access to the source domain, allowing the client to continue with the transaction. Policy files grant read access to data as well as permit a client to include custom headers in cross-domain requests.&amp;quot;&lt;br /&gt;&lt;br /&gt;Some of you may already know that, by default, Flash doesn't enjoy loading resources that are located on another server. For example, the application that I'm writing in Adobe AIR connects to a webcam, takes a snapshot and uploads it to a server (not the same server as this website, www.endseven.net) at set intervals.&lt;br /&gt;&lt;br /&gt;Because the application is written in Adobe AIR, there are no security hoops to jump through for uploading files to a web server. However, the SWF file used to load the jpeg files at set intervals is written in AS3 and embedded on this website. Because this website and the server that the jpegs are uploaded to are not of the same domain, a cross-domain policy file is required to allow the servers to communicate via Flash.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE cross-domain-policy SYSTEM &amp;quot;http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;cross-domain-policy&amp;gt;&lt;br /&gt;&amp;lt;allow-access-from domain=&amp;quot;www.endseven.net&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;allow-access-from domain=&amp;quot;endseven.net&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/cross-domain-policy&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;Basically, I save this code as &amp;lt;b&amp;gt;crossdomain.xml&amp;lt;/b&amp;gt; and upload it in the root directory of the server that contains the resources that I want downloaded. In this case, I would upload this file to &amp;quot;XXX.XXX.X.X&amp;quot; (not www.endseven.net) because www.endseven.net is the domain that wants the resources and XXX.XXX.X.X is the domain that has them. Therefore, the cross-domain policy file should be uploaded to the server that has the resources so that any domain included in the file would be allowed to access them via Flash.&lt;br /&gt;&lt;br /&gt;This is a very simple process, but from what I've found, this is the first thing that stumps a lot of people when they try to load resources from another server. I hope this helps someone to avoid a lot of frustration.</description>
<guid isPermaLink="false">98f13708210194c475687be6106a3b84</guid>
<link>http://www.endseven.net/?sPermalinkID=98f13708210194c475687be6106a3b84</link>
</item>
<item>
<title>48-Hour Film Project Follow-up</title>
<pubDate>Sun, 26 Jul 2009 16:32:23 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/the-ringer-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;The Ringer&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;As you can tell by this very well-put-together poster, Joe (&amp;lt;a href=&amp;quot;http://www.jkessen.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;JKessen.com&amp;lt;/a&amp;gt;) and I were &amp;lt;b&amp;gt;very&amp;lt;/b&amp;gt; busy at &amp;lt;a href=&amp;quot;http://www.orbitmedia.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Orbit Media Studios&amp;lt;/a&amp;gt; this weekend. Tom Jalana (&amp;lt;a href=&amp;quot;http://tomjalana.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;TomJalana.com&amp;lt;/a&amp;gt;), Joe, Cheryl, the lovely Kiya and myself held multiple photo shoots attempting to get the perfect shots for this year's movie posters.&lt;br /&gt;&lt;br /&gt;Three posters made the cut this year, with many decent runner-ups. They are (in order of production) &amp;lt;b&amp;gt;The Ringer&amp;lt;/b&amp;gt; (&amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=8f14e45fceea167a5a36dedd4bea2543&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;download hi-res&amp;lt;/a&amp;gt;, 1262kb), &amp;lt;b&amp;gt;The Ringer 2&amp;lt;/b&amp;gt; (&amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=c9f0f895fb98ab9159f51fd0297e236d&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;download hi-res&amp;lt;/a&amp;gt;, 985kb) and lastly, &amp;lt;b&amp;gt;Maximum Attraction&amp;lt;/b&amp;gt; (&amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=45c48cce2e2d7fbdea1afc51c7c6ad26&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;download hi-res&amp;lt;/a&amp;gt;, 1040kb). Scripts have yet to be written for these future blockbusters, but there is no doubt in my mind that the European suave, Tom Jalana, is up for the challenge.&lt;br /&gt;&lt;br /&gt;Movie posters aside, the 48-Hour Film Project turned out to be a bust. No real decisions were made and no one could agree on anything for more than a few minutes. After a long Saturday night, The Orbit Crew, Joe, Cheryl and myself parted our separate ways while Tom, Ed and Kiya went rogue-filmmaker. I'm not sure what the final piece looks like, but I'm sure I can get an advanced copy.&lt;br /&gt;&lt;br /&gt;Spread the word that officially licensed &amp;lt;b&amp;gt;The Ringer&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Maximum Attraction&amp;lt;/b&amp;gt; movie wallpapers are in the works. Be sure to check back later for an update.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;UPDATE:&amp;lt;/b&amp;gt; We've been given permission by Tom Jalana and Ed Sochacki to air this quite &amp;lt;i&amp;gt;interesting&amp;lt;/i&amp;gt; film. It's called Last Resort, and I believe the title is a perfect reflection of the events that unfolded that weekend. Click &amp;lt;a href=&amp;quot;javascript:jShowPopupSWF('48 Hour Film Project', 'http://www.youtube.com/v/syMLWXa4sFY&amp;amp;amp;hl=en&amp;amp;amp;fs=1&amp;amp;amp;', 560, 340);&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to view the beast.</description>
<guid isPermaLink="false">1f0e3dad99908345f7439f8ffabdffc4</guid>
<link>http://www.endseven.net/?sPermalinkID=1f0e3dad99908345f7439f8ffabdffc4</link>
</item>
<item>
<title>48-Hour Film Project</title>
<pubDate>Fri, 24 Jul 2009 13:27:18 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/48-hour-tweet-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;48 Hour Tweet&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;As many of you may already be aware, &amp;lt;b&amp;gt;END[SEVEN]&amp;lt;/b&amp;gt; will be teaming up with Tom Jalana (&amp;lt;a href=&amp;quot;http://tomjalana.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;TomJalana.com&amp;lt;/a&amp;gt;), Ed Sochacki (&amp;lt;a href=&amp;quot;http://www.flyingjstudios.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Flying-J Studios&amp;lt;/a&amp;gt;) and Joe Kesser (&amp;lt;a href=&amp;quot;http://www.jkessen.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;JKessen.com&amp;lt;/a&amp;gt;) this year for the 2009 &amp;lt;a href=&amp;quot;http://www.48hourfilm.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;48-Hour Film Project&amp;lt;/a&amp;gt;. My title for this event will &amp;quot;Professional Stuntman, Pyrotechnics Consultant and Resident Web Developer&amp;quot;. I'm not entirely sure what I'll be doing, but I'm sure it will be quite enjoyable.&lt;br /&gt;&lt;br /&gt;I've developed an online application for following END[SEVEN] Web Development and Flying-J studios via participating Twitter Feeds at &amp;lt;a href=&amp;quot;http://tomjalana.com/48HourTweet&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;http://tomjalana.com/48HourTweet&amp;lt;/a&amp;gt;. It is a very rudimentary application that displays the latest tweets regarding the 48 Hour Film Project. Filtering is done by using the &amp;lt;a href=&amp;quot;http://twitter.com/#search?q=%2348&amp;quot;&amp;gt;#48&amp;lt;/a&amp;gt; tag. It's pretty ingenious, if you ask me.&lt;br /&gt;&lt;br /&gt;I'll be taking plenty of pictures and twittering about the events as they unfold. Be sure to follow me and the rest of the team on &amp;lt;a href=&amp;quot;http://twitter.com/endseven&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Twitter&amp;lt;/a&amp;gt;.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://tomjalana.com/48HourTweet/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to view the Tom Jalana 48-Hour Tweet page.</description>
<guid isPermaLink="false">6f4922f45568161a8cdf4ad2299f6d23</guid>
<link>http://www.endseven.net/?sPermalinkID=6f4922f45568161a8cdf4ad2299f6d23</link>
</item>
<item>
<title>PHP: How to create a database-driven sitemap.</title>
<pubDate>Tue, 21 Jul 2009 20:20:58 CST</pubDate>
<description>Okay. So you have a web site that's built using PHP, MySQL, maybe a few scoops of XML thrown in for good measure. I haven't seen very many helpful scripts out there showing people how to submit a dynamic, database-driven sitemap that conforms to Google standards. Here is my code; I'll go into detail about it below.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;header(&amp;quot;content-type: text/xml&amp;quot;);&lt;br /&gt;&lt;br /&gt;/* Adds a URL to the page data. */&lt;br /&gt;function jAddURL($sLocation, $sChangeFrequency, $sLastMod, $sPriority) {&lt;br /&gt;$aInsertData = array();&lt;br /&gt;$aInsertData['Location'] = $sLocation;&lt;br /&gt;$aInsertData['ChangeFrequency'] = $sChangeFrequency;&lt;br /&gt;$aInsertData['LastMod'] = $sLastMod;&lt;br /&gt;$aInsertData['Priority'] = $sPriority;&lt;br /&gt;array_push($GLOBALS['PageData'], $aInsertData);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Outputs the page data as XML. */&lt;br /&gt;function jOutputPageDataXML() {&lt;br /&gt;echo &amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot; encoding=\&amp;quot;UTF-8\&amp;quot;?&amp;gt;\n&amp;quot;;&lt;br /&gt;echo &amp;quot;&amp;lt;urlset xmlns=\&amp;quot;http://www.google.com/schemas/sitemap/0.84\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;&lt;br /&gt;for ($i = 0; $i &amp;lt; sizeof($GLOBALS['PageData']); $i++) {&lt;br /&gt;echo &amp;quot;&amp;lt;url&amp;gt;\n&amp;quot;;&lt;br /&gt;if ($GLOBALS['PageData'][$i]['Location'] != &amp;quot;&amp;quot;) echo &amp;quot;&amp;lt;loc&amp;gt;&amp;quot; . htmlentities($GLOBALS['PageData'][$i]['Location']) . &amp;quot;&amp;lt;/loc&amp;gt;\n&amp;quot;;&lt;br /&gt;if ($GLOBALS['PageData'][$i]['ChangeFrequency'] != &amp;quot;&amp;quot;) echo &amp;quot;&amp;lt;changefreq&amp;gt;&amp;quot; . htmlentities($GLOBALS['PageData'][$i]['ChangeFrequency']) . &amp;quot;&amp;lt;/changefreq&amp;gt;\n&amp;quot;;&lt;br /&gt;if ($GLOBALS['PageData'][$i]['LastMod'] != &amp;quot;&amp;quot;) echo &amp;quot;&amp;lt;lastmod&amp;gt;&amp;quot; . $GLOBALS['PageData'][$i]['LastMod'] . &amp;quot;&amp;lt;/lastmod&amp;gt;\n&amp;quot;;&lt;br /&gt;if ($GLOBALS['PageData'][$i]['Priority'] != &amp;quot;&amp;quot;) echo &amp;quot;&amp;lt;priority&amp;gt;&amp;quot; . $GLOBALS['PageData'][$i]['Priority'] . &amp;quot;&amp;lt;/priority&amp;gt;\n&amp;quot;;&lt;br /&gt;echo &amp;quot;&amp;lt;/url&amp;gt;\n&amp;quot;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo &amp;quot;&amp;lt;/urlset&amp;gt;\n&amp;quot;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Connect to the database..&lt;br /&gt;$GLOBALS['MySQL']['Connection'] = mysql_connect(&amp;quot;[YOURSERVER]&amp;quot;, &amp;quot;[YOURUSERNAME]&amp;quot;, &amp;quot;[YOURPASSWORD]&amp;quot;);&lt;br /&gt;$GLOBALS['MySQL']['DB'] = mysql_select_db(&amp;quot;[YOURDATABASE]&amp;quot;);&lt;br /&gt;&lt;br /&gt;// Google is finicky about the www. prefix, so we'll fix that and then create some priorities..&lt;br /&gt;$GLOBALS['WebsiteURL'] = &amp;quot;http://&amp;quot; . ((strpos($_SERVER['HTTP_HOST'], &amp;quot;www.&amp;quot;) !== FALSE) ? &amp;quot;www.&amp;quot; : &amp;quot;&amp;quot;) . &amp;quot;endseven.net&amp;quot;;&lt;br /&gt;$GLOBALS['Priorities'] = array(&amp;quot;Home&amp;quot; =&amp;gt; &amp;quot;1.0&amp;quot;, &amp;quot;RSSFeed&amp;quot; =&amp;gt; &amp;quot;0.9&amp;quot;, &amp;quot;Permalink&amp;quot; =&amp;gt; &amp;quot;0.8&amp;quot;, &amp;quot;ArticleCategory&amp;quot; =&amp;gt; &amp;quot;0.7&amp;quot;, &amp;quot;ArticleTag&amp;quot; =&amp;gt; &amp;quot;0.6&amp;quot;, &amp;quot;PhotoGallery&amp;quot; =&amp;gt; &amp;quot;0.5&amp;quot;);&lt;br /&gt;$GLOBALS['PageData'] = array(); // Holds the dynamic page data..&lt;br /&gt;&lt;br /&gt;// Add any pages that aren't automatically generated by the database..&lt;br /&gt;jAddURL($GLOBALS['WebsiteURL'] , &amp;quot;daily&amp;quot;, date(&amp;quot;Y-m-d&amp;quot;), $GLOBALS['Priorities']['Home']);&lt;br /&gt;jAddURL($GLOBALS['WebsiteURL'] . &amp;quot;/xml/rss.php&amp;quot;, &amp;quot;daily&amp;quot;, date(&amp;quot;Y-m-d&amp;quot;), $GLOBALS['Priorities']['RSSFeed']);&lt;br /&gt;jAddURL($GLOBALS['WebsiteURL'] . &amp;quot;/?sPageID=PhotoGallery&amp;quot;, &amp;quot;weekly&amp;quot;, date(&amp;quot;Y-m-d&amp;quot;), $GLOBALS['Priorities']['PhotoGallery']);&lt;br /&gt;&lt;br /&gt;// Retrieve the articles from the database..&lt;br /&gt;$oQuery = mysql_query(&amp;quot;SELECT `Stamp`, `Hash` FROM `blog_articles` ORDER BY `Stamp` DESC;&amp;quot;);&lt;br /&gt;&lt;br /&gt;while ($oResults = mysql_fetch_assoc($oQuery)) {&lt;br /&gt;jAddURL($GLOBALS['WebsiteURL'] . &amp;quot;/?sPermalinkID=&amp;quot; . urlencode($oResults['Hash']), &amp;quot;monthly&amp;quot;, date(&amp;quot;Y-m-d&amp;quot;, strtotime($oResults['Stamp'])), $GLOBALS['Priorities']['Permalink']);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Retrieve the categories from the database..&lt;br /&gt;$oQuery = mysql_query(&amp;quot;SELECT `Name` FROM `blog_categories` ORDER BY `Name` ASC;&amp;quot;);&lt;br /&gt;&lt;br /&gt;while ($oResults = mysql_fetch_assoc($oQuery)) {&lt;br /&gt;jAddURL($GLOBALS['WebsiteURL'] . &amp;quot;/?sCategory=&amp;quot; . urlencode($oResults['Name']), &amp;quot;daily&amp;quot;, date(&amp;quot;Y-m-d&amp;quot;, strtotime($oResults['Stamp'])), $GLOBALS['Priorities']['ArticleCategory']);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Retrieve the tags from the database..&lt;br /&gt;$oQuery = mysql_query(&amp;quot;SELECT `Name` FROM `blog_tags` ORDER BY `Name` ASC;&amp;quot;);&lt;br /&gt;&lt;br /&gt;while ($oResults = mysql_fetch_assoc($oQuery)) {&lt;br /&gt;jAddURL($GLOBALS['WebsiteURL'] . &amp;quot;/?sTag=&amp;quot; . urlencode($oResults['Name']), &amp;quot;daily&amp;quot;, date(&amp;quot;Y-m-d&amp;quot;, strtotime($oResults['Stamp'])), $GLOBALS['Priorities']['ArticleTag']);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Disconnect from the database, output the xml..&lt;br /&gt;mysql_close($GLOBALS['MySQL']['Connection']);&lt;br /&gt;jOutputPageDataXML();&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;So, from top to bottom, the script is interpreted as follows:&lt;br /&gt;&lt;br /&gt;&amp;lt;ol&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Output a header that this page should be interpreted as XML (Line 3).&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Declare a function for adding URLs to the array (Line 6). This helps save a little time and also helps prevent misspelling variables, values, etc.&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Declare a function for outputting the final results of the XML file (Line 16). This doesn't actually need to be a function, but I figured why not.&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Connect to your MySQL database (replace &amp;lt;b&amp;gt;[YOURSERVER], [YOURUSERNAME], [YOURPASSWORD]&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;[YOURDATABASE]&amp;lt;/b&amp;gt; with your own credentials).&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Declare some variables to ensure Google is happy with your domain (Line 37 is very important, I'll explain this later), prioritize your website URLs (Line 38), and an array to hold generated URL (page) data (Line 39).&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Add some static URLs to the page data array (Line 42-44).&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Select any dynamically generated data from your MySQL server (Line 47-65).&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;Output the formatted page data as XML (Line 69).&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;NOTE:&amp;lt;/b&amp;gt; Like I said, Line 37 is very important. This line basically allows you to use this script for (what I like to call) the full domain. An example of the full domain would be both &amp;lt;b&amp;gt;http://www.endseven.net&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;http://endseven.net&amp;lt;/b&amp;gt;. Granted that both URLs take you to the same place, Google doesn't care. Google still thinks of these two values as separate domains and if your URL tag doesn't match with the domain that you've submitted to Google, you &amp;lt;b&amp;gt;will&amp;lt;/b&amp;gt; have problems.&lt;br /&gt;&lt;br /&gt;Also, your &amp;lt;b&amp;gt;robots.txt&amp;lt;/b&amp;gt; file plays a substantial role in Google's interpretation of sitemaps. If any of the URLs listed in your sitemap are blocked by your robots.txt file, Google's verification will fail. Trust me, I know. It took about four days of trial and error to get this script to work properly because my robots.txt file had to be downloaded by Google's servers (I believe they refresh robots.txt files every day) in order to take effect.&lt;br /&gt;&lt;br /&gt;I hope this helps anyone looking to dynamically generate up-to-date sitemaps.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/xml/sitemap.php&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to view my database-driven sitemap.&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=1679091c5a880faf6fb5e6087eb1b2dc&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download this script.</description>
<guid isPermaLink="false">70efdf2ec9b086079795c442636b55fb</guid>
<link>http://www.endseven.net/?sPermalinkID=70efdf2ec9b086079795c442636b55fb</link>
</item>
<item>
<title>Please disregard the mess.</title>
<pubDate>Tue, 21 Jul 2009 13:29:57 CST</pubDate>
<description>Please don't mind the mess that I'm making of the website. I'm incorporating &amp;lt;a href=&amp;quot;https://www.google.com/adsense/login/en_US/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Google Adsense&amp;lt;/a&amp;gt; into the system and it's causing a slight interface shift. I'm currently at work, so I can't devote a whole lot of time to it at the moment. However, I &amp;lt;b&amp;gt;can&amp;lt;/b&amp;gt; fix it when I get home tonight.&lt;br /&gt;&lt;br /&gt;We'll be back to normal in no time!&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;EDIT: &amp;lt;/b&amp;gt; Google Adsense has been successfully integrated into this website.&lt;br /&gt;Hooray, ads! Now click on them so I can make my millions.</description>
<guid isPermaLink="false">c74d97b01eae257e44aa9d5bade97baf</guid>
<link>http://www.endseven.net/?sPermalinkID=c74d97b01eae257e44aa9d5bade97baf</link>
</item>
<item>
<title>AS3: Introduction to a Flash-based webcam.</title>
<pubDate>Sun, 19 Jul 2009 12:54:57 CST</pubDate>
<description>Here is a little code snippet to get a Flash SWF to display your webcam. It's a smaller part of something bigger that I'm working on. I don't really have time to explain it right now, but I figured I should post it:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;try {&lt;br /&gt;		var oCamera:Camera = Camera.getCamera();&lt;br /&gt;		oCamera.setMode(320, 240, 30, false);&lt;br /&gt;		oCamera.setQuality(0, 100);&lt;br /&gt;		&lt;br /&gt;		var oVideo:Video = new Video();&lt;br /&gt;		oVideo.attachCamera(oCamera);&lt;br /&gt;		addChild(oVideo);&lt;br /&gt;	} catch (oException1:*) {&lt;br /&gt;		trace(&amp;quot;Unable to connect to camera!!1&amp;quot;);&lt;br /&gt;	}&lt;br /&gt;&amp;lt;/code&amp;gt;</description>
<guid isPermaLink="false">9bf31c7ff062936a96d3c8bd1f8f2ff3</guid>
<link>http://www.endseven.net/?sPermalinkID=9bf31c7ff062936a96d3c8bd1f8f2ff3</link>
</item>
<item>
<title>PHP: Updated XML-driven Twitter feed script.</title>
<pubDate>Fri, 17 Jul 2009 07:51:22 CST</pubDate>
<description>Yesterday, &amp;lt;b&amp;gt;Ryonie&amp;lt;/b&amp;gt; brought up a good point about the script I wrote to display Twitter feeds on your website or blog. He asked me what the script would do if the feed being requested was made private by the user. I didn't actually have an answer for him, but I was pretty sure that the route he would have to take would include the &amp;lt;a href=&amp;quot;http://www.php.net/curl&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Client URL Library&amp;lt;/a&amp;gt;.&lt;br /&gt;&lt;br /&gt;Here is a function he wrote to replace the &amp;lt;b&amp;gt;file_get_contents()&amp;lt;/b&amp;gt; function on line &amp;lt;b&amp;gt;17&amp;lt;/b&amp;gt; of the old script. The old script is available &amp;lt;a href=&amp;quot;http://www.endseven.net/?sPermalinkID=6512bd43d9caa6e02c990b0a82652dca&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt;.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;function file_get_contents_curl($sURL) {&lt;br /&gt;$sUserData = $GLOBALS['Settings']['CURL']['Username'] . &amp;quot;:&amp;quot; . $GLOBALS['Settings']['CURL']['Password'];&lt;br /&gt;$oCurlHandle = curl_init();&lt;br /&gt;&lt;br /&gt;curl_setopt($oCurlHandle, CURLOPT_HEADER, 0);&lt;br /&gt;curl_setopt($oCurlHandle, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;curl_setopt($oCurlHandle, CURLOPT_USERPWD, $sUserData);&lt;br /&gt;curl_setopt($oCurlHandle, CURLOPT_URL, $sURL);&lt;br /&gt;&lt;br /&gt;$sReturnedData = curl_exec($oCurlHandle);&lt;br /&gt;curl_close($oCurlHandle);&lt;br /&gt;&lt;br /&gt;return $sReturnedData;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;I have modified the script on my web site to include this new method of retrieving feeds from &amp;lt;a href=&amp;quot;http://twitter.com/endseven&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;my Twitter account&amp;lt;/a&amp;gt;.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=Download&amp;amp;amp;sDownloadID=e4da3b7fbbce2345d7772b0674a318d5&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the modified script.</description>
<guid isPermaLink="false">c51ce410c124a10e0db5e4b97fc2af39</guid>
<link>http://www.endseven.net/?sPermalinkID=c51ce410c124a10e0db5e4b97fc2af39</link>
</item>
<item>
<title>GoHuman helps you find and offer local services.</title>
<pubDate>Thu, 16 Jul 2009 13:11:05 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/go-human-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;@GoHuman&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;The other day, I was surfing the web (yes, I know.. I've been doing that a lot lately) and I noticed that someone from &amp;lt;a href=&amp;quot;http://www.gohuman.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;GoHuman&amp;lt;/a&amp;gt; started following me on Twitter. I was curious, so I checked the site out. GoHuman is a website that allows users to search and add listings for local services in your area.&lt;br /&gt;&lt;br /&gt;GoHuman describes themselves as &amp;quot;enabling even the smallest of businesses to create a presence on the Web that links you to new customers in your area to build local reputation.&amp;quot; I've decided to add both myself and the company I work for to their listing.&lt;br /&gt;&lt;br /&gt;From what I've read, GoHuman is currently in it's beta stage and will be fully released on or near &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/Labor_Day&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Labor Day&amp;lt;/a&amp;gt;. I believe that this web site will be a &amp;lt;b&amp;gt;huge&amp;lt;/b&amp;gt; success because people are looking less and less toward large, distant companies for services and focusing their attention on what is readily available in their own community.&lt;br /&gt;&lt;br /&gt;I will more than happily support GoHuman's attempt to contribute to the businesses and individuals. Not only because it seems as though everyone is hurting for business lately, but because I would love to be a part of making something successful. If you have a service that you provide, please click over to the GoHuman website at www.gohuman.com and sign up. It's free!&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.gohuman.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to visit GoHuman.</description>
<guid isPermaLink="false">c20ad4d76fe97759aa27a0c99bff6710</guid>
<link>http://www.endseven.net/?sPermalinkID=c20ad4d76fe97759aa27a0c99bff6710</link>
</item>
<item>
<title>PHP: Show XML-driven Twitter feeds on your site.</title>
<pubDate>Wed, 15 Jul 2009 12:59:15 CST</pubDate>
<description>Do you want to know the programming behind how to include your &amp;lt;a href=&amp;quot;http://twitter.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Twitter&amp;lt;/a&amp;gt; feed (or anyone else's feed, actually) on your blog or web site? I'll show you how to tackle this problem from an &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/XML&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;XML&amp;lt;/a&amp;gt;/&amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/PHP&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;PHP&amp;lt;/a&amp;gt; approach.&lt;br /&gt;&lt;br /&gt;Twitter offers every users feeds online an organized, XML format. The URL to view this feed in it's raw format is &amp;lt;b&amp;gt;http://twitter.com/statuses/user_timeline/xxxxxx.xml?count=yyy&amp;lt;/b&amp;gt; where &amp;lt;b&amp;gt;xxxxxx&amp;lt;/b&amp;gt; represents the user name (I'll use mine, &amp;lt;b&amp;gt;endseven&amp;lt;/b&amp;gt; for this example) and &amp;lt;b&amp;gt;yyy&amp;lt;/b&amp;gt; represents the number of items to receive.&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;    $GLOBALS['Settings']['Time']['Format'] = &amp;quot;M. jS @ h:mA&amp;quot;;&lt;br /&gt;    $GLOBALS['Settings']['Time']['Offset'] = 7200; // CST is +7200..&lt;br /&gt;    $GLOBALS['Settings']['Time']['Timezone'] = &amp;quot;CST&amp;quot;;&lt;br /&gt;    &lt;br /&gt;    $GLOBALS['Settings']['URL']['API'] = &amp;quot;http://twitter.com/statuses/user_timeline/endseven.xml?count=5&amp;quot;;&lt;br /&gt;    $GLOBALS['Settings']['URL']['Avatar'] = &amp;quot;http://s3.amazonaws.com/twitter_production/profile_images/314969580/twitter-v2_normal.jpg&amp;quot;;&lt;br /&gt;    $GLOBALS['Settings']['URL']['Output'] = &amp;quot;./twitter.htm&amp;quot;;&lt;br /&gt;    $GLOBALS['Settings']['URL']['Profile'] = &amp;quot;http://www.twitter.com/endseven&amp;quot;;&lt;br /&gt;    &lt;br /&gt;    $iLastModified = @filemtime($GLOBALS['Settings']['URL']['Output']);&lt;br /&gt;    &lt;br /&gt;    if (date(&amp;quot;U&amp;quot;) - $iLastModified &amp;gt; 600) {&lt;br /&gt;        echo &amp;quot;&amp;lt;!-- Twitter Feed: Cached file is expired. --&amp;gt;\n&amp;quot;;&lt;br /&gt;        &lt;br /&gt;        $sBuffer = @file_get_contents($GLOBALS['Settings']['URL']['API']);&lt;br /&gt;        &lt;br /&gt;        if (!empty($sBuffer)) {&lt;br /&gt;            $xData = new SimpleXMLElement($sBuffer);&lt;br /&gt;            $xStatusList = $xData -&amp;gt; status;&lt;br /&gt;            &lt;br /&gt;            $oOutputHandle = fopen($GLOBALS['Settings']['URL']['Output'], &amp;quot;w+&amp;quot;);&lt;br /&gt;            $sOutputData = &amp;quot;&amp;quot;;&lt;br /&gt;            &lt;br /&gt;            $i = 0; foreach ($xStatusList as $oKey =&amp;gt; $oValue) {&lt;br /&gt;                // Extract and format the date..&lt;br /&gt;                $oDate = strtotime($oValue -&amp;gt; created_at) + $GLOBALS['Settings']['Time']['Offset']&lt;br /&gt;                $sDate = date($GLOBALS['Settings']['Time']['Format'], $oDate);&lt;br /&gt;                &lt;br /&gt;                // Extract the URL and body for this tweet..&lt;br /&gt;                $sTweetURL = &amp;quot;http://twitter.com/endseven/statuses/&amp;quot; . $oValue -&amp;gt; id;&lt;br /&gt;                $sTweetBody = $oValue -&amp;gt; text;&lt;br /&gt;                &lt;br /&gt;                // If you were inclined, you could use these values..&lt;br /&gt;                // $xUser = $oValue -&amp;gt; user;&lt;br /&gt;                // $GLOBALS['Settings']['URL']['Avatar'] = $xUser -&amp;gt; profile_image_url;&lt;br /&gt;                // $sSource = $oValue -&amp;gt; source;&lt;br /&gt;                &lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;table style=\&amp;quot;width: 260px;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;tr style=\&amp;quot;width: 260px;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;td style=\&amp;quot;width: 260px;\&amp;quot; class=\&amp;quot;&amp;quot; . ($i++ % 2 == 0 ? &amp;quot;twitterFeed&amp;quot; : &amp;quot;twitterFeedOffset&amp;quot;) . &amp;quot;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;                &lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;table style=\&amp;quot;width: 260px;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;tr style=\&amp;quot;width: 260px;\&amp;quot;&amp;gt;\n&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;td style=\&amp;quot;width: 1px;\&amp;quot; class=\&amp;quot;twitterFeedAvatar\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;a href=\&amp;quot;&amp;quot; . $sProfileURL . &amp;quot;\&amp;quot; target=\&amp;quot;_blank\&amp;quot;&amp;gt;&amp;lt;img src=\&amp;quot;&amp;quot; . $GLOBALS['Settings']['URL']['Avatar'] . &amp;quot;\&amp;quot; class=\&amp;quot;twitterFeedAvatar\&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/td&amp;gt;\n&amp;quot;;&lt;br /&gt;                &lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;td style=\&amp;quot;width: auto;\&amp;quot; class=\&amp;quot;twitterFeedBody\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;div class=\&amp;quot;twitterFeedDate\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; . $sTweetURL . &amp;quot;\&amp;quot; class=\&amp;quot;twitterFeedDate\&amp;quot; target=\&amp;quot;_blank\&amp;quot;&amp;gt;&amp;quot; . $sDate . &amp;quot; &amp;quot; . $GLOBALS['Settings']['Time']['Timezone'] . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;div class=\&amp;quot;twitterFeedText\&amp;quot;&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; . $sTweetURL . &amp;quot;\&amp;quot; class=\&amp;quot;twitterFeedText\&amp;quot; target=\&amp;quot;_blank\&amp;quot;&amp;gt;&amp;quot; . $sTweetBody . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;                &lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;                $sOutputData .= &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            fwrite($oOutputHandleHandle, $sOutputData);&lt;br /&gt;            fclose($oOutputHandle);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    if (file_exists($GLOBALS['Settings']['URL']['Output'])) {&lt;br /&gt;        echo &amp;quot;&amp;lt;!-- Twitter Feed: Loading the cached file. --&amp;gt;\n&amp;quot;;&lt;br /&gt;        echo file_get_contents($GLOBALS['Settings']['URL']['Output']);&lt;br /&gt;    } else {&lt;br /&gt;        echo &amp;quot;&amp;lt;!-- Twitter Feed: Unable to load cached file. --&amp;gt;\n&amp;quot;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;Check it out. I probably have to modify my blog to accommodate HTML in code-view. &amp;lt;b&amp;gt;EDIT: &amp;lt;/b&amp;gt; Yep, I did. And now I'm on my way to programming a code-formatting parser.&lt;br /&gt;&lt;br /&gt;Okay! So the way that Twitter works is they limit the number of requests you can make (70 per hour) to their servers. This helps them control bandwidth, spam, etc. To clear this tiny hurdle, we simply store a cached version of the results in a .htm file and check it's modification date every time the page with our feed on it is loaded into the browser. This is done using the &amp;lt;b&amp;gt;filemtime()&amp;lt;/b&amp;gt; function, which returns a UNIX timestamp. This is compared to the current date + ten minutes to determine whether or not the feed should be requested from Twitter again.&lt;br /&gt;&lt;br /&gt;This script is best used in tandem with an &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/Ajax_%28programming%29&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Ajax handler&amp;lt;/a&amp;gt;. Sometimes you might notice a blurb of text that says &amp;quot;Requesting data, please wait..&amp;quot; where my Twitter feed should be. That is Ajax. It makes asynchronous requests to other scripts via &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/JavaScript&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;JavaScript&amp;lt;/a&amp;gt; without disrupting the rest of the page.&lt;br /&gt;&lt;br /&gt;So.. download it, try it on your site, tell your friends.&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=801ab24683a4a8c433c6eb40c48bcd9d&amp;amp;amp;sDownloadID=a87ff679a2f3e71d9181a67b7542122c&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the source code.</description>
<guid isPermaLink="false">6512bd43d9caa6e02c990b0a82652dca</guid>
<link>http://www.endseven.net/?sPermalinkID=6512bd43d9caa6e02c990b0a82652dca</link>
</item>
<item>
<title>Wiping the dust off an old project.</title>
<pubDate>Tue, 14 Jul 2009 08:19:46 CST</pubDate>
<description>For the last few days I've been looking for this project I worked on a while (roughly three years) ago called &amp;lt;b&amp;gt;Simple Keylogger&amp;lt;/b&amp;gt;. If you're not familiar with what a hook-based keylogger does, please click &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/Keylogger&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; for some light reading.&lt;br /&gt;&lt;br /&gt;Last night, after about two hours of fumbling with my computer in an attempt to save my poor excuse for a hard drive, I finally found a backup copy of - I hope you're ready for this - &amp;lt;b&amp;gt;Simple Keylogger v3.1 by Jamwilka Software&amp;lt;/b&amp;gt;. This application is a piece of crap, but back in the day it was &amp;lt;b&amp;gt;AWESOME&amp;lt;/b&amp;gt;.&lt;br /&gt;&lt;br /&gt;I believe that for the most part, it still works. One one machine (Windows XP), I was able to save the keystroke log to the .DAT file. On another machine (Windows Vista), I wasn't able to do anything except hook the keyboard and view the in-program log, but I attribute this to Windows Defender and it's over-sensitivity to &amp;lt;b&amp;gt;everything&amp;lt;/b&amp;gt;. And on the last machine (Windows XP), I wasn't even able to run the program.&lt;br /&gt;&lt;br /&gt;This application uses the &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/.NET_Framework&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;.NET Framework&amp;lt;/a&amp;gt; and is very unstable. But! You're more than welcome to give it a try. This application &amp;quot;hooks&amp;quot; the keyboard, so don't be alarmed if your virus scanner says it is a virus. In a roundabout way, it is. I'm not going to lie. But the data resides on your own machine and the person using said virus is you - to spy on anyone using your machine without your consent.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=801ab24683a4a8c433c6eb40c48bcd9d&amp;amp;amp;sDownloadID=c81e728d9d4c2f636f067f89cc14862c&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download this application.</description>
<guid isPermaLink="false">d3d9446802a44259755d38e6d163e820</guid>
<link>http://www.endseven.net/?sPermalinkID=d3d9446802a44259755d38e6d163e820</link>
</item>
<item>
<title>PHP: Force your url to include the www.</title>
<pubDate>Mon, 13 Jul 2009 10:12:48 CST</pubDate>
<description>If you've ever noticed, Flash doesn't communicate so well with other domains without the implementation of a &amp;lt;a href=&amp;quot;http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;cross-domain policy file&amp;lt;/a&amp;gt;. But did you also know that if your web site does not include the &amp;quot;www.&amp;quot; domain prefix (Example: http://endseven.net - please note the lack of a www.) and you reference an external file in your &amp;lt;a href=&amp;quot;http://www.adobe.com/products/flash/&amp;quot;&amp;gt;Adobe Flash&amp;lt;/a&amp;gt; SWF (Example: http://www.endseven.net/data.txt - please note that this URL does, in fact, include the www.), that due to the Adobe Flash security sandbox, that file will not be loaded? The same applies to externally loaded JPEG files, MP3 files, etc.&lt;br /&gt;&lt;br /&gt;It is a known fact that not everyone types the &amp;lt;b&amp;gt;www.&amp;lt;/b&amp;gt; when going to a web site. It is also a known fact that not every programmer has the time or need to write a cross-domain policy file for their development SWF files. I, for one, am lazy when it comes to non-commercial projects, therefore I never write cross-domain policy files for my own work. I would, however, write them for clients (that's me sucking up right now).&lt;br /&gt;&lt;br /&gt;Now back to the reason for this article. Here is a function that I've written for my &amp;lt;b&amp;gt;personal&amp;lt;/b&amp;gt; - and I stress the word - use that I implemented on this web site to redirect anyone that forgets to type the &amp;lt;b&amp;gt;www.&amp;lt;/b&amp;gt; domain prefix.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;function jRedirectWWW($sWebsiteURL) {&lt;br /&gt;    if (strpos($sWebsiteURL, &amp;quot;www.&amp;quot;) === FALSE) {&lt;br /&gt;        // Append the left chunk (http://)..&lt;br /&gt;        $sRedirectURL = substr($_SERVER['SCRIPT_URI'], 0, strlen(&amp;quot;http://&amp;quot;));&lt;br /&gt;        &lt;br /&gt;        // Append the right chunk (yourdomain.com/)..&lt;br /&gt;        $sRedirectURL .= &amp;quot;www.&amp;quot; . substr($_SERVER['SCRIPT_URI'], strlen(&amp;quot;http://&amp;quot;));&lt;br /&gt;        &lt;br /&gt;        if ($_SERVER['QUERY_STRING'] != &amp;quot;&amp;quot;) {&lt;br /&gt;            // Append the query string, if any (sPageID=XXX&amp;amp;sSubID=YYY)..&lt;br /&gt;            $sRedirectURL .= &amp;quot;?&amp;quot; . $_SERVER['QUERY_STRING'];&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Redirect the browser..&lt;br /&gt;        header(&amp;quot;location: &amp;quot; . $sRedirectURL);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;This function does not take into account secure connections (https://). Why would it? This web site isn't terribly secure anyway. :) This function gets the job done and redirects anyone who forgets the www. domain prefix to the correct URL.&lt;br /&gt;&lt;br /&gt;Give it a try by typing &amp;quot;http://endseven.net&amp;quot; into your browser or by clicking &amp;lt;a href=&amp;quot;http://endseven.net&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt;. You'll notice that the &amp;lt;b&amp;gt;www.&amp;lt;/b&amp;gt; is automatically inserted.&lt;br /&gt;&lt;br /&gt;Yes, it's sloppy. But, I already knew that.&lt;br /&gt;Cheers!</description>
<guid isPermaLink="false">45c48cce2e2d7fbdea1afc51c7c6ad26</guid>
<link>http://www.endseven.net/?sPermalinkID=45c48cce2e2d7fbdea1afc51c7c6ad26</link>
</item>
<item>
<title>PHP: A time-saving MySQL function.</title>
<pubDate>Sun, 12 Jul 2009 11:00:44 CST</pubDate>
<description>This is a function that I use in almost all of my PHP/MySQL driven web sites and projects. Basically, this function queries the currently-selected MySQL database and returns one value. This is very helpful if you perform a large number of single-return queries such as returning the price of a given product.&lt;br /&gt;&lt;br /&gt;Ideally, you would have an extensive library with functions such as jGetProductPrice(iProductID), jGetAlbumIDByArtistName(sArtistName), etc. But this is very time-consuming and can change drastically if the proper steps are not taken to thoroughly document and test each function. I use this function to save both time and frustration with my projects.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;&lt;br /&gt;function jMySQLSelect($sField1, $sTable, $sField2, $sValue) {&lt;br /&gt;    $sQuery  = &amp;quot;SELECT `&amp;quot; . $sField1 . &amp;quot;` FROM `&amp;quot; . $sTable . &amp;quot;` WHERE&amp;quot;;&lt;br /&gt;    $sQuery .= &amp;quot;`&amp;quot; . $sField2 . &amp;quot;` = '&amp;quot; . $sValue . &amp;quot;';&amp;quot;;&lt;br /&gt;    $oResults = mysql_fetch_array(mysql_query($sQuery));&lt;br /&gt;    return $oResults[0];&lt;br /&gt;}&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;As you can see, I have not incorporated anti-MySQL Injection techniques such as escaping values, converting values to html entities, etc. I leave this up to the programmer because not every query &amp;lt;b&amp;gt;needs&amp;lt;/b&amp;gt; to be safe for MySQL unless the values are being input by the end user.&lt;br /&gt;&lt;br /&gt;The logic of the function is very simple: &amp;lt;b&amp;gt;Select Field 1 from Table where Field 2 = Value&amp;lt;/b&amp;gt;. So we could set something up along the lines of &amp;lt;b&amp;gt;jMySQLSelect(&amp;quot;Price&amp;quot;, &amp;quot;Products&amp;quot;, &amp;quot;ProductID&amp;quot;, &amp;quot;XXX&amp;quot;)&amp;lt;/b&amp;gt;.</description>
<guid isPermaLink="false">c9f0f895fb98ab9159f51fd0297e236d</guid>
<link>http://www.endseven.net/?sPermalinkID=c9f0f895fb98ab9159f51fd0297e236d</link>
</item>
<item>
<title>Released: Streaming Media Player v3</title>
<pubDate>Fri, 10 Jul 2009 08:15:04 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/smp-v3-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;Streaming Media Player v3&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;Today marks the official release of my favorite personal project, &amp;lt;b&amp;gt;Streaming Media Player v3&amp;lt;/b&amp;gt;. This application is intended to be used by immediate friends and family to share their music with each other - on any computer - regardless of their location or operating system.&lt;br /&gt;&lt;br /&gt;Users can log in using their registered usernames and stream audio from the library directly to their computer. Album covers can be uploaded by anyone by simply dragging a jpeg from their desktop to the album on the application. Contributed album covers are automatically uploaded and resized to the appropriate dimensions (100x100 pixels).&lt;br /&gt;&lt;br /&gt;Currently, there are five skins to choose from. Different skins can be applied by pressing the number keys across the top of the keyboard. The skins are as follows: 1) Beach Sunset, 2) Dark City, 3) Blue Swirl, 4) Pink Rabbit, 5) San Francisco. As skins are added to the database, they will be automatically synced with the remaining number keys.&lt;br /&gt;&lt;br /&gt;I have programmed, but not yet incorporated, the &amp;lt;b&amp;gt;streaming video&amp;lt;/b&amp;gt; aspect of this application. I have successfully streamed a handful of videos to this application with no problem. The primary reason it wasn't included in this release was because I didn't realize I wanted to stream video until after everything was designed and partially programmed.&lt;br /&gt;&lt;br /&gt;This is a &amp;lt;b&amp;gt;free&amp;lt;/b&amp;gt;, non-commercial application. I hope you download it and give it a try. Please feel free to send an email to &amp;lt;b&amp;gt;jimmy@endseven.net&amp;lt;/b&amp;gt; for a username or password. Please don't sue me. This is only a personal project to test my programming abilities.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;http://www.endseven.net/track.php?sRequestID=801ab24683a4a8c433c6eb40c48bcd9d&amp;amp;amp;sDownloadID=c4ca4238a0b923820dcc509a6f75849b&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to download the application.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;BORING TECHNICAL INFORMATION:&amp;lt;/b&amp;gt;&lt;br /&gt;This application is programmed in &amp;lt;a href=&amp;quot;http://www.actionscript.org&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;ActionScript 3&amp;lt;/a&amp;gt;, utilizing the &amp;lt;a href=&amp;quot;http://www.adobe.com/products/air/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Adobe AIR&amp;lt;/a&amp;gt; runtime environment. The user authentication, playlist control, interface skinning and content management features are all controlled using a &amp;lt;a href=&amp;quot;http://www.php.net/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;PHP&amp;lt;/a&amp;gt;/&amp;lt;a href=&amp;quot;http://www.dev.mysql.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;MySQL&amp;lt;/a&amp;gt; processing backend.&lt;br /&gt;&lt;br /&gt;Please note: While audio data is streamed via Adobe AIR and ActionScript, no media files are permitted (or even remotely possible) to be downloaded, copied or otherwise distributed by any user.</description>
<guid isPermaLink="false">8f14e45fceea167a5a36dedd4bea2543</guid>
<link>http://www.endseven.net/?sPermalinkID=8f14e45fceea167a5a36dedd4bea2543</link>
</item>
<item>
<title>PHP: How do I preserve an aspect ratio?</title>
<pubDate>Thu, 09 Jul 2009 11:23:23 CST</pubDate>
<description>If you're doing a lot of programming that deals with thumbnails, listing images, etc.. then you're probably going to need to scale large pictures down to more appropriate dimensions while preserving the original aspect ratio. For example, you have 100+ images in your album and you want them all displayed neatly in a 10x10 grid of thumbnails, but you're too lazy to write a script that generates thumbnails to the appropriate dimensions.&lt;br /&gt;&lt;br /&gt;Here is a function that I've written that will take any dimensions and calculate it's appropriate (scaled to the maximum values or source values, depending on which is less) dimensions while leaving the aspect ratio intact. If the specified dimensions do not exceed the maximum width/height, then the source dimensions will be returned.&lt;br /&gt;&lt;br /&gt;&amp;lt;code&amp;gt;function jScaleDimensions($iSourceW, $iSourceH, $iMaxW, $iMaxH) {&lt;br /&gt;    if ($iSourceW &amp;gt; $iMaxW || $iSourceH &amp;gt; $iMaxH) {&lt;br /&gt;        if ($iSourceW &amp;gt; $iSourceH) {&lt;br /&gt;            // Source width is bigger than source height..&lt;br /&gt;            $iReturnW = $iMaxW; $iReturnH = $iSourceH * ($iMaxW / $iSourceW);&lt;br /&gt;        } else if ($iSourceH &amp;gt; $iSourceW) {&lt;br /&gt;            // Source height is bigger than source width..&lt;br /&gt;            $iReturnH = $iMaxH; $iReturnW = $iSourceW * ($iMaxH / $iSourceH);&lt;br /&gt;        } else {&lt;br /&gt;            // Source dimensions are equal to max dimensions..&lt;br /&gt;            $iReturnW = $iMaxW; $iReturnH = $iMaxH;&lt;br /&gt;        }&lt;br /&gt;    } else {&lt;br /&gt;        // Source dimensions are smaller than max dimensions..&lt;br /&gt;        $iReturnW = $iSourceW; $iReturnH = $iSourceH;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // Return the new values..&lt;br /&gt;    return array(ceil($iReturnW), ceil($iReturnH));&lt;br /&gt;}&amp;lt;/code&amp;gt;</description>
<guid isPermaLink="false">1679091c5a880faf6fb5e6087eb1b2dc</guid>
<link>http://www.endseven.net/?sPermalinkID=1679091c5a880faf6fb5e6087eb1b2dc</link>
</item>
<item>
<title>I got your tweet right here.</title>
<pubDate>Thu, 09 Jul 2009 10:39:33 CST</pubDate>
<description>Joe Kessen from &amp;lt;a href=&amp;quot;http://www.jkessen.com&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;jkessen.com&amp;lt;/a&amp;gt; hooked me up with Twitter today. I have be &amp;quot;in the know&amp;quot; if I want to tell clients that we're experts on everything internet-related. Just kidding! Because we are.&lt;br /&gt;&lt;br /&gt;You can &amp;lt;a href=&amp;quot;http://www.twitter.com/jklatt86&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;check me out&amp;lt;/a&amp;gt; on Twitter if you have nothing better to do. I'll be using it to let followers know about new articles, projects, applications, code snippets, etc. If you follow me, I guarantee that I won't post like a jag.&lt;br /&gt;&lt;br /&gt;And I refuse to say the word &amp;quot;tweet&amp;quot;. Ever.&lt;br /&gt;&amp;lt;b&amp;gt;EDIT: &amp;lt;/b&amp;gt; I can't &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; say it.</description>
<guid isPermaLink="false">e4da3b7fbbce2345d7772b0674a318d5</guid>
<link>http://www.endseven.net/?sPermalinkID=e4da3b7fbbce2345d7772b0674a318d5</link>
</item>
<item>
<title>Little people. Big box.</title>
<pubDate>Wed, 08 Jul 2009 16:48:44 CST</pubDate>
<description>Today I was looking for one of my old friends online and I stumbled upon Aron Ahlstrom's (aka &amp;quot;Hominy Jones&amp;quot;) web site, &amp;lt;a href=&amp;quot;http://www.insideabox.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Inside a Box&amp;lt;/a&amp;gt;. Apparently, he &amp;quot;is a big fat jerk who thinks he is cool because he makes stupid little dioramas, each of which contains one hermetically-sealed unit of unused love&amp;quot;, but I think they're pretty rad. Some of them are actually quite hilarious, like &amp;lt;a href=&amp;quot;http://www.insideabox.com/gallery/tentacle-tree-A.jpg&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;this one&amp;lt;/a&amp;gt;. If you need something to make you laugh, I would suggest checking out his website.</description>
<guid isPermaLink="false">a87ff679a2f3e71d9181a67b7542122c</guid>
<link>http://www.endseven.net/?sPermalinkID=a87ff679a2f3e71d9181a67b7542122c</link>
</item>
<item>
<title>Holiday Challenge from Design Co.</title>
<pubDate>Wed, 08 Jul 2009 16:07:50 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/holiday-challenge-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;Design Co. Holiday Challenge&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;During the holiday season, I was asked to create an interactive card that would be delivered to our clients. My obvious choice was to create it in &amp;lt;a href=&amp;quot;http://www.actionscript.org/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;ActionScript&amp;lt;/a&amp;gt;. We had just bought the &amp;lt;a href=&amp;quot;http://www.adobe.com/products/creativesuite/mastercollection/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Adobe CS4 Master Collection&amp;lt;/a&amp;gt;, so I figured that would be a good way to learn the new interface.&lt;br /&gt;&lt;br /&gt;We were all just sitting around the office throwing out ideas for what the card should be about, what the theme should be, etc.. and out of nowhere, I said &amp;quot;Why don't we just make a &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/See_%27n_Say&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;See 'n Say&amp;lt;/a&amp;gt;?&amp;quot; Obviously, we can't use the same functionality of the See 'n Say from when we were little nuggets, so instead of pulling the large blue thing to make it spin, there is a ripcord on the right-hand side. I had doubts about its functionality, but it turned out surprisingly well.&lt;br /&gt;&lt;br /&gt;So, we took our pictures, recorded some movie quotes, programmed some awesomeness and then put it all together to create the &amp;lt;b&amp;gt;Design Co. Holiday Challenge&amp;lt;/b&amp;gt;. All-in-all, it came out rather well (that's just my opinion). With more time, it could obviously have been better.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;javascript:jShowPopupSWF('Holiday Challenge', 'http://www.endseven.net/projects/holiday-challenge/flash/main.swf', 1000, 800);&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to take the challenge.</description>
<guid isPermaLink="false">eccbc87e4b5ce2fe28308fd9f2a7baf3</guid>
<link>http://www.endseven.net/?sPermalinkID=eccbc87e4b5ce2fe28308fd9f2a7baf3</link>
</item>
<item>
<title>Bolhas! v2. Yes, I brought it back to life.</title>
<pubDate>Wed, 08 Jul 2009 16:00:39 CST</pubDate>
<description>&amp;lt;img src=&amp;quot;http://www.endseven.net/images/misc/bolhas-v2-lg.jpg&amp;quot; class=&amp;quot;articleBanner&amp;quot; alt=&amp;quot;Bolhas! v2&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;My girlfriend (at the time) asked me to go with her to a cheer-leading competition in Deltona, FL one weekend. I went, but I had to sit in a hotel room.. alone.. while she went and did her thing. This game is a result of that weekend.&lt;br /&gt;&lt;br /&gt;It's called &amp;lt;b&amp;gt;Bolhas!&amp;lt;/b&amp;gt; and, if you haven't already noticed, it is now &amp;quot;version two&amp;quot;, which means that this is a re-make of a previous version (duh). I originally created this game three years ago (give or take) in the hotel room. I've since re-written the programming to make it faster, less of a memory-hog and a little (and I stress the word) more user-friendly.&lt;br /&gt;&lt;br /&gt;It's a game based on the &amp;quot;oh-so-popular&amp;quot; game called Sudoku. The objective is to fill the nine-by-nine grid so that each column, each row, and each of the nine three-by-three boxes contains the digits from one to nine only one time each. I stole the definition from &amp;lt;a href=&amp;quot;http://en.wikipedia.org/wiki/Sudoku&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Wikipedia&amp;lt;/a&amp;gt;. Click the link if you would like to learn more about Sudoku.&lt;br /&gt;&lt;br /&gt;Also, please don't hate on the name of the game or the font treatment used for the title. My ex-girlfriend picked the name - and as for the font treatment, I just don't care what you have to say about it. It's a re-make.&lt;br /&gt;&lt;br /&gt;Click &amp;lt;a href=&amp;quot;javascript:jShowPopupSWF('Bolhas! v2', 'http://www.endseven.net/projects/bolhas-v2/flash/main.swf', 700, 630);&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; to play the game.</description>
<guid isPermaLink="false">c81e728d9d4c2f636f067f89cc14862c</guid>
<link>http://www.endseven.net/?sPermalinkID=c81e728d9d4c2f636f067f89cc14862c</link>
</item>
<item>
<title>Hey, it's a new blog.</title>
<pubDate>Wed, 08 Jul 2009 15:56:39 CST</pubDate>
<description>Okay! So.. new site. Um. I'm going to be posting things here. Mostly relating to personal developments on my part such as &amp;lt;b&amp;gt;Actionscript&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;PHP&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;MySQL&amp;lt;/b&amp;gt;. One day, I hope this web site will rule the world.&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;EDIT&amp;lt;/b&amp;gt;: I've actually ported the three (yes, I said three) posts that were in my old blog over to this &amp;quot;new and improved&amp;quot; layout. I'm basically going to use this new layout/system/engine/what-have-you to learn some of the features and practices that I have seen being implemented in blogs and online communities lately. I do have to stay ahead of the curve, ya know.&lt;br /&gt;&lt;br /&gt;Thanks for stopping by.</description>
<guid isPermaLink="false">c4ca4238a0b923820dcc509a6f75849b</guid>
<link>http://www.endseven.net/?sPermalinkID=c4ca4238a0b923820dcc509a6f75849b</link>
</item>

</channel>
</rss>