Archive for January, 2006

Delhi

Saturday, January 7th, 2006

For those not-so-observant souls who tend to try and follow my life (not quite sure why, am pretty sure this blog serves as little else, recent JOGLness, and expected JOGLness, being a rare exception), I have been in Delhi for a while, short one, but have been here nevertheless. Shit happened, while I was in Delhi, seems to be a common theme, shit happening, if I didn’t know better, I’d say the powers that make shit have been following me around, comes close on the heels of my old chimpish adventures. Well I am not sure when I stopped caring about the chimpish analogies, but somewhere between getting into college and now, I lost my lines about my chimp, some of my beliefs, most of my hobbies and large chunks of my minds, no wait the last one I had lost a long time ago, but that being said things were lost, and while many more things were gained, I am not going to make comments on the chimps and their conspiracy, seems inadequate. Seventy hours from now I get on a flight back to Providence, can’t say I am not glad to be out of here, for as much as I have liked some of what this trip has brought, sleep and good food at regular intervals for instance, I can’t say I am any closer to accepting most of this place. This trip has been more successful in some ways, I met fewer people, perhaps on a whole, went to fewer places, but most of the places I went to I had a pretty good idea about who I did and did not like, and I could chose to speak to those who I did, and ignore those who I didn’t, allow them to live in blissful ignorance about me as it is, I am sure most of them didn’t want to talk to me either ways, and they are not people I like, they have their uses, I don’t know what those are. I am going to be in Providence about 7 days before the first of the people I know really well start coming in, a seemingly recurring theme, but one that I like nevertheless, gives me time to go back to adjusting for Providence, besides I have a copy of Serenity waiting for me when I get back, having watched all of Firefly, this has to be fun.

For those who don’t know, I am not coming back this summer, I am probably going to be in New York City, though there’s a slim chance I might end up at Cupertino instead, depends on the powers that are, and other things, I will be working for people I usually, in my acknowledgedly skewed way, classify as loving and evil, though the loving means little in reality, and the evilness does little, most of my friends, and in some ways I am in someways evil, evilness is an inherent quality of things in a certain ways. People have long claimed I should be more thankful about Delhi, and earlier today someone quipped that I looked sort of happy with my parents, perhaps I did, perhaps I didn’t, I am not sure, perhaps staying away shall make me appreciate it more, but right now, it’s just the weird city I come back to ever so often, to meet an alarmingly diminishing pool of people I once knew, and people who perhaps know me now. I tried explaining to someone who once knew me, about how different we had grown since moving away, how unlike each other, and I was firmly put down by being told I had changed too. Perhaps I have, perhaps I over analyze, perhaps, as a friend of mine put it, many years from now, we’ll all meet in a distant place, and finally understand what the first 17 (in my case) or 18 (in everyone elses case) of our lives were really about, but this is not when it makes much sense, and this place holds too many strange memories. People say I am strange for having such reactions to a city I lived in, still live in in some ways, I am not sure this is true, my father has strange reactions to a city, a city he lived in, as he has often tried to explain, his situation was different, more stressful than mine. Perhaps was, perhaps different situations lead to different stress points, not sure, I like where I am now, but it is strange how few people know about both the past and the present, it is almost like I am on the other side of a chasm, I have friends on both sides, both sides have their stories, but there is no way the twain shall ever meet. I spoke of a great many things earlier tonight, we were entertaining guests, and I guess in a way I got tired of hanging around with ideas in my head, I interjected. I was told I have learnt new things, grown, perhaps I always knew of those same things, I just didn’t express them, I am not sure.

