Blog in a Weekend Turns 3 !

3 Weeks of Development and here we go again !

Exactly 2 weeks after the first version was released VyperBlog™ gets a major upgrade in the form of User Management with a Self-Help Kiosk.

First, you can read more about VyperBlog™ right here VyperBlog v0.25 (06-28-2010).

Here’s the Self-Help Kiosk

During this past week of development VyperBlog™ needed the ability to Register new Users, Login Users along with the ability to Reset User Passwords and Resend Account Activation Notices as well as Logout.

At this point VyperBlog™ uses the Django Authentication Model however this is perfectly fine for now; perhaps later if there is enough interest VyperBlog™ might get to use the Google Authentication Model however for now Django Authentication works perfectly well.

Added Security

For added security VyperBlog™ forces all Password changes to disable the User’s Account and emails a new Account Activation Notification.

Secure Site™

VyperBlog™ is powered by Web 2.0 and requires JavaScript to function.  Because of this it is quite difficult for your typical hacker to program bots that might perform malicious activities such as programmatically create user accounts or the like.

Normal web sites that do not use the Secure Site™ feature will emit links a hacker can use and abuse however VyperBlog™ does not do this.  All URL values are linked to UI components at runtime and this requires JavaScript support as well as the ability to execute jQuery code.

Secure Site™ raises the bar for hackers and requires them to get far more innovative than that might have wanted to become.

Secure Site™ can be further enhanced to raise the bar even higher through the use of innovative techniques most web developers are simply not aware of nor use.

Secure Image™

Secure Image™ provides a safe and secure method for handling images and other static assets that limits the ability of your typical browser to cache the content one would normally see in their browser’s cache.

Secure Image™ transmits all static content through a single URL using a Web 2.0 technique that clobbers the last image that was cached with the current image that was retrieved.  The last image is clobbered by a trash image.

Secure Image™ will remain a safe and secure method until browser makers choose to cache all images regardless of the URI used to fetch the content and this is an unlikely feature for any browser maker to use since doing so would be seen a being a bit silly by most web developers.

Secure Image™ works best for those who wish to keep their content from being cached by the browser and since the Porn Industry would benefit the most from Secure Image™ it is hoped that industry will begin using it shortly.

Anyone who sells their content through a web page would want to use Secure Image™ or some variant of this technique since PDFs could be delivered using Secure PDF™ and other files could be transmitted likewise.

Want to get started using VyperBlog™ ?

You can read more about VyperBlog™ right here VyperBlog v0.25 (06-28-2010).

VyperBlog™ is Open Source which means the price is right !

VyperBlog™ runs in the Google Cloud with minor modifications and a bit of customizing.

You can buy support for VyperBlog™ by emailing

Blog in a Weekend Turns 2 !

In just a couple short weeks…

VyperBlog™ already has the foundation of a partially useful Blog – partially useful in terms of User Management.  Users can Register and Login but nothing more than just that so far.

The nifty thing about this exciting project is the way Flash content and jQuery have been blended together to provide the best of both worlds; those who love jQuery will feel right at home working with the source code and those who love Flash will enjoy the fact that mobile browsers that use webkit will happily skip right over their Flash content whenever a suitable Flash player is not present.

VyperBlog™ may get yet another useful feature in the form of some JavaScript that knows how to play Flash content even when there is no Flash player present – this may take some time to build-in but if this works the results should be nothing less than really cool for mobile devices in-lieu of Android 2.2 and Flash player 10.1; there may always be some mobile browsers that cannot deal with Flash content.

VyperBlog™ 0.21 features some much needed bug fixes and a revamped dialog for user Login and Registration.

The other nifty thing about VyperBlog™ is the fact that the Open Source code for this project could be used for just about any project anyone might wish to use it for when choosing to use the Google App Engine.

