Thursday, April 14, 2022

Final Capstone: MedSched

 So, there weren't enough of my classmates who were interested in making the ranked choice voting app, so I wasn't able to use that idea for my final capstone. Here's what I was assigned to make instead!

MedSched app

Heroku has since expired, but I did manage to rip the code out into github before the bootcamp ended.

https://github.com/neubauje/MedSched

I did most of the integration and request mapping.

Tuesday, March 22, 2022

Ranked Choice vote app: User Stories

 So I was talking to our Tech Elevator instructor, Randy, about the possibility of building the Ranked Choice voting app for our final capstone project. With a few caveats, such as loss of ability to choose our own priorities, and the need for at least three other people to be interested in working on it, he says it could work. So here's a bunch of user stories to make up a proposal for the project!

A great start: Ranked Choice Vote Calculator

 I was surfing around for some examples of ranked voting, in the hopes of finding some nice code to inspect and work from, and found this project - https://www.rankedchoices.com/home

It's very robust, and already does at least as much as I know how to do, and then some! Kudos to the creator, David Moritz!

Here's a silly example ballot I made, if you want to try it out for yourself.

https://www.rankedchoices.com/hbbq


Thursday, January 27, 2022

Voting system: Desired functionalities and decisions to make

 So, I've been talking and talking about it, but I haven't yet actually sat down to draft up what I want to see in my voting system project. Let's break it down.


Absolute must-haves: 

  • Preferential/ranked-choice voting (Here's the video that first introduced me to the subject, please watch it if you're not familiar with this concept at all.)
  • Voter validation, perhaps an account/login process to work from. Must be able to prevent bots and spoofed/duplicate accounts.
  • Tagging and filtration system, to filter issues by locality radius to voter's residence, as well as subject matter, plus the ability to sort by date created, number of votes, and priority (according to the creator of the issue, and according to the priorities of the voter).


Would like to have: 

  • Write-in option, with text pattern recognition that will attempt to consolidate write-in votes.
    • Voter may be asked whether their write-in response is different from an existing option, or from other write-in response, and if so, how? Highlight the key words that signify the difference, or type in a more explanatory answer for manual review.
  • Sliding scales/typing fields for numerical questions, such as preferences on percentages.
  • Fundamental questions on philosophy and societal beliefs, to set a base-line on what issues to bring forth in the future.
  • Certification and/or knowledge tests to allow voters to participate in votes on specialist issues. Would require a degree or equivalent in the subject at hand.
    • Resources linked/available to allow the voter to educate self on a subject.

Do NOT want to have:
  •     Restrictions on where a voter must live in order to participate in the app


Not sure whether to have:

  • Ability to edit vote at a later time if more options become available
  • (Optional) notifications to alert the voter that a previously-answered issue now has additional options
  • Summary of current standings on the vote, after the voter has submitted their answer
  • Ability to configure voter's profile to have a number of permanent residence locations other than 1 (i.e. nomadic voters, or voters with multiple homes)
  • Ability to submit requests/suggestions on issues to vote for in the future
  • Some sort of incentives to encourage semi-regular participation

Posted 1/27/22 (no updates since then). I'm likely to think of a few more things, especially if I hear feedback on the plan. Feel free to leave a comment.

Wednesday, January 12, 2022

Direct democracy: revisited

So, I've been listening to Last Minute Politics, and while I haven't gotten all the way caught up on the episodes, I did go ahead and pledge a Patreon dollar to get into the Discord server. They've been doing weekly "Bible studies" of reading through and discussing this book that Lenin wrote. We talked a little about direct democracy, and to what extent it would be smart to implement it.

What would be part of the implementation: Policies, issues, national and local scale

What would not be part of the implementation: Intra-company policies

Who would vote on issues of scientific impact: Voters who are educated/certified in the respective topic up for vote

Who would not vote on issues of scientific impact: Everyone who hasn't yet been certified in the subject(s) at hand

What would everyone vote on: Philosophical questions which do not require special training or knowledge in order to make a well-considered decision


How do we keep the votes safe from meddling? Not sure yet, but I'm learning!

Thursday, September 16, 2021

Newbie to Newbie Blog Part Two

"Prior to beginning work on this interactive assignment, read Chapters 1 through 3 in Data Structures and Algorithm Analysis

 (Links to an external site.); Chapter 1, Section 1.7: O Notation in Data Structures Essentials; the Complexity Analysis (Links to an external site.) article; and the Time Complexity, Space Complexity, and the O-notation (Links to an external site.) article.
Explain to another newbie how to apply algorithmic design and data structure techniques in developing structured programs. Are some algorithms and data structure designs better than others? If so, explain why one design would be used before another design would be used. Discuss in the post how you would apply algorithmic design and data structure techniques in developing structured programs."

Wow, so, those articles about complexity are full of some really dense math-talk. Way denser than I intend to parse through for this assignment. Sorry. Here's my takeaway: Some algorithms are better than others at handling huge amounts of input data. As the amount of data grows, the differences between algorithms tends to stand out more sharply. Some algorithms will take more time, while others will take more memory capacity. The really bad ones will do both. The really good ones will do neither, but those are few and far between because they're difficult to make.