Last semester was bad in the amount of work I was doing, it was bad in some of the things which happened, and as much as I love the people I live with, it was bad in the ways it divided the people I lived with. It got better after thanksgiving, as HBA put it, we all needed a break. Well we all got a break, I made better choices, hopefully, in terms of classes, things I think I will like, mostly in that I don’t have two of my classes worked out, and a bunch of classes I want to take, it’s like freshman year again, except I know what I am concentrating in. Spike, the Math-CS concentration advisor, mentioned during my only meeting with him, that it really wouldn’t matter if I never learnt the deep intricacies of Galois theory, since I probably knew enough abstract algebra and other things, to enable me to spend very little time, and learn it when I actually did need to, I thought he was kidding then, the rest of the semester sort of proved him right. I spent much of my last two semesters of “liberal” education doing things I thought necessary, things that I didn’t necessarily liked, they all served a purpose, but very little of it was enjoyable. I am going to go back on that this semester, I have enough course credits and courses done to actually do this, I am going to slow down and enjoy some of what I do, even if it is grand in its uselessness, it is not like I have much idea of what is useful. Besides I think I am in a more enjoyable concentration track now, I sort of enjoyed all the playing around with JOGL and Matlab I did in recent times (speaking of Matlab I have to write about MatlabMPI someday, well someday), and if I am very very lucky, I might make it to an AI conference later this year (keeping fingers crossed). Two of my closest professors are not going to be in Brown this semester, I am not completely sure where I stand with either one, but not having them around has its disadvantages, and its advantages, sort of forces me to go out meet new professors. I am TAing a CS course, so there’s a good chance I might be back to doing work I enjoy more than sitting around in front of a computer going “Hello this is Panda speaking, thank you for calling the CIS help desk, how might I help you today”. That statement alone would get me fired from most help desk jobs, probably, well good thing CIS is nice, and Brown run. Brown’s nice in its pretty liberalness, the insane attempts at PC, while often strange are what I usually miss back home. Calling a spade a spade is not bad, calling something people don’t know about names is sort of bad. I have no idea about what I am going to do for the housing lottery, most people I live with will perhaps not be entering the lottery, some I do not wish to live with, I am not really sure who I want to live with, a single’s in order, I like my roommate, but living in a single rocks in more ways than one, a suite would be nice, a Young O suite I can squat senior year would be awesome (I know it is next to impossible, I can dream right). People I know graduate this year, I am not certain LMF is one of them, but if he is, I shall miss him sort of. I didn’t really see much of BSG, LMF, WNS or some of the other people I met over the last two years over the course of the last semester. I am not sure of when WNS will take a class I am officially registered for, though it’d be sort of fun to have her in a class with me, she’s a fun person to have in a class. I do know, or have a fair idea of the next class SCE will be taking with me, I am going to be involved in a group project, I am not sure this is a good thing, past experiences with group projects have been strange, past groups have not been as strong as current group, didn’t live with members of past group. I had some strangely philosophical talks with LMF, I never did get around to asking him about the resolution to some of the strange problems we spoke of, he wishes to go to med school, I sort of wish that works out. I scared certain people, NNK and LMS possibly chief among them, would sort of like to go back and patch that up, at least with LMS, am not sure how, especially since we never discussed this again. Cellphones rock in Providence, people call me at appropriate times, cellphones in Delhi suck, people call my parents at strange times, and my father’s addicted to them, or so is my belief.

I have never had a New Year’s resolution, it sort of never came up when I was a kid, and by the time New Year’s resolutions and the like became a necessary fad back home, and not theoretical things I knew about thanks to other people, I had grown old enough to decide I wanted to rebel against fads. So much for that, college made me follow a few fads, a book made me realize not following fads is a fad in itself, I have a blog, I am a math-cs concentrator, I am going to do an internship with people I once claimed I wouldn’t work for, and my roommate owns the faddiest computer of them all, something I’d like to own someday, I am not on the fad rail, but what the hell I am close. I digress however, I have never had resolutions, I don’t plan on having any this year either, there are however things I wish to try, things I sort of want to do, not all of them proudening, future-securing, academic things people back home seem to be asking me about, but things I think I might enjoy, things I haven’t really done before, this could be fun. My high school counselor was appalled by my describing Brown as fun last time I was in Delhi, well I am not at Harvard, school’s changed too much, and having fun was what had made school fun for me, so much for never attending classes while in school.

