Luckily this thought pattern was eroded over time, thanks in part to jQuery. Now I am more accepting of using widgets others have constructed to help me develop faster and have a better bug free product.
The original thought “build everything myself” has actually added in a lot of man hours that I did not need to give myself. However it was a learning curve I needed to learn. Sometimes it is best to except help from others. There are many libraries, widgets and tools in the Open Source market that are designed specifically to help developers speed up their development.
A list of all different widgets used in NearBeach can be found in the READ ME file: https://github.com/robotichead/NearBeach
It has been an extremely busy and productive few weeks. We have finished our sprint ahead of it’s scheduled finish. We have release development-0.17.5 today and it can be found https://github.com/robotichead/NearBeach/releases/tag/alpha-0.17.5
This is a feature development and we do not recommend using it unless you want to test the new features. We are now moving into our 10th sprint which will be dedicated to finding and fixing all bugs and security issues in NearBeach.
After building a very stable and strong 0.16 branch, we have decided to revisit the database section and make some strong modifications. The main issue we had with the database was the lack of consistency between plural and singular values. As a last ditch effort, we have decided to single all plurals. This currently makes the 0.17 very unstable and we are still finding issues and fixing problems.
Currently we are a head of our schedule (for once), and we are hoping to do a full bug test session soon. We want the 0.18 branch to be even stronger than the 0.16 branch.
There are only two difficult problems in programming: naming things, cache expiry, and off-by-one errors.
I will admit that I have made a mistake with my naming convention, and that mistake is plurals.
Naming convention is important for the obvious reasons;
Remembering variable/field names later
In my case I did not keep a standard with the naming convention when it came to plurals. Some database tables/fields are with a suffix ‘s’ and other are not. This makes it extremely hard to remember what I have done and wastes time as I have to look up the table/field.
My solution – remove all the plurals and make all tables/fields singular. A statement that is too easy to say and most likely a nightmare to implement. This database change will not be occurring during this branch as it will fall under “Development” and not a bug fix.
The moral of this whole story – have consistent naming convention at the start of your project and then stick with it.
Well this is a bit of a click bait title which I didn’t mean for, however I will outline some of my struggles of porting from Python 2.7 to Python 3.6+.
It is the little changes that seems to hurt. Last night I found the following bug – https://bugzilla.nearbeach.org/show_bug.cgi?id=385. What could it mean? My following process weeded out the exact issue (after each test I returned to the original code);
Remove ALL context – worked
Set template onto BLANK – worked
Remove bottom part of the “New Campus” template – did not work
Remove top part of the “New Campus” template – worked
Decided the issue was with one of the fields. Removed all fields and start placing them back one at a time
This processes led me to find out that my special widget was producing this issue. So I went to the “forms_special_fields.py” and search for the “render(” function. It found them.
def render(self, name, value, attrs=None, choices=()):
The code above works in Python2.7, however there was a slight change. This code has to now be
def _render(self, name, value, attrs=None, choices=()):
A simple _ was causing a massive critical issue.
Alpha Development-0.16.0 Status
The bug testing and fixing of 0.16.0 is still going ahead rather well. We currently have found 25 initial bugs. We want to make sure that there are NO critical bugs when we release 0.16.0 and then fix up the remaining bugs in later releases.
At the same time we are also fixing up our documentation to represent the change from Python2.7 to Python3.6+. This will include the pictures on Github and also our Confluence site.