Simple Message Bus

The Simple Message Bus exists to resolve the problems one might encounter in building and deploying a complex system distributed among many Virtual Machines (aka. Cloud) where individual VMs may be online or offline at various times.  In this model, whenever one is using a REST Web Service Architecture one may find a target web service offline, for instance, and when this happens communications breaks down.

The Simple Message Bus provides a layer of persistence, for Windows-based applications in which the messages are stored locally in a directory until delivered to a remote computer where messages are once again stored persistently until consumed.

You can get the source code from here.

You can clone and modify to meet your specific needs such as making it work with Linux.


Simple Message Bus

Vyper Logix Corp Makes ITC (Inter-Thread Communications) Easy as 1,2,3 !!!

Take a look at the code sample found in this article !!!

Very Lean !!!

Very Cool !!!

Threaded !!!

Best of all the main process terminates itself once all the work has been done !!!



Code sample was printed using Wing IDE and Snag-It 10.


Node.js Achilles Heel

The good thing about Node.js is all that JavaScript running on my server !!!

The bad thing about Node.js is all that JavaScript running on my server !!!

Hey, if you love JavaScript then by all means use the heck out of Node.js; you may come to realize why Node.js is so weak as a server-side technology.  Heck, almost nobody even cares why Ruby on Rails is so weak and it’s got millions of followers.

Node.js lacks a threading model !!!

So who cares, Ruby lacks a useful threading model too and nobody cares about it at-all.

Ok, to be fair, Ruby 1.9.x does use multiple-threads but Ruby 1.8.x does not. (See also: this)

Node.js has no threading support at-all because JavaScript has no threading support.

As a casual user, or typical Manager, you will never even know or care about the lack of a threading model… none of your developers will either, for that matter.

On the other hand, if you ever try to develop some swift Node.js gizmo that could benefit from a threading model, well let’s just say you will be stuck with a slow service.

The good news is, even without a threading model Node,js could be used effectively but sadly few of your under 30 coders will probably know anything about how to engineer around the lack of a threading model.

Enjoy the lack of threads… Ruby lovers have for a number of years and you don’t hear anything from them about this either way.

Addendum – threading model

So there kind-of is a threading model for Node.js but only in the grossest manner – so you can fork or spawn a process – big deal !!!   This is not the same thing as spinning-up a thread by any stretch of the imagination.

Node.js is too immature for prime time

You should be able to see the break-out Node.js Web Framework on-par with Django for Python but there only seem to be a ton of choices with no clear winner.

The bottom line is, Node.js is all the rage, this year.  But will Node.js be there next year and the year after with the same strong following once people figure-out just how Node.js works ?!?

Here’s what you can look forward to with Node.js

You will look at Node.js and fall madly in love, no doubt.

Node.js can be very fast but only when you use it sparingly and then only for lightweight processes.

Node.js cannot do any heavy lifting because it lacks a threading model which means you will be spinning-up Processes not Threads and as we all should know a Process object is very heavy, much heavier than a Thread object.

Node.js will be a bit more of a pain to scale unless you want to buy/rent/lease a single server for each Node.js process and then you can go ahead and throw all your money into Node.js servers with my blessing; I will be spending much less on my Python servers and not only because I can pile more services on each Python server…

Node.js is this year’s Ruby on Rails.  *yawn*  So what else is new ?!?

Node.js appeals to non-techies and so does Ruby.

Node.js can be useful but only for those who know how to leverage it properly.

Use Node.js for simple one-off web services and keep Python around for the heavy lifting.

The bottom line

JavaScript is JavaScript no matter how much lipstick you pile on.  JavaScript was designed for the browser.  Get over it already !!!  Yes, you can run JavaScript on your servers – big deal !!!  I can run the Chrome browser on my servers too, does this automatically mean I should be using Google Chrome for my web services ?  I mean really !!!

What’s next ?  Let’s run Adobe AIR servers ?!?   Oh, no, I forgot everybody is supposed to hate Adobe, right ?!?

Let’s keep JavaScript running in our browsers…  Servers are for serious system-level work and this is why god made Python and Stackless Python anyway.

TCP/IP Latency Decoupler

The ability to decouple TCP/IP Latency from that which makes a request to that which serves the request results in a huge (2x) improvement in performance.

The first trick…

First you have to be aware of the effects the latency of the requester has on the overall conversation for TCP/IP and how the requester’s latency tends to cause the response to acquire this latency.

Consider the following…

Let’s say I have a bag full of quarters and you have a handful of pennies; I will give you a quarter for every penny you give to me.  This is kind of like what the Web is like, you make a request for some data using a smaller amount of data and the server gives you a larger amount of data than you sent to the server.

Let’s further say, you must first pull a penny from your hand before you can give it to me and I cannot give you a quarter until I get one from you.  My ability to give you a quarter is coupled with you ability to give me a penny, for as long as it takes you to give me a penny that delay or latency is acquired by me and I cannot respond with a quarter until the latency has been acquired.

Traditional Wisdom…

The Traditional Approach, or one of them, is to reduce the time required for the server to respond and this is part of the solution; the other part of the solution involves something far stranger than you might wish to believe however the latency of the requester can also be decoupled from the server’s response.

Your goal…

You can either continue to use traditional wisdom and reduce the time required for your server to respond or wait for Cisco Systems or Google to discover how to Decouple Latency and then you can pay them to do this for you.

My goal…

My goal is to build an online service you can use to Decouple Latency and then hope you figure-out doing so is useful so I can make this service available to you at a lower cost than either Cisco or Google.

Don’t worry…

