Scaleable software solutions ultimately determine what applications remain limited to a few hundred users and a couple of thousand transactions and those that can truly support millions of users and transactions. Scaleability is essentially the software equivalent of "separating the men from the boys" (and the women from the little girls too!) *. One of the criteria that many companies unfortunately do not consider when buying off the shelf software or ordering a bespoke custom solution is the medium and long term growth of their business. The applications that are chosen need to be able to grow along with growth in business and the client base - or otherwise companies end up being faced with expensive migrations to new systems that can handle their new requirements.
Our way of ensuring that this does not happen is to have a scaleable design from the ground-up, with a well-thought data model that can be distributed amongst multiple servers, and possibly federated and sharded if need be. The software itself also needs to be capable of running in a distributed fashion, with algorithms that are friendly towards parallel processing techniques and frameworks such as MapReduce. Some choices in large scale algorithm design can be counter-intuitive, as such systems tend to optimise for maximum consistent data throughput rather than unpredictable short bursts of speed followed by long delays and waits.
Naturally, the data processing itself needs to deliver high performance over huge datasets - at Charonite we are generally not happy with anything that cannot process a couple of Terabytes of data without failing. Ideally without users even noticing the underlying complexity that goes on behind the scenes!
The Obulus Platform offers a variety of techniques and technologies that facilitate the creation of scaleable applications that can be distributed over multiple servers and server farms. And when things do fail (as they inevitably will in any large scale real-life installation), the platform design makes it possible to recover gracefully and turn parts of the application on and off and even paused / resumed in a flexible manner.
Our experience has shown us that by using profiling and measurement and focusing on the processing bottlenecks that cause the vast majority of slowdowns, an application can be significantly improved even in the face of large datasets. Often, a simple tweak such as an SQL query rewrite or the introduction of a buffer layer to reduce client spoon-feeding effects, can have an enormous positive effect on performance. The use of application level logging in such cases is very important. Testing - to the point of almost becoming obsessive with shaving off milliseconds from important processes - can also be extremely helpful in pinpointing the relevant areas where improvements need to be made. Constant minor tweaks and improvements are a daily aspect of life when dealing with large scale complex installations supporting millions of users.
Have a look at our Obulus Platform presentation at: http://www.charonite.com/resources/obulus.php
* And if you're someone passionate about multi-threading, high performance processing, distributed algorithms, etc. drop us an email at jobs@charonite.com.
Thursday, February 18, 2010
Wednesday, February 10, 2010
Simple User Interfaces
One aspect of software development that is unfortunately often overlooked in the rush to get the application released on time is the user interface. Simple user interfaces take up more time to design than a complicated looking user interface. An analogy exists in writing: it is sometimes easier to write a couple of pages on a particular topic than a brief and concise one pager.
At Charonite we particularly like clean interfaces such as those on Google's homepage and products, the Apple iPhone app home screen, Microsoft's ribbon in the Office suite of products, 37 Signals' web-based applications, the Netherland's train kiosk user interface and many others. Our software needs to run in a variety of different environments and hardware platforms including web-based applications running inside a normal Internet browser, specialised PDAs such as the SmarTerminal or the Motorola MC75, and indoor / outdoor touchscreen based kiosk interfaces such as the Park and Go terminals.
The Charonite User Interface design process has been refined over the years and generally consists of the following steps:
We recommend the following resources on UI design and usability:
- Jakob Nielsen's Web Usability Website
- Alan Cooper's About Face
- Bill Buxton's Sketching User Experiences
Are you passionate about user interface design and want to work on a variety of different platforms and interesting new projects? Charonite's hiring - drop us a mail on jobs@charonite.com.
At Charonite we particularly like clean interfaces such as those on Google's homepage and products, the Apple iPhone app home screen, Microsoft's ribbon in the Office suite of products, 37 Signals' web-based applications, the Netherland's train kiosk user interface and many others. Our software needs to run in a variety of different environments and hardware platforms including web-based applications running inside a normal Internet browser, specialised PDAs such as the SmarTerminal or the Motorola MC75, and indoor / outdoor touchscreen based kiosk interfaces such as the Park and Go terminals.
The Charonite User Interface design process has been refined over the years and generally consists of the following steps:
- Initial meetings with the client to identify the different features and functions together with the context in which the applications will be used
- Reusing existing screens and user interface solutions that may exist in our products, while ensuring that the resulting interface conforms to the Charonite User Interface guidelines
- Sketching the initial set of screens and use cases and getting rapid feedback from the client
- At this stage the actual intended deployment platform of the application needs to be considered:
- Web-based Obulue Platform applications need to load fast and have as much interactivity as possible using Ajax techniques and Flash based interactive graphs and charts
- PDA applications need to fit in information in a very constrained space on devices that may have different capabilities (for example, finding a solution to neatly display a form that has 80 fields mandated by law, in a tiny rugged PDA screen)
- Touchscreen kiosk based applications need to be simple and easy to use in a highly modal manner (our quick evaluation method is to see if you can use the kiosk application while wearing gloves)
- Vehicle based user interfaces for our future IDITES technology and law enforcement applications require special considerations in mind, especially when information needs to be displayed to a driver in a manner that does not distract drivers when the vehicle is in motion or in pursuit of another vehicle
- Refining the sketches and creating more polished mockups using rapid diagramming tools such as Visio or SmartDraw
- Creating initial prototypes and designs that the end clients can play around with and give feedback
- Iteratively refining the screens of the initial prototypes to get at the final application screens
We recommend the following resources on UI design and usability:
- Jakob Nielsen's Web Usability Website
- Alan Cooper's About Face
- Bill Buxton's Sketching User Experiences
Are you passionate about user interface design and want to work on a variety of different platforms and interesting new projects? Charonite's hiring - drop us a mail on jobs@charonite.com.
Friday, January 15, 2010
Reliable Applications
Reliability and 24x7 accessibility are one of the most valued attributes of software, especially web-based applications that need to be available on demand without interruption. Charonite has gathered a lot of operational experience over the years that enables us to minimise downtime while increasing the overall reliability of our web-based applications.
Some practical tips on what we found to work in increasing the reliability of applications during development:
We are also currently working on perfecting the Charonite Smart SaaS solution offers seamless integration of online and offline working modes, with automatic realtime data replication and graceful failover when a network connection fails. All Obulus applications in the future will automatically benefit from these features via the distributed data layer.
Our goal is to help developers create reliable and robust web-based applications that run without interruption, while enabling customers to have the confidence to switch over from more traditional desktop based applications to network hosted applications in full knowledge that their application and data will be available at critical times.
Some practical tips on what we found to work in increasing the reliability of applications during development:
- Process data in steps that can be handed over to another machine (see MapReduce for more information)
- Research data structures and associated algorithms appropriately, keeping in mind that when dealing with large datasets, some non-obvious choices may be the most appropriate (for example, use Merge Sort rather than Quick Sort)
- Have resume and rollback facilities for each data processing step
- Split large data sources into manageable chunks, giving calling applications the chance to have pre-defined breakpoints and pause opportunities, while giving rise to a predictable processing pattern
- Follow good software engineering practices to modularise code and reduce dependencies via the use of appropriate parameter structures
- Use workflow automation tools to define processes accurately and with less error
- Use ready-made platform components and solutions (such as those available on the Obulus Platform)
- Utilise test automation extensively to reduce the risk of errors creeping in code
- Use REST parameters as much as possible and spread out distributed applications over as many servers as practical to reduce load and increase overall protection from single points of failure
- Favour APIs and repeatable design standards over ad-hoc one-off designs
- Monitor resource usage intensively for signs of increasing memory usage or excessive CPU usage together with peak resource usage levels: it is very rare to have an application that needs to use 100% of CPU time for extended periods of time
We are also currently working on perfecting the Charonite Smart SaaS solution offers seamless integration of online and offline working modes, with automatic realtime data replication and graceful failover when a network connection fails. All Obulus applications in the future will automatically benefit from these features via the distributed data layer.
Our goal is to help developers create reliable and robust web-based applications that run without interruption, while enabling customers to have the confidence to switch over from more traditional desktop based applications to network hosted applications in full knowledge that their application and data will be available at critical times.
Monday, January 4, 2010
Intelligent Software Design
At Charonite we believe that software developers and designers should always provide an intelligent solution to the user's needs, no matter how small or big the problem that needs to be solved. Intelligent design requires more effort and attention to detail, but keeps the end user satisfied.
The Obulus Platform was designed in a manner that encourages intelligent software design by providing ready-made solution templates, code and database design patterns that have been tested and designed in a flexible and scaleable manner.
The use of design patterns is encouraged by using the Obulus Platform, which utilises a loose Model-View-Controller pattern (with the Model and Controller generally coded in C/C++ and the View using PHP/C#) together with support creational, structural, behavioural and concurrency patterns.
A set of naming and coding conventions and emerging Quality Assurance documents that aid in guiding the whole development process ensure that the resulting solutions are of high quality and inbuilt intelligence. Software testing, adopted from Agile methodologies, is extensively used, and support for synthetic data generation capabilities is being added in the next generation of the Obulus Platform to help developers test their applications thoroughly with minimal test environment and test case setup effort.
Essentially the whole process boils down to incessantly answering a simple question: How can our application serve the customer intelligently?
The Obulus Platform was designed in a manner that encourages intelligent software design by providing ready-made solution templates, code and database design patterns that have been tested and designed in a flexible and scaleable manner.
The use of design patterns is encouraged by using the Obulus Platform, which utilises a loose Model-View-Controller pattern (with the Model and Controller generally coded in C/C++ and the View using PHP/C#) together with support creational, structural, behavioural and concurrency patterns.
A set of naming and coding conventions and emerging Quality Assurance documents that aid in guiding the whole development process ensure that the resulting solutions are of high quality and inbuilt intelligence. Software testing, adopted from Agile methodologies, is extensively used, and support for synthetic data generation capabilities is being added in the next generation of the Obulus Platform to help developers test their applications thoroughly with minimal test environment and test case setup effort.
Essentially the whole process boils down to incessantly answering a simple question: How can our application serve the customer intelligently?
Wednesday, December 30, 2009
Annual Winter Holiday 2009
At Charonite we take pride in doing our best to keep the whole team happy and productive, by providing an incentives-based environment for growth and personal development, while showing appreciation towards our work colleagues. One of the ways that we encourage team spirit is to take everyone on a short break during December (with a similar short break in August, when the weather in Malta is always guaranteed to be sunny). Our winter holiday tradition now goes back to 2007, when we went to Pisa and Florence, and to Venice in 2008.
This year we decided to go to the vibrant capital city of Spain, Madrid. Madrid was literally packed full of people and you can say that we saw the "mad" in Madrid first-hand! Madrid has a lot of nice open air markets, a rich architectural heritage and various shops.
A nice tradition in Madrid is to gather around at open air food markets to eat tapas, a practice that evoked our memories of Asia. The tapas were delicious, albeit a bit difficult to get hold of at times - balancing a glass of wine, a plate of oysters, some bread and cheese and whatever else is on offer from the stalls while gently elbowing your way to a coveted seating place is an art of its own.
The first place we visited was the Museo Reina Sofia, which houses various important works of art by Spanish artists including Dali, Picasso, Gris, Miro, Gonzelez, Gargallo and others. The auestere, black and white "Guernica" painting by Pablo Picasso is one of the main highlights of this museum, commanding almost a whole room on its own - a reminder of the tragedies that war can inflict on people.
One of the highlights was a Flamenco show at Cardamomo, a cosy Flamenco bar that was packed full of people watching the beautiful display of guitar music (toque), dancing (baile) and singing (cante). The show proceeded in different stages with male and female dancers taking turns and finally coming together in a nicely orchestrated show. We definitely recommend watching a Flamenco show whenever in Spain to savour the culture and traditions of the country.
Another highlight of our visit was an evening out at the Restaurante Botin, the world's oldest restaurant according to the Guiness Book of Records, founded in 1725 (which also claims to have had the painter Goya working as a dishwasher there!). We ordered a delicious suckling pig, cooked in the traditional Castilian way for the whole party, all washed down with caraffes of Sangria. Of course, vegetarians in our group also had plenty of food choices but Madrid does seem to be a mini-paradise for meat-lovers (especially with the numerous "Museo del Jamon" shops everywhere).
No trip to Madrid could be considered complete without a visit to the Museo Nacional del Prado, which hosts one of the worls largest collection of fine art, including El Greco, Goya, Velazquez, Bosch, Titian, Rubens, Raphael, Botticelli, Caravaggio, Durer, Rembrandt and many others. The long queue to get inside the museum was definitely worthwhile and it was interesting to see how people on our team interpreted the art in different manners.
In all, it was an enjoyable trip to Madrid, and we'd like to take this opportunity to wish you all a happy new year!
p.s. Interested in joining our team? Drop us an email on careers@charonite.com. See you next year!
This year we decided to go to the vibrant capital city of Spain, Madrid. Madrid was literally packed full of people and you can say that we saw the "mad" in Madrid first-hand! Madrid has a lot of nice open air markets, a rich architectural heritage and various shops.
A nice tradition in Madrid is to gather around at open air food markets to eat tapas, a practice that evoked our memories of Asia. The tapas were delicious, albeit a bit difficult to get hold of at times - balancing a glass of wine, a plate of oysters, some bread and cheese and whatever else is on offer from the stalls while gently elbowing your way to a coveted seating place is an art of its own.
The first place we visited was the Museo Reina Sofia, which houses various important works of art by Spanish artists including Dali, Picasso, Gris, Miro, Gonzelez, Gargallo and others. The auestere, black and white "Guernica" painting by Pablo Picasso is one of the main highlights of this museum, commanding almost a whole room on its own - a reminder of the tragedies that war can inflict on people.
One of the highlights was a Flamenco show at Cardamomo, a cosy Flamenco bar that was packed full of people watching the beautiful display of guitar music (toque), dancing (baile) and singing (cante). The show proceeded in different stages with male and female dancers taking turns and finally coming together in a nicely orchestrated show. We definitely recommend watching a Flamenco show whenever in Spain to savour the culture and traditions of the country.
Another highlight of our visit was an evening out at the Restaurante Botin, the world's oldest restaurant according to the Guiness Book of Records, founded in 1725 (which also claims to have had the painter Goya working as a dishwasher there!). We ordered a delicious suckling pig, cooked in the traditional Castilian way for the whole party, all washed down with caraffes of Sangria. Of course, vegetarians in our group also had plenty of food choices but Madrid does seem to be a mini-paradise for meat-lovers (especially with the numerous "Museo del Jamon" shops everywhere).
No trip to Madrid could be considered complete without a visit to the Museo Nacional del Prado, which hosts one of the worls largest collection of fine art, including El Greco, Goya, Velazquez, Bosch, Titian, Rubens, Raphael, Botticelli, Caravaggio, Durer, Rembrandt and many others. The long queue to get inside the museum was definitely worthwhile and it was interesting to see how people on our team interpreted the art in different manners.
In all, it was an enjoyable trip to Madrid, and we'd like to take this opportunity to wish you all a happy new year!
p.s. Interested in joining our team? Drop us an email on careers@charonite.com. See you next year!
Labels:
charonite,
holidays,
jobs,
staff,
team building,
winter holiday
Sunday, November 22, 2009
Software Design Philosophy
Our software design philosophy at Charonite is based on six simple attributes that we believe are the hallmarks of quality solutions:
In the coming weeks we will be expanding on each item and the way that we have approached each attribute to ensure the production of quality integrated software and hardware solutions.
- Intelligence. Solve the user’s needs with an intelligent, never mediocre, solution. Intelligent design requires more effort and attention to detail, but keeps the end user satisfied.
- Precision. Provide precise results that can be relied upon and trusted. Results need to be precise on a large scale to enable business decisions and other major decisions to be based on our software's output.
- Reliability. Software has to run non-stop without problems. We take pride in our 24x7 installations that do not require rebooting for months on end without any downtime.
- Simplicity. Focus on the user’s needs and behavior first – and the interface simple. Users do not want to be forced to learn to work with complicated and confusing screen layouts. A simple interface that presents relevant data quickly and easily requires thought and attention to the user's needs.
- Performance. Software has to be fast and responsive, even when dealing with massive amounts of information and complex computing issues. The backend of our systems needs to be capable of handling large amounts of data without failure, in a timely manner. Millions of data items need to be processed without placing any restrictions on users who need to process such data sets.
- Scaleability. Interesting applications emerge when there are huge amounts of information and users being processed simultaneously. Software needs to be designed in a way that it can scale up to handle huge installations. When more capacity is needed, it should be a simple matter of adding more hardware resources or additional virtual machines.
In the coming weeks we will be expanding on each item and the way that we have approached each attribute to ensure the production of quality integrated software and hardware solutions.
Tuesday, November 17, 2009
User Interfaces
User interfaces represent one of the key success factors to the adoption of a software application or an integrated hardware and software solution. The success of devices like the iPhone have largely built upon the overall smooth interaction experience.
At Charonite, we are continously developing new better interfaces for web-based applications that make applications responsive enough to provide realtime interfaces to components like traffic cameras, RFID sensors and barriers. Interactive data dashboards and drilldown charts and reports enable users to explore data in an intuitive manner. The initial back and forth between the development team and our customers now generally includes lots of hand-drawn sketches and UML use cases and interaction diagrams & swimlanes, followed by more polished designs using rapid mockup tools and actual working prototypes that are rapidly deployed online to obtain more meaningful feedback from the end users themselves.
For projects involving hardware integration, like our range of parking kiosk solutions and PDA based software, the design constraints involved in a keyboardless touch screen based interface (requiring large buttons and easy to read large text fonts) and a small PDA interface (which requires fitting in information on a limited size display in an easy to use manner) have been formalised into a set of UI guidelines and templates that guide developers in creating intuitive solutions.
We've found this TED presentation by Pranav Mistry on SixthSense technology to be particularly interesting:
http://www.ted.com/talks/pranav_mistry_the_thrilling_potential_of_sixthsense_technology.html?awesm=on.ted.com_7X
The future of human computing interfaces seems to be oriented towards gesture based computing. At Charonite, we are currently researching ways of integrating gesture based computing using Wii hardware, allowing for fast exploration of 3D environments that can be utilised in future traffic management applications and possibly allow for better ways of interacting with large datasets. We are also looking at using the XBox Natal interface when it becomes available. Our research and development teams are always on the lookout for interesting emerging technologies and skilled talent in the field. Drop us an email on jobs@charonite.com if you're interested in joining our team.
At Charonite, we are continously developing new better interfaces for web-based applications that make applications responsive enough to provide realtime interfaces to components like traffic cameras, RFID sensors and barriers. Interactive data dashboards and drilldown charts and reports enable users to explore data in an intuitive manner. The initial back and forth between the development team and our customers now generally includes lots of hand-drawn sketches and UML use cases and interaction diagrams & swimlanes, followed by more polished designs using rapid mockup tools and actual working prototypes that are rapidly deployed online to obtain more meaningful feedback from the end users themselves.
For projects involving hardware integration, like our range of parking kiosk solutions and PDA based software, the design constraints involved in a keyboardless touch screen based interface (requiring large buttons and easy to read large text fonts) and a small PDA interface (which requires fitting in information on a limited size display in an easy to use manner) have been formalised into a set of UI guidelines and templates that guide developers in creating intuitive solutions.
We've found this TED presentation by Pranav Mistry on SixthSense technology to be particularly interesting:
http://www.ted.com/talks/pranav_mistry_the_thrilling_potential_of_sixthsense_technology.html?awesm=on.ted.com_7X
The future of human computing interfaces seems to be oriented towards gesture based computing. At Charonite, we are currently researching ways of integrating gesture based computing using Wii hardware, allowing for fast exploration of 3D environments that can be utilised in future traffic management applications and possibly allow for better ways of interacting with large datasets. We are also looking at using the XBox Natal interface when it becomes available. Our research and development teams are always on the lookout for interesting emerging technologies and skilled talent in the field. Drop us an email on jobs@charonite.com if you're interested in joining our team.
Labels:
gesture based computing,
hci,
sixthsense,
user interfaces,
wii
Subscribe to:
Posts (Atom)