Newsroom

Team Member Blog

One Laptop Per Child

The One Laptop Per Child (OLPC) organization [website] is creating a laptop aimed at children that only costs 100 US dollars.

Wikipedia has a really nice entry about it [wikipedia].

This laptop is a really impressive feat of engineering as far as I’m concerned.  The amount of stuff they’ve packed into this machine for 100 bucks (well… apparently 130 to 140 dollars to start out) is astounding.

It uses Linux as its OS, flash RAM rather than a hard disk, ad-hoc wireless mesh networking, a video camera, microphone, sound, USB, and a pretty decent LCD screen.  It’s engineered to use 2 to 3 watts of power for long battery life.  There’s even a separate power unit that will allow you to use hand power or foot power to recharge the battery.

The OLPC is interested in using this laptop as a modern learning tool for children living in some of the poorest places on this Earth.

There are a lot of interesting discussions that surround this project ranging from people who think that what the OLPC is doing is great, to people who believe that this is money better spent on the basics that these children need to live.

I think it would be kind of neat to be able to get one of these to see what it can do and what it can be made to do.  Unfortunately, the OLPC website says that it won’t be available to the general public.  Hopefully some of their ideas make their way into consumer models in the future.

Filed in: Team Member Blog Comments (1)

Open Source Java

Sun announced earlier this week [announcement] that they would be open sourcing Java.  Millions of Java programmers rejoiced.

What does Sun’s decision actually mean for the typical programmer?  Probably not much.

Sun decided to release the JDK along with the Java compiler and the virtual machine under the GPL v2 license [GPL website].  What this means is that Sun grants a royalty free license to anybody to redistribute the pieces of the JDK along with the source code.  Developers can also create new pieces of work based off the original code as long as they indicate the changes and the original license.  This does not stop anyone from charging money, however.  It is legitimate to charge for media distribution or warranty support.

What this may really do is kickstart more innovation with regards to the internals of the language implementation itself.

While in the past new JVMs have been created by third parties, Sun would expect those third parties to license the Java technology.  Now, since all aspects of the JDK will be under the GPL, anyone will be able to create a new JVM implementation, a new compiler implementation, or even a brand new implementation of the language itself.

I expect the real benefit will come in the form of JVMs for operating systems other than the standard UNIX/Linux, Windows and MacOS.  Hobbyists will be able to tweak things and redistribute them to others.  Academia could use the source code as a teaching tool.

This announcement is also nice for various Linux distributions and individuals who don’t like to use products that are not licensed with one of the open source licenses like the GPL.

So, at the end of the day this doesn’t really mean much for a regular user, or a non-interested developer.  For those who like royalty-free software and the ability to peek under the covers, this is a wonderful opportunity to have some fun.

Filed in: Team Member Blog Comments (0)java

Linux is Fun

I’m a huge fan of Linux.  I’ve been using a Linux desktop as my primary OS for about three years now.

Call me crazy.  Call me a glutton for punishment.  I enjoy it.

I realized a few years back that there just wasn’t a need to use Windows anymore.  Everything that I really use on a computer has a Linux equivalent (well, almost… but there are ways around that).  So, I made the big switch.

I started out using one of the older versions of Mandrake (now Mandriva if I remember correctly).  Unfortunately, Mandrake had a tendency to corrupt itself on my computer, so after the third or fourth time of starting for scratch, I decided to look at a different distro.  One of my brother in-laws who also uses Linux as his desktop OS had tried out a distro called Gentoo.  I checked it out and have been using it ever since.

Gentoo is an interesting distro with an interesting philosophy: everything should be built from source on your machine.  The upside is that everything runs fast.  The downside is that it can sometimes take a long time to compile packages depending upon your processor speed.

The package manager, Portage, is top notch.  It does a great job at managing dependencies and performing the builds through a glorified scripting system called ebuilds.  Gentoo can be kind of heady, though.  There is a ton of documentation and a really great community surrounding it, but it’s still not as simple as other distros to get things to work.  You’re routinely editing scripts and config files to make things work.

I don’t mind it.  I’ve currently got three machines running Gentoo (soon to be four).  It runs really well on low-memory and low-processing speed machines.

So, what’s the point?  The point is that as a Java developer there’s no need to be tied down to the Microsoft world view.  Java works just as well on Linux as on Windows.  Eclipse runs great on Linux.  (If you really want to use it, WSAD is available also)

Developing on a Linux box is so much snappier than on a Windows box.  (Disclaimer:  I do not run a full Desktop Environment such as Gnome or KDE)

The nice thing is that if you absolutely need Windows for something, you can always run it inside VMware.  VMware Server is now a free product.  It works spectacularly well.

