Email : Password : Forgot?
 
 

Coming soon!

Octabox web platform is currently under development. Leave your Email address here and we'll let you know when it's ready:

Send
 
 
Join Octablog readers
07
Jul

Web 2.0 is Boxes

by Eran Galperin on 2:55 am | 0 Comments
Categories: CSS, Web Development

The Web 2.0 concept has been around for a while (coined by O’Reily Media in 2003) and it’s basically synonymous with community driven accessible web sites / web applications.

One of chief characteristics of Web 2.0 websites is the layout. Web 2.0 design pushes for simplicity, with large fonts and a lot of empty real-estate. The use of colorful icons to spice up the design is common. Another common feature of web 2.0 pages is the obsession with Rounded Corners. As most web developers will tell you, Rounded Corners are a thorn in the backside. They look good in photoshop, but when you need to make variable sized containers with rounded corners against gradient backgrounds (another hallmark of web 2.0 design), things get messy.

The Octabox development team has too sinned the rounded path, incorporating rounded corners into most graphical elements, spending countless hours trying to come up with the ultimate solution to make it work against a background gradient pattern, allowing for drag-and-drop rounded corners windows that will look good over any surface and what not.
(more…)

20
Jun

A review of the Zend Framework - Part 3

by Eran Galperin on 2:06 am | 4 Comments
Categories: PHP, Web Development

[This is part three of a three part review. Part one can be found here and part two here]

In previous parts I’ve covered some of the main components of the Zend Framework, including database abstraction and the Model-View-Controller pattern for separation of logic from presentation.

This time I will go over some of the smaller modules in terms of scope, yet still some of the more important and useful in my opinion.

Zend Filter and Zend Validate - Data validation and filtering

Validation and filtering of information are integral parts of a dynamic website operations. User generated input (received usually via a GET or POST request, e.g from an HTML form or a URL address), should be treated with caution. The input should be filtered as to not contain harmful data (see: SQL injection attacks) and validated to ensure it is what it should be - for example, in the case of HTML forms checks are made to ensure that all required fields are filled out and contain the expected type of data.

Filtering and validating is a common procedure for web developers, so naturally the Zend Framework includes components to handle such tasks. Those components are the Zend_Filter and Zend_Validate class hierarchies.

The base classes are of Zend_Filter and Zend_Validate are extended by specific filters and validators, each implementing a filter() or validate() method accordingly. The filters/validators class names are self-explanatory, for example Zend_Validator_NotEmpty checks that a variable is not empty, and Zend_Filter_HtmlEntities uses the htmlentities PHP function to filter a string.
(more…)

11
Jun

Experiencing Offshore Outsourcing

by Adam Benayoun on 6:56 pm | 5 Comments
Categories: Found|Read, General, Web Development

A Few days ago I wrote an article about my past experience with Offshore Outsourcing for Found|Read .
I am re-posting it here for our readers.

As a project manager, I frequently have had to deal with outsourcing work, and offshore outsourcing, specifically. From my past experience, I can only say that while sometimes the costs are very low and, therefore, somewhat seductive, in the long term you generally end up paying more than you expected to.

In early 2005, a friend contacted me and requested that I design a website for his company. He also asked me to take on management of the project, and find the appropriate coder(s) to do the work. The specifications were really simple: build a dynamic website with a few, simple, administration capabilities and a Content Management System.

“That’s not rocket science,” I told him. “It should be completed within few days,” and I hung up. (Would that it were so!)

At the time I had no available coder to work on the project, and while I could have rented a local freelancer to ease my own pain of overseeing the project as manager, I decided to outsource this simple task to an offshore freelancer.
(more…)

04
Jun

A review of the Zend Framework - Part 2

by Eran Galperin on 6:18 am | 3 Comments
Categories: PHP, Web Development

[This is Part two of a three part review. Part one can be found here]

When I wrote the previous part of this review, covering the Registry and Database classes of the Zend Framework, the Framework was still at version 0.9.3 Beta. It has since reached version 1.0.0 Release Candidate, and interestingly enough, most of the changes affect the components I’ll be reviewing this time.