It would be pretty easy to make VyperBlog™ know how to act as a Wiki or a Storefront or any number of other web 2.0 based kinds of functions.  The only limits for the use of VyperBlog™ would come from those who fail to realize what this code could do for them.

Sure when you look at the sample site you might say to yourself, “…well, it’s a blog… but that’s all it is…”.  When I look at the source code, having written it all myself, I tend to think about what this code “could” do if I wanted to make it do something more than what it was originally designed to do.

Code Reuse and why not ?

I like to think about code reuse, don’t you too ?

Writing code takes a bit of time and generally most companies spend a rather large sum of money getting their code written but almost nobody gives any thought to code reuse in most Fortune 500 companies where software development takes comparatively large numbers of people all making low six figure salaries.

Code reuse allows the foundation of one project to become the foundation of the next project.

Code reuse means never having to fix the same bugs twice.

Code reuse means lowering your software development costs as each new project is being worked on.

Code reuse means eventually your future software projects will take so little time you could largely automate the process and then your software development projects could be completed by non-programmers.  (Geez, this thought will scare the crap out of most software developers and this is why nobody is talking much about code reuse…)

The Value of Code Reuse

As an individual who enjoys taking-on rather complex projects on a routine basis I just don’t have the luxury of being able to spend month after month working on what I would consider to be rather simplistic projects like VyperBlog™.  I prefer to leverage whatever code I have written in the past on my future efforts and I find this allows me to complete my projects faster.

The real value of code reuse comes in the way it tends to make the Agile Methodology that much more efficient.

For me, and I realize I tend to think outside the box, code reuse gives the Agile Method a real boost into over-drive.

The Problems of Code Reuse

The real problem most developers have with code reuse, aside from the garish nightmare thought of empowering non-programmers with the ability of writing useful code, is the the fact that when they want to reuse code they have to actually learn how to read someone else’s code.

Code reuse requires the ability to read code one did not write and as we all know it is by-far easier to write new code than read someone else’s code.

Personally, I do not suffer from the problems associated with having to read other people’s code because I began my software engineering career (back in 1974) by reading as much code as possible so I could learn how to write code.  Reading all that code got me into the habit of reading all that code and this allowed by brain to become a real sponge for this type of knowledge and experience.  I found I could gain experience in a vicarious manner just by reading other people’s code to see how they chose to code certain common coding patterns.  I did not form any aversions to reading other people’s code.  I rather enjoyed the process of discovering useful techniques as well as the usefulness of learning how their code worked.  Some 36+ years later… I seem to know some things about code reuse most other software developers just don’t seem to want to talk about and doubly so where code reuse is concerned.

Needless to say…

I have other uses in-mind for VyperBlog™ and believe it or not I do not think blogging is the highest form of expression for web 2.0.  Blogging for me is a vehicle I might use to get information published quickly.  I am far more interested in eCommerce and once I have established a platform or framework I might use to get the next project done faster, through code reuse, I might wish to build an eCommerce solution and slap it right into VyperBlog™ as an option and why not ?!?  A storefront with a blog might not be all that bad of an idea.  A storefront with a blog might facilitate the process of highlighting certain selected products using automated means such that it looks as though a human being was posting items from the online store.

Also needless to say…

There just ain’t that many slick and easy to use Open Source Blog projects floating around that use native Django 1.1 – well aside from the one I found that launched me into coding VyperBlog™.

Why Django 1.1 ?   Why not !

Code reuse – give it some thought !

I always do !

You can read the back-story here:

Blog in a Weekend Part Deux

Blog in a Weekend Part Deux

That’s right, Blog in a Weekend just got a major update !

See the details here.

Catch-up here.

VyperBlog™ seeks to exceed WordPress and every other Free Blogging service by providing a superior set of functions and ease of use.

