Innotek VirtualBox November 8, 2007
Posted by steve in Uncategorized.add a comment
VirtualBox rocks!After spending a lot of time fiddling with WINE on Ubuntu trying to get
the Full Tilt Poker client running so I can “get my gamble on” while
running Ubuntu, I decided to abandon it, since it doesn’t work, nobody
else seems to be able to get it to work, etc. etc.
Since then, I stumbled upon Innotek VirtualBox.
This software is nothing new, similar to VMWare, but the
licensing allows you to use it for personal use for free, so I gave it
a try. Literally less than an hour after starting the
download of VirtualBox, I was playing poker on my Ubuntu desktop.
Since then I have tried the Windows version of VirtualBox and
it is just as easy and free as the Ubuntu version. Now I can
run Ubuntu in a VM on my windows desktop.
VirtualBox is a great way to try new OSes…. Hmmm..
Maybe I need to give gOS a try…
I’ve found the best way to use VirtualBox is to have ISO installer files for your OS. If you have a Windows install CD, you can use ripping software to create an ISO file from it. From that point, you can use VirtualBox to “mount” the ISO file as a CD drive to the VM. When you first start it up, the boot order will cause the VM to boot the installer CD image. By having the ISO image file instead of the installer, it makes it easier to install it multiple times / reinstall / etc, without having to deal with the physical CD and the slow speed.
VirtualBox – It’s worth every penny!
User Group 2.0 (Problem) October 11, 2006
Posted by thenakedsingularity in Uncategorized.add a comment
Ever been to one of those technology user groups around town? Let me guess, you went for a couple of times, maybe had some interesting discussions, might even learned a thing or two, but have not been back since. Close?
That’s probably the experience that the majority of us can relate to. I, for one, certainly can. There are around 20-30 user groups in the city I live in and there is not a single one that I go to consistently. True, sometimes I am just too busy or too lazy to go, but most of the times I just didn’t feel that I could get a lot out of the experience.
Is there something that most user groups are lacking or am I just too picky?
Well, I’ll go ahead and gripe and you be the judge.
1) Many user groups lack substance; they tend to be a front for networking or other ulterior motives. Most professionals go to user group hoping to have the opportunity to learn from each other and exchange ideas/problems/solutions with their peers. If a user group stray away from the main goal, many professionals lose their interests. Sure, networking is certainly useful and welcome in such functions, but don’t forget what they come for in the first place.
2) Sometimes, more often than not, the presentations in the user groups are high-level, abstract, and academic. There is a big gap between what is presented and what participants encounter in their daily lives. Very often, user group participants cannot relate and apply what they learn from the presentations to their problems at work – they are always different. Therefore, you might leave there knowing a couple more terminologies, but still without a solution to your problem, and worse yet, without any “real” learning.
3) Most user group are for specialized interests. Linux, Java, .NET, Unix are just a few examples. Granted, it is cool to go and hang out with fellow Java programmers, but now days how many pure Java programmers are there? Most professionals I know have their hands in everything – software engineering, architecture, infrastructure, process management, leadership, project management, and the list goes on and on. Very often, we are interested in everything under the Sun, because solutions to the problems we solve often comprise innovations from multiple fields and dimensions. Going to a one-dimensional user group is often insufficient to my learning. What I want to learn is not how to use Java correctly, but how to use Java correctly with the rest of the technologies, under the context/domain I am in.
4) Lack of continuity. Real learning is a continuous process with feedback and re-enforcements. You don’t just go to a one hour presentation and come back with internalized knowledge. Sometimes a presentation goes really well and generates a lot of active discussions among participants, so they go back to work and apply what they learned, and figure out what works and what does not. At this juncture, it is critical for them to revisit the subject and enrich it with feedback from the real world experiences. This process is highly conducive to real learning. Unfortunately, most user groups tend to jump from topic to topic without connecting the dots or provide adequate room for reflection.
I have more but here are the main ones. In the next post I’ll suggest a radical approach that looks at user group somewhat differently. Will it be something that you might be interested in going, more than a couple of meetings? I don’t know, you be the judge.
uma comunicação October 11, 2006
Posted by thenakedsingularity in Uncategorized.add a comment
What is communication?
Wikipedia simply defines communication as “the process of sharing informaton.” Webster says communication is “a process by which information is exchanged between individuals through a common system of symbols, signs, or behavior.”
Sounds reasonable, right?
Recently I was looking at the work carried out by two Chilean biologists: Humberto Maturana and Francisco Varela. These two guys did some influential work on cognition and collaboration; the latter gave me some insight about communication that I didn’t have before.
Maturana and Varela made two fundamental observations:
1) Everything said is said by an observer. We are what we observe. How we think, what we say, how we feel, all are culturally and environmentally specific.
2) All knowing is doing, and all doing is knowing. An organism’s thought processes are closely tied to its physical nature. So, to understand a creature’s actions, we must discern its form – that is, understand its physical make-up.
From these insights, Maturana and Varela introduced the concept of autopoeisis. An autopoeitic system is self-producing and self-organizing – it continually regenerates its own components and its internal processes for a specific goal (e.g, survival.)
Bare with me, we are getting to the communication part, I promise.
In autopoeitic terms, the defining responsibility of a system is to maintain its internal processes. This dictates how systems collaborate with each other. They must do it in such a way so that both of their internal processes will be preserved. Sometimes a small deviation is okay, as long as the deviation does not have a permanent damage.
So, let’s look at communication again. First of all, communication is not in fact the transmission of knowledge from one party to another, since, well, both parties already have different perspectives on life and everything else and will make up their own minds about any information that is passed on to them.
So why communicate?
Autopoeitic theory asserts that communication is all about the transmission of intent. The purpose is to encourage the all parties to synchronize their behaviors so that an interaction can proceed without interrupting each party’s internal processes.
Translation: in human speeches, it implies that what you say is not all that crucial, but how you say it is.
For example:
a) Provide the right mechanism to allow the parties to engage conveniently.
b) Be congenial to prevent relations breaking down.
c) Indicate clearly the intentions of the parties involved, so as to permit coordination of individual behaviors.
Interesting, no?
Blogging is a form of communication. Does this theory apply here? Is this forum used by us to transmit some type of intent?
hmm…
Dimensions of Time October 7, 2006
Posted by steve in Uncategorized.1 comment so far
In the spirit of the post about the light cone, I thought I would post about a problem that I have been thinking about lately, but it is really a concern for most applications, and that is the storage and processing of entities that have one or more time dimensions. I will call these ‘temporal entities’.
To provide a domain to have examples for discussion, consider a payroll system. In particular, suppose the system’s Employee objects have attached to them a ’salary’ property. This example will help illustrate the multi-dimensional time aspects. Suppose an Employee receives a paycheck in June based on the salary, which was $100 at the time. When the Employee gets a raise, the system must capture the new salary amount so the new check for $125 is sent in July.
So far, we have one temporal dimension- the ‘perfect world’ scenario where the system and the users do everything perfectly. How the system accomplishes the management of this information is up to the reader, but I suppose it could have multiple ’snapshots’ of an Employee with an associated effective date. To find the salary for a point in time, you might retrieve the record that was “in effect” at the time in question. This seems to be a reasonable approach at first blush.
Now consider the situation where we are “in the wild”- at a particular customer’s installation of our payroll system:
1. Jim Bob gets his check in June for $100. Everything’s going great and Jim Bob’s supervisor, Betty Sue, tells him he will get a raise to $125 in July.
2. Betty Sue forgets to update Jim Bob’s Employee object in the payroll system.
3. The system cuts a check to Jim Bob for $100 for July. Jim Bob complains to Betty Sue.
4. Betty Sue comes in on July 4th and updates Jim Bob’s salary to $125 for July. She also cuts a new check for $25 as a “correction” to the payroll.
Now, this is where it gets interesting. If we were to query the system and supply the effective date in June, we would see $100 for salary. A query for July would show $125. We would naturally assume that the check cut to Jim Bob in July was for $125, but we see the the transaction log that it was in fact not $125, but $100 on July 1st, and changed to $125 on July 4th along with the correction.
Whew. Ugly, nasty business, payroll systems are. Imagine systems (not payroll) where the above situation is the norm rather than the exception. The point I am driving at here is: what is the most natural, elegant, intuitive way to think about or model objects that have this sort of behavior “built-in”? Is there a clean approach, or is it just necessarily ugly? Managing temporal relationships has been a topic of heavy research in database systems for some time. But are there patterns that help us in the object world? And how do object-relational mappings work when temporal objects are persisted in relational databases? Inquiring minds want to know.
as the wheel turns… September 29, 2006
Posted by steve in Uncategorized.1 comment so far
“So,” said Achilles, “I have had lots of great ideas for software, but every time I develop it, the technology goes stale. Like that great PowerBuilder app I wrote back in the 90s. I’m getting tired of the march of technology… Now everyone wants things written in Ajax, or Ruby…”. Achilles sighed and leaned his head back on the tortoise’s carapace.
“That,” replied the tortoise, ”is because you hide your ideas within the implementation. Consider capturing your idea in a timeless form that can be used again and again.”
What the Tortoise Said to Achilles September 29, 2006
Posted by steve in Uncategorized.add a comment
From Wikipedia:
“What the Tortoise Said to Achilles” is a brief dialogue by Lewis Carroll which playfully problematises the foundations of logic. The dialogue alludes to one of Zeno’s paradoxes of motion, in which Achilles could never overtake the tortoise in a race. In Lewis’s dialogue, the tortoise challenges Achilles to use the force of logic to make him accept the conclusion of a simple deductive argument. Ultimately, Achilles fails, because the clever tortoise leads him into an infinite regression.