Skip to main content

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 to a conference is always joined to an existing conference on the system , referential integrity for conference id's made sense ...but to support guest PM's I could either add a new type and then create new managed conferences for every guest PM request as mentioned in the previous post but this is computationally as well as resource inefficient, especially as large numbers of guest PM requests come in. To allow for efficient guest PM's an unmanaged interaction would be ideal, the solution as mentioned previously was to use the uniqueness of guest pm requests...I realize now that the minimal effort and maximal pay off comes from relaxing the referential integrity constraint of the table column conversation_id and using the existing methods for adding , retrieving and updating conversation rows based on the participant attributes. This single action allows me to readily support the specific symmetry of guest PM's without requiring managed conversations (with valid conversation id's) to be used as proxy, by using zero value conversation id values to correspond to guest PM participant rows in the conversation_id column I can track guest PM's independent of valid managed conversation objects (those with positive integer id values) the drawback to this is only that I have to recompile my existing test instance of the application and reinstall it (strictly speaking I don't since I can modify the constraint via the db admin tool) anyway I decided to just make the change and forgo all the other hassles of needing to update the add, update and retrieval methods of the conversation objects. So this is a perfect example of observing a particular symmetry in action, in this case it is the symmetry of the database schema when the table constraint is in place, I couldn't use negative or zero values...but by relaxing that constraint use of zero or negative values allows me to employ them for the use of the guest PM's which now can be instanced entirely in memory without management resource allocation on the db which is a key drain in performance especially under scaled conditions.

I'll be explaining more about the actual implementation as I role through it in the next few days.


Popular posts from this blog

On the idea of "world wide mush" resulting from "open" development models

A recent article posted in the Wall Street Journal posits that the collectivization of various types of goods or services created by the internet is long term a damaging trend for human societies.

I think that the author misses truths that have been in place that show that collectivization is not a process that started with the internet but has been with us since we started inventing things.

It seems that Mr. Lanier is not properly defining the contexts under which different problems can benefit or suffer from collectivization. He speaks in general terms of the loss of the potential for creators to extract profit from their work but misses that this is and was true of human civilization since we first picked up a rock to use as a crude hammer. New things make old things obsolete and people MUST adapt to what is displaced (be it a former human performance of that task or use of an older product) so as to main…

Engineers versus Programmers

I have found as more non formally trained people enter the coding space, the quality of code that results varies in an interesting way.

The formalities of learning to code in a structured course at University involve often strong focus on "correctness" and efficiency in the form of big O representations for the algorithms created.

Much less focus tends to be placed on what I'll call practical programming, which is the type of code that engineers (note I didn't use "programmers" on purpose) must learn to write.

Programmers are what Universities create, students that can take a defined development environment and within in write an algorithm for computing some sequence or traversing a tree or encoding and decoding a string. Efficiency and invariant rules are guiding development missions. Execution time for creating the solution is often a week or more depending on the professor and their style of teaching code and giving out problems. This type of coding is devo…

Live Coding Exercises: How NOT to hire potentially Brilliant Engineers.

I've intimated this view before but, I abhor "live coding" exercises for engineering interviews and will never have them as part of any interview process I conduct. They are simply unrealistic to real world engineering in every possible way, they only test familiarity (or luck) with a tiny subset of solution methods to a specif subset of problems...that you either "nail" or get spectacularly wrong depending on who is observing you.

They are mostly entirely unfair to the candidate on top of the pressure of having a gun under them while coding, only in the most extreme cases is coding under the gun and that's just competitions where the code is far from real world engineering why test for general coding ability with such tests?? Stupid.

I posit, it is significantly more effective to see examples of a candidates finished working code in the form of a project or projects they've created. How long it took some one to get some uber algorithm work…