Ted Patrick > Flex Evangelist > Adobe Systems


IFBIN 2.0 Development

I am working on IFBIN 2.0 all week. It has been 1 year since I worked on IFBIN and it has been far too long. I am going to be blogging my development of IFBIN 2.0 and launching the new version of the service with the Apollo Public Beta in 2007.

IFBIN 2.0 is a client/server application that leverages the internet for data exchange over port 80 HTTP/HTTPS. The desktop IFBIN client allows an end user to find/download/upload software examples from the IFBIN repository. The server side is an API that is accessed by the Apollo client. With the exception of the IFBIN file format, all data is stored and transmitted uses XML. The IFBIN file format contains meta-data about a file system and the data within the file system itself. Having 1:1 files per examples on the server side makes file management much easier, especially given the files named with the SHA1 key of the file data. This allows for some great server automation in dealing with files as file naming can be dynamically applied to the uploaded files.

IFBIN Server Stack:
- THTTPD (static binary data over http)
- TurboGears 1.0 (CherryPy, SQLObject, Kid)
- Python 2.4.4
- MYSQL
- FreeBSD 6.1 Minimal/Optimized

IFBIN Client Stack:
- Flex 2.0.1
- MXML & ActionScript 3
- Apollo Runtime

The server will use THTTPD, TurboGears, Python 2.4.4 running on FreeBSD 6.1. The goal is for the server to be very scalable while supporting rapid development. In this case, Python is ideal on FreeBSD 6.1 within a TurboGears instance. The IFBIN 1.0 client and server used Python and leveraging this on the server is ideal.

The existing IFBIN Server is actually 100% static and is generated onPublish via a Python API. Using URLReWriting on Apache the Flex 1.5 UI loads data remotely to present the UI Data. This model worked very well as a full republish took 2sec writing some 1200 files to the file system. The server will have as few dynamic URLs as possible by by majority most content will be statically cached.

The dynamic APIs will be:

- User.Register()
- User.Login()
- User.Reset()
- User.Profile()
- Example.Search()
- Example.Upload()
- Example.Rate()
- And some surprises... :)

These areas will all be written using TurboGears and Python. I believe that this will allow for very rapid development of the backend for IFBIN 2.0 as the backend is simply an API. Flex will provide the complete UI within the Apollo application.

Building IFBIN last time was a blast and I expect to learn a ton. I have put a lot of thought into IFBIN 2.0 and I look forward to its release in 2007.

More to come!

Ted ;)

7 Responses to “ IFBIN 2.0 Development ”

  1. # Blogger rtretola

    This is great news Ted, I am glad it is now official and I look forward to contributing to IFBIN again.

    Rich Tretola
    EverythingFlex.com  

  2. # Anonymous Paulius Uza

    Great!

    I spent the last 4 months working with challenging Actionscript 3 projects and now I would like to contribute to IFBIN2.

    Please contact me paulius[a]avenueinteractive.com

    Paulius Uza  

  3. # Blogger Ted Patrick

    Paulius,

    Everyone will be able to upload to IFBIN. 2.0 will support projects for Java, CF, .NET, Ruby, Flash, Flex, HTML, AJAX, PHP, Python, and all Adobe tools/servers.

    - Searchable
    - One-click-downloads
    - Two-click-uploads
    - Easy & Fun

    Ted :)  

  4. # Anonymous Patrick Mineault

    I wonder, why didn't you just use flashticle instead of writing your own xml packets? Also, considering the issues with the adoption of IFBIN 1.0, why didn't you stick to a web interface? I think it's the primary reason why the original failed, and I have yet to find a good reason for an offline app here, so other than for the sake of using Apollo, why?  

  5. # Blogger Ted Patrick

    flasticle would be great but then I would have to write another API for everyone else. I want to make sure that 2.0 can be syndicated so having to write REST 2 times in AMD then REST makes no sense.

    IFBIN 1.0 has had 95,000 installs.
    IFBIN 1.0 currently 3500 people a week download from the service.

    The failure was charging $$ for the service and limiting development.

    So why Apollo? Let me blog that one.

    Ted :)  

  6. # Blogger shailesh

    Was there any reason (other then IFBIN 1.0 being based on Python) to choose TurboGears over ROR or Spring-Hibernate  

  7. # Blogger Ted Patrick

    I love Python a language. Nothing against Java, CF, Ruby but I am more productive in Python. I already have several libraries for IFBIN in Python so less to test, less to code, and faster delivery. On this project I have very limited time so I need to move very fast to get things working reliably.

    I am sure that if others were writing it they might make different choices. Regardless of what technology is used, it is the result that is most important, not the development road travelled.

    Ted :)  

Post a Comment



© 2008 Ted On Flex