Thursday, December 29, 2005


To get ready to publish to the SDL list I need to do the following:

1. Fix apps from pointer experiments.
2. Add loading resource messages to apps that load alot of resources
3. Add screenshots to sample apps on web site
4. Add homepage fixes
5. Add team web page

Wednesday, December 14, 2005

Successful Demo

My personal blog has an entry about a demo I did for my programming class that went very well.

Wednesday, December 07, 2005

Ajax Backlash

The ajax backlash has already started. More comment on

Tuesday, December 06, 2005


I apologize for an outage of about 26 hours that ended this morning to both the website and the app server. I lost a switch.

Build 50 added support for resizing the window. Build 51 added support for transparent image backgrounds.

I expect to finish porting Bob Pendelton's demo game next week, and release a new version of NewI\O at that time.

It seems to me that I need to improve the process of loading resources. I need to specify a slot for a resource to go into, and then send a message back the has information about the resource in that slot, information that may be useful to the program on the server.

For example, when an image is loaded I can send back information to the program about attributes of that information, such as its size, etc. This would be a seperate message, so that ap running on the server would not have to wait for the response, unless it chose to do so.

Wednesday, November 02, 2005

Build 49

Build 49 fixes a major bug. I was drawing in more than one thread and occasionally seeing errors. Fixed now. Also API additions. So we are bumping up the version to 0.09. All users of will need to upgrade. Dreadnought should force you to upgrade anyway.

Friday, October 21, 2005

Mark Andreesen Hates Java

This [] post claims Mark Andreesen hates Java and thinks PHP is the answer. This brings out all of the comments detailing the problems with both Java, and PHP. Naturally I agree with all of the problems I read, and think NewI\O is the real answer.

It seems so obvious to me that the problem with Internet Apps is the web. Get rid of the web and make a system designed to do what you want. How can it be any simpler than that?

NEWI\O STATUS: I am finishing up adding video support and I want to fix the event system, perhaps even add a proper event queue, and then release again, hopefully this week.

After that I want to port Bob Pendelton's demo game Bounce to NewI\O. It is a more involved graphics app demo and would be an excellent and impressive test of NewI\O's capabilities. I do not expect it will be difficult to port.

Then I want to release NewI\O again, probably to the wider SDL mailing list.

Tuesday, September 27, 2005

[ANNOUNCE] NewI\O Alpha 0.07 (Build 043)

In accordance with the release early and release often principle, the NewI\O team is pleased to announce:

NewI\O (Alpha Version 0.07)

What is NewI\O?

NewI\O is a system for running programs on the Internet. Instead of trying to kludge a document browser to run programs, it is an attempt to create something from the ground up to run programs.

The NewI\O system consists of:

