We've all seen email as a bit ring fenced and lon>>
We've all seen email as a bit ring fenced and long in the tooth.
This frothy new wave from Google is very exciting as it will make everyone see that traditional email is not the future.
Is this a wave everyone can enjoy?
Google's new waves however, will be manufactured and still for the fearless as they depend on teams of developers to create collaborative solutions. Consumers will have to watch and learn for a while before joining in. Developers will also need to ripple their waves out to the mobile world.
LablZ produces natural waves for everyone.
Any collaborative solution in LablZ is created through natural thought and relatively simple modelling. Looking at the ideas wave is being used for shows reflections of LablZ.
I am evaluating Ubuntu as the Linux distro of cho>>
I am evaluating Ubuntu as the Linux distro of choice for the next release of Lablz Cloud server to replace the aging Fedora 6 AMIs. Ubuntu is the most popular Linux distribution for desktop, sports a solid server and recently mounted a successful
netbook offensive
.
Distrowatch looks at the top 10 distros and tries to understand what made
this late comer to a Linux distro scene so popular so fast?
Ubuntu Cloud initiatives
And now Ubuntu is
beginning to take the Cloud seriously
. First Ubuntu had to do some catching up to Red Hat and in April 2009 they released
official AMIs
for Intrepid (8.04) and Hardy (8.10). Looks like Jaunty (9.04) is coming to EC2 any day now and
Karmic Koala 9.10 is due in October
. A huge credit actually goes to
Eric Hammond
and the community around his
Alestic.com
who were building unofficial Ubuntu AMIs till now and extended help to Canonical (commercial entity behind Ubuntu) to bring official AMIs to life.
Official AMIs
Officially supported AMIs are result of collaboration between Canonical, Amazon and the alestic.com community. Amazon's involvement means modern kernels (see the chapter below on why it is important). Canonical's involvement means that those AMIs are well tested and will be even more tested as more people will use them. It also means special arrangements will be made to make things work smoother in the cloud, like making sure that XFS file system on EBS is working without a glitch (was a problem before). This means Ubuntu repositories are hosted in EC2 environment (
us.ec2.archive.ubuntu.com
and
eu.ec2.archive.ubuntu.com
) which saves us all on traffic charges and makes package installations extremely fast. Ubuntu AMIs come in two flavors - server and desktop, the latter which includes pre-packaged NX server. But those obvious things are not all. Ubuntu has some interesting nuggets for the cloud setup. Read on.
Stop building your own AMI images
Ubuntu on first boot runs instance user-data script if it starts with #!
This is a clever way to upgrade the official AMI without bundling your own AMI. We know it quickly becomes a nuisance to keep building and upgrading new AMIs. And with small and large instances, 32 and 64 bit variants, US and Euro zones to cover, it is just too much. So, this simple trick with treating
user-data
AMI startup parameter as a script is a potential lifesaver (technique was developed by alestic.com). Time to convert my "how to build-up EC2 AMI for Lablz Apps" into the runnable script.
Private and hybrid clouds
Ubuntu has pre-packaged
Eucalyptus project
which aims to achieve API-level and command-line-level compatibility with EC2 and S3 for building your own private clouds. This is an experimental project which is expected to become much better integrated in the upcoming Koala release. This not only will allow companies to create private and hybrid clouds, but will also make it possible to download Lablz VM image to develop on your own boxes and then with one click to deploy the results on EC2. It is interesting that Sun also made a decision to make
their Cloud API AWS-compatible
. We need to see though what changes Oracle makes with Sun's cloud.
Scaling add-ons
Ubuntu images pre-package RightScale scripts. Some people will be very happy about it, but I do not see Lablz using RightScace any time soon especially with Amazon's recently introduced
Load balancing
,
Auto-scaling
and
CloudWatch
services which bill per-use, as all other AWS. Lablz also shuns away from MySQL replication which is another forte of RightScale as Lablz has own Cloud-native replication architecture. So, pass on this item.
Lablz is cooking up its own cross-database, replication scheme that is dead-simple as it is HTTP-based, creates a textual file per transaction (not huge binary log files like MySQL), has no limit on the number of slaves since it replicates via S3 (overcoming one of the major limitations of MySQL replication), is hugely reliable as replication logs are safe in S3 (unlike MySQL binary logs that need backing up), supports point-in-time recovery as replication logs are synchronized to point-in-time EBS snapshots, and customizable as it allows to replicate only the subset of data (MySQL has 3 basic switches for this) based on per-class metadata and custom rules.
Ubuntu images are also pre-packaged with the client for Canonical's own commercial
Landscape cloud management
. How Landscape can compete against Amazon's new auto-scaling offering is a mistery to me, because it seems to offer the features available for free in Amazon's AWS Console and those of a pay-per-GB of Amazon's CloudWatch. Can anybody help me to understand? Please leave a comment. RightScale at least has a 3-year leg up and is probably the best known name among all EC2 third-party vendors.
Integrated Mail server
Setting up mail server on Linux is such a pain nowadays due to Spam, Viruses and extended security requirements. I remember how it took me about an hour to setup my first Netscape multi-domain mail server in 1995. To be sure there are
many tutorials
, the
best one
by
Ivar Abrahamsen
. Ivar's tutorial also has a section on EC2 and he even pre-built mail server as a set of AMI's on top of Eric Hammond's Ubuntu images. Too bad he did not update them yet for the official AMIs! I sent him an email asking him to graciously lend his hand but he did not reply. If you have a way to bribe him to do that, I will share half of your bribe :-)
I like that
Ubuntu Server Team
chose Dovecot instead of Cyrus for POP/IMAP. Lablz is using Dovecot today on its Fedora 4 boxes.
Ubuntu Karmic Koala to be released in October is expected to deliver the
one-click mail server setup with antivirus, anit-spam, webmail, filtering, etc
. Ubuntu maintainers are also considering their choices for an open source alternative to MS Exchange groupware capabilities. The candidates are Horde, Citadel, and possibly Zimbra. Go, Canonnical! To see the progress Ubuntu Server Team is making check their
blog
,
launchpad
and
forum discussions
. Why, oh why those collaboration tools Ubuntu uses are not integrated?
Kernel improvements important for the cloud
Things below are not Ubuntu-specific, but still they are eagerly anticipated additions to the kernel. Official Ubuntu AMIs have newer kernels -
2.6.27
for Intrepid and
2.6.24
for Hardy, and likely
2.6.28
for Jaunty.
Security.
Newer kernel makes running
Lablz on port 80 easy without running as root
. We used authbind before but it was not easy, so new kernel's setcap method of authorizing a certain binary is much simpler. This method is available in kernel 2.6.26 or newer.
sudo apt-get install libcap2-bin sudo setcap cap_net_bind_service=+ep /usr/lib/jvm/java-6-sun/jre/bin/java
Note.
At this moment I am struggling with the problem: java does not start after setcap - it complains with the following message:
/usr/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
I am researching a solution to this, see my post on
this thread
. If you know the answer, please post a comment.
High concurrency.
Newer kernel has drastically more efficient
NPTL threads
, which hopefully will break the
10K barrier
on a small AMI instance.
No need anymore to redesign your server to use a vastly more complex Java NIO
asynchronous programming model to achieve a high number of simultaneous users. So the synchronous threaded model used in Lablz server today is again considered the best of breed. To check if your Linux has older LinuxThreads or newer NPTL issue this:
getconf GNU_LIBPTHREAD_VERSION
My Jaunty answers:
NPTL 2.9
Conclusion
Ubuntu in the Cloud looks very promising to me. I am also digging deeper into the Ubuntu development and packaging process to understand how we can package the open source release of Lablz into Ubuntu. In the upcoming posts I will document the steps to setup Ubuntu Jaunty on EC2 and a Lablz server on it. Please post your ideas on how to make the most our of Lablz on Ubuntu in the Cloud - both private Cloud and a public one.
Since Lablz inception we have preferred Fedora ov>>
Since Lablz inception we have preferred Fedora over other Linux distros. It was also a logical choice when Amazon opened EC2 - official AMI images were built on Fedora. Fedora served us really well but we are getting tired of its short support cycle. As each Fedora version is reaching its end of life very quickly we are finding ourselves running around like crazy to find alternative repositories to install extra packages. This is insane and I am sure our customers will be even more conservative than we are in upgrading to new Linux versions. I have been reading up on the subject and the choice boils down to
Centos and Ubuntu LTS releases
. Before making a move on EC2 I have decided to switch my work completely to Ubuntu and see how it pans out.
LiveCD
I am testing Lablz on Ubuntu 9.04 right now. I tried to boot Ubuntu Jaunty (9.04) LiveCD version on my Sony VAIO VGN-FW290 laptop. I tested several multimedia packages to see if Ubuntu can handle my hardware. LiveCD is very nice in the sense that you boot on your machine without touching your currently installed OS. Then you can install more software to customize, but all changes are wiped out on next boot of course. Jaunty
could not adjust brightness
on my way-too-bright LCD, so after hours of googling I postponed it (other than that it was almost good). See a summary below:
The sound did not work right away - had to choose a different sound out, in and ringing devices in Skype preferences. Unfortunately the built-in mic still did not work, see the following
thread for extensive discussion
on the subject.
VirtualBox
I chose VirtualBox since it by many accounts is much faster than VMWare and eats smaller amount of resources. Also, it is open source. I installed VirtualBox 2.2.2 and loaded official Ubuntu 9.04 VirtualBox VDI into it. You can find a suitable image on
VirtualBoxImages.com
or choose the one from
this blog
, which is what I did.
After loading VDI you need to install so called
guest additions
to get higher resolution, ability to change guest machine's window size, to get rid of very inconvenient manual mouse release, to be able to share folders with host OS and much more.
Start Ubuntu guest machine in VirtualBox and login in it.
In VirtualBox menu (top of the guest machine's window) click Devices -> install guest additions.
The above step may take a minute, be patient.
Open terminal in Ubuntu
cd /media/cdrom
sudo bash ./VBoxLinuxAdditions-x86*
Reboot guest.
Sharing folders with VirtualBox guest OS
All you need is to
execute 2 commands
to see folders of you Windows host in Ubuntu guest.
In VirtualBox Devices menu click on Shared folders and click on +folder icon. Choose any folder in host OS you want to share with your guest Ubuntu. I added folder called
yoga
.
in terminal create mount point: mkdir /media/yoga
sudo mount -t vboxsf yoga /media/yoga
now if you like you can add the same commands to /etc/rc.local so that they are executed on reboot
Installing packages
apt-get is a yum alternative on Debian-derived systems, like Ubuntu. It seems to be smarter and way faster than yum on Fedora (at least comparing to FC6, which is not really fair as FC6 is old). There is also graphical package managers both on Gnome and KDE and they seem to work better than on FC6.
KDE and Kubuntu
I am a KDE user and Ubuntu come with Gnome by default, so to switch I ran:
sudo apt-get install kubuntu-desktop
After that I logged out and clicked Option on login screen to choose KDE instead of Gnome.
That simple. The alternative approach could have been to isntall Kubintu instead, which is Ubuntu with KDE as default window manager.
The little time I had to play with Gnome before I made a switch back to KDE left me with a pleasant feeling so that some day I may try to work in it instead of KDE and see how it goes. It looks like KDE and Gnome work on some interoperability, so that switching between the two is not that hard. For example, I enabled a multiverse repository (an Ubuntu's term for a repository that has extra packages, which are potentially non-open-source as opposed to a default repository called universe) and I was pleasantly surprised to see it enabled in KDE as well.
I communicate with a lot of people. It is importa>>
I communicate with a lot of people. It is important for me to be properly notified. Had I not found the solutions below I might not have moved from Windows to Ubuntu as my main working environment. I hope the day will come when all communications will happen over the Web.
Site Specific Browser (SSB)
is the concept that shows the most promise to get us there. Before finding solutions below I reviewed a set of SSB products and attempted to use some of them for a week or so. Unfortunately for all of us in the Web Apps business - the current SSB crop is still way off the mark.
New mail notifications
On Windows this has never been a problem. But on Linux I could not find a way to get notifications when new email arrives in Thunderbird, and an indicator that I missed some events. Luckily and add-on exists.
Thunderbird new email notifications
are delivered by
New Mail Icon addon
. I suppose Mac people could also use
another add-on
for sending notification to Growl. I did not test it yet, but will soon.
Pidgin IM notification
It was simpler than I thought. Apparently Pidgin has a built-in system tray icon support. Go to preferences, Tab Interface -> System Tray Icon -> Show system tray icon. Change to Always.
Mesh of Linux and Windows desktops
I am working on Ubuntu in
Virtualbox
2.2.2 on Vista host.
VirtualBox
has an amazing option called Seemless Mode - where all Windows and Linux windows are displayed as equal on one desktop. Seamless mode is activated from your virtual machine's top menu or by a shortcut right_Ctrl_key+L (VirtualBox calls right Ctrl key a Host key and allows to remap it). I moved my Ubuntu panel to the right side and thus have two task bars - Windows at the bottom and Linux on the side. This arrangement allows me to see all systray notifications on Windows and Ubuntu in the right bottom corner of my screen.
I went to the Microsoft campus (geek central) thi>>
I went to the Microsoft campus (geek central) this week to learn about how they are cumulating their cloud. The event was sponsored by
Rackspace
, a hosting company, who offer cloud services through their division called Mosso. Also on stage were cloud consultants, VCs and some development companies.
The crowd seemed to be mainly ISV's looking to move into the cloud, some to progress their business and some no doubt to survive these times.
Microsoft
started by describing their activities with Azure and Software plus Service. They cunjured up visionary Ray Ozzie to outline their view of the future (albeit an old movie). They then ventured onto BizSpark, their development packages available to ISVs. They're offering all their tools for free to startups for 1 year. They'll also get support (which they'll need a lot of) and visibility (listed by Microsoft, gee whiz). This left me thinking they weren't really offering much and unless you have a massive team of developers already deep in MS development (who will already have those tools licensed) you're a long way off actually creating anything let alone building for the cloud.
A
consultant
stepped up to the stage. He had 25 minutes. He spent 10 minutes extolling the virues of the cloud with lots of nods from the audience. He then spent the rest of his slot outlining the majot challenges of delivering, servicing and billing. It was text book consultancy; sell them the idea then tell them the daunting challenges them face and why they need help.
The
VC
appeared and cut straight to the chase. VCs don't have to think hard about the SaaS model; earlier to market, less funding, predictable profits.
Two development companies then told us their stories. Both used traditional development methods, one was a logistics system locked into Oracle Fusion and the other was an accounting system using MS SQL and Visual Studio. These were not what I'd call built for the cloud companies and solutions. Neither filled me with enthusiasm that others would join their markets and develop traditional solutions.
I think all the presenters had also been told not to mention the letters A W S too close together.
In summary this event was a reality check for folks looking to seed their own clouds. I'd highly recommend all Lablerz visit these type of events to see just how far ahead you are in terms of platform, applications, no-dev, modelling, gui, security, recovery, billing, deployment...etc, etc, etc
This is the application we submitted today to Pal>>
This is the application we submitted today to Palm for early access to webOS Mojo SDK.
Description of application:
Lablz Mobile Web Applications range from horizontal like CRM, Document Management, Project Management to vertical, like SPA, Bar & Restaurant, Retail Point of Sale, Supply Chain Management, Jobs and Real estate classifieds.
But Lablz is not just an App developer. Lablz is the first company in the world to unlock the secret of Turning Data Into Applications. Users of Lablz Apps interact directly with data, thus developers need only to describe the data structures. This makes App code look more like markup and cuts the development time 100 times
eliminating the need to write UI, database access, and middle-tier code. This revolutionary approach lowers the requirements to drastically expand the potential developer base.
But this is not the end. Lablz Ajax UI is automatically generated for both Mobiles and Desktops, saving developers the hurdle of UI design for touch, mobile and desktop screens and the hassle of testing on dozens of Browser variants. On the back end Lablz provides developers with the fully set up Amazon EC2 AMIs ready to turn new Apps into Software as a Service (SaaS) and Web Services.
Please provide any additional information that you would like Palm to consider, such as your plans for proposed integration with features of webOS:
Lablz is extremely excited about Palm Pre. Since its inception, Lablz bet on delivering Web Apps as a 100% replacement for Native Apps. Palm Pre is our dream come true.
Our target market is people with genuine domain expertise (e.g in health, insurance, retail) for whom developing Web Apps today is too hard. Integrated webOS and Lablz platform will give domain experts an end-to-end device-to-cloud toolchain to monetize their expertise.
Here is what we plan to do with the webOS SDK:
1. We need to understand how Webkit operates on webOS. We have to understand how Lablz Apps can be turned automatically into Palm Catalog Apps.
We need to know how to auto-start Apps when the phone is powered on, how to place Apps on the home screen, how to organize the upgrade process.
2. We will investigate how Palm's Push Notifications service works. We need it to refresh Web App content when it changes, to provide up-to-date state to users. We don't want users to be caught in a no-signal zone with stale content on their Palm Pre.
Lablz Apps all share the back end Watch & Subscribe mechanism and Lablz needs to integrate it with event delivery to the phone.
3.
We are interested in webOS's JavaScript APIs to Palm Pre's hardware and services.
We intend to embed device capabilities (
camera, sound, recording, location, orientation, acceleration, etc.
) in such a way that Lablz developers do not need to program them at all. For example, Lablz developers can define some property to have the type File and assume that all the tools to upload, browse, search, tag, secure, discuss, and version the files are instantly available to users. Or if File is a Photo, then capturing from the camera, auto-scaling to various thumbnails, bulk background uploading, gallery-style viewing, watermarking, copy protection, are all instantly available.
We have prototyped the above ideas with our
Browser Bhoost open source application on Android
. We created Bhoost as a wrapper around Webkit to offer a JavaScript API for GPS, XMPP, SMS, Vibration/Sound/Visual notifications, Camera, Sensors, etc. We then used Bhoost and the Lablz platform to develop a prototype Dating-after-Movies Social App. We plan to reuse this expertise with the Palm Pre. All in all, we would love to do these things while being in sync with Palm, so we can better align priorities and deliver maximum mutual value. We have been hurt by Google's giving priority to native Android Apps and letting Web Apps lag greatly behind.
Please list the languages, frameworks and tools you most often develop with, and the platforms you develop for.Examples: HTML/JavaScript/CSS, iPhone, .NET, Ruby on Rails, Flash, Xbox 360, Palm OS...
Lablz is developed on Windows, Linux Fedora and Ubuntu. Lablz Apps are developed for all major desktop browsers and all major mobile platforms. The Lablz server is written in Java, so it runs everywhere and mostly deployed on Linux and Windows. Lablz Apps have business rules written in server-side JavaScript (Rhino). Lablz Naked Objects architecture employs the modernized MVC pattern where View and Controller are generic for all Apps and all development focuses on building the Model. View (Web UI) is therefore generated as a mix of HTML/Javascript/CSS based on the Model, a set of JSP templates, and a JSP Tag library. Eclipse (or Netbeans) is used by App developers as the Model creation IDE. Alternatively, Ant-based tools are provided which can be used together with any text editor. The ability to create the Model in-Browser is in development.
This article is a stub. More can be said on the s>>
This article is a stub. More can be said on the subject of how Lablz enables developers to practice
Agile Development
.
Patterns.
Lablz implements Naked Objects pattern which facilitates Agile Development.
Metamodeling.
Lablz utilizes Java Meta and extends it by adding a simple
Meta Object Protocol
to Java via Lablz Meta Classes. Lablz Meta Classes are just normal Java Classes. Lablz implements Semantic Web ontologies, which are a form of
metamodeling
.
Requirements analysis
. Lablz models bridge the divide between business analyst and IT as they are much easier to read by non-developers and create a common ground for discussions. Upcoming Web UI for Voc will make it even more simple. Web UI for Voc allows to use existing collaboration tools directly on Voc objects. Such Lablz tools facilitate requirements analysis.
Code refactoring.
Lablz enables developers to do Agile Development by automatically adjusting Object to Relational Mapping as developer re-factors his Object Model. One upcoming project in this area is giving user the ability to change super class to abstract class without ant drop. This particular project has the DB optimization benefit. SQL table of the superclass becomes a bottleneck if some of the subclasses have a lot of resources. All subclasses pay the penalty of joining with the SQL table for the superclass. When developer adds abstract modifier to a superclass, like DailFulfillmentItem, 'ant loadforce' will run a utility that will remove huge SQL table of the superclass and move all the data to individual tables of the subclasses. We plan more of such refactoring utilities in the future.
Collaboration and continuous integration
as practiced at Lablz shop itself:
use of SVN
use of collaborations tools: CRM
Lablz runs daily a 100% automatic backup for EC2 AMI. This backup machine tests the Recovery procedure from a server snapshot, runs symbolic (.csv) backups and a set of quality assurance tests.
Less than a year ago Lablz has switched from CVS >>
Less than a year ago Lablz has switched from CVS to SVN. A total disaster it was. The productivity loss had been enormous. We have used CVS for years with almost no problems. Whatever problems existed had quick workarounds. All the hype surrounding SVN was total nonsense. SVN in Eclipse does not preserve version history when source is moved or renamed. SVN atomic commit sounds nice, but when SVN itself is barely reliable - it is of little consequence. You have to use command line tool to move/rename in order to preserve old revisions. But wait - you can't. Command line SVN tool changes .svn metadata so that Eclipse SVN client can't read it anymore and vise verse. SVN does not live up to its promise and will probably take several more years to mature - may be more, if ever. But as all our code history is now in SVN - we try to cope with it - for now. What a lock in! Unfortunately we found out when it was too late that migration from CVS to SVN did not go well either - older history for many sources was cut off at an arbitrary date a couple of years back or at an arbitrary number of revisions (some sources had hundreds of revisions). Good thing we have older CVS server and an older Lablz server working directory which we consult about once a month.
Subversive plugin blues
We chose Subversive plugin over Subclipse, as it seemed to be that Subversive was well on the path to becoming a built-in component of Eclipse like CVS client is. Subversive reportedly had much better UI and integration with Eclipse for compare, merging, etc. This decision added garvely to our SVN troubles. I
Subversive and its integration with Eclipse is extremely finicky, unlike CVS which was amazingly stable and never gave us any trouble. You need to be extremely conservative in dealing with Subversive. If you have a more or less stable setup - DO NOT CHANGE IT. Subversive plugin was recently (some time in April 2009) restructured again and whoever had the Eclipse updates on automatic - were screwed - SVN stopped working altogether. This happened on my PC and on lablz.com server, so beware. Turn off automatic updates in Eclipse (and while you are at it, on your Windows box too - my recent Vista automatic update had such bugs that it had to be rolled back on the emergency basis. Instead - setup a simple firewall, stop using IE, use Webmail for virus checks and you will be fine). The number of Subversion problems is so large that it is almost unusable. They vary from forgetting to merge the code upon SVN update and leaving you with the code that is stale to just hanging Eclipse, eating 100% cpu for 30 min on SVN Cache update (whatever the bloody thing means) and just plain killing your Eclipse so it does not start anymore. No amount of googling brings any relief. People scream but no answers exist. This thing is developed in a total darkness with no community feedback as it seems. Not all open sources projects have an open process.
A must
: always manually compare with repository every local source that was marked with letter G in SVN console output on SVN update.
It could be that Eclipse Ganymede release is to blame. We never had so many problems with Eclipse in the last 5 years. It looks like Eclipse itself is evolving in the wrong direction - they are adding millions of components that had better be implemented as Web applications anyway while neglecting the core functionality and not fixing known bugs for years. It may be heading the direction of Visual Cafe. This saga may serve as another reminder for Lablz developers - everything must have Web UI, even the core development of the vocabulary - luckily we are making amazing progress in this area. Another reminder for us - do all Lablz development in the open. Move all the discussions online. Improve Lablz CRM tools or add whatever is still missing to leave all email discussions in the past.
Installing Subversive plugin
If you experience any problems with Eclipse/SVN is to create a new Workspace and re-import all projects (choose Import -> General -> Existing project into workplace). If that does nto help install Eclipse completely anew, install Subversive plugin and SVN connector anew and check out all the sources anew. Keep in mind that different versions of Subversive plugin have different metadata format in .svn directories under your working directory source tree. You may be able to go forward but definitely not back in Subversive plugin versions. So, if checking out all sources is not an option, then you can try to do this: Help -> Subversive -> Migrate projects and settings. I had some limited success with this option - it all depends on the difference in versions between your old Subversive version and the new one.
At the time of this writing I have stabilized the setup with:
Subversive 0.7.8I20090506-1500
SVNKit 1.2.2 r5428 (did not test yet the 1.3.0)
To update See
instructions
at Eclipse site, or just follow the steps below:
Help -> Software Updates -> Available Software Tab
Click Add Site and enter URL of the
Update Site
.
On May 13 2009 this URL was:
http://download.eclipse.org/technology/subversive/0.7/update-site/
You will be presented with a list of components on this added site and you can choose all. I chose to skip those that have Mylin and those that are just Sources for a corresponding binary component. I will not present the screenshot of the Eclipse's dialog here as it changes so often recently that it will confuse you even more.
Naked Objects pattern is a very ambitious idea. I>>
Naked Objects pattern
is a very ambitious idea. It aims to redefine software development process. It aims to bridge the divide between the business person and the IT geeks. It aims to drastically reduce software complexity and standardize the components. It sounds like an industrial revolution in software. We all heard that promise too many times. But I guarantee you that by the end of this article not only you will be convinced that it was possible, you will have practical ways to verify that it was already done the right way.
Lablz as Naked Objects
Let's reiterate the Grand promise of Naked Objects :
No User Interface code, No Database access code, no any other code aside from business rules.
You define Objects specific to your field of interest and you are done. The claim is so outlandish that it sounds more like Sci Fi. Or more like Saleforce.com's controversial marketing device "No Software". But it is real. It took Lablz engineers many years to evolve the initial ideas and prove that they apply to a wide range of complex business applications. Lablz demonstrated first Naked Objects application in December 2000 at the International Paper Trading conference in Vienna, Austria (before Naked Object pattern was named and before anything was published on the subject).
It is great to see that we were not alone thinking the impossible. Kudos to Richard Pawson, all the guys at NakedObjects.org and all independent implementors of this grand vision. In this article I will show how Lablz understood the principles and how it innovated by turning Data into Web Applications, Mobile Web Applications and Cloud Services.
Wikipedia article on
Naked Objects
lists its three core principles. As shown below Lablz architecture implements those principles solving many common Web Dev problems.
1. All business logic should be encapsulated onto the
domain objects
.
POJO.
In Lablz Domain Objects are defined as plain old Java Objects, often without any logic attached to them - just plain declarations, a markup one might say. This makes Domain Objects simple to write and review for people with no programming skills. A Business Logic is added on an as-needed basis. This logic is very domain-specific, has no UI code, no middleware code, no database-access code - only the targeted pin-pointed business rules.
In Lablz business logic can be attached to Object's field and activated at the time Object it modified/retrieved or it could be attached to the whole Object in a form of
onChange(), afterChange()
and
onCreate(), afterCreate()
handlers. Developers may be relieved to know that rules are written in plain JavaScript - no hokey custom-made rules language. For ease of creating rules Domain Objects are automatically represented as plain JavaScript objects.
Modeling.
The method of creating Applications by starting with Domain Objects is called Model Driven Design or Model Driven Architecture. In those methods developer first creates a Model and later uses it as a set of interfaces to build the rest of the software. Thus code ends up more structured and sane. The key advantage of Naked Objects is that Model is all developers ever needs to create. The shift from coding to Modeling will appeal to many experts and hobbyists who have bottled up ideas and comain knowledge but no way to convert them into running Web and Mobile Apps. Learn the ropes today with Lablz Modeling 101 (TBD).
Object-to-relational-mapping (ORM).
Lablz supports multiple Data Sources, most important of which is the Relational Database. Lablz developed a unique scheme mapping Domain Objects to Relational structures. As with other parts of Lablz the design goal was to free developer from any involvement in ORM allowing developer to focus singularly on describing the Application Domain. The challenge was to achieve high speed for sophisticated Web Apps allowing complex Object graphs. Contrast this approach with Google Big Table and Amazon SimpleDB which force developer to maintain Object graph in the Application layer. In accord with Naked Objects pattern Lablz architecture does not have the Application layer. The only application code that needs to be written by App developer is the business rules encapsulated onto domain objects.
Evolvability.
The
Achilles' heel
of Object to Relational mapping schemes is their inability to evolve gracefully as Domain needs change. For Domain Model developer it is hard to take into account possible needs several years ahead of time. Lablz Naked Objects abstraction allows developer to save time by focusing on the Domain Model that works today and rest assured that when change is needed Lablz will automatically adjust the underlying relational structures and even in many cases automatically migrate the data. Lablz developer need not know any XML mapping files, SQL TABLE structures, or run any utilities to ALTER the database. In many cases Lablz allows developer to safely modify Object definitions on a live Lablz server without requiring server restart.
Security.
Lablz security aims to eliminate the bulk of access control administration by riding on existing Object definitions, relationships between objects, delegation of access control between Objects, by using rules which are based on actual data in Objects, and not on the artificial Access Control Lists (ACL) external to the Domain Objects. App developer does not need to create any UI for Security management and can augment security policies by adding rules on Domain objects.
2. The user interface should be a direct representation of the
domain objects
.
CRUD.
In all Lablz Apps user interacts directly with Objects. User creates, views, searches, edits and removes Objects, otherwise known as
CRUD
. Every Lablz Object has its own Web page representation. In addition every Lablz Object is also accessible in a uniform manner over the network as a Web Service. See more on this subject in the next chapter.
Generic and simple.
Lablz User interface does not control users and does not force users into a specific set of actions. Users control Data and Application, not the other way around. Unlike Spring Web framework or JavaFaces Lablz does not define sequences of user actions. User can interact with the Data starting from any angle - from a single object, a list, by drilling down or zooming out. All Data operations are generic, for example once the user learned how to deal with Invoices, she can easily interact with Payments, Issues, Orders, Banking accounts or any other types of Objects.
Transactions.
Lablz Transactions are based on a very simple concept - each HTTP request is one transaction, which naturally for the user corresponds to a submit action in UI. All objects created/modified in HTTP request are committed or rolled back at the end of HTTP request. Sophisticated transactional cache gathers and maintains Object data graph. Upon transaction completion Object data graph populates the shared cache to speedup future transactions. Lablz Naked Objects Transactions may be compared with Service Data Objects, but provide higher degree of automation. In most cases App developer does not need to think about transactions.
UI patterns.
In the year 2000 Lablz implementation contained only simple patterns to view a single Object, create and edit an Object, view a list of Objects and filter Objects by a specific field. Over the years, as Lablz created a multitude of vertical and cross-industry applications - many additional UI patterns were added. Today Lablz Application are enriched with Auto-complete choosers, scheduled and Ad-hoc reporting, Image galleries and Calendars, Point Of Sale device I/O and File Management, Product Catalogs and Shopping carts - to name just a few. And of course, Lablz UI is 100% Ajax-based.
Deep Search.
Lablz built Web Search into all existing and future Lablz Apps. Lablz automatically indexes all structured and unstructured data advancing Web Search in the following areas:
Domain-specific results.
Lablz has deep knowledge of Domain types and relationships, hierarchies and subordination, groups and memberships, and uses this knowledge to increase results relevance. Lablz Search also brings results marked with tags, slots and areas specific to user's Domain (e.g. specific to Hospitality industry).
Search as Ad-hoc reports.
Lablz Search allows user to drill down, slice and dice the search results the same way user does with any Lablz Ad-hoc reports.
Secure for the Enterprise.
Lablz Search automatically filters results through the same access control rules that govern viewing of any data in Lablz. It allows Enterprise to provide one Search for all internal groups as well as external partners. Search is just an integral part of any Lablz App.
3. The user interface should be created 100% automatically from the definition of the domain objects.
MVC.
Famous Model View Controller Pattern (MVC) works amazingly well with Lablz Naked Objects implementation. Lablz View and Controller are completely generic and a Model is defined as Domain Objects. This leads to enormous time savings for App developers. To highlight this consider that Lablz View and Controller are developed for and tested on all modern desktop Browsers (IE6+, FF3+, Chrome, Safari 3+, Opera 9) and on mobile like iPhone, Android-based phones (G1, Magic, etc.) and Palm Pre. App developer is also completely freed from the hurdle of creating a complex Ajax interface.
Extensibility.
Lablz UI is 100% automatically generated from Object definitions and Objects themselves. Yet if desired, developers can override any aspect of UI since every part/module can be augmented or replaced.
MVC View plugins - Java Bean Property Editors.
Lablz employs a [modified] Java Beans Properties Editor architecture for MVC View plugins (modification was required to adapt Property Editor API to Web architecture). Lablz created a library of about hundred different Properties Editors for many field types used in business applications, such as Dates and Durations, Money and Currency, Rich Text and Enumerations.
JSP templates.
Lablz uses about two dozen generic .jsp templates. These templates are reusable since they are not specific to any Domain Object. JSP files are easily modified or replaced. Although it is rarely needed, developer can define JSP templates specific to a particular Domain Object.
JSP Tag Library.
Lablz provides over a hundred different Tag Handlers that provide common operations for all Object types, like login/registration, searching, tagging, etc..
MVC Controller plugins.
HTTP request in Lablz is processed through predefined set of phases and each phase can have a one or more Handlers. Handlers are implemented as standard Java Servlets.
Data Sources.
Data can sit in RDBMS like MySQL, Oracle, etc. or Data can be in File system, Amazon S3, or dozens of other Data Sources. Lablz implemented plugin architecture that abstracts any Data Source as a DavServlet. DavServlet is an extension of a standard HTTP Servlet and handles WebDAV operation for full Object CRUD access.
Mobile and Touch UI.
Touch screens have entered the mainstream. A couple of years ago Lablz UI needed to support touch screens only for Point of Sale applications, like Bar/Restaurant and Retail. Today, with introduction of iPhone Touch is the norm expected by the users. Lablz has redesigned its UI to support a variety of mobile devices with displays that do not need a stylus and rely on a finger touch and gestures. Touch UI can now be used on all Lablz Apps - old and new.
Menu,
Widgets and Dashboards.
100% generated Lablz UI extends well beyond interaction with the Domain-specific Objects. Modern Applications require navigational UI constructs like menus and bookmarks, tagging and categorization, headers/footers and side panels. They require different data views like lists, grids, viewing history, zooming, widgets and dashboards. Lablz provides it all, and it is all done via point and click in the Browser. As you probably have already guessed - all the described operations are also built on Naked Objects pattern - as bookmarks, tabs, menus, widgets, dashboards, tags, etc. are Objects themselves.
No designer required.
Lablz' vision is guided by simple maxims. Web is a Database. Data is Application. Application is a Web site. Last maxim highlights a major difficulty any App developer faces, since rare is the gifted one who digs both code and visual design. The approach Lablz takes is: fine design can be postponed, often forgone. Lablz takes the lesson from Blogs, which let aspirants express themselves instantly and apply fine arts later. Thus Lablz App Web site is assembled much like a page on Netvibes, My Yahoo or iGoogle - a dashboard full of widgets. Lablz homepage itself was assembled this way. And so can be a front page and other pages of any Lablz App.
Added bonus:
it is so simple that users can do it too - thus any Lablz App is is guaranteed to give user extra fun.
Lablz is more than Naked Objects
Lablz is a rapidly evolving software. In the articles to follow I will show you that Lablz vision goes beyond Naked objects to truly express the maxim
Web is a Database
. Among the topics we will cover are Database access protocols, Data Manipulation Language (DML), Data Definition Language (DDL). I promise it will be more fun than just dry Database concepts since we will add the drama of the rise and fall of Semantic Web and how Tim Berners Lee, a true visionary, got stuck in the details of the vision he created.
I have started publishing Lablz status updates on>>
I have started publishing Lablz status updates on
Twitter
- go there and click follow! I also publish the same message as my Pidgin status. Still did not find a way to do it automatically in both places. I am starting the same on
my Facebook page
.
The other type of aggregation which we saw in the past was when new Media companies evolved from individual successful blogs, like Techcrunch which grew into group blogs by inviting guest bloggers and adding new permanent bloggers.
Why all of this is mostly bypassing Old Media is beyond me. A week ago I watched a
State of Play
movie with Russell Crowe recently that portraits a dying investigatory journalism in a failing Newspaper. Sad.
My friend asked me for a netbook advice the other>>
My friend asked me for a netbook advice the other day. I got Dell Mini 9 in December 2008 and it was interesting to see how netbook market evolved since then. Checking many available products took quite some time so I post here hoping that some of the readers will benefit from it. For those impatient - my verdict is WAIT till fall.
Most 2009 netbooks have converged on a sweet spot of 10" screen size and most vendors finally found a way to cram quite decent keyboards. In any netbook expect a built-in WiFi, Webcam & mike - a must for Skyping. Most vendors offer Win XP which is OK, many offer some funky Linux distros - not my cup of tea, instead for Linux I'd choose more mainstream Ubuntu 8.04.
None of the netbooks available today matches my conservative personal targets:
minimum 16G SSD (SSD is very important for fanless silent operations, for battery life and to be shock-proof), 6-8 hours battery life to haul it all-day, minimum 1200x800 resolution to see all Web sites without horizontal scrolling, close to full-size keyboard (preferably chiclet keyboard like on Macbook & Sony Vaio - I love it on my Vaio VGN-FW290), a Bluetooth (to unwire from headphones, mobile phone, extra keyboard and mouse), and a price tag of $500.
Not my targets:
2G RAM (it is not a noteboook - 1G is enough), 3G modem (better use Cell phone as 3G modem - but if you must have 3G, then expect to get a significant discount in exchange for a 2-year commitment), GPS (is navigation software mature on a PC? can I mount a netbook in a car?).
Here is a list of netbooks I checked out:
Dell Mini 10
(best screen 1366x768 with 16:9 aspect ratio capable of 720p video, multi-touch trackpad, good keyboard, faster 802.11n Wi-Fi, no SSD option, only 2-hour battery, $480)
Asus Eee PC 1000HE
(7-hour battery, great chiclet keyboard, low res 1024x600, but I am not impressed with build quality, below $400),
HP Mini 2140
(solid keyboard, too small touchpad, a bit heavy, low res
1024 x 576,
below $500),
Acer AOD150
(low res 1024 x 600,
$300 on Amazon
)
MSI Wind U120
(low res 1024 x 600 at $420-470)
Samsung n110
(pretty good, but low res 1024x600, $460),
Sony Vaio P
(tiny, gorgeous,
chiclet keyboard
, best resolution of them all at 1600x768, 2G RAM, built-in GPS, 3G modem, but extremely slow due to Vista - wait till Windows 7 and too expensive at $900).
If you have to buy now - my choice at the moment is Dell Mini 10 ($480 at Dell.com). It has a much better keyboard than on my Mini 9, which was only suitable for kids' fingers and is not very stable. It now also offers a much better resolution (it is optional - so make sure to tick this option).
Yet, since only Dell Mini 10 has a good screen resolution but neither has SSD nor good battery - I say: wait!
Compare: Mini 9 with SSD lasts 4 hours, but Mini 10 - only lasts 2 hours - which is unacceptable for netbooks. Market leader Asus lasts 7 hours!
Reviewers say Dell Mini 10 is fanless (can anybody confirm?) and that one can only hear a
very slight whirring of the hard drive
.
If all of the above did not convince you to wait - consider a
rumored Apple's Netbook
, supposedly coming in Q3. Apple is king of Touch UI and we think Apple Netbook will likely look like a big iPod Touch. At Lablz we are in love with Touch. We released
our first Browser-based touch-enabled product
3 years ago. We know that Touch is the future of small-factor computers, from mobile phones to netbooks, to
Android-based devices of all sorts
. In anticipation of Touch revolution we invested into
redesigning majority
of
Lablz UI
around
Touch
and
small screens
(expect major improvements in the Lablz 3.5 due this summer). So we are naturally eager to see what Apple will do with Touch in netbooks. One problem they face is: vertically positioned screens are not suitable for Touch UI, hence we expect a 7-inch iPod, with optional Bluetooth keyboard. If you can't wait for Touch today - go get
Asus t91
or
t101H
(not sure they are multi-touch though) and fire away a
multi-touch Safari 4 for Windows
.
And finally consider iPhone. My Wife uses iPhone for much of her casual Web browsing, It has ton of Apps - both for lifestyle, productivity and entertainment. It has 3G, GPS, SMS, Skype and soon will have a decent IM. Tell me again - why do you need a netbook?
Legit browser requests were classified as robots >>
Legit browser requests were classified as robots (false positive) and thus some functions, like tracking views were disabled for requests from this IP. This happened because we had an aggressive early-robot-detection rule:
If some IP address was detected as robot at some point then any other request with the same User-Agent header is considered a robot too.
This rule allowed us to detect googlebot and other frequently visiting robots much quicker when they arrived from a new IP address. But it was too aggressive as some unscrupulous robots apparently used a legit Browser's User-Agent pretending to be a Firefox. So, we had to roll up the sleeves and tune up the rules:
Defined a regexp pattern for known robots. Only those User-Agent strings of those confirmed robots will be used for early robot detection.
Added a property to manually
confirm
a robot even if it does not patch the User-Agent pattern for known robots.
Added a timestamp when robot was last seen. This will allow us to lift the IP blocking curtain after a set time. Without this rule we will ban some IP addresses forever. We will also need to add request rate metering into the time delay formula.
I am happy to announce that CAPTCHA is fully depl>>
I am happy to announce that CAPTCHA is fully deployed at a family of Lablz sites. It is not your run-off-the-mill CAPTCHA though. Some Lablz sites auto-login users as Anonymous to allow a much wider array of actions than Guest would be normally allowed. Guests are limited to viewing public-access resources and submitting comments. Period. Anonymous users can actually try a full blown application with a wide set of rights normally reserved only to registered users (of course rights are configurable by the admin of the site). Yet this opened the gates to spammers - and we had our full share of spam on a set of Lablz sites. As we normally prefer meditation to spam cleanup - we came up with a set ideas based on CAPTCHA theme - things we have not seen implemented elsewhere (if we missed it - please excuse our ignorance - comment on this post). Here are the highlights of Lablz CAPTCHA:
CAPTCHA is shown for both guests and Anonymous (autologin userless) users. Admin can configure any Contact to be auto-logged in based on incoming IP address.
CAPTCHA is presented on all resources, not just comments. This can turn a blog into a wiki. Or one fully test SPA App creating Tickets, Customers, scheduling appointments, accepting payments, selling retail, drinks in Bar, etc. Cool, isn't it?
CAPTCHA authenticates User session, not each Action. Thus it is not so annoying and allows users to try out complex apps like Project Management, SPA by entering just one CAPTCHA. This is possible because Lablz CAPTCHA is stronger - it is a puzzle assembled in CSS and it is 3D and thus much harder to OCR.
TODO:
Test for Touch UI.
Add icon/button for refreshing page with CAPTCHA image.
Make mesh structure finer. May be add blur.
Later - add an alternative for accessibility to image, like a math question or an audio CAPTCHA.
I have been pushing through with the task of VNC >>
I have been pushing through with the task of VNC via SSL, which I
posted on before
. I believe that for future Lablz developers this is a critical component. And it is not just the obvious crossing-the-firewall benefit of VNC over SSL. Our target audience are somewhat less technical people who have a locked up precious domain knowledge and our offer to them is to unlock and monetize that knowledge. It could be a stumbling stone for them to set up VNC over SSH to communicate to their Lablz server on EC2 machine. Before they fall in love with Lablz, and I know they will - we want things for them to be 1-2-3. And it does not hurt to provide the one-click VNC access to all others :-)
Why Adito
But more important reason I was spending time with
Adito
is because its VPN capabilities allow SMBs and Enterprises to integrate their local network with the Lablz Cloud. And since
according to Gartner report
businesses are about to begin mass deployment in the Cloud - VPN becomes a must-have! Some people say Gartner's 7-years-to mass-adoption Cloud prognosis is too conservative, but to me it means large scale action has already began. SSL VPNs have earned their ground in securing remote offices and are proven in the field. Full-featured VPN integrated with Lablz will be a huge help for developers selling their Apps to SMBs and Enterprises.
At this point I can announce that the major progress was made with VNC over
Adito SSL VPN
. It is indeed just a set of clicks now to open a VNC and it goes over SSL as Adito advertised. No firewall trouble is expected ever again! Developer will not need to think about SSH keys, choosing SSH client, setting up tunnel and port mapping (and not all firewalls even have SSH port open), no need to choose and configure VNC viewer - it is all click, click click. It may feel a bit slower than VNC over SSH, but we can live with that. Those App developers who have more knowledge can later on setup VNC over SSH. Others may limit the VNC colors to 8bit and feel an instant acceleration. For more speed down the road - Adito has support for a speedy NX as well - but I have not had a chance to set it up yet. Adito also has an RDP client - so those future Lablz developers who choose Windows EC2 will not be left out.
Along with the work on setting up Adito I have replaced our default VNC server (RealVNC) with TightVNC server. Boy, it was not easy! If you like to hear the story - drop me a note. But it is done and it is working. This instantly gives us a nudge in speed and a couple of features which I really was after:
A separate view-only password (confirmed to work and configured already through Adito). This is a must for developers to demo their new Lablz-based Apps. Much like a webcast software - but free and built into Lablz in the Cloud. You can broadcast a Browser session, a PowerPoint (or OpenOffice alternative), a Lablz in Eclipse training demo. To be precise it is not for a large audience - we will need to setup a VNC reflector for that, but for small groups it will be a lot of fun.
Application Window sharing. When you do a Browser-based interactive demo you, as a developer want your potential customer to click together with you. This gives customer a good feeling, otherwise they fall asleep fast. But you do not want them to have access to your whole desktop. This is what TightVNC server promises to deliver. We shall see.
Remaining tasks
Web forward. We need normal HTTPS traffic to reach Lablz server. Adito has several types of Web Forwards. We need to see what is the best way. I have configured
Nginx
reverse proxy to Lablz server and I know it can be done (it was not that easy, but hey - this is Lablz Cloud for you - we take the pain out of deployment at the Web scale). But with all Nginx's fantastic popularity and an impressive speed record it does not handle TCP wrapping, like
stunnel
and Adito do (It can do HTTP, POP3, SMTP - so there is hope in the future). So, I setup stunnel and it was decent and worked with VNC server, but it does not handle HTTPS reverse proxy job. So, there it was the initial reasoning for trying out Adito.
We also need Web forwards from Adito to Apache - to establish SVN over HTTPS (we use SSH for that now) and for other Apache-based apps, like WebSVN, etc.
Avoid double authentication. Logged in Lablz users should not need to login again with Adito. The good news is that Adito does not expose VNC's own authentication. So, that is out of the way at least. It is possible to create a custom authentication module with Adito, but I have not investigated it yet. What is needed here is for Adito to use Lablz User Database for its userid/password authentication needs. Adito also promises hardware token authentication, NTLM, LDAP, Active Directory, PAM and many other Enterprise class authentication choices. Good, we do need help in this area.
Separate access to read-only VNC from full VNC. I have not found a way yet in Adito to let limit access to full VNC as opposed to read-only VNC. Logged in user now can see both and this completely negates the read-only VNC option.
VNC Application Window sharing.
One time password for demo users. As this may also be accomplished by setting up a temporary login - it is not a high priority, just a convenience feature.
In the future the developer community can experiment with other possibilities Adito VPN provides, such as XMPP (Jabber) over SSL. This would allow businesses secure internal firewall-friendly IM with cross-connections to major IM networks. Luckily there exits somewhere an SSL Explorer (precursor to Adito) extension for OpenFire called Converse. It also helps that Lablz already has initial integration with
OpenFire XMPP server
.
Our mission is to give Lablz App developers the means to build, sell and support their Apps.
We at Lablz will go out of our way to see this through.
VNC over SSL is just one piece in this puzzle, but an important one.
Gone are the days of the CDs - we are used to buy>>
Gone are the days of the CDs - we are used to buying mp3s online, we watch youtube on the regular basis and are already tasting the streaming of Feature Films. But books have resisted the move online. Primarily because reading is still streneous on the screen. But looks like the eBooks
are marching on
, at least in a smaller computer books market. And now O'Reilly has piloted an
eBook as an iPhone App
and says it has 20 more in the pipeline.
VNC over SSL
A typical setup is to secure VNC via >>
VNC over SSL
A typical setup is to secure VNC via SSH tunnel. But it is not a one-click solution, so I am looking for a browser-based VNC. The
setup I just made to work
includes
VNC applet enhanced with SSL
and stunnel (available on all linux distros). stunnel accepts SSL traffic from the applet and connects to local vncserver. stunnel needed certificates in .pem format so I used
KeyTool IUI
to export private key and certificate chain from Java keystore .jks format.
Results.
It works pretty well, although it is somewhat sluggish compared to native vncviewer over ssh.
Todo.
One way to improve it would be to reuse authenication made on HTTPS session and tell vncserver to SecurityMode=None so that applet does not ask user for a password.
This setup
involves using a cgi to call openssl to generate one time password.
Drawback.
The major drawback is that it uses a separate port for SSL connection to a server. This creates a problem with many corporate firewalls that typically have only 80, 443 (https) and 22 (ssh) ports open to connect to the outside world.
VNC over SSH
One alternative could be
VNC applet via SSH
. Some people managed to get old
MindVNC
to do the trick. For further exploration of applet-based solution I need to further look into the
SSH clients in Java
. Others reportedly succeded with a
vncssh applet
, which is part of
SSHTools
. But I do not see SSHTools having this applet. So stuck at the moment.
Drawback.
This solution also has a problem with requiring user to enter a separate SSH password.
VNC over HTTPS
This would be a true one-click Holy Grail for VNC since it would not require a separate port and thus will cross the firewalls and it would reuse authentication and SSL connection of the Browser. This setup requires a
Proxy on the Web server
to connect to VNC server. On Lablz server we can try to use a ProxyServlet.
Todo.
Need to
investigate USETLS=1
in TightVNC Applet. Here is a list of
Proxy servlets
. - most do not work above the simplest requests. I am yet to find the one that was tested with VNC. Jetty has some
proxy servlets
. Resin has
ProxyServlet
. Some servlets were created for XMPP, a
JSJAC Proxy
and
JabberHttpBind
. JBoss started a
new HTTP tunneling servlet
. Such servlet needs to be able to process CONNECT HTTP method.
AJAX VNC
This would be a true Web 2.0 solution. With HTML5 worker threads, Canvas tag, XmlHttpRequest and super fast JavaScript of Safari 4, Crome 2 and Firefox 3.5 this, I feel, will become a solution of the future. But
today's attempts
did not reach a level of maturity yet.
Final words
Remote desktop is eve so important with Cloud Computing. Yet, no simple free one-click solution exists yet. Anybody found one? Please enlighten me.
See the list of
40 remote access solutions
. We routinely use RealVNC, TightVNC, x11vnx and FreeNX but they are not one-click.
Google just demoed the offline Gmail 'concept' on>>
Google
just demoed
the offline Gmail 'concept' on iPhone, Android HTC Magic and Palm. For app to go offline it needs both its data and code to stay on the device. While HTML5 database accessible from JS was available for some time now, HTML5 Application Cache is only now getting tracktion. To be fair
it was implemented by Firefox 3
, but not in WebKit until recently. iPhone update 2.1 added it but it only works if you add Web app to a home screen,
according to this WebKit developers mailing list
. The situation changes changes now as both upcoming Android and Palm Pre will both have App Cache. So, it is time to incorporate App Cache into Lablz.
We have started a series of SVN restructuring pro>>
We have started a series of SVN restructuring projects in preparation for
Lablz Developer launch
.
Today we introduced new
tools
project which includes Verifier and other stand alone tools necessary to compile and check the validity of the vocabulary.
Note. y
ou will need to issue 'ant clean' from command line after the SVN update
.
The restructuring goals:
Ability to update vocabulary on the live server
Developer will be able to do SVN update, compile vocabulary, verify it and run vocloader in test mode. This is achieved by creating a separate
stage
dir where .class files are created. If no problem is detected by the Decorator, Verifier or Vocloader, then
stage
is copied to
tmp
. This assures that any errors can be corrected without affecting running server. Also, if some data truncation or other data loss is detected by the Vocloader - the
stage
is not copied to
tmp
. This gives developer a chance to backup the data prior to a migration. In such a case developer will be asked to run 'ant loadforced' from the command line. Even in this case server does not need to be stopped as
metareload
(invoked after
stage
is copied to
tmp
)
asks live server to reload voc changes.
Mini-SDK for local machines
Mini-SDK is installed on a local developer's machine and allows to compile vocabulary in Eclipse or from the command line. It also provides a way to upload vocabulary to the live server. Mini SDK also provides DAV API and Java DAV Client for Web Services based on Lablz Servers.
Open source and not
Lablz server, tools and most Lablz Applications are prepared to be open-sourced. Lablz software that integrates with cloud services (Amazon AWS at this point) to provide production-grade Lablz Application hosting - is not open-sourced at this moment. Therefore we are putting all such code (s3core, ec3core, projects and various servlets) into a separate
cloud
project.
Update.
We have completed the task of moving all the s3 and EC2-related code to a separate repository with the project called Cloud. Developers developing/testing Cloud-related software should load sources from new Cloud repository into
cloud
Eclipse project and create a separate Eclipse Debug target with project
cloud
istead of project
gwb
. All cloud-related stuff was moved from httpd.conf config file to s3-sample.conf, ec2-sample.conf. Developers need to use those samples to adjust their own s3.conf and ec2.conf. (remeber that existing Eclipse debug target using
gwb
project will not start the server if s3.conf and ec2.conf are present, usenew debug target with
cloud
project instead).