Categories
Uncategorized

Tableau Modular Calculation Approach

This week, I was thinking about different approaches to create a virtual tag, a tag that is calculated between two measurements. The most common and more sensabile way to create a virtual tag would be to create a calculated field in tableau, which calculates values between two measures.

Calculated Field

Now this approach would be very easy if you know the quirks of tablelau and how to use it. The cons are obvious, it takes time for a user to learn using tableau. I wanted to create an approach that would be interesting and easy for end users to comprehend and use the virtual tags.

I started with an idea where the user inputs an operation, and select the different measures that they would like to calculate, and get a calculation. Example, the user wants to get a difference between “CO2 start” and “CO2 end” measurements, then the flow would be, the user selects “CO2 start”, then input “-“, and finally select “CO2 end”, which forms an equation “CO2 start – CO2 end”. This is interesting since it is intuative for the user to understand and use.

I created my idea by using multiple parameters which allows the user to calculate by selecting a lot of pre-defined parameters, where the user only has these options for the calculation.

Example of Parameters

The graph shows the Average between “ET Total Prev Day” minus “RTH Prev Day Total” and adds a constant 0.

Result of Calculation

This should be relatively easy for an end user to use. But in the end, I find that it would be too hard to maintance in the future. If the end user needs additional calculations it would be much harder for the user to modify, compared to defining the virtual tag in a calculated measure.

Overall, I think it is an interesting experiment for me, and does hold some value if the user wants some quick calculations between measures, it would be a much faster approach if the user has limited needs.

Categories
Uncategorized

Future of RISC-V

Since the introduction of the Intel 386 microprocessor, the high performance computing processor market has been dominated by the x86 architecture. Until two years ago, when Apple announced that it was going to transition into ARM processors. Since then Apple, has revolutionized the laptop market with a chip that can rivial its x86 counterparts but with much less power consumption. The question is what is the future after x86?

The x86 architecture by this point is almost four decades old, with the ever evolving world, the architecture excels with its powerful processing power, but also combined with its power-hungry nature. And Intel is betting big on the new promising new architecture RISC-V[1].

RISC-V has been one of the most promising architecture since its introduction, with its open source nature, many companies has invested money into the development of the new architecture.

One of the most important advantages of RISC-V is the power efficiency and modularity of the chip compared to x86. It creates allows users to create their own modular chip according to their needs, and with the ever popular system-on-chip market segment, where all in one solutions are more and more common, this market will certainly become more important.

Another advantages of RISC-V is the concern of security issues for some governments or companies with using other architectures. The open source nature means that embedding spyware or malware into the chip would be next to impossible to do[2].

The biggest disadvantage it is still an unproven technology compared to x86 and ARM, it may have many promising advantages, but if non of these advantages realize, the market will continued to be dominated by Intel and ARM.

RISC-V still need a couple of years before being implemented into the consumer market, and it certainly has a bright future. I am excited to see a market that has stagnated for so long to have a new competitor coming in.

Reference:

[1] https://arstechnica.com/tech-policy/2022/02/intels-strategy-for-outflanking-arm-takes-shape-with-bet-on-risc-v/

[2] https://cacm.acm.org/magazines/2020/5/244325-will-risc-v-revolutionize-computing/fulltext

Categories
Uncategorized

What will be the next revolution?

Long gone are the days where people read newspapers to get up to date, write handwritten mails or use landline phones to talk to friends. The world has been changing rapidly in the past fifty or so years, people are ingesting more information than ever. From the initial clunky box that takes up a room, to now a size that is pocktable. Modern computers has come a long way since then, we now live in a world where personal computers and smart phones are universal in our daily lives. Thus, the question is what will be the next universal device?

Personal computers since the 1990s has experienced explosive growth. Into the new millennia, it has become a staple in almost every household, in the forms of a desktop computer or a laptop computer. But around the turn of the decade, it started facing a new rivial: the smartphone. Since 2010, the smartphone has also become a staple in every household, and has had a even wider reach than the personal computer. But what is the next device after the smartphone that will be on the history books?

Sales of X86 and Smartphones per year (2011 and 2012 by Gartner) [1]

Companies since then have experimented with devices that are smaller than the smartphone, yet has achieved the former’s success. The smart watch once was a promising device that may will be the phone killer [2]. Yet, since the introduction of smart watches, the device has been relegated to a secondary device, a device in most people’s eyes, a fitness tracker.

The other promising device during the mid 2010s, were smart glasses, which introduces Augmented Reality (AR) technology to the masses. Google has also been experimenting with the smart glasses since then, with the recent release in 2019. While the smart glasses has yet to take off, but is it only because it’s still ahead of its time? Just like when Microsoft introduced the touch screen device in 2003 [3]. If it is, then the smart glasses revolution may just be a few years a head of us [4].

Of course, and then there is Virtual Reality (VR). Which obviously brings us to the buzzword of the past year, the Metaverse. A light weight VR headset that can access the virtual world, where people can do everything without going outside of their homes, will truley be the universal device of the future. But a technology that is just in its infant phase will not be the next universal device in the near future.

In conclusion, the next universal device may very will be a smart watch or a smart glasses that will be a seamless device where people can wear. But the fascinating thing about technological advance is that it never stops surprising you.

Reference:

[1] https://streamhpc.com/blog/2011-05-06/the-history-of-the-pc-from-2000-2012/

[2] https://www.wired.com/insights/2014/08/will-smartwatches-kill-smartphones/

[3] https://en.wikipedia.org/wiki/Microsoft_Tablet_PC

[4] https://ceoworld.biz/2022/02/03/google-glass-to-smart-glasses-what-this-may-tell-us-about-future-technologies/

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!