1. The NewI\O application browser Dreadnought (
2. The NewI\O daemon NIOd (
3. The NewI\O library NIO_lib (

NewI\O currently supports keyboard and mouse events, colors, drawing primitives, fonts, images, sounds, and music. Video support is in progress.

How it Works

Type in a URL to the browser. An application is started on the server, and I/O is sent back to the browser using a simple bi-directional message scheme.

Resources such as sound or image files are downloaded just like a web browser would handle them. Therefore, the first time it runs, it will
take some time for the download. The resources are cached, so subsequent runs are much faster.

What is new?

Everything. This is the first general public release for this software.


Alpha, very alpha. Major sections, such as security, are still to be implemented.

The NewI\O is system is free software. It is released under the GPL. Libraries are released under the LGPL.

There are a few small applications written for the system, although most of the work to date has been in the lower level plumbing, and not in applications. Therefore the API is very preliminary at this point. Fortunately, it is very easy to modify or add to the API.

There are two reasons game programmers may be interested in this code:

1. Game programmers may be interested in programming for and using this system. Although it will probably never be adequate for the most advanced 3D action games, there are many other types of computer games where a system such as this may be adequate and even advantageous. One of the design goals was to create a system that is very easy to program for, and in my opinion, this has been achieved so far.

2. Game programmers may be interested in the code itself as an example. Since it is designed to be a general purpose client, it uses most all of the features of the SDL and associated programming libraries. It is written in straight C, and is hopefully fairly object oriented so sections could easily be pulled out and used in your own projects.


Sam Lantinga, Ryan C. Gordon and the rest of the SDL team
Bob Pendleton - Font and text routines
Ryan Mcguigan - SDL_prim library

We would be interested in any comments that you have.

The NewI\O Team
September 27, 2005

Saturday, September 17, 2005

Scobelizer on Thin Clients

Scobelizer on MS Office and thin clients. Be sure to read the article this links to.

The thin client guys fire back. Be sure to read the linked articles here and this article, too.

I believe that the more powerful the thin client software is, the more right the thin client folks will be.

Older Thin Client Discussion

I constantly see articles that remind of the need for NewI\O. Here are several:

There is an older discussion of Longhorn being too fat here.

Be sure to read the article it links to here. HTML is as good as dead for apps, which is why I am working on something new that I believe to be far more powerful.

And the article this article links to here. The world does need a simpler Java, and I aim to provide it.

Sunday, July 17, 2005

Preliminary Report is In

I have completed my library that implements a dual threaded client server messaging system. At my work behind the slow firewall I was getting about 8 transactions per second. With this new library I am getting 800. It is even faster than I expected. Very exciting.

In fact, to do 20,000 messages (10,000 in each direction) takes about 21 seconds on my home machine. To do it through the slow firewall connection at work it take about 25 seconds. There is hardly a difference. It is amazing. I am thinking that you will hardly be able to tell that you are running an application across the network.

I can not wait to finish integrating it with my application browser and see what it looks like visually.

Apple Abandoning Java?

From this Slashdot article it appears that Apple is abandoning Java. It does not look to me like the future is Java.

Tuesday, June 28, 2005

Remember this Acronym: DOIP

DOIP is Display Over Internet Protocol. See this link. This is what I am doing, except that my version also allows you to access your own data, which seems to be the big complaint against DOIP.

Sunday, June 26, 2005


I convereted my application from TCP to UDP. I went from 25 transactions per second to 33 transactions per second at the local wireless cafe. Nice but perhaps not worth the hassle of using UDP. I have hopes for a more significant speed boost when I use dual (or triple) threaded one-way communication channels.

Wednesday, June 08, 2005

Dreadnought Browser Status

Using the Fastevents and Net2 libraries added no noticable performance increase, so it appears those were dead ends. It did make me think of a new architecture, though. I am going to try using 2 channels, 1 from the app to the browser (basically the channel I already have), and also a new channel from the browser to the app. The second channel will send event info to the app, including keyboard, mouse, window resize etc. This will be maintained as a state by the library, so when the app needs the info it is a local call. Also, I am going to see if I can get rid of confirmation return messages. Again the purpose here is to increase speed.

Sunday, June 05, 2005

Java Funny

This was pretty funny.

Sunday, May 29, 2005

Open Tech 2005

Cool, a new conference to apply to: Open Tech 2005, in London.

I believe I will finish my speed improvements and then apply to be a presenter. You only get one chance to make a first impression. Deadline June 25th.

Also the INTETAIN Conference in Italy might be good. Deadline July 18th.

Monday, May 23, 2005

First Sun, Now Apple

Now rumours that Apple is interested in DOIP and the platform will be QuickTime...interesting.

Also, what is this that Sun is doing on June 1st?

For years I have wondered why the computer industry has not figured out how to run applications across the Internet very well. I think they are starting to get it now.

I probably should get NewI\O out there for it to have any chance at doing something. For the first time, I feel the window of opportunity closing...

Wednesday, May 18, 2005

Competitors and NewI\O

All of the competitors to the NewI\O system are sort of, semi-competitors, because nothing exists that is exactly like it. If it already existed, then I would just use it, becuase, I myself am a customer, and want to program for and use it. However, since nothing like it exists, I was forced to make it myself.

Sun Microsystems has one sort of, semi-competitor to NewI/O in Java. This is a competitor in the sense that it is portrayed as a nework application system. It is not a competitor in the sence that it works totally differently from NewI\O. Java downloads virtual code and runs it on the local computer, and so is not really even a network application at all. NewI\O runs applications on a server and displays the result in a browser (similar to a thin client): totally different technologies.

I bring this up because Sun just bought out a company that is another sort of, semi-competitor: Tarantella. This technology is similar in that it runs apps on the server, and displays them on a client, but what is different about this from NewI\O is that it is desktop sharing applciation, like X-Windows or Citrix. In this case my application is different in that it has nothing to do with desktops. My system simply shares an application and leaves your desktop alone.

It also occurs to me that there is one really big difference in strategies between me, and all of these companies. The competitors are all looking at what businesses need, and are trying to develop products for them. I, on the other hand, am looking at what an individual needs, and trying to create something to meet that need. While they are looking at specific business solutions, I seek to set an Internet standard.

For this reason ease of use is critical for me. The above applications are not for the masses. A home computer user is not going to be setting up Tarantella to run some program on the Internet somewhere. It is for this reason that I chose a browser interface. Users are already familiar with it. I can see users easily typing in or even just clicking on a URL to run an application.

I believe that I am shooting higher, and will be able to easily penetrate the business market, if I succeed in setting an Internet standard, so in a way, I am doing an end around on all of these other sort of, semi-competitors.

Dreadnought Browser Status

I am still not satisfied with the performance of the Dreadnought browser, so I have decided to use Bob Pendleton's Fest Event and NET2 libraries which can be found here. This will put networking in its own thread, and also allow me to go from two loops to just one. So far it does not seem too difficult to bolt them on. I have already added them in to the project with clean compiles, but the Dreadnought browser is now broken, until I fix some structural issues like combining the network queue and the event queue, and re-writing parts of my NewRPC protocol.

Alas, this means that documenting the other parts of the system, such as niod and nio_lib will have to wait.

And there are tons of API changes and additions I want to make. And then when that is all done, I really want to start using it myself to write some apps.

The problem is, there are just too many good things to do.

OpenOffice 2.0 Criticized on Use of Java

Here is another article about the controvery about using Java.

Wednesday, May 11, 2005

Browser Source Code Released

I just posted the source code for the Dreadnought browser publically for the first time. You can get it here. There is already a linux binary available. WARNING: This is VERY alpha.

Monday, May 09, 2005

REST Based Web Apps

I saw this on Miguel de Icaza's web log. It just re-inforces my contention that the web is not the place for Internet applications. We need something purpose built for applications. The I told you so is pretty funny, too.

Wednesday, April 27, 2005

DOIP (Display Over IP)

Jonathan of Sun Microsystems had an interesting take on something that he called "Display over IP" (or DOIP). This is more often called "thin client". What it is is basically running your applications on a server, and then dispaying on your machine.

Sun's solution that he talks about is based on a very powerful technology called X-Windows. X-windows has been around for a long time in the unix world. It is standard on most unix distributions as it is the default desktop for unix. It is available has an extra from Apple for Mac OS X, and from third parties for the Windows platforms. While it is wonderful on unix, it is clunky and ugly on OS X, and Windows because, unlike unix, it is not the default desktop for these platforms.

X Windows uses a powerful communication method called Remote Procedure Calls (RPC). It is basically a way for a computer to make a call to a program routine on another computer across the network.

Besides being ugly on some platforms, X-Windows also has trouble doing modern things well. For example, while it displays well, it does not handle music at all. It was designed for display only, not sound.

Now a web browser (or Internet Document Browser (IDB)) can also act as a thin client. For example, you can use it as an e-mail program to check your e-mail, or you can use it as an editor, to build web sites, as I am doing right this moment.

The big problem with a web browser is that it was not designed to be a thin client. It was designed to display documents. Because of this, it is pretty clunky as a thin client. It uses HTML and various other technologies (java script, etc) to try to do the job of a thin client.
It works, but I believe that it does not work well.

My idea is simple: make a browser that uses RPC. Viola! An Internet Application Browser (IAB).

Also, what is different about my idea, and what Jonathan is talking about, is that he is talking about small islands of thin clients. With Sun's solution you have to choose thin or thick clients. You can not have a thin client that can also run local applications and vice versa. You have to pick one or the other for all of your apps.

With my solutions you can run thin client applications on your regular thick (regular) PC or Mac. This may at first seem to go against the thoery of thin clients, but the afvantage is choice. You can phase out your local applications over time, as your internet applications become useful.

Here are some discussion on the above referenced essay: 1, 2, and

Rejected Again

I just heard from the 6th International Free Software Forum. They turned down my proposal for a talk.

The answer was rather interesting though. It seems you can go online and see how they rated your proposal. I had three people rate my project.

The first thing they do is rate themselves on the subject that you are proposing. Reviewers #1 and #3 rated themselves "not experts, but comfortable with subject". They both rated my project 4 of 5 in relavence. I am a little puzzled by this score. Not sure why my free software would not be 100% relavent to a free software conference, but anyway. One rated my proposal a 5 and one a 4 (out of 5) for technical quality. They also check you out by poking around on the web and one rated me a 5 and one rated me a 4 for experience (by that I presume subject matter expert). Lastly both gave my project a weak acceptance (yes, but not strong yes) recommendation.

However one reviewer rated himself an expert on my topic, so presumably he would know better than the others, who are not experts. He gave my proposal a 5 for relavence, a 5 for technical quality, gave me a 5 for expereince, and gave my project a strong acceptance rating. Top marks all the way across.

It makes me feel good that the guy who knew the most about the subject, wanted to see it the most.

There is a bias toward existing (and more accurately famous) projects at these conferences, because they have to sell tickets to them to pay for the hall, etc. So actually I am encouraged that I got as far as I did with this, especially since there was virtually nothing on the web for NewI\O at the time of the submission.

It would have been nice to make a big splash at a conference to debut it, but I can not wait until next year to try again, so I will go back to the original plan and annouce it on various technical mailing lists.

Some might think it strange that I post my rejections on here, but they do not deter me. For some reason my mind tells me, "Don't worry, someday they will wish they had NewI\O on the agenda". This could be confidence or this could possibly be mental illness. My whole motivation to continue is to find out which it is. Heheh. :)

Problems with .NET

Here is a somewhat recent article about problems with Microsoft's .NET platform:

Here is some discussion on this article.

I post this not to put any other developers or organizations down, but rather I believe that they are problems with all current solutions, and that no one has gotten internet applications right, yet. It is for this reason that I am working on NewI\O.

Monday, April 18, 2005

John Carmack Destroys Java!

In his March 27th blog entry John Carmack (of Doom game fame), discusses coding games for cell phones. In it he really clobbers Java. I quote:

"The biggest problem is that Java is really slow."


"Write-once-run-anywhere. Ha. Hahahahaha."

In my opinion the latter is really the biggest problem. The whole reason for Java's existance is the latter.

Java as a network application environment has basically 2 parts:

1. Download portable byte code


2. Run portable byte code.

The first part is the network part and of course downloading is very simple, and this part works flawlessly, but in my opinion does not get you where you want to go.

The second part is the problem. Since Java can not control the execution environment (every computer is different) it fails in its mission to run everywhere. This is what John is talking about.

At work I have to have 5 different versions of Java installed on my PC, because each application was developed for a different version of Java, and (apparently) they can not run on a different version of Java. This does not even include trying to run on a computer with a totally different operating system, such as a Linux computer.

My New I/O system is simpler: run the application on a host (where you can control the environment), and display on the client. Since it is much simpler to display then to run a program, you you will be able to "write once, display anywhere", and in the case of New I/O it will really work.


P.S. Here is some more Java controvery.

FISL 6.0

My strategy for New I/O is to create an open source platform and attract developers who are better coders than me to the project. If the platform were then to achieve wide-spread use, then there would be a great oportunity to form a company to commercialize it by selling support, enhancements, applications, etc.

To that end I have applied at various Free Software Conferences, in an attempt to garner publicity for my project. One of them was FISL 6.0, the 6th International Free Software Forum, June 1-4, 2005, in Porto Alegre/RS, Brazil. I had not heard from them in some time, so I was not hopeful, but tonight I got this e-mail:

Hello Chris Nystrom,

We're in the last step in fisl6.0's lecture selection process. We had a
high number of submitted proposals, all of high quality and,
unfortunatelly, we cannot accept them all in our program.

We inform you that your lecture proposal for fisl6.0, with title
"newio - an internet application environment",
have not entered this year program yet, but there's still a
possibility of it being accepted, depending on other factors.

Therefore, we ask you to wait: as soon as we can, we
will notify you of the final result.

Feel free to contact us to solve any doubts you may have by e-mail:


fisl6.0 Program Committee

Cool! I am still in the running! This would really be a big boost to my project to get some exposure like this.


"Web services may collapse under its own weight"

On March 4th, 2005 Jonathan Schwartz, president of Sun Microsystems wrote:
I'm beginning to feel that all the disparate web service specs and fragmented standards activities are way out of control. Want proof? Ask one of your IT folks to define web services. Ask two others. They won't match. We asked folks around the room - it was pretty grim. It's either got to be simplified, or radically rethought.

He is right. I vote for radically rethought.

Web services are basically services (applications) provided across the internet using the web infrastructure. This is a flawed idea from the beginning, because this infrastructure was not designed to do this. I am not saying that it can not be done, or will not work. What I am saying is that it is sub-optimal. The proof is that no one would design it this way, if the web had not already been in existance.

That is why I like my New I/O system. It is simple. Very simple. You may think that it is a negative calling something simple, like calling something simple minded for example, but it is not. In the computer field, as in good writing, simplicity is elegance.

A couple of other points. He is also right about C/C++. It is very much still alive, which is why I am basing my system on it. Also, he is right about Java, although, I think it is because the alternatives are limited, and Sun was disproportionally influencial during the internet era, rather than because it is the best possible solution.


New I\O

Ok, so I have this idea for a new internet service. Basically, it is a network application browser, designed specifically to run programs, instead of display documents, like a web browser.

I work for Oracle, the world's #2 software company. So anyway, I send e-mail to Larry Ellison and the entire chain of management a presentation, pitching it as a way to pass up Microsoft to become the #1 software company. Here is a link to the presentation:

So do I get a response? Even a polite thanks, but no thanks? No! I almost get fired! I get a letter of reprimand. You would think that companies would want people coming up with ideas to take the company to the next level, but alas, I am too far down the totem pole to be able to give ideas.

The funny thing is, in the compay handbook, under a section titled "Open Door Policy" it says that if any employees have any ideas for _Senior_ (emphasis mine) management to go ahead and send it in.

Ironic, huh?


Tuesday, April 12, 2005

Welcome to the Blog

Welcome to the New I/O Blog. This is the official communication channel.

Thank you, and Happy Computing!

The Management