Jonathan Morales

Location: Global *

I am an adventurer and a coder. I have an obsession with optimization and a love for science, technology, and financial markets. I enjoy climbing in the winter and hiking in the summer. I design trading algorithms for fun and speak/program in several languages. Through a combination of luck and skill I've forged a path in life starting with the US Navy and ending in Silicon Valley while mostly being able to do things that I enjoy.


What I'm doing at the moment

Microsoft

By day I lead and work with small teams building products within Microsoft's Cloud and AI group - primarily in the areas of Identity and Security. This work generally encompasses the "full-stack" from UI to cloud based backend, SQL and noSQL datastores, microservices, zero-touch deployment, and continuous delivery.



Stockbot

By night, I write code for Stockbot which is a small startup I founded which analyzes stocks, futures, etfs, and crypto and generates high-probability trade decisions based on live and backtested models with successful win rates.



Rogue Squad

For fun, I'm progressively adding features to a PC game tentatively titled Rogue Squad. It is a turn-based rogue-like RPG loosely resembling a cross between the indie game FTL and the 90s Sci-Fi show Farscape. While I love simple 2D games, I also love online and distributed technologies so I've been working on an MMORPG engine that would allow multiplayer gameplay.



30 Day Novel Challenge - Digital Reset

I've always had a passion for writing and scifi. I'm taking part in the 30 day novel challenge from the excellent book "No Plot? No Problem!" by Chris Baty. I've also been reading Steven King's "On Writing" which really meshes well with the idea of having characters create themselves. So far, Digital Reset is the story of a runner who becomes the target of a corporate hit and unravels a conspiracy as they attempt to investigate why they were targetted.



Linux and Open Source

Ever since I was a teen I was a rebel and hacker. My friends were shocked to learn that not only did I join the Military but went to work for the "Empire". While I have nothing negative to say about Microsoft (always treated well, smart people, great challenges), I've always had a hole in my heart where my Free Software ideals lived. Recently, I _finally_ made the move to "Linux fulltime". While I've used Linux for projects over the course of my career, this is the first stretch of time where I'm living and breathing OSS. It's really re-ignited the hacker spirit and I've dove into automating everything with Bash, as well as hacking things together in C, C++, Go, and even Rust!


Interesting Projects

Terrasight and Iris-on-the-move

As one of my first gigs leaving the Navy, I was hired on with some very smart developers based out of a Princeton research lab where we built a perimeter defense system called Terrasight. The product interwove ground-based radar, satellite imagery, UAV video and other data sources into a 3D view of the area around a military base or secure location. Using an Xbox controller, someone in a bunker could monitor the perimeter of a location, "fly around virtually" and see what a given camera, UAV or sensor was seeing. Probably the coolest part was during testing where I was able to drive a Toyota Corolla erratically down a test track to simulate a "bad guy" while our system detected the car, tracked it and popped it into our virtual environment live. I was involved in the backend peer-to-peer distributed messaging system which allowed arbitrary graph configurations. I also helped write some of the C based code for client to satellite communications.

Shadowrun

Pure luck led me to join a small team which acquired permission from Microsoft to develop a Massively Multiplayer Online Role-Playing Game (MMORPG) based on the Shadowrun universe. I was the lead server developer and the opportunity gave me a chance to perform deep research and experimentation into highly durable and flexible architectures for online game servers. I developed a "cell" architecture which divided the game world into sub-shard units which could be spun up dynamically to provide area instancing or load balancing for game zones. This was probably one of the most fun and interesting projects I have been a part of. While the game was ultimately cancelled, the lessons learned with respect to designing distributed systems were invaluable.

Ultima Online RunUO

I had the awesome opportunity to be the lead server developer for an Ultima Online RunUO server shard. This was a gamer's dream, developing rulesets, banning hackers, adding new features, and getting to peek into how things work under-the-covers. Unfortunately, the server named Alphastorms, located in Louisiana, was destroyed along with its hosting facility during Hurricane Sandy.


Coder

I started programming at age 10 with my first program being written on a TI-82 (28kB of RAM) and initially focused on simplifying mathematical equations. Eventually I stumbled upon the Ti's graphics API (raw pixel manipulation) and wrote my first game, an RPG called Digital Reset featuring an animated intro (using quadratic equations for shading) and world with 5 locations and 4 enemy types. When I was done, the game used all available memory and forced me to use a standard calculator for actual classwork. Eventually, I stepped up to a 386, 486 and finally a blazing-fast Pentium 133Mhz. Along the way I learned a bit of assembly, C and C++. I've been programming professionally for about 20yrs now and while most of my work is covered by NDAs or is classified, I've contributed a small amount to Open Source via GitHub. My primary areas of expertise are client-server architectures, high performance code, distributed and parallel code, and 2D game development (Ai/Graphics/Gameplay). I mostly write code in C# for Windows and OSX but I'm well versed in Python, C/C++, JavaScript, PowerShell, LUA, Go, and F#. I've probably dabled in about 10 other languages for fun and occasionally when designing personal or custom tools.

 
Recent public repos:
 
