The Ocean of Web application frameworks and Tropical island of Jam.py

Ljudevit Perčić
6 min readJan 22, 2019

--

I am a ‘would be’ developer. To be more precise, as an engineer, I have a particular problem on hand and hoping to develop a Web solution for it with no recent developing experience what so ever. Sounds familiar?

To use the conversation from FaceBook:

“I mean, modern dev role it’s already full with a different hype. Before yesterday we all did Angular + Rest Framework, yesterday React is coming and today GraphQL on Django GRaphite with React + Redux”. — Denis Viklov, Django Dev

Let’s face it, I can’t understand what this all means. It’s like a Klingon language to me, or better, an programming language, pardon the pun.

I can easily open the Microsoft Access, create some tables, make a few forms and hopefully find some Visual Basic code on the Net to do some simple tasks. With or without minimal effort in changing the code. Simply because I have no time at work to spend on learning huge technologies.

Is that too much to ask?

Micro frameworks? Full stack ones?

Again, the Ocean of frameworks and choice. Here is the thing, I’m scared of typing something in some sort of prompt or console.

It does look like the micro frameworks are just atoms for building the molecules with a lot of typing. Do I really need atoms to build the Eiffel Tower? At least Tower in my eyes.

On the other hand, full stack frameworks are like organisms, built by many molecules. What happens when some part of organism is sick? Will my tower collapse?

Open Source? Closed source?

Can’t care less, to be fair. If something costs US$100k, that might be the issue, never worked with that expensive software though. The support for closed software might cost, providing you get the support in the first place. My experience is that the best support you get from the original developers. Which probably means open source, but I did have a good experience with the closed one as well. For which I’ve paid US$20–30.

Models? Views? Controllers?

No idea what that is. Why do I need MVC anyway? I really have no time to study software engineering. Did not need one when built my first MS Access office application, do not need one now ;)

So, what do I need?

My application will use a few database tables, so would be great to have some sort of authentication, reports, maybe even auditing or history of changes made in the database. Which database you might ask? Don’t care really. Just gimme whatever.

Batteries included?

No idea what that means for my application. It’s not like I’m building a new NASA web site, or blog, and do not remember good old MS Access having batteries.

Assuming Python than?

Yes, why not?! It does open a question of Python 2 or 3. With Access analogy, that would be 2002 or 2013 version. Latter the better.

I do have some PHP experience from the days when PHP was not object-oriented full blown programming language. Still remember the PHP acronym, “Personal Home Page”, latter known as “hypertext preprocessor”. Yes, I’m that old, and object-oriented scares me. Have no clue what polymorphism or inheritance is.

Welcome to Tropical Island of Jam.py

Let’s get the hands dirty.

Till now, I’ve learned that most of Python applications are installed with pip install command following the application name.

No surprises here, Jam.py does that:

pip install jam.py

There are no dependencies at all, nothing to worry about. Looks like the Jam.py Developer decided to place them in third_party folder for your convenience. I see only werkzeug, pyjsparser and six. Not bad. It does open a question of updating the dependencies, but that’s not my problem. Same with any software I guess.

Next, I create some folder and, surprise, surprise, I need to open a prompt, or a console in Linux world, and navigate to the same folder.

Need to type into the console (scary stuff):

jam-project.py

Gosh, something must happened. But did not see anything! So, I check the folder again and, viola! Something was created:

/
css/
js/
img/
reports/
static/
admin.sqlite
server.py
index.html
wsgi.py

Than I run the Application:

server.py

Unfamiliar stuff showing on the screen, indicating that something happened again:

* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

This is where the scary stuff ends. No more console work today. Or ever. But never say never.

Hands clean as they can!

Looks like I need to open the Application Builder, where only the nice stuff is happening. No more console, yay!

Type this into the Browser:

http://0.0.0.0:8080/builder.html

And instantly the App is showing with:

I select English and proceed:

Sure, classic tutorial CRM application will do for this purposes, as well as sqlite3 database, why not. In instant the Application Builder starts:

So is that all? Do I need to do anything else before proceeding?

Sure. The Application can be accessed on below address in the Browser:

http://0.0.0.0:8080/

It’s pretty blank for now.

By click on Task I can select the Application name, and change it to something else:

Digging deeper!

Hmm, that looks easy to me, don’t you think? Jam.py style, love it! Would you think the Application Builder has similarities with Borland Delphi? Nah, too young to remember, sorry.

I’m ready now to make some tables, who wouldn’t ?!

The Developer decided to call this part a Catalogs. There is a Journals too. Hmm, must be Accounting background, luckily my wife is an Accountant.

So I go to Catalogs/New:

God, this will take a while, need to create a Table with few fields. Not so scary though. Opted for Customers table name, sure it’s visible, why not! Soft delete? Not sure, better leave it as is, might self destruct. Primary key sounds familiar, deleted flag, hm, not so much:

Usual stuff here, my MS Access experience is worth 2c after all. Lookup? Interface? No clue for now:

So, all good I recon! I click OK, nice, Ctrl+Enter does work, fancy:

And refresh the Application page in second Browser tab visiting:

http://0.0.0.0:8080/

What I see is just fine, even better when I try to create a new record! The LastName was set to Required, hence the Warning in red color!

I think I can manage that! Not so scary after all!

And did not type a single line of code…Interesting.

Shall we continue?

If you find any errors, or feel any need for improvement, let me know in your comments below.

Have you worked with Jam.py? Let me know your experience in comments.

--

--