Older blog entries for nymia (starting at number 49)

15 Aug 2000 »

4:11 PM

Ok, I finally understood what the whole thing is about. AtheOS dev env is AtheOS itself, silly me, I should've known that in the first place.

Clippings

Cowpland resigns to focus on start-ups

3:10 PM

This is to remind me that I unregistered the dll files pointing to serverA and registered a new set of dlls pointing serverB. Once I'm done with serverB, I should unreg and reg the dlls to its original server.

12:19 AM

Mulad, it's true, DOS shell is gone--kaput. It's probably the Win2K install program, it took away the DOS shell. Dang it, this is bad. Now, I'll have to get me a laptop.

11:28 AM

My goodness! They took away DOS shell in Win2K. How will I play with gcc and nasm on Win32 now? My bad! MS, what have they done with DOS shell!?

8:42 AM

Next time, I should be very careful when mentioning nasm and gas, as some people are sensitive about it. I guess it was an honest mistake for not including gas in the development environment, but it should be in there too. How can anyone use gcc and not use gas when dealing with low level code. Nasm is good but gas is inescapable.

Hmm, my suspicions were correct. KDE has realized they need to market themselves to the public. This is going to be fun to watch.

15 Aug 2000 »

Clippings

Intel To Acquire Ziatech In $240 Million Transaction

11:37 PM

Things are heating up on the KDE camp. It seems that they are realizing that the GNOME people are good at marketing themselves to the masses, which make the competition between the two even stronger. This is really exciting, we'll see who is going to win.

10:31 PM

AtheOS seems to be very quiet on the development front. I think nobody is developing except the creator himself. It's really sad to be noting this because I find it very promising. Plus there are already people willing to commit their free time to further its development. I'm really hoping that a development environment should be decided ASAP.

There is one poster that I think is a good hacker, he says he knows a lot of FreeBSD stuff. He also stated he is an active developer at FreeDows which he said is going nowhere.

8:25 PM

Ok, I think I got a simple hello world kernel running. Hehe, I finally got it to print hello world. It starts at main and calls print to write a series of characters to a memory location. This is fun. Next is how will I make a timer activate a handler. Of course, no interrupts should be activated, the only signal allowed is the timer.

4:20 PM

Currently studying a business object. Was given several docs to read and get familiar with, other than that, everything is OK.

12:20 PM

Nobody responded to my post yet. It looks like they wanted to fork AtheOS. I really don't know why they want it forked but the only reason I could find is that it has some dependencies on Win32 include files. If they managed to fork it then I guess I'll have to go with it too and I'm hoping they choose Linux as the development platform.

14 Aug 2000 »

11:11 PM

Currently playing with some sample programs that I downloaded from this site. I must say these programs are very good for making kernels.

11:57 AM

Speculation

One thing I noticed with COM's IUnknown is the QueryInterface member function. COM specification details say interfaces totally decouple objects from each other, objects pass information by means of wires connected to each other. But, I think COM has made a mistake when it used refids to query an interface, this method resulted to an effect that made clients know who its objects are. Same problem again: a web of inseparable objects.

12:45 AM

Have been playing Atheos' libgui and so far I'm getting a lot of compile errors. It looks like libgui is heavily dependent on a win32 version of gcc, plus, some of the header files seem to point to a win32 include directory. My guess is thatlibgui was developed initially from a DOS based compiler. And coverting it over to linux would require a herculean task. I dunno, I'll find out as soon as they start talking about the things I reported.

1:40 AM

Code Reuse Rant( please ignore )

On another topic, all this research I've been doing only made me realize that code reuse is still far from being a real solution. Looking at some of the major milestones, like how K&R had their version of code reuse by means of built-in and user-defined libraries, one might think that libraries was the solution, Unfortunately it wasn't because most programs had the tendency of becoming monolithic.

Then comes Stroustrup's inheritance which was supposed to cure the monolithic disease by means modularization using classes, forcing developers to reuse code by coupling objects together forming a heirarchy or web of classes. Well, I think it wasn't the solution too since it only made classes interdependent making it impossible to divide the classes into smaller pieces.

Then comes MS with their version of COM which was supposed to improve code reuse by means of contract programming. Well, I think it failed too for the same reason that its achilles heel was the interface that bind the components. A bad interface design could really make components pretty much have the same problems as interdependent classes. Also, component techonology somehow raised the learning curve to a level where it takes a newbie about 6 to 12 months to learn all the interfaces and classes. Then it would take years of practice just to become a COM expert.

There's a new one called factoring which was supposed to cure interface design problems. This one is still relatively new on my radar, so I'll just skip this one until I get more information.