Zend_Controller, Zend_View - Model-View-Controller architecture

A Model-View-Controller implementation seems to be all the rage these days in web-development, and for good reason (though some wonder whether it realy is so). Briefly on the Model-View-Controller pattern - In a (web) application of growing complexity, it becomes paramount to separate logic from the presentational layer, allowing logic to be changed without requiring change in the presentational layer. Anyone who has developed for web in a straightforward manner, mixing client side code (e.g PHP) and presentational code (HTML, CSS), probably has noticed an increasing difficulty in making changes to a script as it grows in size and complexity.
In a manner of speaking, Style Sheets apply the same logic behind the MVC pattern - allowing separation of information from styling, and for reusability of styling code (Style Sheets). For more on the MVC pattern read the Wikipedia page or this article on PHPwact.

The Zend Framework provides the View and Controller parts of the MVC scheme, with the Model layer provided by the web developer according to the needs of a specific web-development project. Most models involve database access, and the Zend_Db_Table provides the building blocks for such models as I’ve mentioned in Part 1.
(more…)

25
May

A review of the Zend Framework - Part 1

by Eran Galperin on 8:31 pm | 9 Comments
Categories: PHP, Web Development

[Note: Due to its length, this review has been split up in three. This is Part 1 of a three part review, Part 2 can be found here]

A software framework is a reusable design for a software system (or subsystem) [quote: Wikipedia on Software Framework].

The Zend Framework is a software framework written in PHP and aimed to provide useful and reuseable solutions to (mostly) common web-development issues.
Zend is the company behind the PHP engine, which makes it especially qualified for creating such a framework, all of the developers involved in the Zend Framework project being current/past web-developers with a rich background in the web environment.

While there are many other PHP frameworks available at varying levels of maturity and stability, we chose the Zend Framework for reasons I will elaborate later on. Some of the more prolific PHP frameworks available are CakePHP, Symphony and Prado. For a more comprehensive list, check out this Wikipedia entry and this article on PHPit

(more…)

20
May

As many other web developers probably do – we encountered a layout problem: too much information to display on the page, too little horizontal space, and a strong desire to avoid scrolling when possible.

So, after a nice brainstorming meeting, with a few possible solutions in the air – we decided to give tabs a try. I took the concept and started playing around with it, trying to fit it to the rest of the design. As I went along, things very quickly fell into place, and most of it felt right.
After showing the first draft to my colleagues, it was obvious to all of us that it is the right step to take. So, after a few more rounds of fixes and tweaks, the design looks good, and the implementation of tabs begins.

The tab design has many up-sides:
- Functionality is clear and stays intuitive
- Much screen space is conserved for content (1-2 text lines instead of a menu column that takes up a significant chunk of vertical space)
- Spices up the design, adding some graphical elements that make the overall feeling more interesting.

Thus far I’ve encountered only one downside – fitting many different content panels with tabs – when there are more than 8-10 tabs, it starts to get a bit tight. But we’ll find the solution to that as well.

Here are the before and after designs:
No Tab With Tabs

That’s it for now,
Tal.

07
May

Alpha Week #6: Updates

by Eran Galperin on 4:16 am | 0 Comments
Categories: General, Web Development

Alpha week #5 has officially ended today, following our weekly meeting. A quick recap of developments in recent weeks:
- User interface API is ready for integration in the Octabox service. The UI API (don’t you love those acronyms..) has been the main focus of development in recent weeks, its core is very nearly done and we’re quite pleased with the results (I will ellaborate on the API in upcoming posts).
- Several graphical widgets were created/updated using the UI API, such as Rounded Corners widget (using all CSS techniques known to man), DivTable widget for esoteric layout positioning, Dialog Box widget with outside buttons and more.
- Statistics recording inside the Octabox service.
- New designs and UI approach for several modules: Private Messages, User Preferences, To-Do. Soon all modules will recieve overhaul for the new Tab and Tag oriented approach.
- Small update to ver. 0.9.3 of the Zend Framework. Upcoming: A review of the Zend Framework

