Disguising Things on the Web

My colleague reached out to me again for a seemingly simple issue – the request for was for a login passthrough. User-Computer interaction is often overlooked; however, it is an important issue when we consider how much work it takes to accomplish a task. When people put thought into this they often come up with very helpful considerations to make the end-users experience much more ideal.

In this case, it was a simple issue of figuring out how to pass through an login form to the site. Time is precious. These days, every service we utilize many time has some login and password. Sometimes we really don’t care and just want to get to whatever it is we want. I already know what you are thinking… Someone please call security on this crazy person! When you already have multiple layers of security to get to this one endpoint, it seems kind of redundant.

I was grateful for the challenge because I had to do some research on automation of navigating the web and how to implement it in such a way that doesn’t succumb to CORs issues which is designed to protect us from attacks originating from malicious sources.

Doing some analysis of the webpage I managed to uncover the login mechanism and exploited that in such a way as to automate its execution for the end user in this case. Important bits are blurred out. See below:

Regex

Recently a colleague of mine talked about how he was analyzing data from e-record. He wanted to be able to parse data from E-record in a specific way, yet was dependent on e-record and the build team for how this data was given. He knows how to program in visual basic and manipulate excel tables. I wanted to see if I could accomplish the same thing with python and was able to come up with a solution that involved using openpyxl and the re python modules.

Regex, short for regular expressions are super helpful for doing very complicated and specific pattern matching in strings.

def patternMatch(word: str):
    # find first instance of newline followed by four digits
    regex = r'\n\d\d\d\d'
    pattern = re.compile(regex)
    matches = pattern.finditer(word)

    # Create list for the span locations and the actual split locations that we get from the spans
    splits = []
    split_locations = []
    for match in matches:
        splits.append(match.span()[0])


    for i in range(len(splits)):
        if len(splits) == 1:
            split_locations.append((0, splits[i]))
            split_locations.append((splits[i]+1, len(word)))
        else:
            if i == 0:
                split_locations.append((0, splits[i]-1))
                split_locations.append((splits[i]+1, splits[i+1]))
            elif i == len(splits) - 1:
                split_locations.append((splits[i]+1, len(word)))
            else:
                split_locations.append((splits[i]+1, splits[i+1]))
        
    
    # split out out the times from the names
    for splits in split_locations:
        print(word[splits[0]: splits[1]].split('\n   '))

    # if there is no match from the regex search, then we can do a split on the value of the cell itself
    if len(splits) == 0:
        print(word.split('\n   '))

MidPoint

I am in my final semester at OSU (hopefully) – currently taking CS467 and CS325. The first half of the semester seems to have flown by. I am very happy with the CS467 course so far. The CS325 course on the other hand is by far very abstract. I wish it were a two course series because it takes a long time to digest some of the material. I would prefer to be taking it by itself. I hope that I am not doing myself a disservice by trying to get both done at the same time, however I really do want to graduate after next month.

For the demonstration assignment in CS467 I found myself enjoying talking about the work done so far on our Job Tracker project. Ironically, the assignment called for a maximum of 4 minutes which made me nervous as I wanted to try to fit in the entirety of what I contributed to the project in 4 minutes – not possible. However, after listening to the recording, I was actually happy with the presentation regardless of the extended length. It felt complete. Hope you enjoy it…

Rant

Honestly – I didn’t want to write this blog post. This week has been far too busy. I want to write something meaningful – however, I am to the point of exhaustion.

We are hosting a Halloween party this week. M partners parents also happened to go away for the week and we have to take care of their dog. Work is busy. I really need to be using my time to actually implement features in the project. I don’t want to use it up trying to create some blog post that doesn’t go towards the actually project we are making. I know that after this week, my velocity will go back up in terms of this capstone project.

Visual Studio Code (Browser Version)

Thank you Microsoft.. I actually hate you a little less -_-

“Its almost christmas… its practically here!!” said the Grinch… Ooops. While, not a completely injective match(remember discrete math? – one to one functions…) with the desktop application, this new browser version allows a user to connect to a various code repositories and commit lightweight code changes. If you are interested in giving this new browser based version of VSCode a spin, head on over to https://vscode.dev/ and code your life away!

