Skip to main content

Posts

Showing posts from February, 2008

implementation of guest messaging done ....

...but now comes the testing. I was up late last night testing , or rather getting rid of a bug in the implementation code from last night. Considering the large number of changes I made before testing two hours of bug quashing wasn't bad at all. Though , more efficient code and test practices would have ensured that I performed a unit test after each change , the nature of this addition makes that some what impractical due to the dependencies among the various things that needed to be changed , regardless the bug is gone and now it is time to continue the testing. I am an avid runner and many times during my runs the solutions to problems I might have been wrestling with or entirely new ideas pop up while I am putting in my miles. During my run today I was thinking of writing a post that shows a bit of the method I use for tracking sub items on my to do list. In that spirit I will copy below the entire to do section for the feature I have been adding over the last 4 days , private...

a billion is big!

I just finished quashing a bug that gave me the run down for the last two hours, as is usually the case it derived from recently changed code. The cause of the bug was my omission of a line of code that initializes an important value to a non zero integer. I added the line and voila it worked great. Along the way I was looking at the database table column values and thinking about the number of unique values that a chosen database (testing on MySql currently) can provide an integer before it goes screwy (this is a major flaw of databases that I wish the vendors would get around solving, it should not be something for the db user to ever worry about..but that is fodder for another post). I don't know the actual max value for a standard MySql "integer" off hand but I am sure it is larger than a billion. (Just googled it, it is a range of about 5 billion centered around 0) Just for no reason I wanted to get an idea of just how big a billion is(I've done it before but I a...

Complexity in the Universe, conservation of energy and object orientation...

The following article was originally a post written at RD.net but I thought it should be copied here for non members to read. Enjoy! Original link here I seem to have added flames to a controversy with one of the posters in that thread , rainbow . I just realized that Steve Zara and others took up the standard and continued to present information to support the presented ideas. (I got really busy after posting the original and neglected to come back to respond directly to rainbow .) Out of curiosity I just went over rainbows' other contributions to the site, turns out that the entire set of posts are to that one thread. It seems rainbow is a pseudonym for a hit and run poster, some one who created an account simply to comment on the post topic. Now there is nothing about this, often I've started new accounts to provide an alternate view but since that thread rainbow has been MIA from the site, every post is restricted to that thread. This gives me the idea combined with the ...

mastering multiple mountains...

I was thinking in the shower today, ( a common practice) and I began to recall an experience I have had in the past when having a discussion or debate with individuals who express views vastly different from my own in areas that are considered controversial. This particular topic was about the king of controversial topics , religion. In the past I've gotten into quite heated exchanges when discussing this topic, I have a very low tolerance for individuals that think improperly. Let me explain what I mean by improper thinking, it is the tendency to draw conclusions that do not directly derive from a given line of reasoning or evidence, people do this constantly and I would be lying if I said I haven't performed it myself now and again without knowing it. The point is, when it is pointed out that ones logic is broken, individuals in the heat of discussion would rather belabor the point in the effort of appearing to be right ...rather than concede the point and analyze their metho...

considerations during design

The software design process boils down to a few key abilities: Defining the problem scope. Targeting the most applicable solution domain for the scope of the problem. Scope encompasses all extremes of the problem space, from the unlikely and rare scenarios to the very common scenarios, these extremes moderate the demands for resources, disk, processor and bandwidth. The art of good design lies in knowing how to tailor your solutions to the most applicable solution domain for the problem at hand. Implementing the solution for the applicable domain of importance that is most efficient as opposed to most expedient. If multiple solution domains must be covered ensuring seamless transition of solutions from one algorithm to the next. The first and second points are most important, as you won't know how best to solve a problem if you can't define its' extents. Many times developers are unable to put their fingers on all aspects to a problem, this is unfortunate as it may severel...

Programming biology

The following is an excerpt from an email I sent to some friends on 24 March of last year. It concerns an advance in biology (one of many ) that occurred last year. http://www.iaucsb.edu/pa/display.aspx?pkey=1571 The following text was my comment regarding the link: As if they simply took the "class" for the extra color receptor and used it as the "base class" for receptor development in the modified mice eyes. Just as we take a superclass and by inheritance endow subclasses to use it's attributes in java or enable multiple inheritance in C++. I saw these similarities first when I was in high school between electronic systems design and biology and then again saw it between OO programming and biology and electronics systems design. It is possible the original OO language designers may have had the biological mechanisms in mind when they came up with their ideas as much of this was still being teased out during the late 70's and 80's when OO hit it...

Life of a Cell video and other biology resources...

