April 2nd, 2009 by
jason
I have a network file server setup in my basement for all of my storage needs and also as a media server (using Boxee, seriously the best media application out there Check it out). This server used to be my main development machine until I got my new one and turned that one into my network server. It’s got a RAID system attached to it for all of my storage. Anyways, yesterday I finally got around to switching that server to Linux. I love Linux and use it anytime I have need of a server of any sort. I went with Fedora 10, which is great by the way. Install was smooth without any errors and it runs great. But I noticed right away that I was having problems creating network shares. So I configured Samba for my Windows shares and that worked perfectly. My Windows machine can access the shares with no problem and it’s extremely fast. But I noticed that my Macs could not connect at all. My first try was to setup NFS shares. I could never get my Macs to connect at all using NFS. Then I install AFP (AppleTalk) and my Macs could then connect to all of the shares without any trouble. BUT, with one awful side effect….the transfer rate between the Macs and the Linux server was dead slow. I’m talking like 50KB/s or less. Not acceptable at all. I searched all over and never could find a fix for this. Luckily one of my friends Julien (see his blog suggested a tool called MacFusion. This tool not only solved my problem and made my network access ever better than before, but also is simply an amazing tool that you really should have if you have a Mac. It’s basically an open source application that allows you to mount remote SSH and FTP server as local volumes on your mac. So my problem was solved. I now have MacFusion mount my network shares as SSH volumes and all is well! This also is great because you know that you’re using a network protocol that is reliable and very secure. Anyways, I wanted to share this in case anyone else is experiencing the Linux/Mac network issues or just in general for anyone that has a Mac and works with remote servers at all. Great great tool.
Posted in server-side, Linux, Mac, Networking |
No Comments »
February 1st, 2009 by
jason
One of my good friends decided to put together a group here in town and assemble a bunch of great musicians together to put on all kinds of different shows and showcase local musicians. Our 1st show that we did was Pink Floyd’s Dark Side of the Moon. This was a blast! We played the entire album live from start to finish with a full lights & video show to go along with it. We also had hired a stage designer to come in and make the stage look like we were playing in a crater on the surface of the moon! It was incredible to play there. We performed at our local Orpheum Theater and sold the place out! It was a great opportunity for me as well to play a slightly different style than I’m used to. I’m currently working on producing the video from the concert, but here is a 1 camera angle preview of the whole show so far:
Dark Side of the Moon
Let me know your comments! I’ll post any more shows we do as well.
Here is the website for our group: Sioux Falls All Stars
Posted in Uncategorized, Music |
No Comments »
October 23rd, 2008 by
jason
I usually will use the Google GeoCoding service to validate street addresses in my Flash/Flex apps, but for this certain project I needed some other options, so I ended up coding my own Address Parser in Actionscript. I had searched quite a bit on Google and hadn’t found one, which was surprising to me. Anyways, I thought I’d share this in case anyone else has need for it, although using Google’s GeoCoding service is great. Anyways, it’s here for download if you’d like to try it out. I didn’t put an Actionscript 3 version of it in the .zip yet, but it’s such a simple class it would take anyone about 2 minutes to convert the code to Actionscript 3. Anyways, hopefully it helps some of you out.
Posted in General, Flash, Coding |
No Comments »
September 28th, 2008 by
jason
One of my clients brought it to my attention today that there is a problem with using Flex RemoteObject setCredentials() and the latest version AMFPHP. Basically…..it doesn’t work! Not only does it not authenticate anything, it throws a nice nasty little error like this (which seems like it’s not possible to fix at this point):
Channel.Ping.Failed error
OR
The class {Amf3Broker} could not be found under the class path {/var/htdocs/amfphp/services/amfphp/Amf3Broker.php}
After spending quite a few hours on this, I came to the conclusion that we either needed to abandon idea of using setCredentials() or we would have to move to a different AMF platform. But, I have used AMFPHP for a long time now and generally really like how it works. Luckily I stumbled upon a little known feature of AMFPHP called ‘beforeFilter’. Basically, if you’re AMFPHP service class has a method called beforeFilter(), it will be executed before EVERY method is called in the class. And if beforeFilter() doesn’t return true, then the requested method execution is denied! Excellent! So basically you can write a custom beforeFilter() method and manually use AMFPHP’s Authentication class to authenticate and login/logout users in the Session, just the exact same way that setCredentials() would work for you.
So, I’ve posted an example AMFPHP service class here that demonstrates this. Also, you can test this AMFPHP service class using the AMF service browser by going here.
Anyways, I hope this helps some of you!
Posted in Coding |
3 Comments »
September 23rd, 2008 by
jason
I prefer to work in only Flex or Flash for all of my projects. I like how great layout and design are in Flash and/or Flex and all of the capabilities that come with it. I got so tired of fighting with HTML/CSS layout and browser rendering differences, etc. Ugh. Almost enough to want to quite web work altogether! But, so many clients, when you tell them you’re planning on using Flash/Flex, have a common complaint/misconception that if you use Flash or Flex that you will lose all SEO data and search engines will not be able to index your site at all. While this is technically true, since none of the search engines are able to open up .swf files (yet, Google is working on this), this is still not a dead end at all! SEO can be just as good with Flash/Flex content as it can with HTML content. You just need to plan it properly.
For each Flash site I do I have a SEO admin area where the owner can specify separate pages of the site and also set the keywords, title, and description for each of those pages. Each of those pages should exist on the server as a separate PHP file and open the Flash site to the corresponding page (easy to do by simply passing flash a page id from HTML or Javascript). Each of these PHP pages is also programmed to pull the title, description, and keywords content from the database for that page.
So that can solve menu problems in flash, but what about the site content? External links? Also easy to do. As much as possible, store all of your site content in the database and populate it in your Flash site. Then on your PHP page, simply connect to your database and dump all of the dynamic content (text, external links, anything!) onto your page. But, how do you keep that from being displayed to the user? Well, DO NOT use Hidden Text. At first I thought of using hidden text but after more research I found that search engines actually frown upon hidden text and it can actually hurt your SEO. So do NOT use Hidden Text. Instead, the solution is to output all of that content between <noscript></noscript> tags. And there you go! The text will not be rendered in the user’s browser and will be completely visible to all search engine crawlers. Search engine crawlers do not support javascript, so they will definitely see that content.
I also had searched around a bit for a good system to use with Flash/Flex sites to allow deep-linking and the usage of the Back/Forward browser buttons. So far I really like the SWFAddress system. It’s easy to use and easy to integrate into your sites/apps.
And let’s not forget about the importance of sitemaps! I also have my SEO admin system re-generate the sitemap.xml and urllist.txt files in the root directory of the website every time that a change is made (urllist.txt is a type sitemap that Yahoo! crawlers use). This ensures that a up-to-date sitemap and list of site urls always exists for the robots and crawlers to find. Google also has a handy HTTP location that you can submit/re-submit a sitemap to. So I also have my SEO system automatically re-submit the sitemap to Google every time it has been updated. To do that simply open this URL:
http://www.google.com/webmasters/sitemaps/ping?sitemap=http://www.mysite.com/sitemap.xml
To do this in PHP without opening a new window do this:
$sitemapURL = "http://www.google.com/webmasters/sitemaps/ping?sitemap=http://www.mysite.com/sitemap.xml";
$httpHandle = @fopen($sitemapURL, "rb");
$output = @stream_get_contents($httpHandle);
@fclose($httpHandle);
A robots.txt file is also helpful to ensure that the robots will scan your entire site. If you want the robots to scan everything, then create a robots.txt file in the root directory of the website that contains this code:
User-agent: *
Disallow:
So, that’s the basics. Really not a lot of work if you just maintain most of your site’s text content, links, etc, in a database so you can get all that information for the search engines. Hope that helps!
Update: Google has now releaseed information that they can now extract text content from .swf files: Article Here
This is definitely a great improvement I hope to see some great results form it. For now, I plan to continue using a custom SEO system until I can see that all of the search engines have adopted this process and that it works as well as it should.
Posted in Flash, PHP/MySQL, Coding, server-side, Flex, SEO |
4 Comments »
September 8th, 2008 by
jason
To accommodate the needs of one of my clients, a Realtor who wanted a dynamic template site that could be replicated for other customers and run from a central database and also be able to plug into to any MLS servers in the whole country, I created a new personal project of mine called FlashRETS. After doing some research on RETS servers I quickly realized that there was no Flash RETS solution available. This project’s goal is to create a fully featured and MetaData driven Actionscript API for RETS servers. Only now am I realizing how much of an undertaking this really is! The system is currently being used on my clients new website, but is definitely not anywhere close to a releasable state yet. On the serverside I’m using AMFPHP and a PHP RETS library called phRETS to access and manipulate the RETS data and return it to the Flash API. I’m pretty excited about getting this closer to completion and seeing if it will benefit others as well. Right now it’s only available in Actionscript 2, but as soon as it’s done I will immediately make an Actionscript 3 version. I also plan on creating a set of Flex Components for interfacing with the API and displaying all of the data such as property searches, etc. The website for this project is http://www.flashrets.com. Currently it is just a Trac site but as the project progresses I plan on making a full site for it.
Posted in Flash, Flash Remoting, Projects, PHP/MySQL, Coding, Flex |
No Comments »
February 28th, 2008 by
jason
So we got back from Amsterdam last night. Wow, had a great time! Quite an amazing city. I just wish we had more time there to look around! Got to hang out and party with some of my friends as well…Thijs, Valerie, Louisa, Storm, etc. Flash In the Can was amazing, of course. There were so many great presentations. Looking forward to getting the videos from the event so I can hopefully see some of the presentations I missed. Anyways, below is a link to my flickr photos. I’ve uploaded the Amsterdam photos we took. Unfortunately, I don’t really have any photos from the FITC event itself since my wife had the camera during the days while I was at FITC. But, if you search on flickr for ‘fitc amsterdam’, there’s quite a few uploaded pics of the event already.
Our Amsterdam Pics
Posted in General, Flash, Fun, Coding, AIR, Flex |
No Comments »
February 20th, 2008 by
jason
I am working on a Flash 8 Actionscript 2.0 project here this week and remembered quickly that I was never a fan of the EventDispatcher, EventBroadcaster, or ASBroadcaster systems that Flash provides for Actionscript 2. Luckily I remembered that I had created my own simple EventDispatcher class that I liked much better. I hated the fact that the mx.events.EventDispatcher class didn’t allow you to assign specific methods to events, etc. So anyways, I thought I’d post my EventDispatcher here for anyone looking for a simple yet effective event dispatcher system for Actionscript 2.0. You simply extend this EventDispatcher class to gain the common event methods: addEventListener(), removeEventListener(), and dispatchEvent().
Method definitions:
addEventListener(type_str:String, listening_obj:Object, method_str:String)
type_str - The event type/trigger
listening_obj - The object listening for the event
method_str - The name of the method defined on the listening_obj to be triggered when the event is dispatched
removeEventListener(listening_obj:Object, type_str:String, method_str:String)
(same method parameters as explained above)
If you only define the listening_obj parameter, then ALL events registered for that listening object will be removed.
If you define listening_obj and type_str, then any event listeners for the listening object that match the type_str will be removed.
If you define all 3 parameters, then only 1 exact event listener will be removed.
dispatchEvent(evt_obj:Object)
Similar to the Actionscript 3 EventDispatcher, this object must have a ‘type’ variable (the event being dispatched) and any other data you would like passed on to the event listeners. A ‘target’ variable may also be defined, although if it is not defined, the EventDispatcher will automatically create that variable and reference it to the object dispatching the event. Also similar to the Actionscript 3 EventDispatcher, this one will create a ‘currentTarget’ variable in the event object that will always reference the current object the event object is at. If you ‘re-dispatch’ an event, the ‘currentTarget’ variable will change to the object dispatching the event as it should, while the ‘target’ variable always references the 1st object to dispatch the event.
You can download the EventDispatcher here.
Posted in Flash, Coding |
3 Comments »
January 29th, 2008 by
jason
I’m working with a small group of friends on a great open source projects that will become a P2P Social Flex Wiki / awesomeness! The idea is to create a social P2P Flex Wiki (with scripting support), for now called the Collab Platform. We’re talking about a desktop app built with Adobe AIR and Python that is a P2P platform also supporting content management, file sharing, video/text chat, VOIP, instant messaging, email, and on and on. It’s in the initial planning stages right now and is something I’m very excited about working on. Some of the components of this that we’ll be using are already ready. Such as PyAMF which provides AMF support for Python. Anyways, check out the main Collab project site to see all of the ideas, plans, and sub projects.
http://www.collab.eu
Posted in Flash, Projects, Coding, python, AIR, Flex |
No Comments »
January 25th, 2008 by
jason
I’ve been wanting to attend one of the Flash In The Can (http://www.flashinthecan.com) festivals for quite some time now, but every year it just ends up being too expensive to get there and pay for the tickets. Well, this year I finally decided to go. The 2nd to last FITC event of the year is in Amsterdam and has an amazing line up of presenters and presentations. Check out the Amsterdam event page for more info on the festival and the presentations. Plus, a lot of friends of mine will be there and are having a party the night before the festival starts. Time for some fun in Amsterdam! =)
Posted in Uncategorized |
2 Comments »