I'm a software engineer from Florida who has worked on projects that vary in scope from Android App development to Artificial Intelligence. I'm always looking to expand my skill set and develop myself professionally.

I currently work as a Junior Engineer for Discovery Machine. We work on a wide range of projects aimed at helping to train military personnel in a virtual setting. Projects I've worked on have included flight instruction agents and city pattern-of-life simulation. Out of respect to national security and trade secrets, I can't go into too much detail on projects from my current job, but you can look at the full scope of the company on Discovery Machine's website.

I graduated from the University of Central Florida in the spring of 2018 with a Bachelors in Computer Engineering, with a focus on Machine Learning and AI.

For a class project, I conducted research with a group wherein we pursued a solution for a problem that people run into with GANs (Generative Adversarial Networks). Mode Collapse is essentially a divergence of a GAN from the expected result which while not difficult to avoid, can be very consequential when training.

Previous research had been done on reducing the probability of a GAN collapsing. What we sought to do was identify a way to detect mode collapse while a GAN was running in order to cut the program off when the collapse is detected. This would allow hyperparameters or the noise input can be modified quickly, saving CPU usage.

We identified a metric which would adequately detect this collapse. An approximation of the rate of change of KL Divergence was what we used and tested, and found that we could successfully detect mode collapse within 1000 iterations of training.

With my experience in developing mobile applications, I was tasked with the designing of a new mobile payment system for PayClix, a utilities collection company. I essentially needed to mimic the existing website in the form of a mobile application.

Implementing threading techniques to work with encrypted server calls were two challenges which I encountered. Android does not allow for http connection on the main UI thread, as that would cause the app to freeze visually while waiting.

While I coded the entirety of the client side for this project on my own, I took advice from a small team, and worked with several members on creating web service calls for server communication.

Out of interest in developing intelligent systems, I used Java to design an environment in which a user can play a game of blackjack. I then designed a simple neural network which took inputs of each card on the table (up to 7), as well as the dealer's card. I trained the network using neuro-evolution.

The training program would generate 100 neural networks with randomly assigned weights in each neuron, and keep track of how well each does in a series of 100 games, awarding 2 points for a win, 0 points for a loss, and 1 point for a tie, as if the computer was betting a dollar against the dealer 100 times. The fifty worst networks would be erased, and the fifty best would each create a single child whose neurons had each had its weights slightly shifted.

With no training and making random moves, the randomly generated networks had a very large variation, with average winrates between 10 and 38 percent of the time. After 10,000 generations of training (which takes between 9 and 10 minutes), the 100 final neural networks tend to reach a 47% win rate, which is the actual probability of winning a game.

Check it out on GitHub!

For my capstone Senior Design Project at school I worked in a group with two Electrical Engineers to design a small circuit which harvests passive RF signals to charge a supercapacitor for use in low-power systems. I wrote an Android application which uses ISO15693 Protocol to communicate with an NFC tag built into the circuit.

Sensor readings would be stored to the FRAM of an RF430 microcontroller, which could then be read block by block using the protocol's read command. A listener was implemented in the app to act whenever the phone's NFC transmitter was nearby another tag.

Once the phone connected to an NFC tag it would loop a read command until the read command returned null, signaling that either the end of the FRAM was reached or the connection was interrupted during transmission. The received data was then plotted using the GraphView library, and an average value was displayed underneath.

The University has not yet published our project website to the public.

For a project in a school course, I wrote an Android Application alongside a small team to assist with restaurant management. Titled SideDish we aimed to design an app to allow chefs and waiters to communicate more easily.

Waiters could set tables to empty or full, and submit specialized orders to the kitchen. Kitchen staff could mark an item as complete when they were finished preparing it. Admin users like managers could modify menus, prices, and other user privilege. My main role in the project's development was in interfacing the front end UI to the restaurant's SQL database.

Check out the source code on GitHub!

Or check out this demo video on YouTube!

The programming language I am most proficient with is Java, however I am also familiar with Python and C++, and I'm confident in my ability to learn whatever gets throw nmy way. I'm pretty flexible when it comes to programming environments and IDEs, and don't like to get married to programming tools or habits.

I've worked on academic research in the fields of Computer Vision and Human Computer Interaction. I contributed to one project based around studying and identifying Mode Collapse in GANs, and another based around identifying trends in usage of 360 degree cameras on YouTube.

Through my coursework I learned about some more specialized concepts, such as the classic Computer Vision algorithms Canny and Sobel edge detection, Eigenfaces, and Optical Flow. I also explored several machine learning training algorithms such as AdaBoost, Neuro-Evolution, and Gradient Descent.

Feel free to contact me directly over email at ezekiel.rosenbluth@gmail.com or via any social media platform listed in the footer below