I regret to inform you that I very happy with Microsoft for spawning the creation that is VScode and now gracing our eyeballs with this browser version. Its access is now only infinitely easier! Not sitting in front of your developer machine and only have an Apple Ipad at your disposal? Not a problem, we can get some work done in the browser. This is not the end all be all as your experience would be limited, but your access is now much easier! Read up more on this new development at https://code.visualstudio.com/docs/editor/vscode-web

The State of Web Development

The more I learn about Web Technologies, the more I am realizing how convoluted it is becoming. Metaphorically, it could be compared to the Javascript programing language itself. In fact, you might wonder, should you code in Javascript or Typescript? There are now different database options such as Sql vs NoSql. Will you use MariaDB, DynamoDB, MongoDB, or Firebase? Among these exists both are cloud and managed options. There are a multitude of front end frameworks such as React, Vue, Angular, and Svelte in addition to hybrid (front/backend Frameworks like Next.js). You can have a server running on nodejs(javascript), apache(php), or flask(python). For styling your website or webapp, will you do all of the code in css yourself, or will you utilize options such as Bootstrap, Pure CSS, or Bulma?

You might be asking yourself, “what is the point of this”? With so many options to pick from, how does a developer know the correct tools to use? With the advent of technologies like graphql and wasm things get even more complicated. It feels like the days of being a full stack developer are numbered.

Tis’ The Season … for Ghost and Goblins!

“Here comes Halloween….” is that wonderful line from the song my favorite movies – The Nightmare Before Christmas. It gets me in the spirit of Halloween which helps since my FiancĂ© and I(…mostly I since he is at work 90hours per week) are hosting a Costume Party this year. Its actually all my best man’s fault. He wanted to know if were having the Costume Party Again this year and I simply couldn’t resist! Thank you Andrei!

The theme this year’s Halloween Celebration is “Cyberpunk”. For cosplay I was planning on being Johnny Silver hand, the dashing, Red Aviator and Bullet Belt wearing Rocker that lives inside of the head of the main protagonist for Cyberpunk 2077, V(my FiancĂ© will be dressing up as this Character). For decorations we are planning on having a lot of neon pink lights around the house.

Johnny Silverhand from Cyberpunk 2077

As far as school goes, today I had a virtual meeting with my project partner in CS467 – we agreed to communication rules and the technology stack we will be using for our Job Tracker Webapp. It will be done with React, Nodejs, Maria DB and Bootstrap. My partner hasn’t used React before, but he is very interested to learn. Software Engineering I was the first time I had to use React and it had a high learning curve. Overall, we feel pretty confident about this project. Furthermore, our project’s GitHub repository has been setup with the base project files.

One thing I want to get better at is styling with CSS and possibly using SASS to help with the formatting of the styling. Bootstrap will help with the responsiveness. We are thinking that with just the two of us on the project our overall velocity will be faster because there is less coordination required. Regardless, our Job Tracker app will be a fantastic portfolio piece to send us off on our perspective Tech Careers!

Capstone CS467 – Introduction

Welcome to my blog! I pray its not too boring – as I never really considered myself much of a writer. For CS467 we are required to create a new blog post every week. In this first blog I will Introduce myself, talk about my reasons for choosing OSU, and some of my interests.

My name is Patrick Furbert – I was born in Bermuda and have dual citizenship (US/Bermudian). As far as names go I much prefer Pat to Patrick. For college, I initially attended the University of Rochester for Microbiology – graduating in 2008. Consequently, difficulty with the economy at this time lead to a second B.S. in Nursing.

Time and repetitiveness eventually lead to the unfortunate discovery that its very important to have a strong interest in your chosen profession. Job stability alone will not sustain a career. A strong interest helps to keep one motivated and not burn out. This discovery ultimately lead to my decision to make a career switch in to Computer Science.

As far as hobbies and interests go my big ones are video games, board games, and cosplay. The caption photo is a screen shot my friend Andrei took of my character in Sea of Thieves. Its a fun game.

Most of computer science curriculum I have found both interesting and engaging. The last two classes needed to complete this degree program are CS467 – Online Capstone and CS325 – Algorithms. Both of these courses I hope will help to prepare me for Job Searching in the coming year!