MA Airflow Configurator
Summary: This project's goal was to make life easier for Media Analysts by giving them an interface by which to interact with Airflow Configurations with ease and launch them from a central place. The project consisted of a frontend UI where the developers/analysts could interact with the app and a backend API where all the configurations would be stored. I worked on a small team that was able to bring this project to life quickly and get it pushed out to a large audience that saved hundreds of hours, freeing up time to pursue more projects. It utilized a side-by-side JSON text editor and form renderer that could take the JSON form and read it in real time to produce a readable and interactive form preview of what the Airflow Form would look like, allowing the user to easily preview how their form would look....
Background: In Media Analytics, Airflow jobs are used frequently to kick off tasks/jobs that would query a database in a certain way as to give the analysts worthwhile data about how certain media is used by certain parts of the population. This data is crucial in marketing and targeted media advertisement and very useful to our customers. These Airflow jobs can be complicated, though, so developers typically have to create a JSON form in order to help the analysts run them better. This project cut out the need to use developers to constantly edit JSON forms by making a configuration database that utilized typical web forms to create the JSON forms that could then kick off the Airflow jobs. The developer would only have to make the initial form, and the analysts could easily change the values themselves through the intuitive launcher. The form editing page even had a real time form renderer that could constantly give you a preview of what your form would look like.
Design: I used a Clojurescript layout for the frontend because the closely tied re-frame library would allow me to have the form window "subscribe" to the JSON editing window to constantly update itself as the JSON was changed. By working with the half of my team that created the API, I was able to integrate the two seemlessly so that the JSON form data could be easily saved, retrieved, and edited later. I also made a rudimentary login page, such that there would be a unique experience for both the developers and the analysts, and such that there would be no fear of analysts accidentally altering the JSON forms working behind the scenes. Before handing off the project to the teams that would utilize it, I made extensive notes detailing how to connect the app to their individual Airflow jobs, thus allowing my application to be utilized across the Nielsen company.
Skills showcased: Clojurescript Frontend Design, Re-Frame, Reagent, GUI Design, Agile Development, Product Management
Summary: This project utilized the selenium web scraper alongside my hospitals asset finder web app to streamline and aggregate the data for all our IV pumps (location, battery status, Preventative Maintenance status). It resulted in saving our techs countless hours in manual searching, and it will decrease the need to rent more pumps in the busy season, potentially saving the hospital thousands of dollars....
Background: While many medical devices in hospitals stay put in their designated departments, IV pumps tend to roam about the hospital quite frequently. This makes it hard to find them whenever it is time to do their annual preventative maintenance or when one floor is in need of more pumps than another. In our hospital, we use RTL tags and the Mobileview software in order to locate the pumps when needed. Unfortunately, the software does not allow you to find more than one pump at a time, and it is quite the time consuming process because you will frequently have to search for the pumps as they are continuously moving. Thus, a more time efficient process of finding the pumps was needed.
Design: I began by using the Selenium web scraper to navigate my hospitals Mobileview app and find the various bits of information about each pump (PM month, location, battery status). I then organized this information in a variety of modalities (to be used by both management and the technicians). I then designed a GUI with Tkinter, and added the additional options of just looking for assets in certain PM months, allowing for custom asset lists, giving different options for those without admin accounts, and allowing the user to email out the results. I then compiled the program using pyinstaller to allow my teammates to run it without any programming knowledge. Finally, I made up a fully encompassing test to ensure they set up the program correctly on their own machine.
Skills showcased: SQL manipulation, GUI design, selenium web scraping, script testing, Excel exporting, SMTP server access
Summary: By designing this E-Commerce site, I not only made a nice way for my wife to sell her homemade designs, but I also learned all the aspects of web development. This included item inventory, mobile friendliness, online payment handling, practical item sorting/categorizing, and most importantly how to make a scalable site that is friendly for not just the customer, but the client as well....
Background: Knowing early on that e-commerce web development is a profitable market, this was one of my first projects I started. But being how much there was to learn, it was a project that I kept working on throughout my learning. I wanted a site that was simple, elegant, easy to navigate, and easy to update. Through this, I learned much about web hosting, mobile friendliness, and what design aspects are most important for customer satisfaction.
Design: I began first with the inventory and how best to showcase the items. I researched many sites designs to see what worked. I settled on a basic four category design with various levels of sorting and customizing. I then tested this out with a randomized item inventory I made up. I expanded on this SQL based inventory to allow sorting, searching, etc. It was quite fun designing the navbar, splash screen, and mobile designs after that. I did find I could waste a lot of time trying to make things perfect. I went on to add a contact page, newsletter sign up, and social media links as well to complete the basic e-commerce layout. This is one project that will continue to be updated as I progress.
Skills showcased: AWS, Django web framework, SQL inventory management, admin layout design, web development, SMTP emailing
Summary: This simple web app is used to send random animal facts to a person of your choosing. A quick tidbit, or full on spam, you decide! This was my first app I made and I possibly had too much fun finding all 300 of the possible facts....
Background: Inspired by Cat Facts, I thought an app that randomly chose a fact, picture, and sent it to someone was a good first choice for my first fully fleshed out app. I initially wanted to have email and texting a possibility, but later just stuck with email for simplicity sake.
Design: After finding the facts, I used Wiki Commons in order to get animals that matched every fact. Then I went about making a simple form that would collect desired info, and generate a list of facts and picture that could then be sent to the email using my Mailgun account.
Skills showcased: MVC design, SMTP emailing, basic web design, Django web framework, Mailgun
Summary: During my foray into game development, I spent a good bit of time experimenting with C# and Unity. While this section is still definitely a work in progress, I thought I'd share my games as I complete them. After completing the build, I host them online....
Dark Dungeon Escape: This is a basic text adventure with alternating paths, multiple endings, and multiple failures as well. As this was my first game, it is quite crude in design and was basically an intro to Unity and C# for me. You can view my game outline I made here if you are interested. Otherwise, feel free to check out my game here, and enjoy!.
Skills showcased: Game Development, Unity, C#
I knew I had some knowledge gaps to fill between my bioengineering curriculum and the software engineering career I wanted, so I had to come up with a plan. Through various sources including reddit, github, blogs and my friends already in the field, I developed a learning curriculum for myself. This has not only kept me focused and motivated, but it has given myself a measure of how far I have gone. It may seem unnecessary to put it here as it is far from a proper college curriculum, but it is something I am proud to have completed and I feel it at least shows my method of thought as I went about my self-taught route. It also serves to prove I have aimed to come into the job with a full working knowledge of CS concepts.
|Course||Self-reported Grade||Proof of Completion|
|Core CS Courses|
|MIT 0600 Introduction to Programming||B||Self-Graded Tests|
|MIT 6006 Introduction to Algorithms||B||Algorithms Practice | Self-Graded Test|
|IBM Data Science Professional||Passed||Final Report | Certificate|
|CMU 15-213 Introduction to Computer Systems||Pending||Pending|
|Essential Web Developer Fullstack Course||Passed||Certificate|
|Complete C# Unity Developer||Passed||Passed|
|M001 MongoDB Basics||Passed||Certificate|
|M220 - MongoDB for Python Developers||Passed||Certificate|
|Professional Certifications (that I thought were relevant)|
|Fundamental Networking Skills for Biomeds (TRIMEDX)||Passed||Certificate|
|Phillips PIIC iX Server Training||Passed||Certificate|
|Other Nonrelevant Biomed Certifications||---||---|
My path through engineering has been a winding road. My first fourier into computer science was in elementary school back in my hometown of Zelienople, PA where I learned to program a Legend of Zelda replica in "Microworlds", something I was pleasantly surprised is still around today. But it was easy to get obsessed over trying to milk everything I could out of that program just to get a semblance of an RPG. Anyway, life moved on and I eventually made it to college. I chose Bioengineering as my major because my entire life track had been set to get me into Medical School, and I had never thought about any alternative. I loved our introduction to programming we took and I loved learning about different languages, and different ways to solve problems. It was a short deviation from my overall curriculum trajectory, but I found myself always looking back at this time with fondness.
I eventually made it into Medical School and I moved to Des Moines, IA along with my wife. I started the gauntlet of learning medicine as my wife went back to school for nursing. I made it through the first two years of medical school with my eyes on the finish line, hoping that it would all be worth it. But when I made it onto the hospital floors in year 3, I found that the passion I hoped would be there just wasn't. I did not like where my life was heading and feared I'd be trapped, so I made the hard choice of walking away. Being finally out of school, I knew I wanted to get back into engineering some way, so I decided to move to Cedar Rapids and work as a Clinical Engineering Tech at Mercy Medical Center.
While working as an engineer, I got the chance to work alongside their IT department on a few projects. I was the Clinical Engineering Liason for their cyber security team as we improved security on our biomedical devices. I also learned the maintenance on the pediatric security system as well as how to manage that security server. All in all, though, I used this time to start learning about Computer Science topics and structures that I would have learned had I originally gone down the Computer Engineering tract instead. There was a lot of self-learning and a lot of sacrifices in order to get my life back on the track that I wanted it to be on. I truly felt that my life trajectory was my own again and no matter where I end up, I will just be glad that I am in the profession I love.
I used this time to embark on projects that would better my life or the life of my colleagues. One such project I am proud of is my Mobile View Assistant application. By using our existing asset finder app at work, I was able to better streamline its functionalities in order to better serve us. I was able to not only save myself and my colleagues time, but in the long run it will also save our organization a lot of money as well. I of course intercut this project with other smaller projects that served both as milestones of my learning but also little bits of fun for myself. All in all, I think each of my projects has shown both my growth in ideas and in creativity.