There is no reason for this post, I was planning on a post Delhi blog once I was out of here, no one was really online, I sort of wanted to remember parts of this night, and this trip. None of the parts I enjoyed were ever really spoken out loud, they were observations made by me, strangely none of my friends were really here tonight, just one of my father’s friends, is strange how that works. Good food rocks.

Aurojit
(for Ze Panda was inappropriate)

JOGLness

Wednesday, January 4th, 2006

Let me repeat some of my general annoyance about , a lack of backward compatibility, a lack of new tutorials helping people to get a leeway into the actual OpenGL tutorials, or the ability to get on with their life as OpenGL programmers. I have been using tutorials from NeHe to gain an understanding of OpenGL, and I’d be the first to admit they are amazing tutorials, They however use Visual C++ which has different access routines for a lot of non OGL functionality, thus making some sort of a lead in necessary. While NeHe links to JOGL code from Kevin J. Dulling, a lot of it is not very well commented, and most of it is based upon old JoGL releases and hence no longer runs. The JoGL site itself links to another set of NeHe tutorial ports by Eeckhoudt, and to a fairly cool introduction by Gregory Pierce. Both of these however are based upon things before the JSR-231 release, and for reasons best known to the JSR standard and the JOGL team, this release broke backwards compatibility with previous beta releases of JOGL. If or when this happens next is something I am not aware of, and shall hence rely on an implicit belief that I am dealing with the JSR-231 release. There’s a fair chance I’ll be using JOGL for the next few months, so if anything changes while I am still a user, I’ll try and post a note. Also the writing of this entry was to an extent inspired by my roommate, who hasn’t yet gone through JOGL and is currently off to London and the Alps.

Contrary to what I indicated earlier, there is finally a hardware accelerated JoGL swing component, GLJPanel, however this utilizes a frame buffer and draws things using JAVA 2D, and is hence slower than the more heavyweight GLCanvas AWT component.

The JOGL javadocs are strangely hard to find, throwing up all sorts of weird results when looked for. They however can explain more of JOGL than anyone ever can, get it straight up.

A note on classes, this is sort of important:

  • javax.media.opengl.GL The big GL class, contains all functions beginning with the phrase “gl” on NeHe’s tutorials, and in general every place else. Essentially provides access to the actual OpenGL library, is usually acquired by calling getGL on a javax.media.opengl.GLDrawable object.
  • javax.media.opengl.glu.GLU The big GLU class, gives access to glu functions and hence to all functions prefixed “glu”. Initially at least will be used for gluPerspective and perhaps for MIP maps. Contrary to popular belief and coding convention is not acquired by calling a getGLU function. If someone needs a GLU they should just create a new object by calling on new GLU it sort of takes care of its bindings. Is however thread specific, so be careful with that.
  • com.sun.opengl.utils.Animator Somewhere down the line you’ll come across this tutorial asking you to make rotating bodies, even though you’ll follow through on making the tutorial perfectly your objects will not be rotating. This causes some heartburn, you move your window around, notice that the object rotates at each redraw. Tada, JOGL does not put Windows on a refresh loop, there’s little reason to do so. Depending on your perspective this can be a very good or a very bad thing. Good because this lack of redrawing implies a lower CPU and GPU usage, bad because it makes animation gaming and such things a bitch, which is why we have the Animator class. The Animator does little except refreshing the canvas with an amazing frequency, it is supposed to take some time off at the end of each redraw, to prevent the CPU from getting swamped. Created by calling on new Animator(GLAutoDrawable drawable), it helps to remember that javax.media.opengl.GLCanvas implements javax.media.opengl.GLAutoDrawable. The Animator is started with a call to its start() method and stopped with a call to its stop() method.