So far VyperBlog™ exceeds every other major Free Blogging service by providing the following features:

  • Google App Engine Support.
    • Sure, you might be able to get WordPress working in the Google App Engine but doing so will not be easy.
    • Google App Engine is FREE up to about a million hits per day.
    • VyperBlog™ will provide support to exceed the FREE limits placed on the Google App Engine.
    • VyperBlog™ will be deployable using a one-click deployment system.
  • Native Django 1.1 Support.
    • Leverage the power and ease of use found in Django, for those who enjoy writing their own code.
  • jQuery and jQuery UI Support.
    • Built-in AJAX support.
    • Built-in Skinning Support – allows you to choose your own skins for your own look and feel.
  • Parallel Loading support for JavaScript and CSS files.
    • Allows certain combinations of JavaScript files to be loaded in parallel with CSS and image files.
    • See this for the details and the back-story.
  • Flash support with Fail-over when no Flash player is present.
    • This allows webkit browsers such as those built-into Android Smart phones to properly handle Flash content.
  • AJAX-powered.
    • Not even WordPress is AJAX-powered and as we all know AJAX makes Web 2.0 come to life.

Read all about VyperBlog™ and then cruise-over to the Sample Site to see it in action.

Blog in a Weekend using the Agile Method

Got a Weekend with nothing else to do but write some code ?

Let’s say you need a Blog and you want it to be AJAX powered, just for kicks, and you want to leverage the Google App Engine just cuz it’s FREE and you got a spare weekend to kill…

If you are like me, and you probably are, you would roll-up your sleeves and whip-up some code using the following Open Source coolness:

  • Google App Engine
  • Django 1.1 via the App Engine Patch
  • jQuery 1.4.2
  • jQuery UI 1.8.2
  • Google inspired parallel loading for JS and CSS files just cuz this is cool.
  • Flash integration support that allows for dynamic Flash replacements when there is no Flash Player.
  • and more to come…

Take a look at the Sample Site.

Take a look at the Open Source code.

Play with the Sample Site and then salivate over what this Blogware could become – a replacement for WordPress, dare I say…

VyperBlog is ready to rock and roll for you today !

All you need to do is grab your Google App Engine Account and then grab the source for VyperBlog and then make a few mods and upload to your Google App Engine Account and your very own VyperBlog is online for you too !

Then… stay tuned for even more coolness coming your way in future releases.

Salivate over what this could mean for you !

Instant FREE Blogging your way !

Stay tuned for the following features, yet to come soon:

  • Twitter integration – automatically Tweets your Blog posts.
  • FaceBook integration – automatically posts to your Wall.
  • StoreFront with PayPal and Google Checkout support.
  • Comments from your loyal Blog Users.
  • Widgets – Calendar, Twitter and more.
  • Social Networking – integration with as many social networking sites as have API support.
  • Mobile Site Support – allows mobile browsers to see your Blog in living color formatted for mobile devices.
  • Android Support – Android App  you can use to maintain your VyperBlog using your Android Smartphone.

Spread the word !

Tell all your friends to get using VyperBlog and then tell more friends.

Make suggestions for the features you want to see and watch them come to life.

Adventures with Lua 5.1 and Xavante 2.0 in Ubuntu 10.04

Get Installed

Assuming you already have Ubuntu 10.04 installed and running you can get Lua 5.1 and Xavante 2.0…

  • apt-get install lua5.1
  • apt-get install luarocks
  • luarocks install xavante
  • luarocks install wsapi-xavante

Installed rocks:

1.1.6-1 (installed) – /usr/local/lib/luarocks/rocks

1.13.0-1 (installed) – /usr/local/lib/luarocks/rocks

1.5.0-1 (installed) – /usr/local/lib/luarocks/rocks

2.0.2-3 (installed) – /usr/local/lib/luarocks/rocks

1.2.3-1 (installed) – /usr/local/lib/luarocks/rocks

1.3.4-1 (installed) – /usr/local/lib/luarocks/rocks

1.3.4-1 (installed) – /usr/local/lib/luarocks/rocks

2.2.0-1 (installed) – /usr/local/lib/luarocks/rocks