Private Repos:
  • Stockbot - Market Analytics and Algorithmic Trading
  • Trading - Trading algorithms and custom developed indicators and tools
  • GameDev (Rogue Squad private codebase) - Private version of my RogueSquad public repo which contains assets and gameplay
  • Alphastorms - Former Game Development Startup (PC and XBOX)
 
TradingView Scripts: Published Scripts

Speed Freak

Chronic Optimizer

I am obsessed with writing high-performance code. Of course, like any efficient coder, my first passes might be suboptimal, but I soon start taking measurements and observing bottlenecks. My general strategy is to start with single-threaded but scalable or asynchronous algorithms (side-effect free). After the core logic is completed and tested for accuracy, I start measuring performance. From there it is generally a quick path from "executes in 23 minutes" to "executes in 23 seconds" as I gradually refactor algorithms, add caching and add mass parallelism. As my good friend Chad can attest, usually sometime around midnight he will receive an email with a subject like "Eureka, now processing 125M records in 17 seconds down from 35 minutes". I take pleasure in being able to hit the theoretical maximum performance and then find a way to make it even faster.

Respect for users

I guess what it comes down to it, I enjoy maximizing use of my hardware. If I have 24 cores, I want to see them used to speed up my app or algorithm. I am also a strong believer in applications should both start and shutdown quickly. I think that applications which are responsive (interactive) and fast show respect for their users. There is nothing worse than an app which takes an eternity to startup, has a long unskippable splash, and is sluggish when performing operations. Ultimately, I think that high performance has helped dramatically with user uptake on projects I have been involved with. When your UI is clean, clear, and snappy, you users will love you.

Recent Optimization Win

My most recent achievement was on my personal algorithmic trading and processing engine called Stockbot. I was able to scale the daily processing which looks at 1500+ stocks across 10yrs and runs 40 algorithms and 6 analysis stages. The numbers alone mean that each run executes ~1.3 Billion discrete steps. Initially, being able to perform all the analysis on the dataset was taking ~3.5 hours and seemed to utilize primarily 1 CPU with 3 others getting mild usage. Taking a hard look at the problem, I began refactoring pipeline stages to make them massively parallel and moved to queued micro-service model. Each stage was able to operate both in parallel and asychronously and report results independently. The result was being able to fully utilize all 24 CPU cores on my workstation, nearly all the bandwidth of my connection (for a brief but intense data burst), a relatively tiny 300MB of ram and quite a bit of NVME read/write throughput. In the end, the entire process was reduced from 3.5hrs to 4 minutes (which included *adding* additional stages for running multiple simulations and generating reports)!


Interests

Trading

Trading is my pasion. I've been trading Futures, Stocks, and Crypto for 10yrs. As time has progressed, I've improved both my algorithmic and discretionary trades. At heart, I'm a defensive person. I think it comes from having to build my way up from a very modest childhood. That's carried over into a trading style that favors preservation of capital above all else. I've tried to infuse that style of defensive speculation into Stockbot and algorithms I've shared on TradingView. Outside of game development, code related to Fintech is an area where I can absolutely lose myself for days at a time.

Traveling

Ever since I was a child, I was a relentless explorer. This aspect of my personality has led me to pick-up and move to chase opportunities wherever they may be. I am fortunate enough to have a wife and soulmate who shares this bug and has no qualms about getting on a plane at a moment's notice. Traveling introduced me to people from all walks and backgrounds which helped immeasurably in broadening my outlook and views on life. Getting to know people abroad also helped me in understanding what motivates people and utlimately helped me grow as a person.

Climbing

Ever since I was a child, I was a relentless explorer. This aspect of my personality has led me to pick-up and move to chase opportunities wherever they may be. I am fortunate enough to have a wife and soulmate who shares this bug and has no qualms about getting on a plane at a moment's notice. Traveling introduced me to people from all walks and backgrounds which helped immeasurably in broadening my outlook and views on life. Getting to know people abroad also helped me in understanding what motivates people. It has been an incredible experience that has helped me to grow as a person and to understand and respect people from diverse backgrounds.

Game Dev

I've tinkered with independent game dev for decades and I've been fortunate enought to have been involved in a few larger projects. I built the Baltimore Indie Gamers (BIG) group from 2 members to over a hundred -- giving tech talks, organizing hackathons, and introducing developers and artists to each other. At the moment, I'm trying to enhance my art skills (via inkscape) in order to create my own graphics for my RogueSquad project.


Resume

Available upon request or use the LinkedIn link below (or on the front page). For serious inquiries regarding work or projects, please use my email address.

View my LinkedIn Profile