There are other classes around, GLCanvas for instance, they are mostly utilitarian, use the javadocs to figure out more about thes. Also do note that the java.awt.Frame method show() is deprecated as of Java 5.0. Use the setVisible(boolean visibility) method instead, it works well.

This so far, combined with little peeks at some of the links should allow you to start on the NeHe tutorials, someday, perhaps soon, when I finally go back and edit my old code, I’ll put a tutorial on starting up and how that works, though I am currently sticking to moving ahead in my terms. There’s very little that changes until we get to dealing with textures, which is when NeHe ends up calling on a bunch of Win32 API functions to get his stuff going, and this is clearly not what one would want to do in Java.

The above statements commented because I went through and commented most of my init code, and am going to slowly paste parts of it. I can do this in small bits or in one gigantic blob, let us see how this works :D

I am working on two classes, one named Test which sort of sets up the frame and stuff, and another named TestRenderer, something that implements GLEventListner and hence does most of the rendering. Most sane people would nest the renderer within the main class, I find this mildly anoying, since keeping them separate allows me to throw all of the renderer away and swap in a new file, without having to edit any of the unecessary gunk, my choice. I am going to start by showing off the Test class, annotating wherever I feel appropriate (may or may not have anything to do with appropriateness).


package joglTut;
import javax.media.opengl.*;
import com.sun.opengl.utils.Animator;
import java.awt.*;
import java.awt.event.*;

The package statement is a sign of Eclipse at work, the class specific import for Animator is something I picked up from being at Brown, one of my CS professors professed the usefulness of these, and every now and then I actually follow some of his coding concession, helps with some of the people I know :D.



public class Test {

/**

* @param args

*/
public static void main(String[] args) {

Frame frame = new Frame("Lesson n");

GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities()); //figure out display capabilities and create

//a canvas to draw on

Animator anim = new Animator(canvas); //attach an animator to the canvas

canvas.addGLEventListener(new TestRenderer()); //Most people like to use an inner class, I like using separate classes

frame.add(canvas); //add canvas

frame.setSize(640, 480); //set size

frame.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}); //Exit if windows closed

anim.start(); //start animator

frame.setVisible(true); //make things visible

canvas.requestFocus();
}

}


Seems fairly standard, sorry about the spacing issues, I am not sure how to solve those with TextPattern, besides I’ll be posting the files, hopefully.

That is pretty much the Test class, now comes the renderer. Since I am lazy and yet wish to spare you most of the ugly details of texture mapping, I am going to put my TestRenderer class from making 3D objects and rotating them, this works, trust me…

package joglTut;

import javax.media.opengl.*;
import javax.media.opengl.glu.*;
import javax.media.opengl.GLEventListener;

public class TestRenderer implements GLEventListener {

// private GL gl;

//private GLAutoDrawable glDrawable;
float rtri = 0; //Triangle rotation
float rtquad = 0; //Quad rotation

Again standard intialization, notice a lack of a class wide field for gl, there’s good reason for this, it is significantly safer to call getGL() from inside every function than to do this on a global level. The floats are variables for rotation…

package joglTut;

public void init(GLAutoDrawable drawable)

{

// this.gl = drawable.getGL();

//this.glDrawable = drawable;

final GL gl = drawable.getGL(); //Repeated sort of everywhere, need something to draw on :D

//drawable.setGL( new DebugGL(drawable.getGL() )

gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //set black for the background

gl.glShadeModel(GL.GL_SMOOTH); //Shade model, GL.GL_FLAT does interesting things when unknown

gl.glClearDepth(1.0f); //Set up depth buffer

gl.glEnable(GL.GL_DEPTH_TEST); //enable depth testing

gl.glDepthFunc(GL.GL_LEQUAL); //Type of depth function

gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); //Adds tiny amount of computation, makes things look nicer

//System.out.println("Init GL is " + gl.getClass().getName());

}

