I have done some reading about Scrum and Extreme Programming and have decided to incorporate some of that into completing my projects. That means the previous post I wrote that detailed where I am planning to go with the Lifelong Learning site has changed. Instead of the previous plan, I will organize my work into sprints and write a short blog post at the start of each sprint as well as at the end of each sprint (a sprint is a short timeframe to accomplish specified goals). In a future blog post, I will be writing about what else I am going to incorporate into my development workflow and why, but here I will be describing the work I will be doing for my first sprint.
I want to have a complete set of tests that will cover all possible pages on the website and make sure they are loading correctly. There are many reasons for this, and the main one is to save time. When I have no tests created, I will try everything manually before I upload it to the server, and that is very time-consuming. While I find writing tests very time consuming themselves, it is a plus to be able to type one command into the terminal and have the entire website check through thoroughly.
At the moment, many admin views have to be typed manually into the search bar to be navigated to. For myself, that is fine, but I am trying to convince some friends of mine also to use the site, and they may not want to deal with trying to remember all the different possible pages. The admin page will have all the possible pages to edit, delete, and add to the database in an easily accessible page. When logged in, the admin page will show up on the navbar of the website.
There is currently no way to edit a worksheet when one has already been added to the database. If you add a worksheet to the database and want to change its category or video link, you have to delete the worksheet and re-enter it. That is not an excellent way of dealing with things, so I am planning to have a new view that will allow the user to edit an existing worksheet. To accomplish this, I am going to research more of the options available in Flask to deal with Files and map out the logic needed carefully and then code it.
At the moment, my “SECRET_KEY”, and database login are stored in plain text in my code, because that is the case I cannot safely share the code publicly. I plan to eliminate these variables from the code and move them to environment variables that have to be set on the machine or server running the website. While it is slightly more inconvenient to remove the secrets from the code, it is better to share the code. I may write a blog post documenting how I do this because it is new to me, and maybe others are also interested.
I am giving myself till next Friday (June 5, 2020) to complete these goals. During that time I will be doing some content creation for the site so please keep tabs on https://lifelonglearning.rocks to see that content and add yourself to the email list on that site if you want.
Any questions or comments can be sent to kodyrogers21@gmail.com.
Thanks for reading!
When it became clear that it was unlikely I would have a job when I graduated from University in April 2020, I decided that I should figure out some way to earn income from a side project fast. The idea I was working on before everything with Covid started happening was a website and app that would utilize the WikiVoyage API to allow backpackers to layout and share where they have been and where they want to go. I thought of it because I have never done app development or used an API, but it was going to take a while to get off the ground and with Covid travel apps are likely not getting much traction.
After University, I was always planning to do some tutoring on the side so that I can attack my student debt faster. I signed up for a site that connects tutors to students, and it recommended creating learning resources to show some skill. I decided that that was a good idea, but I wanted to put it on my website. It then occurred to me I could present these worksheets not just to potential tutoring clients, but also to those who are curious about learning the material but not interested in attending an actual class. People have, at times, asked me interesting questions that can be answered with physics, and I figure I could make worksheets based on questions like that.
That is when I set off to build the site that is now sitting at https://www.lifelonglearning.rocks/home. It is, as of May 2020, a very base version of what I envision and also does not have much material yet. Throughout the rest of the post, I will discuss what went into building the current site and what I envision for the site in the future.
The site that is live as of May 2020 was built in a week, and frankly, it shows. There is no edit page for the worksheets (a worksheet has to be deleted and then re-entered), and when a worksheet is deleted, the pdf itself stays on the server. There is edit and delete pages for everything else, but other than the blogs, it is hard to find and use them. An admin page might be added soon as well as an edit function for the worksheets, but it still will not be a great user experience for those editing the database. The worksheet page does not look pretty at all, and where categories are shown, it looks off. Overall it is a mess, but I decided it is good enough for the summer and to present the idea of what it could be later.
It is currently set up with a single login, so I will give those out to different friends of mine who are tutors and may want to put their worksheets up. When I first created the site, I was not going to have any tutors but myself, but then I told my friend Mack that I made it, and he could add his own if he wants. He said he would think about it, so it made me think others may want to, and that would be great. For the first bit, I will only be allowing a few people to add worksheets, but when the first version is launched, I will open it up to more people.
To try and grow the website’s traffic and user ship, I will be writing two blogs per month. The blogs will cover lifelong learning and how to achieve progress in learning the topics presented. I intend to mention many other sources in the blogs because there are already many options, and I want people to know about them. It is hoped that people will find these blogs useful and possibly become users of the worksheets and services offered on the website.
I will also attempt to create around two worksheets per month so that the content of the site grows. As I use the site more, I will invite friends of mine to add worksheets and become authors on the site as well. I am hoping that by the end of the summer, many fundamental topics will be covered, and more worksheets with examples of interesting applications can be made.
In addition to content creation, I am planning to reach out to potential users and see what type of person would want a website like this to exist. I will do this by trying to answer a related Quora question about once per week. I will also look for other places on the web where people who may be interested hangout. In addition to online outreach, I am hoping to talk to potential users on the phone or in-person if possible.
The goal of all this growth work is to grow the email list that I have created and to create users on the website. The results of these efforts will determine what features will be built or whether the project should be continued.
I first plan to specify the next version completely. The specification process will be done iteratively, starting first with fundamental ideas and then moving forward, fleshing out the in-depth details of what those are. Scenarios and use cases will be made so that I can determine what pages and functions are needed. I plan to make an outline of the website pages using either sketches or some sort of software. In the sketches, I’ll define where each link will go and such.
During this, I will also list all the tests that will have to be created to ensure functionality. By this, I mean listing the different pages so that it can be tested whether they load or not. If the page has some sort of special operations, such as database pages, they will be listed as needing to be tested.
Some of the logic will be defined here, but I will leave most of that to be fleshed out in the design phase. I am hoping that by specifying the website well and early that it will prevent me from adding more features than is needed. The stress I put on testing is because it is a weakness of mine that when I get to the actual building, I forget about tests, so I want to be very deliberate in including tests in every part of the development. I expect to be finished with the specifications in late May or early June.
In this stage of development, I am going to lay out the logic of how everything will work. During this stage, I will also start writing the tests that were specified in the last specification stage. More complicated tests may have to have the logic defined and pseudo code written to be sure that they are testing correctly. The design stage will also be a great time to specify more tests and either program them or define their logic and program them in the next stage.
I include this stage instead of writing code right after specifications because I believe it will make the development smoother. I am confident that I will find things that were overlooked in specifications (pages that were not included, etc.), and I will be able to fix them before programming this way. I also find it easier to have all the logic defined before programming because it allows me to quickly change the logic if it clashes with some other part of the program.
At this point, I hope to have an entire suite of tests that will cover almost all the functionality of the website. Some of the tests will have already been written where others will be only specified, but they will all be coded before programming starts on the main site.
I am hoping to be done with this stage by mid-July.
When the design is done, and all the logic defined, I will move to the actual coding. As previously stated, I will write all the tests before starting on the actual code. I want to have all the tests written mostly because of my weakness of wanting to move too fast and ignore doing stuff like tests after I start building something. I hope that writing the code will be fairly straightforward after all the previous work that was put into the project. The website will not be deployed until all the tests pass.
I am planning to have the coding done and the website ready to be deployed by mid-August, but I am giving myself till the end of August to deploy the website.
The description and timeline given here are going to be regarded as more of a guideline. I made it up loosely based on the steps that I learned during a software engineering class in university and some other stuff I have read online. I did not want to go full hog on what I learned in university, because I believe it would take a lot of the fun out of it and lots of time would have been spent on specifications and requirements. It is my opinion that spending as much time on specifications and requirements as it would take to follow what I learned in university would end up causing the website development to be delayed.
I am not familiar enough to implement Agile methodologies, but I want to read more about them. As I learn more over the summer, the timeline of development may change. The only thing I am confident will not change have all the tests coded before the coding on the website starts.
While the software is being built I will be calculating the costs of running the website when it is deployed. Using these calculations, I will decide what will be the cost-sharing mechanisms, how much the website gets and how much authors get, so that the website may be able to stand on its own when completed.
Directly after the deployment, I already have some goals that I hope to have met. The main goal is to have 200 email subscribers and to have started a monthly or bi-weekly newsletter. Another is to have 4 other people contributing worksheets to the website. Eventually, I hope to have some way to measure the usership of the website, but I have not yet made a goal for that. During the development of the more permanent website I may adjust based on results from the data collected. After the permanent website has been deployed, I will take a serious look at the results of my goals, and create new ones.
I am giving myself till October 2020 to have gained traction on this idea. The decision to continue or not will mostly be decided by sales (the permanent website will have paid worksheets), and interest in the site based on the email subscribers.
Hopefully, it will work out! If you have any questions or comments, please email me at kodyrogers21@gmail.com.