Somehow, with all these variety of approach in achieving code reuse are IMHO, still not enough to be even treated as a practical solution. I'll be waiting for that day when code reuse will just be as easy as a walk in the park.

13 Aug 2000 »

9:15 PM

Ok, just managed to finish the build process in place for the kernel module. Then sent a email to the group and I'll wait from there, I don't want to put all my effort in there only to be wasted later.

4:35 PM

Currently compiling gcc as a cross-compiler targetting x86- pc-linux. Will attempt to make an Atheos build later.

1:29 PM

Currently playing with Atheos' makefiles, it looks like the build structure needs some improvement so I'm modifying how the build process works. Hope the change gets accepted 'coz I think the owner should be doing this. Also, I noticed the build structure isn't part of the development package, hmm, I wonder why?

11:53 AM

After doing some simple exercise with COM like structures and C++ structures, I find the following to be very important in my work:

(1) C++ provides inheritance that allows the derived object to call its overriden member function. This feature has its pros and cons and I should be aware when to use inheritance 'coz not all solutions require inheritance.

(2) In C++, multiple inheritance provides an easy way of introducing design mistakes.

(3) COM like structures do not support inheritance as inheritance couples the objects and distorts the interface between objects. Also, COM is not OO but rather a structure where a client can get any reference by returning a casted pointer. This is done using containment and aggregation where a class can aggregate multiple instances under it or redefine the member by means of containment. Stroustrup has heavily defended inheritance with his principle that an object is defined by it and its surrounding objects.

(4) C++ provides a way of implementing interfaces and that is via namespaces.

(5) Code reuse in C++ is done via white-box, the implementer must be aware of the contents of the object. COM like objects, on the other hand, use black-box, usually via aggregation to implement code reuse, the implementer doesn't care what happens inside the object as long the interface/contract is permenant. COM components expose one or more interfaces for clients to connect to and query it if a service is available. On C++, implementers assume that clients know its objects intimately that querying for services are considered an excess.

(6) Factoring [1, 2, 3] plays a very important part on OO/component design.

2:15 AM

Reference:

Inside COM
The C++ Programming Language
Inside the C++ Object Model

Clippings

Linux gains foothold in local mart

12 Aug 2000 »

10:15 PM

Design notes:

(1) Provide a way of making objects respond to stimulus. Like it should respond when interrogated. For example:

myca%factory.listobjects<enter>
obj1 obj2 obj3 obj4
myca%obj1.name<enter>
JoeObject
myca%obj1.memberfunc<enter>
role run sleep move detach 
myca%obj1.role
check streams for virus patterns
myca%obj1.run
friday the 13th erased
iloveyou erased
myca%
(2) Objects must be persistent, like it should be able to write its core memory data into secondary storage.

(3) Objects must be able to check the validity of a session attached to it.

12 Aug 2000 »

6:30 PM

Design Notes:

(1)An object must be able to describe itself when asked by the client. There must be a describe method which returns the identity of the object, the describe value could be a string or an int.

(2)The object must also have a way of letting the client know what services it provides, one possibility is to return a pointer to a vector or map.

(3)A client request for an object must get a reference from a central factory where all objects are created or reused.

(4)If possible, no GUID should be used to identify an object. The object must be able to describe itself when interrogated.

5:10 PM

Verify code. Figure out if a looper class can fit in.
typedef struct
{
  struct IFooVtbl *pVbtl;
} IFoo;