The init function is called by the canvas initially during intialization, it’s a good place to set up things of a more permanent nature. This is an exact replica of what’s done on the NeHe tutorial, so I won’t admit to knowing too much about the choices. Uncommenting the println statement produces some interesting output, tells you more about the innards as they stand.


public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)

{

//final GL gl = drawable.getGL();

//final GLU glu = drawable.getGLU();

GLU glu = new GLU(); //Need a GLU

final GL gl = GLU.getCurrentGL(); //GLUs come with a gl, am pretty sure this is the one returned by drawable, however

//prefer to be safe

drawable.setGL(gl); //setGL allows us to set a new gl object, be safe than sorry

if(height <= 0)

{

height =1;

}

final float h = (float)width/(float)height;

gl.glViewport(0, 0, width, height); //Set viewport area

gl.glMatrixMode(GL.GL_PROJECTION); //Set matrix mode

gl.glLoadIdentity(); //reset everything

glu.gluPerspective(45.0f, h, 1.0, 20.0); //set perspective

gl.glMatrixMode(GL.GL_MODELVIEW); //set matrix mode

gl.glLoadIdentity(); //reset things

}


reshape is called whenever the size of the canvas changes, mostly when windows are resized and the like, called less frequently than draw is useful for doing things which will change with resizing.


public void display(GLAutoDrawable drawable)

{

final GL gl = drawable.getGL();

gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT ); //Clear the bugger

gl.glLoadIdentity(); //Reset model view matrix

gl.glTranslatef(-1.5f,0.0f,-6.0f); //Translate

gl.glRotatef(rtri, 0.0f,1.0f,0.0f); //Rotate

//gl.glColor3f(1.0f, 0.0f, 0.0f );

gl.glBegin( GL.GL_TRIANGLES );
//.....

gl.glEnd();

gl.glFlush(); //Flush buffer
//....

}

I skipped on most of the gl.glVertex3f statements in there, but they pretty much work as they should. The only real change in this function, from standard C functionality is a call to gl.glFlush() , which as far as I can determine is fairly important, since leaving it out did strange things for my figures yesterday.

OK for reasons of sanity, I am going to stop here, I am going to put texture mapping up later, this involves things like being at home, being about to leave, and other such things. So OK, I’ll write this up soon, once I am in lovely Providence.

Ze Panda
PS: I am aware most of this is slowly filtering through, and I really haven’t written much so far, well I am being slow, I am lazy :D

JOGL, JNI, Cocoa, other stuff too

Tuesday, January 3rd, 2006

As most people know, I am on one of my semi-annual (or rather annual as this year’s going to prove, one hopes) trips to Delhi, or have been rather seeing as I am closer to departing than to arriving, which is probably why inclement weather warnings from the Med/Downcity SafeRide do not bode well for me, and are mildly scary. Oh well so much for winteryness, blizzards and the like. So I realize I haven’t actually updated in a while, and I do not really wish to give too much background, I will entertain certain questions, will elaborate on “shit happened” statements if asked about it nicely by people who I wish to elaborate to. Hmm so the things so far, let’s see: shit happened, became CS166 TA, summer party, more shit happened, exams, flew back home, got bored in Delhi, went to strange place in the hills, shit happened, came back to Delhi sooner than expected, am sitting typing this out, will leave soon. There, that was short and concise, the details are unimportant at best.

Which brings us to the point of this blog entry, JOGL, JNI and Cocoa. Let’s not do this in order, since I know far more about the last than either of the first two, know more about the first than the second, don’t really like either of the first two, and have mixed feelings on the third. The important things is the first and the last ones are impacting my new programming strategy, which isn’t all that different from my old one, and are the first library/language feature type things I am learning in a while, and are thus proving to be more than a little amusing, we’ll see how this comes along, its been ages since I last wrote about computing stuff, and hence my reviews are bound to be more irrational. This is not unexpected, and hence works out pretty well.

