Category Archives: Web Development

Another Common Early Start-up Mistake

In most common early start-up mistakes, Mark Suster talks about very interesting and insightful points. However, I feel like adding one more point, quite known but often taken granted, more specific to software or web start-ups.

If you are a software or web start-up, it’s really important to use the experience of founders (if they are come from technical background) or your core team to have following in order, as soon as possible.

Guidelines and best-practices: code, documentation (wiki), version-control (branching/tagging – when and how?), bug-tracking, testing (unit-tests, functional-tests), deployment, performance objectives and related stuff.

I would not go crazy (get distracted too much) about these initially but have these in place and encourage(mandatory – certain cases) everyone to contribute, follow, discuss and document. It’s lot easier to adapt things at an earlier stage rather than later.

I strongally recommend you to read Martin Fowler‘s article Technical Debt to learn more about the importance of having things in order.

Job Opening: Flash Platform Developer

We are looking for some smart Flash Platform Developers who can be part of our team in Allies Interactive Services Pvt. Ltd., Kanpur, U.P.

We are a design and development company in Kanpur, though we are small but we are ambitious and have a great vision.

I posted the details on Flex-India sometimes back, pasting the same (edited the typos and formatted) over here:-

I have been meaning to post this for sometime but thought would it be appropriate to do that here?

I am part of a small design and development shop in Kanpur, U.P. Where, we mostly do web development using FOSS, mainly LAMP.

I moved to kanpur around 10 months back with a desire to build a great Flash Platform Team that would work on non-trivial type service projects and some great product ideas.

I could now start doing it, after we have managed to fix a lot of issues mostly a nice office, a good culture and some projects and a product in pipeline.

I need an experienced Flash Platform developer in my team, who can help us to make our vision, desire and dreams a reality.

Since Kanpur is not a metro or fancy place to live, it takes more than just technical aptitude to be here. That is some more strong reason f.ex. A desire to be part of a growing team, desire to be close to family, desire to contribute in the development of IT ecosystem in North and/or a desire to prove, hell yeah we can do great stuff from anywhere, even cities like Kanpur 🙂

If you think, you want to help me by being part of my team and understand what I meant above, please don’t hesitate to contact me on [abdul dot qabiz at gmail dot com] off-list i.e. Direct email to me, please don’t reply here on this list.

As far as job description goes, I have already given an idea. However, we are looking for someone who understands web very well that is HTTP and other standards. Fundamentally good at problem solving, the real world ones, ActionScript, Flex Framework, Adobe Flash Player and AIR fundamentals and APIs.

Of course, good experience that says about in your behalf. We would also talk to you so things would get clear, i.e. If we are match for each other.

If you want to know more about company, please check out http://www.alliesinteractive.com

Available for consultancy, training and development