typedef struct { //Unknown HRESULT (*QueryInterface)(IFoo *, REFIID, void**); ULONG (*AddRef) (IFoo *); ULONG (*Release) (IFoo *); //IFoo methods HRESULT (*SetValue) (IFoo *, int); HRESULT (*GetValue) (IFoo *, int *); }IFooVtbl;

void KFoo() { IFoo *pFoo; HRESULT hr; int res;

hr = CreateInstance(..., &pFoo); pFoo->pVbtl->SetValue(...); pFoo->pVbtl->GetValue(...); Release (pFoo); }



2:00 PM

Just finalized my current task, will then move to the next.

12:20 PM

Thanks Schoen, I'll try that book you mentioned.

12:00 PM

When a program becomes free as in speech and beer, what kind of metric would be best in determining its value. Would the value expressed in the number of hours multiplied by a payrate considered good enough? Or is it set by the law of supply and demand? The higher the demand the higher the value. To me, when a program becomes free, its monetary value disappears along with the creator's ability to set a price value to it. What only remains is the value that is set by the receiver of the program. In effect, monetary payment now becomes optional. Is that right? Or am I just dreaming?

9:45 AM

Just did a quick design session in UML. Tried playing with the class diagrams, imported some headers like some MFC definitions just to know how imports work. Finally got to know how inheritance is expressed in a class diagram. Next is how to express multiple inheritance and composition. Also, I was thinking, maybe templates can be categorized as a stereotype, hmm.

11 Aug 2000 »

9:21 PM

One of my frustrations this year so far is latin. Yes, I'm so poor (like dumb) in latin, I've been trying to learn latin for 5 years now and what do I have so far: nothing. It is so complicated, I can't even write a letter in Latin, it's just so frustrating. Seven months ago I bought a beginners book, increasing the number of books that I have to 4. So far, I learned small sentences like salve, ut vales and other stuff. The thing that's really driving me mad is the inflections--it's so many. Sigh. Overall, it's not really that bad, I think I'm aware of the basic latin words like caveat emptor, in pace requisat, dominum dominorum, ad nauseam, etc. But man, 5 years? Still nothing, not as fluent as I would expect.

Anyway, I'm currently reading emails from the Atheos news and they are currently discussing things about gui, posix, threading, drivers and linux.

About Visual Modeler, it looks like this tool is MS specific and it doesn't have all the things I need. What I'll probably get from it is document the kit using the class and component diagrams. No wonder they added it as a freebie in the enterprise version.

Work: the higher ups gave the order that I wrap whatever I have and finalize everything. I'll be working on another module located at the middle layer.

Also, I'm officially dropping Yoctix. Bye and good luck.

10:30 AM

Forgot to document that Linux interrupts are handled in two parts: top half and bottom half. A Top half is mostly for acknowledging the interrupt and setting its bottom half which will run later when the bottom half is ready to go.

I also eyeballed how Atheos handles interrupts and it does it in BIOS kind of way. Basically, the signal is handled by locking and servicing the interrupt, unlocking is usually made when the handler IRETs to the caller.

Comparing the two, it looks like the Linux way of handling interrupts plus the queue facility that prevents a signal from getting lost is IMHO, the quickest and slickest way of implementing interrupt handling.

But the thing that makes me scratch my head is how X just manages to create an impression that Linux is s-l-o-w on the GUI. I dunno, but I think X needs to address something because it's not the kernel who is slow, it's somewhere above or outside the kernel.

9:17 AM

Been working on the design of Messaging Kit using Visual Modeler to which I'm still trying to learn. So far, I've learned the basics of UML and is now applying them. What I'm getting from this initial experience is that this tool is not complete, it was made specifically for MS development tools. I also noticed that not all UML diagrams are supported; in UML there are several diagrams and they are: (1)Class, (2)Sequence, (3)Collaboration, (4)Object, (5) Statechart, (6)Activity, (7)Use Case, (8)Component and lastly, (9)Deployment.

I'm also trying to figure out how name spaces, inheritance, composition and STL templates can be expressed in a component and class diagrams. I'll try again later.



Clippings

RP No. 1 in 'knowledge jobs'

9 Aug 2000 »

Work 1:52 PM

Just got a briefing about the engine sitting on top of MTS. They wanted it validated and free from bugs and gave me the go signal to let me start getting up to speed on how the program works. They seemed to be wanting to move to interface-based programming model which I think makes sense. We'll see how this one goes, better get myself ready for COM+.

1:15 PM

An interesting article from Miguel showing how Unix sucked. My take on that is somewhat the same thing too. Too many non- compatible applications running on its own world with its own configuration management tools. Proof:X, config files. Also, in Linux there are no tools that help the programmer develop solid multithreaded programs, while there's a lot of it on Solaris. Plus the fact the most of POSIX4 was taken from Solaris. To me, it looks like SUN and its Solaris truly represent innovation.

Maybe I should start using Solaris, BeOS or WIN2K for the same reason that Linux sucks. Well, not so, I will still use Linux for the simple fact that I can put the things that I want and make it work the way I want it to work. I think that's the thing that keeps me around Linux. For as long as I can do what I want then I'll stick with Linux.

12:15 PM

After thinking about the things I wrote below, I seem to be getting a pattern that I am more inclined to support the traditional style of selling software which means basically make development tools as cheap as possible and sell the applications just like what Unix apps are being sold today. I guess that model definitely works on Unix and Unix like environments. But the idea of giving away applications is still totally foreign to me, maybe next year I'll get the idea but not today or tomorrow.

This just shows how skeptic I am to this new paradigm. I dunno, I'll have to wait and see how this one plays out. Hmm, giving enduser applications for free, like zero dollars...how will I make money if I give it away?

10:00 AM

Just got to read a very interesting art icle that really had a big impact of my impression 'bout Free Software. While the article painted Free Software with a shade of anti-capitalism and all the blackness of it, it seems that it's more likely to support my apprehensions towards the idea of being "Free" in speech and beer. This is the foundation of all my apprehensions: Why give all my labor for free? I'm only a programmer, I don't provide service to my customer, how will I make money then? Should I quit programming and start a tech support career? Nahh, programming is my life, I like to code and that is where I get paid. I will not talk about the getting paid part because we all know how much we get when we get to a level of competency and we definitely agree that the pay is not bad in this industry. I dunno, I still think that most programmers who are in similar situation are thinking the same thing too.

But, I think there's a middle ground where I can benefit in both ways. What I'm seeing now, the best thing I could probably do is stay away from technologies that will be dominated by commodity software. I think that's it. If a product is about to be commoditized, then that's the best time to use free software. In the meantime while the urban growth boundary of free software is still far away, I'll just continue on what I'm doing.

8 Aug 2000 »

Work, 3:19 PM

Found a bug on Win2K. The toolbox message loop seems to be receiving and dispatching messages even though the focus and hot spot is already out of the toolbox window rect. To me, that's a pretty serious bug.



Work, 1:00 PM

Just came in from the company sponsored lunch, announced was the openning of the LA branch and jobs are in the process of getting filled.

1:50 PM

So far, still in design mode. Just started using the Visual Modeler and progress is very s-l-o-w, I'm still trying to figure out how UML is supposed to make this easier. But, I must say that this tool is good and it would be much better if it has all the features I need, like class diagrams and ability to accept program code.

I'm definitely impressed by the methods of software design in UML and it's obviously right to do OO design using UML. Way to go Rationa l!.

8 Aug 2000 »

5:05PM

Have to document this before I forget it.

By passing the address of the object (this), the member function running on its own thread can reference the other members by creating a pointer to the class and casting the void* to a class*. For example:

void looper::run(void)
{
...
retval = thread_create(&id,NULL,&looper::loop, (void*) this);
...
}
...
void* looper::loop(void* data)
{
...
looper * ploop = (looper *) data;
...
}

With that, I think I am set to start hammering the design document.

Work: 4:05PM

Just found an interesting item. It seems that Amiga is on to something, I'll have to check this out.

Work: 2:30PM

Have been tracking down the people who wrote the code that I will be modifying. Asked them a couple of questions 'bout what will happen if I do this and that and other sorts of stuff.

Work: 12:10PM

Still not convinced, I went to the designer and picked his brain a little more and found out I overestimated the work just a little bit. Now I'm back in the cube and really sure what he really wants. In this work/business, everything and everybody has gotta be in synch in order to make it work the first time.

Work: 11:15AM

Just noticed in the spec a module will have to be modified. So I went to the person who made the module, sat down for 30 to 45 minutes and talked 'bout the implications of the spec. We managed to find a way on how the modification will be performed and at the end of the short meeting, finally agreed where the modifications will take place. Now I'm back at my cube and will now perform the invasive surgery of adding a new feature to the code.

10:00 AM

Been lookin' at the things I want to do and so far everythings workin' out fine. It looks like everything I need to know seems to be in place and at this point it's just a matter of putting the design down in document form and start bangin' and diggin' code after that. What I'm thinking is using the object modeler from Microsoft Enterprise edition to document the API. I'm thinking of using the term "kit" instead of module or API.

There are two or three possible ways this would go when I'm done with the kit, one is creating a kit about graphics stuff. That would be the application, window, view, etc. And all that GUI stuff which I'm already familiar with. For me, there's just too many GUI toolkits out there that it's just a waste of effort to try and make another GUI toolkit, but, I dunno, it depends, if the existing GUI APIs have good multithreading support then I'll use it. The second one would be a set of tools for threaded objects, a thread development toolkit would be the other way. The third is basically build a kit about sockets, mail, etc.

At this point, the urge to code is so great that it's like I'm on top of a giant wave. But, I'll just keep on designing and documenting, gotta hold on until I get the design in place. So far, the classes I made are already helping me make my work a lot easier. Pretty darn nice isn't it?

Work:

Got a very good spec from the designer plus some pick-your- brain stuff. The designer is very good and I must say he definitely knows what he wants. I'll just dig the code and submit for approval, then that's it for the day. So far, everything is going smooth at work, I know what they want and they seem to get what they want from my work. I think that's a very easy thing to do.

40 older entries...

New Advogato Features

FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.

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!