Ook, let’s get started with JOGL, not because it is the first thing on the list, which it is, since I don’t really care about the list, but rather because I was trying to decipher JOGL more recently than everything else. History first, JOGL’s supposed to be a project aimed at creating Java bindings for the hitherto unbound OpenGL libraries. I lie, ever so slightly, JOGL does aim to create a Java binding for OpenGL and hardware-accelerated 3D graphics, but this is not new, it has been attempted by people before, has led to such things as GL4Java, and has generally been subsequently abandoned, for reasons unknown. Now I am forced to sympathize with people who abandon these projects, especially since I am not a big fan of Java and to an extent because Java is slow enough to make me more worried about running background processes fast enough than about actual rendering. This could in part be a result of not really understanding the complexities involved in rendering relatively complex 3D imagery. This however does not change the fact that I do not actually like Java, and perhaps the only reason I am working at figuring out JOGL is because the chances of me finding a rational set of likable individuals who’d actually chose to work with me, should I chose to fixate on C or C++, during the course of CS32, are slim to none. JOGL helps I am told, am not completely sure how. So that being said, there are good things about JOGL, things to be proud of, things like a newly implemented natively Java version of GLU which did break backward compatibility with everything written so far, a supposedly simplified interface into the OpenGL libraries, a JSR release which did more to outdate old JOGL applications than everything else combined and such things. JOGL’s documentation proudly states that not all functions within JOGL follow native OpenGL conventions, since Java is different. Java is indeed different, it claims to be fully, or almost fully object oriented, and whenever I have read books on Java or taken classes in said language, the object oriented nature of Java has always been stressed on. Calling JOGL object oriented is similar to calling a C struct an object, the beginnings are there, it sort of fails to completely fit in. Well whoever was creating the library sort of came up with this plan of packaging every GL function in existence into a class known as GL (what else), and every GLU function in existence into a class known as GLU. Using Swing is out, hardware acceleration does not quite work with Swing, AWT, old, dead, and forgotten as it is, is the way of the future according to the creators of JOGL, this depending on your perspective, can be a good or a bad thing. Clearly history in Java world does repeat itself, and hopefully most Java programmers will be working on learning Fotran compiled to their VM and some form of a weird VM assembly language soon enough, seeing as these are things that shall accelerate the future. Of course seeing as Java was originally intended to power toasters, and has in the recent past been used to power everything and including, very nearly including toasters, I am pretty sure all of Java will do a good job of living up to its originally intended use (I want a Java powered toaster, I want one for the cool factor). Somewhere down there, right after all the JOGL experts were done with writing JOGL tutorials, JOGL developers decided net.java.games was not a good place to put all the JOGL packages, and instead placed everything into javax.media.opengl. Sadly enough everything in the package that was formerly known as net.java.games.jogl, is now contained in javax.media.opengl leading to obvious questions about why the project’s still called JOGL. Now if this was all the JOGL developers decided to change we’d be safe, however life’s never that simple. JOGL implements its OGL functionalities by exposing a GLEvent interface which can be sent event messages by GLCanvas. Until recently GLEvent methods used to receive a GLDrawable argument giving them a GL object on which they could draw and do other OpenGL things, somewhere down the line someone subclassed GLDrawable (or rather subinterfaced seeing as GLDrawable and its children are interfaces), came up with an interface named GLAutoDrawable, and changed everything within GLEvent so they took GLAutoDrawable objects instead of taking GLDrawable objects. This is not a major change, not really anyways, it’s merely fact that it is annoying, auto typing and some of the cool features in Eclipse seem to rely on pulling out argument names from how interfaces are implemented, this really does not help. Also while we are on the topic of Eclipse, if there’s someone out there reading this entry, someone who writes libraries for Java, especially if this someone happens to use JNI, please do not name your arguments arg0, arg1, arg2, etc, I know it makes life simpler while writing libraries out, and it is the kind of thing I am more likely than not to do, it does bad things with Eclipse, it is annoying to be faced with method signatures who’s argument names make no sense, and give you no clue as to what you are supposed to supply. Eventually I will get so used to writing JOGL code that it wouldn’t really matter, argument order would be second nature, I hope it would anyways, but while I am still working on getting there, generically named arguments are sucky and do not help anyone. I am not going to go into the problems associated with installing JOGL thanks to the JNI interface, I am however going to speak/bitch about the entire GLU implementation. So let us see, there were a few bright developers working on JOGL, they worked hard, implemented a native version of GLU, implemented funky constructors which allowed GLU objects to figure out GL contexts and other such things by relying on the thread they were created in, fancy stuff, sounds good, is cool, etc. However let us go back to the day before this funky GLU implementation was released, people lived in a different world. GLU was still dependent upon JNI libraries, and was amongst other things, one of the objects you acquired by calling functions on GLDrawable. Most people would expect these functions would still be present in the new funky GLU world, be deprecated perhaps, but their mere existence hurts no one, there’s a GLU object lying around, GLDrawable could just return a new GLU, doesn’t take much, adds almost no computational complexity, and keeps old code running like new. Well the JOGL developers disagree, at the expense of much of the JOGL code that had been in existence before this new funky GLU implementation came into being, the getGLU method was removed from GLDrawable. Now I am not going to complain about how much of an issue this is when you are trying to use JOGL to simultaneously learn OpenGL, much like I am right now, because at the end of the day, reasonably good hackers are supposed to figure these issues out for themselves, a lack of migration documents being the ultimate sign of machoness in the twisted world of hacking geekiness. However JOGL was designed to promote game development in Java, it’s a project hosted by Sun, I am figuring somewhere down the line the powers that be at Sun will come up with this bright plan to integrate parts of JOGL with Java, perhaps the cellphone, toaster, car and whatever else they are putting Java into these days gaming market wants to exploit the power of 3D hardware rendering and use JOGL, I am figuring they would want some of those big evil corporations which make games to try and use their technology to leverage their fancy games into these markets, and I am figuring these big funky game companies won’t rewrite the code for their games every time a new JOGL release comes along, what happens then, if JOGLs to eventually start being backward compatible, what in the world is wrong with starting now. A year ago, my then advisor, who also happened to be my CS professor, preached in class on the evils of backward compatibility, told us about how backward compatibility was bogging parts of Java down (I believe part of this was for generics and Swing), and kept insisting how much cleaner it would be to just throw a lot of the java libraries away. Well, there’s a reason they don’t do that, use tje JSR release of JOGL and you’d rapidly figure out those reasons…