Further updates are forthcoming

14
Apr

Octabox ALPHA v0.15 - Migration to jQuery

by Eran Galperin on 1:37 am | 1 Comment
Categories: AJAX, JavaScript, Web Development

Two weeks into the Octabox Alpha testing, we’ve released our first major update, Octabox v0.15.
Latest release didn’t include any new features, but rather was focused on improving performance across the board.

Up until this version we have been using the Prototype Javascript framework to handle client side scripting tasks, and the Script.aculo.us Javascript toolbox to handle User Interface widget implementation (draggable windows, animations and so forth).
These two are most potent and very mature code libraries - however, combined they weigh on the upper side of 200kb (full featured with no compression), which is a lot to download when latency is high for an http connection. After running those libraries through basic compression techniques (removing whitespaces and shortening variable names) we got it down to around 141kb. Major improvement, but still a lot. Unfortunately, the Prototype library is incompatible with more advanced regular-expression compression techniques, like the one used by Dean Edwards’ Packer (It is possible to use Packer on Prototype, but it requires tedious modification to the Prototype script file, and lots of debugging ensues). So, we’ve decided to migrate to the jQuery Javascript framework.

(more…)

24
Mar

Now is when it’s at

by Eran Galperin on 5:08 pm | 2 Comments
Categories: General, Web Development

The Alpha release of the Octabox service is drawing near (a week from now) and you can feel the excitement in the air. There’s a lot yet to do, and not enough time to do it. But I believe in working under pressure - for some reason, the closer I get to a deadline the more productive I become, both focus and intensity rising up to much higher levels.
I am writing this blog now as I’m taking a break from writing another “blog” titled “Lab report in Signal Analysis and operation of Lock-in Amplifier” which is due tommorow at the University. Did I mention schedule is tight around here? Good thing I don’t waste too much time on sleep.

Being the main and lone developer/programmer on this project at this point means that most of responsibility for Alpha version shipping on time is on my shoulders. There’s nobody to share the load. If I say that I can meet the release schedule, then it’s my sole responsibility to do so. Today, in our “Board meeting”, I had to sort of calm my partners, Tal and Adam, both of which were ready to postpone the release date, seeing that much is yet to be done and only one week left to the date we’ve set. I hope their trust in me would be justified.

(more…)

09
Mar

Now Serving: Octabox

by Eran Galperin on 6:48 pm | 8 Comments
Categories: Web Development

Choosing the right web server backend for the Octabox service was not as straightforward as it has been for me in previous endeavors.
The demands of a large scale web-application are so very different from a those of a simpler page-serving site.

In the end the choices came down to two:

Apache httpd (latest ver. 2.2.4) - Old faithful. Apache has served me exclusively thus far, it has great support, it’s very stable and its performance is certainly up there with the best of them.

Lighttpd (latest ver. 1.5.0 Pre-release, 1.4.13 Stable) - A lightweight alternative. Lighttpd (pronounced Lighty) claims to outperform its heavier counterpart.

In a nutshell, Lighttpd appears to have better support for Asynchronous transactions (aka AJAX) and also built in support for AJAX push technology (aka COMET, which I will expand upon in upcoming posts. In the meantime checkout Alex Russel’s Blog, and the COMET page in Wikipedia) which we would be relying much upon in the Octabox service. The performance gain in those areas have convinced several prominent web-applications to go the Lighttpd way (Youtube, Meebo and Wikipedia among others).

For a performance comparison, Lighttpd provided benchmarks of their own (the page is a little messy, you’ve been warned) which claim superiority. Not everyone agrees. And some more benchmarks for good measure (taken from a blog on Ruby on Rails performance).
Even more benchmarks from a competing server technology, Litespeed.

So what does this all mean

Well, for now we intend to give Apache and Lighttpd equal chance at the being the backend to power Octabox. I am personally leaning towards Lighttpd from the impressions I got concerning performance and support for cutting-edge technologies, and hopefully we can provide our own benchmarks concerning the two solutions in the near future.

« Older Posts