Give Linux a shot.  The more people try it out, the better the OS and the various desktop environments will get.  This is critical to give Microsoft and Apple a bit of competition in their arenas.

Gentoo: http://www.gentoo.org
VMware:http://www.vmware.com

Filed in: Team Member Blog Comments (0)linux

My first post (web services)

Okey. Lots of people talk about web services nowadays. Lots of companies claim they are applying SOA (Service Oriented Architecture) or so. Is that real? Let’s have a look at web services from its root. I’ve heard a dozen definition of Web services for the past few years. half of them just used whole bunch of fancy but meaningless words to attract people while another half tried to render something close to traditional technologies, EAI (Enterprise application interface), etc. I really don’t like either of them. So I will give my own concise definition of web services.

Web services is a technology for a distributed, message-oriented, heterogeneous environment.

1. Distributed: the real-life computational environment is never centralized; it’s always distributed. The message senders, the message receivers, and the resources (servers, databases, printers, and data warehouse, etc.), for example.

2. Message-oriented: for all the distributed resources, there exists two type of parties. Namely, the service provider (service generator, service owner, or whatever name you like it to be) and the service requester (service consumer, service subscriber, etc.). The idea is that the service providers present something they think valuable for other parties while the service requesters look around and search for some services for themselves or for some other parties (for instance, uses the service they got to do some work and forward the results to the next service…). Notes that this procedure is totally asynchronous. Both the service providers/requesters can do their job simultaneously without needing to wait each other at all. To be able to achieve this objective, a standard but non-vender-specific way is needed. More specifically, a lightweight, txt-formatted, semantic-contained message mechanism is desired. As the de facto standard, XML happens to satisfy all the requirements. So it’s ideal to be applied. Notice that there might be a better way to do this, not necessarily XML. I actually believe there might be some better way to do this than XML in the future.

3. Heterogeneous environment: we are not living in an ideal world. So unfortunately, we developers, have to deal with all kinds of different environments everyday, different databases, different operating systems, different network protocols, etc. So what are we gonna do? Whatever we plan to do, the bottomline is all of us need to have at least some agreement to begin with. By conforming to this mutually agreed statement, we hide all the details of our own environments and pretend we all play on the same platform. In a developer’s terminology system, it is called interface. Okey, now, here is what people do now to connect all the three elements together (it’s still evolving but the general idea is the same): The service providers register themselves as services at some place (uses technology like WSDL web services description language); use UDDI (Universal Description, Discovery, and Integration) (or similiar technologies) to expose these services (just like the yellow pages). The service can be accessed using different transport technologies (like http/https). The service requesters search for the services they need by looking up the UDDI directory. The methods, arguments, ports, types, security reqirements, and whatever needed for the desired services are right described in WSDL.

More thoughts. Some services might have dependencies on others. This means if you wanna use these services you need to call other services first. And you are right, it’s perfectly okey to combine some services together to form a bigger service. Some people call this service orchestration (one more fancy word, isn’t it?). You might already notice that services can be organized in different way, e.g., some services cannot be used if some other services have not been called; some services might need to be implemented many times until you get the final results… Sounds familiar, right? It is! This is what’s happening in a tradional programming language like C. All the structural stuff can be put together and finally you can end up with a pretty complex one! Some people call this workflow, ah huh, see, we got all these simple concepts together in just ten minutes in this article^^.

Hope you like this article! Again, this is Matthew Huang’s first post.

Welcome your comments and I would like to share more of my ideas with you!

Filed in: Team Member Blog Comments (0)

First Post!

OK. I’ll admit it.  I really like programming in Ruby.

I’m a Java developer by trade, but the opportunity presented itself to get to know Ruby as more than just the name of a gemstone.  I’m usually skeptical when it comes to programming in a different language because Java offers so much and you can program pretty much anything with it.  But… then waltzed in Ruby.

From the moment I ran “emerge ruby” and took a look at the Pickaxe book, I was hooked.  It sucked me right in.

From the conciseness of the language syntax, to the built in libraries, to the flexibility of the language, to developing using Rails… what can I say?

I know plenty of people will disagree, and that’s fine.

Ruby fills a void for me.  It has some interesting features that Java doesn’t (everything is really an object, closures), and it’s quite easy to program in.  I’ve been looking for a language that has Java-like power with the ease of a general purpose scripting language.  Ruby really fits the bill.  I appreciate that you can program a really nice object-oriented application with it, and on the other side of the coin you can program a quick script with it.

I’m sure I could go on and on, but for the moment I won’t.  Ruby has helped to rekindle my joy of learning different programming languages for fun.

Check out Ruby for yourself: Ruby Website

Filed in: Team Member Blog Comments (0)ruby

Page 8 of 8 pages « First  <  6 7 8