Thanks for dropping by! Something's gone wrong internally- I'll have this fixed in a day or two. Sorry for the inconvenience!
C♭ is a from-scratch, imperative, static-typed, pseudo-class-based programming language with original syntax and semantics, created by myself and Michael Hackett. Named after our favorite musical note and adhering to the single-letter naming tradition of many popular languages, it aims to provide a lower-level approach to class semantics through a unique, semi-struct semi-class code structure, called a pod (they were originally meant to contain just Plain Old Data; thus, the name 'POD'). All members and methods must belong to a pod, and pods may interact with one another in a variety of ways to exchange information and data. C♭ is currently compiled to C through a python compiler.
Language: Compiled with Python; compiled to C
Started: January, 2019
Why? The compilation process is an interesting and unique field in which neither Michael nor myself have had any academic exposure. We thought that designing a language and jumping right into the difficult compilation design procedures would be a fun and enlightening process. So far, it definitely has been.
Progress: We have studied a lot of compiler design resources and have designed the syntax of C♭. Some progress into the first steps of the compiler has been made.
I moved to a new apartment in the fall of 2018, and I felt the place needed a bit more character. Everyone knows that nothing adds character to a room like a responsive LED display that changes color and brightness based on what music is playing over the central speaker, so I decided to try to design one myself. The array is a ~15 foot-long LED strip bordering our deck door. Music is received through a spliced aux cord, filtered and matched to the Teensy's ADC range, and analyzed for intensity and other musical qualities. Based on these factors, a pattern is developed for each LED on the strip. Preset color patterns are also available if there is no music playing
When I began my second coop, I did a deep dive into C++. I quickly learned that it is not a welcoming language for beginners.
In order to accelerate my understanding of the language, I decided to start a side project. This project is a roguelike (a dungeon-crawler) with a twist: while most roguelike games feature a map of four-sided tiles, my tiles would be hexagonal. It's a somewhat arbitrary difference, but it makes the game logic much more complicated.
I have generally found that the best way for me to learn about languages and coding practices is through making silly games, and this is no exception. This time, however, I approached much more advanced topics than before, including map generation (aka graph traversal algorithms) and data-driven storage (so far, realized as singleton immutable tiles and a map array of tile pointers rather than a map array of new tile objects). The largest and most interesting challenge was in my game event loop, which I have designed myself. The purpose of my custom loop is to take advantage of the wasted time in between user interactions: in previous game attempts, I have used GUI packages to await asynchronous user events, and my program will sit idly until such an event arises. In this game, separate worker threads use the time in between events to precalculate data needed to progress the game to the next turn upon input (data such as map traversal patterns for entities, possible next moves and their effects, etc). The hope is to have this data ready by the time the user takes their turn to reduce the amount of time the game spends processing the move is as low as possible.
This has proven quite ambitious. We'll see how it goes.
Check out pictures of this project on its Github repo!
Ssh-Backup is a Windows utility that I created to create a backup of my important files onto a remote device. It can connect to a device (currently Linux) on the local network and initiate an SSH connection to securely reproduce a directory tree onto the target.
This project has great potential. My original idea was to produce a version control-tracking backup client that could sync the remote file system regularly as changes are made to the files within it, but I was informed of the existence of rsync, which pretty much exactly matches the scope of this project. However, I do in fact use the backup utility to regularly back up my important documents to a Pi on my network, so this work was not entirely for naught.
The MIDI Drum Pad is a collaborative project aimed to aid music composers in writing percussion parts on music-writing software like Logic and Garage Band. The final product will contain a fully-responsive playing surface that plays and feels like a normal practice pad. Every hit will be detected by the pad, processed by the on-board Teensy LC microprocessor, and sent through a USB port to the host computer as a MIDI signal. The channel and range of this outgoing signal can be selected through a series of buttons and a rotary encoder on the top of the pad for ease of use. The board features a PCB and signal processing code of our own design.
Language: C++, Arduino platform
Started: March, 2018
Why? My friend/composing partner,
Josh, and I were running into problems when composing percussion parts for our pieces. It was too hard to accurately record the rhythmically-intense parts without playing them on a drum. This project aims to remedy our problems by allowing us to record the parts exactly how we would play them on a real drum.
Darwin's Playground is an evolutionary simulation in which organisms are mutated, bred, and placed into a world where their survival is based off of how well they were genetically engineered.
Language: Java
Started: October, 2017
Why? I really like biology, and I really like programming. This project is a fun and challenging way to combine the two. Additionally, I wanted to sharpen my skills in Java, as I was a bit rusty in the language when I began the project.
What was the inspiration? I was doodling in class one day and the pieces just sort of came together in my head. I said, "hey, wouldn't it be cool if I could create these organisms that live and die by their genetic code?". And then I remembered that yes, I probably indeed could do that. And here we are.
Progress: The game is functional, with one level and one organism so far. Data storage and retrieval needs a lot of work, as do the in-game survival calculation methods.
The website is rather self-explanatory: you're here reading this, after all :)
Language: HTML, CSS, little bit of JS
Started: January, 2018
Why? I wanted a personal site and I figured I could use the practice in HTML/CSS.
Progress: Up to date as of 9 Jan 2020.
Welcome! I'm Sam Paniccia, and I am a third-year student at Northeastern University studying Computer Engineering/Computer Science and minoring in Music. Feel free to take a look at my projects and hobbies by either scrolling down or using the tabs above!
Welcome! I'm Sam Paniccia, and I am a third-year student at Northeastern University studying Computer Engineering/Computer Science and minoring in Music. Feel free to take a look at my projects and hobbies by either scrolling down or using the tabs above!
I knew I was going to be an engineer all my life. I've always had a strong interest in the world around me, and I love solving problems and applying what I've learned to the real world. In my senior year of high school, I also discovered a love for designing and implementing programs, and voilà, a CE/CS major was born. Ever since then, I've always been tinkering away with personal projects on both the hardware and software side. Some of the more recent and major ones are below and on my GitHub page!
Here's me holding a stuffed animal sloth. His name is Kurtis.
A Solidworks rendering of the MIDI drum pad I co-created (see the My Projects section below for more!)
When I'm not in class or doing computery things, I spend most of my time either playing or listening to music. I've been a musician all my life, and music is essential to me. I've been an avid percussionist for over 15 years, and I've performed everywhere from my high school auditorium to Main Street at Disney World in Florida. In my senior year of high school, I performed an 8-minute long marimba duet with a close friend of mine, and this fostered my love for pitched instruments. In the following years I've self-taught guitar, bass guitar, and piano, learning from and jamming with my roommates and friends. And all the while, I've continued to study and perform (and compose for) percussion. I'm thrilled to have found such a rich musical environment at school!
Aside from performing, I also love listening to all types of music. My favorite genres are classic rock, blues, funk, and jazz, but I enjoy pretty much anything: some of the less standard music I enjoy ranges from Organ Freeman (no, not Morgan, but Organ) to Mongolian throat-singing music (it provides a really good working ambiance). My all-time favorite musicians and groups are Jacob Collier, Snarky Puppy, Vulfpeck, Vince Guaraldi, and Pink Floyd.
Currently there is no available mobile version of this site. Please view on a computer to see what I'm up to!
For my second coop at Doble, I expanded upon my previous role on the Hardware team and worked much closer with the embedded firmware that the hardware ran. I continued to work on the same F-series product as in my previous coop and in my part-time work. Most of my time was spent architecting and implementing a sophisticated Remote Procedure Call (further expressed as RPC) interface that permitted outside applications to invoke function calls concerning particular hardware modules through the firmware messaging stack. Function invocations are delivered in the form of a Google Flatbuffer message; the firmware receives the serialized message, parses it into meaningful data, parameterizes any given parameters from arrays of bytes into C++ types, invokes the desired function, and returns any related data as another Flatbuffer message. Each message may contain an arbitrary number of function calls, and return values per function call are easily retrievable.
The calls are typesafe and efficient: the platform outperforms a previous RPC implementation by hefty margins, especially as the number of calls per message increases. Any object representable in JSON is supported as either a function parameter or return value.
In addition to the RPC capability, I also diagnosed and reworked a slowdown in inter-module communication through I2C, increasing throughput by 90%.
Finally, I continued my internal tool development, working further with C# WPF to enhance the Windows applications that the firmware and hardware teams use to communicate with hardware.
I was based on the Computer Hardware team at Doble, and many of my tasks regarded one of Doble's products in their F series. I got to work hand-in-hand with the other engineers on the team, learning about realistic circuit design where the imperfections of the real world play a significant roll in how products are constructed. In addition, I worked heavily on improving and expanding several internal tools, both front-end and back-end.
I also spent some time on the embedded software team, where I helped design and implement some lower-level procedures involving data serialization and transmission. I really enjoyed being able to contribute to a project from both the software and hardware perspective.
Finally, I spent some time working on test scripts with the SQA department. The scripts, written in Python and using the Selenium browser automation package, confirmed proper website functionality through mock button presses, search queries, and other user interactions. This experience taught me how to write cohesive, comprehensive tests that cover all edge cases and ensure that a product is working correctly.
At the beginning of the spring semester of 2017, the conductor of the Northeastern Wind Ensemble held a chamber concert, and the percussion section had nothing to play. With the concert just a few weeks away, we had to find a piece to play.
But we found nothing. All of the pieces we found for five players were either boring, cliché, or just not good.
So we decided to write something of our own. In February of 2017, fellow Wind Ensemble percussionist Joshua Berlin and I decided to compose a piece for percussion quintet to perform at the concert. I'd never composed before, but Josh convinced me to give it a try.
We're still composing today.
If you're interested in our work, please visit the Kerr Hall Compositions website.