Now what ?

Assuming you have Xavante installed and ready to run you have to configure your Xavante Web Server.

Configure Xavante

mkdir /var/www2

Place the following file in a file named “xavante.lua”:

-- Sample Xavante configuration file for launching WSAPI applications.

require "xavante"
require "xavante.filehandler"
require "wsapi.xavante"

-- Define here where Xavante HTTP documents scripts are located
local webDir = "/var/www2/xavante"

local simplerules = {

 { -- URI remapping example
 match = "^[^%./]*/$",
 with = xavante.redirecthandler,
 params = {"index.html"}

 { -- URI remapping example
 match = "^[^%./]*/$",
 with = xavante.redirecthandler,
 params = {"index.lp"}

 { -- filehandler example
 match = ".",
 with = xavante.filehandler,
 params = {baseDir = webDir}

-- Displays a message in the console with the used ports
xavante.start_message(function (ports)
 local date ="[%Y-%m-%d %H:%M:%S]")
 print(string.format("%s Xavante started on port(s) %s",
 date, table.concat(ports, ", ")))

 server = {host = "*", port = 8080},
 defaultHost = {
 rules = simplerules


-- End Xavante configuration file for launching WSAPI applications.

This file allows your Xavante Web Server to run on port 8080.

Now you can install a “start” script to allow your Xavante Server to run.

Place the following script into a file called  “start” and chmod +x this file to make it executable:

wsapi -c xavante.conf -p 8080

Now make a folder called “xavante” as follows:

mkdir xavante

Now place an index file in the xavante folder with the name index.html.

Now run the start script and go to your browser and point it at port 8080 to see the index.html file display in your browser.

That’s All Folks

Now the trick will be to figure-out how to make Lua code jump into some “lp” files so you can begin to craft your Lua Powered web site.

Good Luck with that !

If you really love Lua to death and you don’t mind rolling-up your sleeves and dig-down deep within your soul you just might be able to craft a working Lua Powered site but… the level of effort will not be trivial and you may not get much help from the community at-large without some extra effort on your part.

There don’t seem to be a great number of people using Lua and Xavante for their web work and nowhere near as many as are working with Python/Django, for instance.

What’s the benefit of using Lua as a back-end language ?

Again, if you love Lua you don’t need to wonder about whether or not Lua should be used however the rest of us will likely not be using Lua to build our back-end servers.

I offer this information as a demo of how easily Lua can be installed in Ubuntu 10.04 – might take all of about 10 minutes for most people.  Once these steps have been followed you are left to wonder what to do next.  Good Luck with that…  You would be better served digging deep enough into Lua to allow you to craft your own Lua Web Server but then you might not achieve the level of robustness required to give you the confidence you need that your Lua powered Web Server will in-fact be usable by enough people at the same time.

It should be noted the index.html page timed-out when it was tested using the Apache ab.exe program as follows:

“C:\Apache228\bin\ab” -n 2000 -c 10 -v 1 -w -k http://ubuntu:8080/ > run-ab-xavante-1.html

For my installation the url “http://ubuntu:8080/” points to the index.html file I placed into my xavante folder and it does come-up in my browser when I test it using the Google Chrome Browser version 5.x.

The error message follows:

apr_poll: The timeout specified has expired (70007)

This is not the stuff that gives us confidence…

Enjoy !

One Project, 11 Languages !

See also:

One Project, Ten Languages…

Then the Mars Rover Technical Challenge was recoded using FreeBASIC 0.20 using the FBide by porting
the VB.Net version to FreeBASIC.  A complete set of Unit Tests were coded as in-line BASIC code.
(See “MarsRoverSample (FreeBASIC 0.20).zip“).

And “yes” this means I can code all 11 languages !

I wonder if I can code any others ?

I wonder if any other languages might be like the ones I have already coded ?

All things being equal every single computer language does just one thing… they all allow some kind of algorithmic expression to be coded.

Once any single language has been mastered they can all be coded !  It’s just the small matter of having to translate certain idiosyncratic expressions from one language to another.

Most people just give-up whenever they are faced with having to learn something new.   Programming is programming is programming regardless of the language.   Learn how to program one language and you have learned them all.

All programming languages share certain concepts in common…

  • They all have methods for expressing loops.
  • They all have if…then…else expressions.
  • They all have the ability to declare variables and functions.
  • They all have the ability to store and process data.
  • And the list goes on…

Some people like to glorify the ability to write code in their favorite language and they tout this knowledge as though it was something special.

The ability to write software is just like any other ability any human might choose to cultivate.  Practice makes perfect.

Most of the methods people want to use to ensure they are talking to someone who knows how to code any certain language revolves around the notion that everybody who codes any language will take the time to memorize certain aspects of that language, as-if there would be no desire to every leverage the power of the Internet while doing one’s work.  This is simply nonsense.

Disconnect any professional from their ability to glean information from whatever sources they may choose to use and you cause that person to be useless !

Take a doctor’s journals away and that Doctor is useless.

Take a lawyer’s legal libraries away and that Lawyer is useless.

Take the Internet away from any professional programmer and that programmer becomes useless.

So why do we even think about devising interview procedures in such a manner so as to remove one’s ability to use the professional resources we all know we have to use while we are answering questions ?   Because doing so somehow means something ?   If not having access to one’s professional sources meant something we would surely not allow computers in a Court Room nor would be allow our Doctors to have computers in their offices and we surely would not want to have an Internet for any purpose other than “entertainment”.

Being a successful professional is all about knowing how to use the information one has access to.  It is not about knowing how to memorize arcane facts and figures.

I have talked with certain Doctors who did not know some arcane fact I had gotten from the Internet as-if that fact meant something and would surely mean something to every single Doctor.  As we all know, every Doctor has to go through a whole lot more study and validation to get their Medical License and maintain it and yet to watch some Doctor not know the smallest detail about how human cells generate energy from sodium and potassium means absolutely nothing.

I want my Doctor to have access to the latest information at all times and surely whenever I am talking with them about my health.  I would not want any Doctor giving me advice who was so full of themselves so as to think they knew it all devoid of checking with the latest research on a regular basis.  I would want someone in whom I had invested my trust to double-check their facts before giving me some advice and I would not think less of a Doctor who indicated to me their was some need or desire to check their facts before speaking to me.

So why do we create useless and meaningless interview processes that require memorization and recitation ?

Because there is no way to know what any professional will do until they are asked to perform under real conditions and it is not possible to create “real conditions” as part of an experiment or test.  The moment anyone chooses to “observe” any process that process is altered by the observer.  Give a programming test to any programmer and the only thing you might determine is how well that programmer might do under that specific condition or test.  You still will never know if that programmer can handle a real-world project and trust me when I say I have watched programmers who were supposed to be skilled waste their time on problems I felt were just too ridiculous to spend any time on, all the while ignoring advice that would have resolved the issues.

So why don’t we just get real and realize there is more value in having resourceful professionals around than those who seem to be able to recall certain arcane facts off the tops of their heads.  Sooner or later everybody runs out of stuff they can fit on the tips of their tongues and when that happens they will need to know how to be resourceful rather than being able to recite things from memory.

One Project, Ten Languages…

See also:

One Project, Nine Languages…

Then the Mars Rover Technical Challenge was recoded using Active Perl using the Komodo editor by porting
the JavaScript version to Perl.  A complete set of Unit Tests were coded as in-line Perl code.
(See “MarsRoverSamplePerl (ActivePerl-“).

And “yes” this means I can code all 10 languages !

I wonder if I can code any others ?

I wonder if any other languages might be like the ones I have already coded ?

  • Pascal ?
  • Objective-C ?
  • Java ?
  • others ?
%d bloggers like this: