Older blog entries for nymia (starting at number 861)

5 Sep 2003 (updated 5 Sep 2003 at 06:27 UTC) »

Two days ago, the dev team got a heads-up on some major bugs that need immediate attention. A list was given out what the error was, reported by the actual users or customers using the program. These items were considered very critical that $THE_BOSS gave the signal to go ahead and fix them even if it takes a minor architectural change.

On another note, the number of hits seem to be increasing. Some on the inquiries were converted to sales, showing that it may take some time before that conversion number would reach break-even.

jdybnis' lost page

Fortunately, I kept a copy of it.
This commentary on fundamental OS research is pretty amusing. The author motivates his discussion with some silly statistics like: the time to read the entire hard disk has gone from <1 minute in 1990 to about an hour in 2003. Going from there to demanding more CS research is like demanding better transportation technology because it took your grandfather 10 minutes to walk to school, and you have to sit through a 40 minute bus ride.

Then there is his list of of areas where people should do more research. Leave it to a kernel hacker to think a page replacement algorithm is a fundamental area of research. Let me tell you, operating systems is one of the least fundamental areas of computer science research, and the Making your computer faster (because the ratio of memory to cpu has changed once again) side of os research is some of the most transitory of that.

This piece did make me think of something I wrote while taking an into class on Operating Systems. Here is my solution to the swapping problem. It could be titled We Don't Need Another Page Replacement Algorithm.

Disk i/o is such an expensive operation these days that it can render interactive applications unusable, and for batch processes it can be the sole determining factor of throughput. This implies that we want to avoid disk i/o as much as possible. And when disk i/o is absolutely necessary, we want to give applications complete control over how it happens, so that they can be tuned to minimize it.

I propose that it would be better to enforce hard limits on the physical memory usage of each process, rather than the current abstraction in which each process thinks it has the entire virtual address space. This would work as so. When a process requests memory from the system, it is always granted physical memory. If the process has surpassed its hard limit, the memory request will fail and the process has three options: it can cease to function, it can make do without the additional memory, or it can explicitly request that some of its pages be swapped out in exchange for the new memory. If the process tries to access data that has been swapped out of physical memory it will be forced to deal with the page fault itself. Again the process will have three options: it can cease to function, it can cancel the request, or it can instruct the operating system to swap out some other data to make room. The benefit of this would be that each process could be guaranteed that it would always be resident in memory. With current abundance of RAM it is reasonable to assume that ALL the processes running on a machine can fit entirely in memory at once. The exception, which I will address later, is when an unusually large number of processes are running at once. The downside of this system is the increased work for the application programmer. But I argue that this complexity is essential to the applications, and will be gladly embraced by the programmers. In cases where an application's working set can be larger than the available physical memory, the performance of the application will depend primarily on the careful management of disk i/o. Many of the applications that face this problem, such as large databases and high resolution image/video manipulation, already subvert the operating system's normal memory management services.

I have been intentionally vague on how the system decides on which pages get swapped out when a process requests more memory than it has been allotted. There is a trade off between simplicity and degree of control for the application programmer. One option is to use a traditional page replacement algorithm (LRU, MRU, etc.), but on a per-process basis. This is can be compleatly transparent to the application, but the application could also select which algorithm to use, or even provide their own. The next level of programer control comes from allowing the process to allocate memory in pools. The memory in each pool is grouped together on the same pages. Then the process can select which pool gets swapped out. The two approaches can even be used together, and the application can specify a page replacement algorithm for each pool.

In the case when an unusually large working set, and the system is faced with too many processes to keep in memory, most current systems fail spectacularly. Not only does the Nth process cease to function, but all processes grind to a halt when the system starts swapping. I have seen this behavior on systems ranging from desktop machines to high availability servers. Usually the solution to this problem is for a user to intercede and manually kill off the "least essential" processes, or the "Pig". Clearly it would be better if the system avoids going into such a state in the first place. The system I proposed would refuse to start a process in the first place if it does not have the physical memory available to support it.
3 Sep 2003 (updated 3 Sep 2003 at 22:54 UTC) »

Spent some time working on the BeOS port. Was able to define a few BeOS implementation of the interfaces defined under /AztecGUICommon/include/gui. I'm pretty much optimistic in the outcome since most of the AztecGUI interface can be mapped to the BeOS Interface Kit.


While Javascript can be considered a very nice tool for embedding, it also has some rugged features that might not fit properly for those who like to use the prototype part. Let me first mention the most likely reasons why one would use it.

Javascript is a nifty one when it comes to DOM handling, the implementation of Javascript allows the scripter to write statements that easily express the intention. The flatter the DOM, the better the expressiveness since most of the objects can be referenced without the use of a delegate or factory object. Most likely, applications that use Javascript usually build the DOM first before connecting them to the context object. Resulting to a lesser overhead during setup.
2 Sep 2003 (updated 3 Sep 2003 at 02:58 UTC) »

When in comes to usage, there is one example of a company who deliberately dropped the symbol in order to save some money. Try guessing who is this one.


Played around with objects in Javascript getting it connected to some simple BeOS native API. Found some of the helper macros a little bit hard to use, maybe because I'm still a newbie, though.

Display List, Rotate/Translate/Scale Matrix

Spent some time looking for code that will rotate, transform and scale a given path (shape). Also wrote a simple Display List tied to a Timeline. Not sure if that was the right thing to do.


Did I mention LibArt code is very much included in this? It looks like a front buffer can be added to the render buffer so that all drawing ops happen in the render buffer. How about setting up two buffers on top of render? That might increase performance.
BView, Animation

Created several classes for handling bitmaps. Might use the image library later.

I consider myself fortunate to have a friend like Tony who can be considered a close friend. Although our beliefs and philosophies are poles apart. My philosophy is close to the much-hated Capitalism, while he seems to be more of the Socialist. We seem to blend nicely partly because we are trying to figure the cultural background. He has fine manners when in a formal crowd; he knows the protocol. So I guess he is highly educated from where came from telling from how he uses certain words. Somehow, he doesn't show it, for instance, I was surprised to see him holding a book written in spanish, I asked him what heck is that for? he threw the book at me and read a few paragraphs about the life of a great reolutionary in LatAm. "Do you read this thing or was it given to you?"

All I know about Tony's country was that his was only a place on the planet, but I have no idea what the culture or history was. I learned a lot about the place from Tony as he told some of his life back there.

Family Gathering

We never went to the once-in-blue-moon reunion. I called up my uncle who lives in France and asked him if he will go, he said he doesn't want to see his relatives. I called up another and he also said he was too busy running the business, plus the reunion will only be used for bragging. Although it would be nice to see them in one place, faces never seen before. So, are we breaking away? I asked them, I never heard an answer. We are not bastards I jokingly said, we can go if we wanted to. Not this time, my uncle answered, there is a problem going on. "Oh, I see."
30 Aug 2003 (updated 30 Aug 2003 at 07:06 UTC) »
Old Ones Go

I think the last one was a good start because we managed to let new things come in and the old ones go. The news ones, software-wise are BeOS R5 and Redhat 9.0 becoming the standard OS here at home. Somehow, we managed to wean the kids from W2K, getting them over to Linux.


I was talking to George about having to construct four huge columns made out of poured concrete. The columns would be built using prefab from a mold made out of aluminum. He mentioned I should go and look at the Hillsboro area looking for this shop for wooden or fiberglass columns instead. Each one costing around $250.00, I replied that was too much for a column, though. George mentioned that if I can produce one and the result is good, meaning less than $250, he might look at it and probably use it as well. Might become a business later on.

BView, Drawing, Animation

Currently writing a test code that draws a bitmap on a BView. Testing to see if it is possible to create a simple animated scene using native API. Test bitmap are the Hiragana characters drawn on the BView.

Rant: Dependence, Next Level

This may be an issue but I noticed that I have been using this site for more than two years now. I think this is not normal coz it may be some form of addiction or something really bad. Maybe I need to look around and find other websites and see if I can switch.

I want to go to the next level, maybe write with more passion. Use words and phrases that really pull causing fire in the hearts and minds of readers. But I think this is not the site for that kind of writing, though. That's probably why I feel I must look around.
29 Aug 2003 (updated 29 Aug 2003 at 18:05 UTC) »
Open Game Console

Been watching the prices of some off-the-shelf parts, found one interesting item worth looking into; the $70 CPU-Mobo combo, consisting of 2.4GHz Celeron and VIA mobo. The price definitely fits the bill in the Open Console Spec, though.

On the software side, I stumbled upon a game pad controller code, though not even tested at the moment.

It may take a little more time before prices of certain parts become really cheap, in order to make Open Console Specification usable.
28 Aug 2003 (updated 28 Aug 2003 at 19:41 UTC) »
Vertex Legacy Type

Looked into the possiblity of adding a Direct3D implementation by using the Vertex Legacy Type.

BModel, BBuilder, BSpecification

Currently putting more code to see if the concept will fly or not.


While walking in the parking lot towards the destination, there was this old Italian lady murmured something barely comprehensible. Greeted her with "bonum diem" and asked what she was trying to say and said if I had seen the Catacombs? I replied no, I have not seen it yet. She said "You better be."
28 Aug 2003 (updated 28 Aug 2003 at 05:15 UTC) »
Mozilla Browser Test

1) ﻚﻴﻠﻋ ﻡﻼﺳﺍ Sister of Islam [ 1 ]

2) 英語サイト - English [ 2 ]


Decided to allot 1 hour of Arabic study. Found a nice site إلى صفحتك الرئيسية to read and learn.

Don Francisco y 'Bomba Mas Sexy'

T'was already three o'clock in the morning when suddenly a really nice show came up on Sabado Gigante.
27 Aug 2003 (updated 28 Aug 2003 at 04:49 UTC) »
BJavascript, BBuilder, BSpecification

Currently coding the classes needed to implement a simple app using OpenGL and Javascript. Borrowed a lot of ideas from Smalltalk in setting up the classes though.

852 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!