Back-end Frameworks

I have an idea for an experimental project that I am going to do as a learning tool. I am going to do the front-end using a JavaScript framework, but I am still considering what to use for the back-end. Normally, I have done the back-end in PHP and created my own hodge-podge of a framework. It would work well for the project, but wasn’t necessarily the best organized.

For this project, I was going to use PostgreSQL for the database. It has been a while since I used it and I haven’t used some of the newest features available in the latest version. I haven’t settled on a back-end framework yet. Here are some of the ones I am considering:

  • Laravel – This is in PHP which I already know, but I have heard good things about it and it could help create a well-structured back-end. PHP is readily available on lots of hosting services, so it would be easy to set up anywhere. However, I know PHP already and I was wanting this to be a learning experience, so this would not add much to my existing knowledge.
  • Zato – This is written in Python and intended for use in developing back-end APIs which is what I am after. I have read some books and articles on Python and have always wanted to learn it. I also know of some local companies that use Python, so there would be some local help available. The admin interface is developed in Django, so this would also be a chance to get some exposure to Django. This is probably the most intriguing of the choices I am looking at.
  • Ruby – Ruby is actually just a language, but I am interested in looking at Rails and Sinatra as possible frameworks. Ruby gets a lot of press and sounds interesting. I have read a couple of articles and looked at some code. I am not aware of any local companies using it and I don’t know anyone who does use it, so I wouldn’t have as many resources available for help. However, I have always wanted to learn Ruby and Rails, so this is still an option to consider.
  • .NET – Once again, this is more a family of languages and interfaces pushed by Microsoft. They did recently release .NET as open-source so that makes it more intriguing. There is also a large .NET market in the Tulsa area, so that also makes it intriguing. However, I need to do more research to find a framework based on .NET so I would do the roll my own like I have done with PHP in the past.

I would appreciate any feedback or comments. It is still up in the air and getting other people’s opinions would help in narrowing my decision.

Cache Performance Monitoring

We are using Intersystems Cache database on one of the projects I am working on. We were concerned with how do we know if it is performing well. I went through the Cache Monitoring Guide in the documentation provided. It is impressive the number of tools and methods they have implemented to monitor the database. However, they never explain how to interpret the data provided. They have one statistic called “Cache Efficiency”. The description of it is “Number of all global references divided by the number of physical block reads and writes. Not a percentage.”. That is all. There is nothing about how to interpret the number, how to tell if it is good or bad. Nothing. We have 2 systems – production and development. The production server has a number of 480 and the development is 1128. How do those compare?

All I have to say is if you are going to document how to monitor the system, also give guidance on how to interpret the data provided so you can tell if you need to take action.

Knockout.js textInput binding

Knockout.js added the textInput binding in version 3.2. This has been a big improvement over the standard value binding. Both provide two-way data-binding, but the value binding updates after the input field loses focus, while the textInput binding updates instantly. There has been a valueUpdate parameter available for the value binding, but it has not worked reliably for me. I set the valueUpdate parameter to keypress, but it still did not provide a reliable instant update for me. That has been totally resolved with the new textInput binding. The one thing I am not sure about is the performance impact of using textInput over value, so I have only been using it on fields where it is important to get the instant updates. Some of those fields are quantity or price fields so I can dynamically update the extended price and order totals while the user is entering data and not so much on name fields where it doesn’t matter to get the instant update.