Categories
Uncategorized

Building the foundation of our project

This week we were finally able to settle on the tools that we are going to use for our project. Our client chose Tableau, a data visualization software, to be their new access tool to their newly migrated database.

Tableau is really an interesting piece of software, the software gives a lot of options to create different visualizations. We will need to be care on chosing the plots that will fulfill our client’s requirments, but also not make too many plots that would make it cumbersome to go through.

For example, below is a graph of a scatter plot and a whisker box plot. Our client would like to use scatter plots to read minute data, while using different options, it really shows how diffcult it is to choose the best plot in each use case.

Scatter Plot

Whisker Box Plot

In the first graph, it is a scatter plot that labels all data as discrete data on graph, not very useful when all the data is conglomerated on to in a month column. While the second column is using the same data with the above scatter plot, but instead using a whisker box plot. Which is much more easier to look at, and get a better understanding of the data.

While the above plot is a scatter plot that is using hour as continous data, where hour data is always aggregated, and shown into hour columns inside of a larger column. This would be a good graph if our client would like to see a trend of data between day and night.

In conclusion, there is a lot of nuisance between each graph, and we will need to select carefully on which graph will be the most useful for our client, and a balance between how many work sheets we would like to build for our client.

Categories
Uncategorized

Brainstorming the Project

Initially, for this project we were requested to make a web interface for our client to access their SQL database. Our client requested having a few important features for the interface. First requirement is to be able to see raw data on the webpage. Second is to be able to export the raw data to an excel file. Third is to be able to make graphs with the raw data provided.

This article records my initial brainstorming on how the project might have been implemented. The two areas I focused the most was on the front end GUI and the back end security. Though some might seem naive, but it was still in the early planning phase of our project.


For the implementation of my prototype web UI, I found a great jQuery library called Select2. It expands the multiple option select into a more powerful and intuitive solution as seen below.

Vanilla multiple Select
Select2 multiple select

The Select2 library offered a power search function for multiple select options, but also customizability for filtering search options. This was the essential core in my initial plans to build our front end UI. This search and select function was going to be the bread and butter for majority of the UI, where we can optimize the user interface to dynamically add filter selections for the end user to pick a high and low value. It provides a clear and cut interface for the user to understand their options.

Dynamically add filter options
Dynamically add filter options

The UI of the front end was a great deal of my focuses was on during early planning, as we are serving clients who does not want to fiddle around with cumbersome UI and overloaded with a variety of options when initially looking at the UI. But it is still possible to add hidden options on to the UI for users who wants to have more control through the interface.


The second important thing was building a secure connection between the application and the database. From my CS340 experience, we didn’t do a very good job securing a connection between our databse to our application. There was no authentication, all the connection files were in raw text. Though it was ok for a class project, but it would a disaster for a project that is serving a real client with real consequences.

An authentication method I brainstormed was to requrie two authentications, one for the web UI and the other for the database. First step would be to require a user to authenticate with a username and password for accessing the webpage. Then implement a second authentication for securing the database connection via a passcode.

The reason for using a passcode is to use that code to encrypt the file that stores the raw connection parameters. The user has to enter a passcode to decrypt the file and then the application will be able to authenticate between the database. This ensures that even if the application’s source code was exposed, the connection file will be encrypted and unaccessable. Another other way would be instead of using a static passcode, we could use a one time password generator that generates the passcode to decrypt the file. Though I am not too sure if it is possible to implement, but I think it would be an interesting topic for me to continue to look into and create a working sample of.


In the end, these project ideas may only be realized through a small project of my own instead of building one for our client, due to our changing approach to the project. But it does make me think about the variety of issues building an application that is facing towards a hostile web, but innocent users.

Categories
Uncategorized

Thought Experiment: Dynamic SSDs

In recent years, SSDs has become more and more common in the consumer market, where it would be unimaginable to get risk of the spinning hard disks just a few years ago. SSDs has come a long way from performance, pricing and capacity.

One interesting thought I had was, will SSDs get advanced enough for users to define their performance target. What I mean for performance target is whether the SSD uses SLC, MLC, TLC or QLC flash. It is no secret that many modern SSDs combine a SLC cache for increased burst performance combined with TLC or QLC flash for storage. But one interesting thing is that most SLC cache are emulated through the SSD controller, the SLC cache will change its size in accordance to its remaining free space. So in other words, it is a dynamic cache.

There already exists SSDs that fully use emulated SLC flash from TLC flash from a company called MEMXPRO[1]. So, what I am proposing here is in the simplest form, whether an SSD can have a user control which mode the SSD will operate in. For the simplest use cases is external hard drives. Many people run into problems where sometimes their external drive is just short of capacity to store the data they right now, and other times where time is the constraint they need more speed rather than capacity. Sometimes, the data may be mission critical and the user would not want to have accidental voltage fluctuations in the flash that may corruput the data, so using in SLC mode would be the safest option. What I am interested in is whether the SSD can be toggled into switching modes whether the SSD is in SLC or TLC mode depending on the user’s use case.

It is an interesting thought experiment in my opinion for a storage solution having a dynamic size instead of a fixed size, and potentially give user control based on the user’s needs and concerns. It could be hard to realize due to physical constraints, technology constraint, or maybe just software. But it is something to think about.

Categories
About Me CS467

A little introduction about myself.

I first got interested into computers was back in 2003, when my parents bought me and my brother’s first desktop computer. I often saw my brother sitting hours long in front of the computer, tinkering and playing with various settings. At that time, however, I never got as enthusiastic into computers as my brother was. I never thought anything special about computer hardware and software, as it seem liked a given, that it works.

The first time I really started to wonder how computers work was years later when I opened up one of my old computers and checking the guts of the computer. My little 9 year old brain was astonished how many cables there were connecting everything to a board, and how the computer was just actually a board. I tried taking it apart to see more, but was never able to assemble the ribbon cables back into a functional computer, which made me quite sad at that time.

On the otherside of hardware, I got a small taste of computer coding was a few years earlier where online fourms were still the rage. While I was posting something, I fiddle around with some words that magically turns your posts into various styles, and formats. At that time I didn’t know it was HTML, but I loved figuring out the patterns of what each word did and how combining them would make or break my post format.

That was pretty much all my experience with tinkering with computer hardware and software before going to high school. After I got into high school, I took a computer science class which taught Microsoft Visual Basics. I never really got the gist of the class, so I was really just crusing by and learning only the basics and nothing more.

Fast forward to graduating from college, I started working in the insurance sector, and I was not very enthusiastic about my job, calling and selling things, it was a nightmare of a job to do. It was around this time I really started to get more interested into computer hardware and software. I started out building my first PC, it was a very fun and a stressful experience. After this, I bought some Python beginners coding guides and started coding the simple games and applications on the guides. Now I think about it, I was really glad I started out with Python instead of C/C++. Python was really easy to understand and intuative for the beginner me. I learned a lot of the basics of coding and such through Python, without having to deal with more complex issues, such as memory allocation, that would have probably killed my enthusiasim.

After that I wanted to have a formal education in computer science, thus I applied for the OSU post-bacc degree and here I am studying for just over an year, and graduating just around the corner.

Over the past year or so, I’ve enjoyed the program at OSU. This will be my last semester here at OSU. I am currently taking CS467, Capstone and CS492, Mobile development, classes. Soon, I’ll be looking for my first job in the industry, and hoping to start my career as a software engineer.

Categories
Uncategorized

Hello world!

Welcome to blogs.oregonstate.edu. This is your first post. Edit or delete it, then start blogging!