PeerMarked

PeerMarked

logo

PeerMarked is a website for people to post any kind of paper they’ve written and get review from others to improve consistency, readability, among others.

mockup

The website will aim to have a modern look in order to provide a simple, yet intuitive user interface.

 

This slideshow requires JavaScript.

PeerMarked is based off of a simple idea; however, it is extremely powerful and versatile and allows for a multitude of enhancements. The abstraction and generalization has already been done, saving time later for refactoring or code rewrites.

 

CRUD.png

PeerMarked’s code supports all the basic CRUD operations and persists information in a database.

 

RichardsonMaturityModel.png

PeerMarked can be classified as Level 2 in the Richardson Maturity Model, but is close to Level 3. HATEOAS implementation is available on most resources and just needs minor updates to support more.

 

Code: https://github.com/MatthewMeacham/PeerMarked

 

Built for change.

Built to improve.

Built for you.

PeerMarked

Advertisements

My Project Update!

As I have been developing my previous idea, I realize that it is scarily similar to a project by Andy Elsaesser last year: Everyone’s Calendar. So I have decided to change my project, and I have created the following:

It is a website for students, teachers, scholars, businessman (really anyone) to upload essays, papers, letters, and the like for peer review by other people. This website will enable people to gain valuable feedback from a multitude of different people who have different perspectives that will, ultimately, improve the consistency, fluency, and content of whatever a person uploads.

I am really excited to start this new idea because upon initial review, it appears there is nothing like this, or at least not centralized like this. I did some people asking for revisions on random blog websites, but I hope my website will become the go-to website for peer editing.

My Project

The project that I have decided to pursue is a platform where people can find other people who have nothing to do. I have no official name for this yet. I believe that this solution will help people make new friends and become happier in life.

Last week of Fall GET HIP

Today was the last day of GET HIP until January. Unfortunately, I missed today because I was taking Math 2 and Physics SAT Subject tests. While there, I ran into Kevin!

IMG_0830

Today at GET HIP, they continued to go over some Jersey ideas and applications. During the break, I am going to begin learning Jersey so that I can finish my project. I think I have decided to make the project for “lonely people” who don’t have something to do one weekends, I feel like that will be challenging and much more fun to work on. Can’t wait to see everyone again in January!

Projects introduced!

This week during GET HIP, we talked about how the internet works, that is, the seven layers that control how information is transferred. In addition, we talked about DNS (domain name system) which is the servers that store the web address and the actual IP of a website. These enable a person to type something into a web browser and be able to access information on servers. The DNS is a recursive mechanism that is arranged in a hierarchical fashion, so when you request from one, if it doesn’t have it, it will go up to the next one, and continue going until the proper response is found or not found. Additionally, we learned about the REST (Representational state transfer) which is a principle of programming where instead of having sessions between a client and a server, each request to the server is completely independent of each other. Furthermore, JSON (Javascript object notation) was introduced because it is what our RESTful APIs are going to rely on. Finally, we started learning Jersey, the framework we will be using to create our projects.

The project that was introduced today was an app that will use a RESTful API that we create. Once we come back from the winter, we will present our projects and then the group will vote on the three best which will then turn into group projects to finish up. The project has been left completely open-ended and I have come up with a couple of ideas.

  1. An app for people who don’t have plans on days they want to hang out. This app will function as a place for people to post things they want to do with others (but maybe their friends don’t want to do) and then people can look and be like “Oh that sounds like fun!” and the two people (or a group) can meet up to perform that activity. This app could help people make new friends or just have a fun night out.
  2. Another idea I had was a small social media app for the GET HIP program. Currently, all the GET HIP resources are decentralized; the blog instructions are found at gallupgethip.com, the way that we keep up is through facebook.com, and then everyone’s blogs are all on different websites. This app would centralize all of this a facilitate communication in a faster way. It could also send reminders instead of having to use email.

During this process of creating my REST API, I am going to use both my achiever and learner strengths. For one, I enjoy breaking down exactly what I need to do and creating checklists to make sure I get it all done, my achiever talent will help me with this. Furthermore, my achiever talent will ensure that I finish my project in time for the presentation. The framework that we are using, Jersey, I am not familiar with. So, I will have to spend a lot of time learning the framework and figuring out how to do things in the best way. I have the Java basics down, but the REST principle will take a while to conquer.

Week 4: Databases

This week at GET HIP we learned about databases, specifically relational databases. In addition, we learned how to interact with the databases through SQL, Structured Query Language. We started out by learning about tables which contain attributes and records. Then we were taught the different ways tables can relate to each other: One-To-One, One-To-Many, and Many-To-Many. The first means that there is only record (child) related to another record (parent), possibly in the same table. In an Entity-Relationship Diagram (ERD), which describes relationships between entities, it would be denoted like this:

OneToOne

The next kind of relationship, One-To-Many means that a record is related to zero or more other records. In an ERD:

OneToMany

Finally, the Many-To-Many means that zero or more records can be related to zero or more other records. In an ERD:

ManyToMany

Here is a complete example of an ERD that features all three types of relationships and details the attributes of each entity.

ERD

Now the question is how do we get data from the database? Well, this is where SQL comes in handy. Imagine we want to grab all the SchoolClasses where the student_id is the same as student number 5. You will notice that the SchoolClass above has no student_id attribute, impossible then right! False, the student_id attribute is essentially “inherited” from the Student table, this student_id attribute is referred to as a foreign ID, it relates the SchoolClass record to the correct Student record. Now that we’ve hashed that out, time for some code.

select * from school_class_student where student_id = 5

This SQL statement does multiple things for us, the “select” is the keyword that says we are going to grab some data from the database, we are going to read it. The next character, the  “*”, is referred to as a wildcard and it means that we will take every record that matches what we are looking for. The “from” keyword specifies what table we are going to grab the information from. (This is the time you are probably asking “there is no such thing as the school_class_student table”, but there is. Because the relationship between a SchoolClass and a Student is Many-To-Many, there is an intermediate table between the two that contains connectors that point to the proper records in each). The “where” keyword is how we specify the restraints we want to look for, in this case “student_id = 5”. This SQL statement would read, in plain English, “Select all the records from the table school_class_student where the student_id is equal to 5”.

SQL is a very powerful language that enables us to interact with databases, while I just described a select statement (traditionally called a read statement), there are 3 other kinds, Create, Update, and Delete. These four types form what is called CRUD operations, the four most basic types of interaction one can perform to a database. An example of a create statement in SQL is as follows:

insert into students set (id, email, password, name, salt, grade) values (29, ‘example@example.com’, ‘hunter2’, ‘TesterMcTesterson’, ‘FAU428Fa82udS871jaDF28’, 10);

This statement effectively inserts a new record into the students table where the id is 29, the email is example@example.com, the password is hunter2, the name is TesterMcTesterson, the salt is that string of characters, and the grade is 10.

As you can see, SQL is a versatile language that includes all someone could want/need for database interaction. Databases and SQL are what make every application possible.

This week at GET HIP, we learned about data structures and algorithms. Almost every week I learn something new, normally small, but this week I learned about an implementation in Java that I had no idea existed: Stack and Queue. A Stack is a data structure where the first thing to leave is the last thing that came in (so you can only remove items from the end) and a Queue is a data structure where the first thing to leave is the first thing that came in (so you can only remove items from the beginning). For a long time, I have implemented this sort of functionality myself, but now that I know that Java has this, I can start using them in my applications. In addition to learning about data structures, we also learned about big O which expresses the runtime complexity of an algorithm, or in other words, how long it takes for an application to complete as “n” grows arbitrarily large.

Here is a quick example that demonstrates the use of a Queue in Java. This example I made is the kind of code you would expect to run a printer, where the first document sent in is the first one that gets printed. This is not a full implementation.

public class Printer {
	
        //Create the Queue that will container the documents that need to be printed
	private Queue printQueue = new PriorityQueue();
	
	public Printer() {
                //While the printer is running check to see if it has jobs it needs to do and if it does, then print that document
		while(printerIsRunning) {
			if(!printQueue.isEmpty()) {
				print(printQueue.poll());
			}
		}
	}

}

This example is somewhat trivial, but very clearly shows the functionality of a queue. so it represents a Printer that has a Queue of print jobs (documents) that it needs to print. So while the printer is powered and on, it will check to see if there is any documents that need to be printed, and if there is, it will poll (grab the first document) from the queue and then print that document.

The skills that I am learning at GET HIP I can use at school and I have been. Currently, I am enrolled in AP Computer Science A at my school and we are learning a lot of the stuff that is also being taught at GET HIP. For example, I have a test this Monday over Big O notation, and I just got a refresher on it from GET HIP! Looks like I don’t have to study now (just kidding).