Harvard has a set of excellent online resources for detailed technical information concerning countless topics in science. Last year I came across the multimedia site for the biology department through a video called Inner Life this video shows in visual CGI glory the beautiful dance of biomolecules inside the cell. I have a very visual memory and the processes that I read about and could only imagine when I was in HS are put to beautiful motion in this video. Check out the different versions on the page with and without narration. The myocin molecule walking animation is an amazing demonstrating of a cyclic biomechanical operation that occurs simply because of a periodic affinity and bond energy change between the operative molecules...so beautiful. My favorite part was the mRna to protein synthesis segment of the animation, just like I always imagined it! The page also has animations of other cellular functions as well as demonstrations of conservation of energy principles. (which u...

the sent2null space header image challenge

The new header combines several of my most cherished endeavors. The background image is a Hubble Space Telescope image of a portion (n44c) of the Large Magellanic Cloud , one of our companion galaxy clusters. Streamers of illuminated gas flowing in the stellar winds of a bright star. I have spent a lot of time at the Hubble site downloading the massive full resolution images for printing at large size for display on various walls in my home. I spread the gospel about the site (each image is completely documented) to everyone that cares (or doesn't care) to listen. Head over to it if you haven't and get to downloading...I have a 20" x 30" print of the galaxy M104 "the sombrero" that quite literally brought tears to my eyes. It is important that we experience these images to simultaneously realize the grandness of the universe and our small part in its grand symphony. The title text , "sent2null space" of the image was rendered using a custom desig...

Favorite books post...

To those that got here after reading my post at Richard Dawkins.net I wanted to start a discussion about books , fiction and non fiction and what they mean to you. In this increasingly digitally delivered world, I find reading a good book a great way to clear the mind in order to fill it with other ideas. The books I've read have shaped a great deal of my world view, unlike many people I know I don't read as voraciously (well not non technical subjects anyway) I wonder how close you are to your books? Are you a reader and giver or a reader and keeper? Books I love , I can't part with, I still own the texts that I used in High School (which I was able to procure after the fact) I also have boxes filled with the many (expensive!) texts that I had to buy as I acquired my BS EE degree. How do you treat your books?

bad design everywhere!

I was not as productive today on my continued guest private message implementation as I wanted to be, I was just getting into the groove, lining up my wheels to the highway of efficient code when out of the blue came.... my nephew. See, two days ago he mentioned that his pc was on the fritz, since his loving Uncle is the "pc guy", he came over to ask me if i could take a look at it. At the time I was just getting the implementation started and was very busy, I told him after a short moment of thought "Tuesday." Of course when he did show up, I was completely surprised to see him...long story short, I spent the next 5 hours reinstalling XP. This takes me to the subject of this post. Microsoft (and many companies) are plagued by a problem of design of large technical products that has to do with the scale of the task that is exacerbated as the number of individual agents working on the tasks sub parts goes up. Take an operating system, Microsoft has several teams work...

another unforseen stop...

As indicated by the subject line, after the last post I went ahead and tested a spur of the moment addition from this morning. The conference room UI lacked a simple switch for enabling or disabling the use of shared files on the table for the Room. I decided this should be added to provide administrators the novel ability of selectively providing access to table files in a conference room by sending out requests at different times. For example, a User can now set their room to enable table files, invite 5 people and then disable table files. So long as the 5 other participants join the conference before the file table is disabled they will receive sessions with the permission enabled. All subsequently entering participants will thus be unable to view, download or upload files to the table...this will allow designated groups of individuals the ability to share files while still conversing and collaborating with other participants who for whatever reason should not have access to the f...

a detour into offline messages...

A key feature that I recently added to the collaboration API (about 10 days ago) is an offline messaging capability. If you are a user of yahoo messenger you know how this works, when you are offline users are able to still open an IM window and send a message that you can then read when you log back into the system. I wanted to perform something like this since I finished the main implementation of the collaboration API almost a year and a half ago but I pushed it back , now that I am near the end I realized the 3 days it would take to code it was well worth the potential benefit it would bring to the users (and indirectly to the company!) The offline messaging allows each User to control who can send them offline messages, unlike the yahoo thick client in which I periodically receive spam messages from users who are not on my contacts list. In my implementation, a User has 4 options that other Users can be given with regard to offline messages: Offline messages disabled Contacts offl...

still crunching....

I got to work today as soon as I got back from my morning run and was ready to go after a nice power breakfast. As mentioned in the last post I spent yesterday working on the dashboard template. It required addition of a new method for retrieving the extant guest private message requests on the participant_queue table. This new method was made with three attributes, the new site_id column , the conversation_id (used as the guest pm uniqueness specifier) and a boolean attribute that determines if engaged (meaning a User is conversing with the guest) or unengaged rows are returned. The returned rows are extracted as an Object[] of String[] objects. In other classes of the API I've found it useful to return specific sets of data from the db in an object array when there is no formal need for a managing class. In this case, we only use the participant_queue rows to display in the dashboard, all other use of rows (public/private, user/guest conversations) is implicitly performed by the ...

refinement to the solution...

burning along with my implementation of guest private message addition to the collaboration API...discovered that contrary to the assertion made in the last post that I wouldn't need to update any of the conversation db access methods , I realized that for purposes of display in the dashboard.jsp template that will allow guest private message agents to manage incoming requests, I will need a method that performs the relevant db query. I also noticed that the participant_queue table which tracks the active conversation participant data did not have a column for site_id. Turns out having the site_id is critical for providing filtering by site_id and thus enabling an efficient multi-tenant management capability for this new feature..so I had to add the new column in the classes for the supported db vendors. I added the missing bits and then went on to start working on the dashboard.jsp template before getting back to the actual logic for setting up and tearing down the guest private ...

Interlude: the iphone browser

I was able to test the AJAX driven interface of my collaboration API on an IPhone's safari browser today. It was my first time using the IPhone and the first time I used authenticated to my test site using a handheld device. Though the UI of the Iphone is a bit hampering in how it provides navigation from form fields and how it engages submittal it was still successful in enabling all of the functions of the site. I was a bit surprised that it worked perfectly , I was expecting at least one rendering glitch or issue having to do with the execution of the javascript but everything turned out perfectly. Though adherence to web standards on my side of the web was employed to minimize issues, I'll have to give a good part of the thanks to the Safari web browser on the IPhone which does a good job of supporting web standards. Kudos to the IPhone.

crunching pop corn...

I am in the midst of the implementation of the solution mentioned at the end of sent2null space: objects , abstractions, symmetry and pop corn??? I ran up against an issue that happens occasionally when a modification is made to a class model. You'll recall , I realized that the uniqueness of guest invitations could be used to define the conference type and allow an existing conference to be used as proxy...while investigating deeper, I realized there is no need even for the proxy if I change the structural rules behind the table that tracks conversation participation. In my framework this table is called appropriately the participant_queue it simply lists the attributes of Users engaged in conversations. The database schema for the table enforces referential integrity for a column called conversation_id , in the original implementation of the collaboration API the idea of guest Private messages was not supported, only guest conference users were supported and since a guest t...

engineering in art

In order to continue an explanation of the relationships I see between art and engineering I will expand a bit what I've mentioned in previous posts. The abstractions that are employed to master use of the "objects" of each discipline are the same, the process of solving a problem involves first, isolating the objects and understanding their parameters or attributes in detail, followed by building the solution with the objects , while adhering to the parameters or interface attribute constraints. In the drawing analogy , the idea of shape covers what in programming is expressed by interface. The final step involves making a view of the objects constructed to solve a particular problem. In software engineering the view defines the scope of the solution, how efficient it should be in a given work domain, how scalable it should be, how intensive in resource utilization it should or should not be. In drawing, the view maps to the visual idea of perspective, how does the phys...

keeping ideas original

In the last few years, I've noticed that ideas or conjectures that I made in the past as a naive and imaginative college student have come to have substance behind them in the empirical results of various research reports in the areas that have been published since those times. I won't go over the actual items because they really aren't relevant, what is relevant and likely is that I wasn't alone in making these mental prognostications. I think that as we speak, brilliant solutions to incredibly vexing human problems are being engineered and forgotten in the minds of precocious young thinkers and in the minds of refined thinkers as well. The key difference between the two groups lies in my view in the perception of two groups that allows one to vastly out perform the other in the skill of "innovation" is self motivation or belief. As a young college student I literally felt that there was no problem that I alone, could not solve. This belief was reinforced ...

objects , abstractions, symmetry and pop corn???

I started the implementation of the very last impromptu addition to the features planned for the framework. I have been mulling the day on various aspects of the implementation for the optimal and most efficient approach, as is usually the case I found myself debating issues that might seem insignificant at first blush but upon deeper reflection reveal themselves as important points. Case in point is how I will design the guest pm dashboard, of course before I can explain the problem that needed solving , some back ground. The framework has a built in collaboration API, within the design of the framework "API" has a different practical use from how it is defined by the acronym of the words "application programming interface", in the framework new classes are incorporated or assimilated into the foundations of a common base class. The software engineers among you realize that the hallmark of efficient OO programming is programming that employs the full tools of objec...