There is no need for you, the casual reader, to become concerned with How-To decouple latency, the problem has already been solved and rather nicely using a very simple Ancient Egyptian solution for a related problem we consider in the modern age to be too antiquated to fool around with; the problem with using Ancient Solutions for modern problems is that most people think it stupid to do so because those who lived in ancient times were so backward based on our modern-day understanding – the fact is, however, that ancient peoples were far smarter in some respects than we are today and the Egyptians were second-to-none in numerous respects that we cannot begin to understand even in the 21st Century.

The fact that Latency can be Decoupled successfully is more than enough for those of us who have a deep intimate understanding in the inner-workings of TCP/IP.  I will say I have talked about this with many would-be networking experts who should have known what I was talking about but they did not… but that’s okay because most humans who are alive today are completely oblivious to Quantum Mechanics and still their lives are largely governed by this not-so-well-understood mysterious thing.

I don’t have any problems with those who choose to disbelieve what I talk about… this is what makes life interesting to me, being able to discover solutions others cannot seem to understand … I get to watch how events unfold as I wonder just how long the rest of humanity might take to also discover these solutions.  Cloud computing is one of those solutions I discovered but… the rest of humanity seems perfectly content in using the smallest aspect of what cloud computing could be… Google seems to understand some of what cloud computing could be but even Google has not revealed a very deep understanding into what cloud computing could do to reduce the operating cost at Google.  Agile Development is another of those solutions I discovered but nobody I know of talks about how the Agile Method might be used to greatly reduce the cost of software development; I get to be entertained by the fact that I have been using the Agile Method since I began writing software in 1974 and I had no idea back then that I was doing anything other than what was perfectly obvious to me that was also not at-all obvious to everyone else.  Ah, such is life… some of us have to create the Agile Method while others of us simply use it because it is perfectly obvious to us.  You can put me in a room with a pile of computer parts and then watch me build the computer followed by writing the code for that computer or you can watch almost anyone else walk out of that room without even making the attempt to produce software – it is for those of the latter group the Agile Method was crafted because those people, and you know who you are, lack the motivation to produce software unless they are told How-To produce software.

Now get out there an figure-out how-to decouple latency…  I did and my method works… what about the rest of you… ?!?

Why can human knowledge not be quantified ? And why do some people feel the need to try… ?!?

How much experience do you have using blah… ?!?

My response to this kind of query is generally… “A lot”… however saying you have a lot of experience does not seem to satisfy the questions for those who just have to think there is a way to quantify knowledge or experience.

The closest you will ever get to being able to measure human knowledge is…

You can measure how close to your own understanding someone else might be until… they end-up having more than you and then your ability to measure falls apart.

You can make people play guessing games to see if they know some things you think you know but again, the moment the person you want to measure has more than the one doing the measuring the process fails to please.

You cannot measure human intuition…

The ability to reach outside the box cannot be measured.

The ability to do more with one’s mind than has been done in the past cannot be measured.

I have interviewed with some hiring managers who said up-front they did not want anyone who had any kind of intuition…

I have to wonder about anyone who claims to be agains the use of human intuition just because… well my pets won’t be intuitive but they are animals… humans should use intuition because they can… simple as that.

Get over it gang, human knowledge cannot be measured any more than human experience can be measured.

Anyway, I prefer to take myself out of the equation when trying to determine what level of experience someone might have, were I the one faced with trying to staff some kind of software project.

It’s just too easy to become so self-deluded to feel as-though everyone sees it the way I do so as to render oneself so incredibly silly-stupid as to make the process of trying to make the determination useless.

If we all just focus on what the technologies we work with can do and then figure out what these technologies should do and then work on how to make these technologies do what they were not designed to do we might all learn enough to be useful.

Far too many people like to focus only on what the docs say these technologies can do and nothing more.

Python tuples are immutable

Yeah, until you learn how to change the contents of a tuple and then you figure-out there almost no such thing in Python as an immutable Constant other than the mere conceptualization of what immutable might mean so long as you really didn’t want something that is actually immutable and really unchangeable – but again, I might think my windows on the front of my home are immutable so long as nobody ever figure-out how to pick up a rock… in real terms I just cannot be that stupid as to really think, for any period of time, that my windows at home are any more immutable than Python tuples – cuz they are NOT.  Windows can be broken and Python tuples can be modified… rocks and lists were all made to resolve these issues.  On the other hand, I also don’t let just everyone know where I live either… and I don’t leave any loose rocks laying around my front yard.  Immutable is not always immutable… and constants are not always all that constant – at least where Python is concerned.

Sorry Google but when you want to talk to me abut Python you might give some thought to just how many hours I have spent using Python to solve real problems… and “yes” I too read where tuples are immutable but… that’s all the farther that one goes because I happen to know there’s almost no such thing in Python as a Constant where Constant really means “…it can’t be changed…” and by “…can’t be changed…” I mean “…it really cannot be changed…” and by this I mean “…it really cannot be changed because the freaking runtime keeps it from being changed…”.  Talk to me about immutable in Python when there is really no way to make Python change the value of the thing you wish me to think is “immutable”.  Darn, then you learn anyone can code a Python extension that gets a pointer to that pesky immutable variable with the evil intent to make a change without the consent of the Python runtime.  Oops !!!   Hey, maybe I just know Python better than you thought… OR… I am able to see how to get things done when everyone else says it ain’t possible.  Either way, I want to do it more when Google tells me I should not… maybe this has something to do with how one ends-up rebelling against one’s parents… or maybe Google simply wants to take control over how we use Python… either way… whenever I am told it’s not possible I tend to look for ways to make it possible – doing this helps me learn and learning is good.  LOL


%d bloggers like this: