Portfolio
Weather Map |
|
![]() |
Weather Map is the version 2 of it's predicesor, NOAA Tracker. Geoserver is the cornerstone of this setup. I cascade basemap data from mundialis.de and overlays from NOAA. From NOAA, I bring in their base radar, composite radar, precipitation type, and cloud height data; specifically the CONUS and Caribbean products which I then merge together via a layer group. I also "automagically" download NHC data for Atlantic storms that is used to feed layers within Geoserver. The frontend uses Leaflet.js and is kept as bare bones as possible. You're able to pick between two basemaps, NOAA long term hazards and short term warnings, the various radar products, and tropical storm layers if available. The tracks of past storms are kept available for those interested. |
RPN-Calc |
|
*Imagine C source code here* |
RPN-Calc is an extremely basic RPN based calculator written in C. All four x, y, z, and t registers are implemented along with your basic add, sub, mul, div, and sin, cos, tan. With it being all text, the buttons for the function you want to use is done via command input. IE: 4 enter 5 enter add. |
NOAA Tracker |
|
![]() |
NOAA Tracker was the version 1 for tracking tropical storms. The base map is the NHC provided storm tracking map in PNG format that I georeferenced using some math and Javascript. I then layered a HTML5 canvas on top to match the exact size of the PNG. From there, I would populate a CSV from NHC advisory data that would be read by a Python script. This script would take the data and output the required HTML5 draw commands in Javascript and insert them into a HTML template. A separate html file was generated for each advisory as well as a latest position file and an index. The intent behind this version was to provide something that would operate offline using data gathered via Amateur Radio. |
AlarmSpark - A very simple x86 kernel |
|
No picture available but the source was in C |
AlarmSpark was a project I started to explore how the CPU worked an a much lower level. The only piece I did not write was grub for the bootloader. I wrote the assembler that Grub would wind up calling, which in turn called my C main() function. I implemented a few base functions like printk, strlen, and sleep. printk was the hardest out of all of them. Learning how to write to a memory buffer in just the write way was a chore but the effort was well worth it when I realized I lost every other character I tried to write to the screen. Then I learned that this is because each character is represented by two bytes, one for the letter and one for the style. This kernel will boot an x86 machine but I cannot recommend it's use, it's only capable of writing to the screen and not much more. |