JNI, there’s little to say about it, there’s a reason most Java developers don’t use it, and don’t know much about it anyways. There are probably all of 200 reasons why anyone would ever want to use JNI, I am stuck with working on one of those reasons, and while I haven’t really started working on this thing, I spent some time going through the JNI documentation, preparing myself for when I do have to work on using JNI, and I don’t like it a bit, enough said.

Cocoa, I am back to a Cocoa fixation after I picked up a copy of Aaron Hillegass’s excellently written introduction to the library/language, and owing perhaps to a recent uninterestedness in both C/C++ and Java code (two of my traditional mediums of coding), I have come to appreciate some of the things Cocoa stands for. Cocoa however is scary in that it is VBishly simple in someways, while deceptively hard in others, and as a sufficiently lazy learner it seems to be a good way of missing out on stuff.

Bah I had grand plans to write more about Cocoa, and about Pattern Recognition which I do wholly recommend (I will warn you about weird thought processes generated by said book), about Symbian powered phones, and other stuff, but it’s late at night. I might convince myself to write tomorrow, I might not, read DrunkenBlog and the stuff about NTP in there, perhaps also about Glogg… It has its good points…

Ze Panda
PS: I believe I was supposed to spew out things about the New Year and the holidays which came before and stuff. Imagine generic greetings added onto previous entry.