What confuses me, however, is that these concepts aren't ones that we've actually worked with throughout this course. We've learned how to implement a list, a stack, a queue, and even a tree, and we've also learned about different types of sorting and searching algorithms. But we haven't learned about designing algorithms or data structures, and I don't remember learning the definition of a "structured program," either. We supposedly learned about recursion, but despite my inability to display any recursive functionality in my code, I was still congratulated and given full marks for doing it anyway.

This makes me wonder whether I'm doing something wrong, making me unable to see my classmate's blog post, or whether the instructor didn't bother to click on the faulty link before complimenting its contents. I don't know what to think of this course anymore.

Guess it's time to more on to the final project, now.

Wednesday, August 18, 2021

Newbie to Newbie Blog Part One

"For the first week [of CPT 307 Data Structures & Algorithms]’s blog post, access your Blogger account. Create a new post where you provide guidance on Java installation and discuss the concepts and features of the object-oriented design principles. Keep in mind that you do not want to provide a step-by-step tutorial on how to install Java as you did in this week’s discussion. Instead, you may want to provide links to tutorials or resources that you may have used to install Java and produce the Hello World program. This is your chance to let future employers know that you, a technical professional, can communicate technical concepts to non-technical individuals."

Provide guidance on Java installation:

1. Google Ecose "Install Java".

2. Click on the first result. Realize that it is the download page for the user-end software, not the developer kit.

3. Go to Oracle.com > Products > Software: Java > Download Java > Oracle JDK: JDK Download

4. Select the download option/installer/archive which best fits your machine.

5. Download and install it by running the installer or unzipping the contents into your desired directory location.


Keep in mind that you do not want to provide a step-by-step tutorial on how to install Java as you did in this week’s discussion.

This week's discussion did not actually ask for a step-by-step tutorial, whereas the asssignment for this newbie blog has asked for guidance, and I know of no better guidance than a step-by-step tutorial. It would have certainly been more helpful than the "guidance" we received on this week's discussion assignment. Here's an exerpt from one of my discussion posts to illustrate my issues with the guidance provided:

  1. It says to complete the required tutorials, and view the videos, but does not say where they are. They certainly don't seem to be in chapter 1 of the pdf textbook (Links to an external site.)!
  2. It says to review specified segments this week within the Tutorials Point website, but where are they specified? Certainly not on that website (Links to an external site.)!
  3. It says to go here (Links to an external site.) to install Java, when you actually have to go here (Links to an external site.).
  4. It says there are several IDEs listed in the recommended resources that can be used as your chosen IDE, but in fact there is only one (Links to an external site.).
  5. Meanwhile, I found what I think are a few more, over at Required Resources.
  6. It says to use this page (Links to an external site.) to somehow write a program called Hello My Name Is, not telling you that you'll actually be following this subset page (Links to an external site.), and altering the title (I think!) to have different words.
  7. And worst of all, the instructions on that subset page are only for the use of a text editor like Notepad, not an IDE. So I still have no idea how to use an IDE for anything.
  8. [During the installation of Java SE Development Kit (JDK) and the NetBeans integrated development environment (IDE)], the sites push you towards downloading the latest versions (JDK 16+), but the Java Tutorial page clearly states it was written for the older JDK 8. Hopefully, the built-in libraries won't have changed in any way that requires rolling back to the older versions.

Discuss the concepts and features of the object-oriented design principles:

According to our first source, the principles are Encapsulation, Data AbstractionPolymorphism and Inheritence

If an "object" in a coding context is meant to be analagous to a real-world object, such as a person, or a book, then Encapsulation emulates the external container of an object, like a person's name and appearance, or a book's title and cover. It doesn't tell you very much information inherently, like the person's age or the book's publication date, but it can act as a shortcut to allow you to refer to that object in conversation - almost like a pronoun. 

Data Abstraction (at least, according to this first source) seems to be closely tied to encapsulation, as it usually involves nested or linked encapsulations of data - smaller and smaller pieces of functionality, encapsulated together into bigger and bigger frameworks of archetecture, able to perform more and more complex work. Our third source, however, seems to describe abstraction quite differently... I don't really understand yet what it's saying.

Inheritance alludes to the ability to copy the properties or template of one class/object onto another as you build it. The example given in our first source refers to library assets as a superclass: Every library asset will have a due date, a set number of copies, a status, and a limit for how long you can borrow it. But depending on what type of asset class you're looking at, you may have an author and an ISBN (for a book), you may have an issue number (for a magazine),or you may have a leading actor or a runtime (for a movie). Need to add an object to the Book class? It will inherit all the same data fields that books have. Need to add a new class to the superclass for Microfilms? It will inheret those first four data fields, and you'll build the rest from scratch, or perhaps derive them from the DVD class.

Polymorphism refers to the ability to perform a single action in different ways, or to call slightly different functionalities by the same name. In Java, there are apparently two type of polymorphism available: Overridding, also called run-time polymorphism, and overloading, which is referred to as compile-time polymorphism. However, I wasn't yet able to parse or comprehend the details on what these terms mean, on how to apply them, and in which contexts. I'll likely have to return to this concept after getting some more experience with Java under my belt.

-Jesse

Schoolwork assignments incoming

These first few posts are part of this assignment:  "Throughout this course, you will create an Information Technology Blog with seven ...