I am available for consultancy, training and development services. Following is the rough list of things, I can provide consultancy, training or development services for:-

  • ActionScript 1.0, 2.0, 3.0
  • Adobe Flash/Flex
  • Adobe Integrated Runtime (AIR)
  • Training on Adobe RIA technologies
  • Architecture for RIA
  • Web Application Development
  • Design and Architecture
  • Development for LAMP
  • Integration Services for Flex/AIR with existing Web Apps
  • Development Setup for small teams
    • Subversion Version Control
    • Bug Tracking System (Trac, Wiki)
    • Training on Development Life Cycle
    • Backup Strategies
    • Development Sandbox Setup for RIA development

    JFYI! You can check out my linkedin profile to know more about me. I am based in India and have around ten (10) years of experience, during this period I have worked for Macromedia/Adobe, Yahoo!, Mixercast and TIS and worked as independent-consultant, freelancer, trainer and co-founder. I have been working on various technologies/platforms (some listed above).

    I am a programmer who enjoys solving users’ problems whatever it takes (technology is no constrain). Having said that, I am passionate about ActionScript/Flash/Flex/AIR and Web (in general) which happen to be my core competencies.

    PS: Do you think, this is a shameless sales pitch 🙂

    Technorati tags: , , , , , , , , , ,,

    l10n and i18n with Yahoo! R3 project

    I came to know about Yahoo! R3 project (tools), which helps building localized and internationalized websites. The templating system used in R3 is not run-time, it’s rather static (compile-time) which means pages for different locale and intls are generated during build process.
    It’s simple to install using PEAR and requires PHP5+. I like the command-line interface of R3, though it’s easier to use it’s web-based GUI, as shown in documentation. I couldn’t get R3 GUI running, but it seems sometime is wrong, I am not able to get it running on my Mac OSX (Leopard) with Apache HTTP 2.2.x.
    Something similar is used with-in Yahoo!, I would not go in detail rather let you explore R3, which is indeed an exciting project. I am, hopefully, going to use in some project, if I do that, I would post more about my experience with R3.
    Technorati tags: , , , , , ,

    Development Setup

    I have been thinking a lot about a good and scalable development setup for small teams.That means, as team size grows, things don’t have to be changed.

    Server machine(s):-

    I am planning to have all of these one server machine (IBM) in virtualized environment. Subversion and Trac can go in one VM, perhaps under Apache. Second VM can have Apache for web-apps, third VM can have mysql, fourth VM can have MailServer and ActiveDirectory/LDAP?

    Do you think above makes sense?

    Developer/Designer workstations:-

    Though there should not be any restrictions on using a development IDE of choice, but I have realized if entire team uses same IDE things get far easier. The development workflow is easy, knowledge sharing and management is easy. Eclipse, which Aptana is based on, can be used for variety of projects.

    Ubuntu is good operating system, I have been using for over one year, not regularly but quite often. There might be Windows/OSX boxes for designers.

    Why do we need Apache and MySQL on each workstation?

    I think, developers are more effective if they have their own sandbox. They can play with code freely, take certain risks and innovate. There is no harm done. We do face issues, when it comes to sync mysql data into local mysql instances, I think it can be done via some scripts.

    Virtualization can be done on client and I am thinking to do it, specially for folks who are not comfortable with Linux, so they can be on Windows while they also have access to Linux VM, they are encouraged to use Linux VM. They can use Windows box (Host), if something is messed up in Linux VM and there is strict timeline that doesn’t allow to fix VM.

    Over the period, these developers would be comfortable with Linux and that is the time they can start using real Linux box 🙂

    These are some thoughts, I might be missing something here. I hope, I would write more in another post.

    As you know, I have been on break and been thinking on all these things. BTW! I don’t work with Yahoo! anymore, once I am done with break I have to figure out what to do. Perhaps, time to be in my own city and do something my own (consultancy, startup or something like that). Heh, that’s news, if you have read so far 🙂

    Technorati tags: , , , , , , , , , , , , , ,

    Google Gears: ResourceStore and same-orgin policy

    I spent some time playing with Google Gears LocalServer (ResourceStore) to cache some video files from YouTube/Google-Video on client. It seems, you can only cache (store) data from same-origin. I might be wrong, but this is what I found.
    I would spend more time to find out if there is a way.

    Update: Getting YouTube Video (FLV) URL

    It seems, YouTube has started using Google cache-servers to serve Flash-Videos (FLV). There is now very easy way to get YouTube FLV files.

    http://cache.googlevideo.com/get_video?video_id=<video_id>

    That’s it, video_id can be found at various places:-

    If you click on following link, you would be prompted to download flv 🙂

    http://cache.googlevideo.com/get_video?video_id=M0ODskdEPnQ&origin=youtube.com

    Update (Jan 11, 2008): Updated the URL for getting FLV from Google Cache server. Thanks to Rohan for sharing updated URL format.

    Update: It seems cache.googlevideo.com doesn’t work, atleast not for me?

    Technorati tags: , , ,

    Google Gears Rocks!

    I just installed Google Gears (Beta) and checked out some examples. I love the all the features (SQLite-DB, Cache-Server and Workerpool to manage script execuation), Google Gears surly rocks!

    Some links to get started:-

    Technorati tags: , , , ,

    PHP Proxy Script for cross-domain requests

    I wrote this php-proxy-script and have been using for different purpose (loading cross-domain data like text, xml, swf, image, etc. or for YouTube REST API  in flash, flex applications).

    People keep asking about proxy-scripts in forums to manage various things (cross-domain AJAX issues). Download the proxy.php.txt, and use to solve such problems. You can also fork it on Github, and improve it.

    Usage:

    http://yourserver.com/proxy.php?url=<url_encoded_url>[&mimeType=<mimeType>]

    Examples:

    • To load XML/Text:
      http://yourserver.com/proxy.php?url=http%3A//abdulqabiz.com/blog/index.xml
    • To load a SWF (binary-data):
      http://yourserver.com/proxy.php?url=http%3A//abdulqabiz.com/files/some.swf&mimeType=application/x-shockwave-flash

    Technorati tags: , ,

    Memory Object Caching System in Java (J2EE)

    I needed a memory-caching system in some of features, I wrote simple-caching system but it was too simple and can’t scale (distributed).

    I have heard about memcached and found it’s Java port j-memached which seems to be little complex to setup?

    I looked at JCS and EHCache. I chose EHCache because it was already in use somewhere in our application and I could do most of things with it:-

    • J2EE servlet caching.
    • General stuff (Programmatic APIs to cache things, even if it’s simple HashMap).

    It was easy to setup EHCache. In some servlets, I was able to enable caching without touching servlet code:-

    • Write filter classes, which extends from EHCache-construct classes
    • Add cache entry and configuration in EHCache.xml
    • Add entry of filter classes in web.xml

    That’s it, caching is in place for simpler things but complex things and more control, I am going to use EHCache API.

    Caching is important part of any web-application, one needs to think about it while designing the system. Some people might not agree and think it as premature optimization. I believe, if you know about requirements (scalebility or expected-user-count) then there is nothing wrong to think about optimization.

    BTW! Do you think there is better option than EHCache? Please let me know. Thanks.

    Gmail: usability/accessibility issue

    Gmail uses mouse-down event instead of click (mouse-button-release) at many places (Compose Mail, Inbox, Chats etc) in it’s frontend. 

    I face following problems because of their wrong choice of event (mouse-down instead of click):

    • I can’t select text while in list view. For example, if I want to select the sender’s name or subject, instead it opens the mail thread.

       

    • If mouse-button is pressed by mistake on any of links (Compose Mail, Inbox etc), associated action takes place and I am forced to click on browser’s back button (or equivalent) to get back to previous state (screen/view). I don’t get a chance to change my mind by releasing mouse-button outside of link area.

       

    Technorati tags: ,