Pre-release: open-dis-rust v0.1.0-alpha.4

Since v0.1.0-alpha.1, three versions have been released on crates.io. The Simulation Management Family and Simulation Management with Reliability Family PDUs have been fully implemented, and multiple security and quality tests have been performed and accounted for. This package is still very much a work in progress, but the December timeframe initially discussed is still valid for the v0.1.0 release. Just under 1/2 of the PDUs defined in the IEEE 1278.1 standard have been fully implemented; the SIMAN PDUs are arguably the most pertinent for generalized simulation management, and these have all been accounted for. With this still being in the alpha stages, the package is considered unstable and not fit for commercial or professional use at this time.

Before cutting the v0.1.0 official release, this package will go into beta for further testing and stability fixes. Once a release candidate is identified, this will go live on crates.io as a full release ready for general usage. I plan to maintain this package for as long as possible, and I will continue to provide bugfixes and security updates as needed.

Below is a copy of the markdown README provided with the source code that shows the current support status for all the PDUs defined in the DIS standard. The chart below will NOT be updated with future releases; all future changes to this chart can be viewed here on GitHub.

Supported PDUs

PDU Type Supported?
Acknowledge
AcknowledgeReliable
ActionRequest
ActionRequestReliable
ActionResponse
ActionResponseReliable
AggregateState
ArealObjectState
CollisionElastic
Collision
Comment
CommentReliable
CreateEntity
CreateEntityReliable
Data
DataQuery
DataQueryReliable
DataReliable
Designator
Detonation
ElectromagneticEmissions
EntityState
EntityStateUpdate
EnvironmentalProcess
EventReport
EventReportReliable
FastEntityState
Fire
GriddedData
IntercomControl
IntercomSignal
IsGroupOf
IsPartOf
LinearObjectState
Logistics
MinefieldData
MinefieldQuery
MinefieldResponseNack
MinefieldState
PointObjectState
Receiver
RecordQueryReliable
RemoveEntity
RemoveEntityReliable
RepairComplete
RepairResponse
ResupplyCancel
ResupplyOffer
ResupplyReceived
Sees
ServiceRequest
SetData
SetDataReliable
SetRecordReliable
Signal
StartResume
StartResumeReliable
StopFreeze
StopFreezeReliable
TransferControlRequest
Transmitter
UnderwaterAcoustic

Pre-release: open-dis-rust v0.1.0-alpha.1

The IEEE 1278.1 Distributed Interactive Simulation (DIS) standard is a collection of definitions and enumerations for a general-purpose messaging system for managing and maintaining distributed simulations. As is common practice with some software frameworks and standards, IEEE has just defined this standard and does not provide an official implementation. The Open DIS collection of software libraries has existed for several years now, having been developed by a third-party, non-IEEE-affiliated group. These libraries are implemented in C++, Java, Python, and a couple other mainstream languages, but I have come to find that these libraries are poorly maintained and incomplete. In fact, I have yet to find an open-source implementation of the IEEE 1278.1 standard that is complete and reasonably error-free.

As a solution to this issue, I have started development on an implementation of the DIS standard in a modern system-level programming language: Rust. The open-dis-rust crate is published on the Rust package manager website (Crates.io) and is currently in the pre-release stages. I will post changelogs and significant updates here as needed. Further information can be found on crates.io as well as its GitHub repository.

This is intended to be a complete, 100% adherent software implementation of the DIS standard. At the time of writing, about 1/7th of the Protocol Data Unit (PDU) messages defined in the standard have been implemented. The ETA for a full release is late November / early December. Throughout the development process, and even after full release, all issues and PRs are welcome to improve this library.

(Un)Release: Updating terebinth

Awhile back, I cut an initial v0.1.0 release of terebinth, an interpreted programming language built using C++. I did not do much else with the language up until a few days ago, where I decided to scrap what I had initially released to start anew. I am currently working on upgrading the project tree to use CMake rather than just plain Makefiles, and I am migrating to the C++20 standard for modernization and maintainability. Once this effort is completed, I will re-release terebinth v0.1.0, and I will provide much better documentation on the language features, as well as much more consistent updates and changelogs.

In related news, I have opened an Atlassian Jira page for my GitHub organization’s projects to allow for bug tracking and things of that nature. Once that has been cleaned up and has been made presentable, I will provide a link embedded within this website for posting bugs and suggestions.

I’ll provide more consistent updates in the future now that it appears that I have the time to do so.

Release: color-roulette.nvim v0.2.1

I actually released this version of the plugin wayyyy back in October of 2022, but I realized I never made a post about it. The release before (which was v0.2.0) overhauled my original plugin – which, again, was a joke – and actually implemented a somewhat decent roulette-style color randomizer. The patch release, which is the release version pertaining to this post, just updated some minor components of the code base without changing anything in particular with the functionality of the plugin. The latest version of the plugin can be found here. As always, documentation is available in the README on the GitHub page. I’ll start posting the changelog here for my software releases as they come through.

Release: autoref.nvim v0.1.0-alpha.1

I have started work on a couple new plugins for neovim, and one of the latest in that collection is autoref.nvim. This plugin will generate a formatted table/listing of all assigned neovim keybinds, and I plan to add some customization to it to allow users to add comments to each keybind for better, personalized documentation. Right now, this plugin is in the early stages of development, and it is not considered stable. The pre-release is available here, and installation instructions are provided in the README. As with all these plugins, I appreciate feedback and would like to see issues or PRs for suggestions. I’ll post more updates here as I continue my progress.

Release: autocommit.nvim v0.1.1

As I had posted awhile back, I did intend for autocommit.nvim to be a serious plugin at some point. It started off as a bit of a joke, but I have given the code base a facelift and real purpose. A stable release is available here. Installation instructions are provided in the README. The code has been drastically reduced and simplified, and I plan to add a couple more features in the future to make it more robust. Feel free to create issues or PRs to suggest new features or changes.

Neovim Plugins

It’s been another hot minute since I have posted, but in that time, I have begun dabbling in the realm of Lua and Neovim plugins. Neovim is an upgraded version of the classic Linux Vim text editor, which is itself an upgrade of Vi. Neovim has tons of support for plugins and color schemes alike, and using Lua, I have created a few of my own. Links to those repositories will be published in the “Projects” tab of the website. Let me briefly describe what each of these plugins are and what they do.

Autocommit

Autocommit is a plugin that started out as a joke with a simple concept: every time a user saves a file that is in a local git repository, those changes will be automatically committed and pushed. This is certainly not ever going to be useful at its current state, nor was it intended to have a real application; however, in future versions, this plugin will be cleaned up to perhaps have a better functionality. Right now, it has a few quirks and bugs to be ironed out, but for a spur-of-the-moment joke plugin, it works surprisingly well.

Color-Roulette

This is another joke plugin that I may refactor to be actually useful in the future. The idea for this was also pretty straightforward: the user is allowed to configure up to five favorite color schemes, and a color scheme is chosen at random on startup. The catch is that a hardcoded light-mode plugin is also in the mix to be chosen, meaning that there is a 1/6 chance that light-mode may be enabled at any given startup. This will eventually be phased out to perhaps be an Easter egg configuration parameter in favor of a more useful color scheme randomizer.

I plan to work on other plugins in the future, and I’ve learned a lot of fun things about Neovim and writing plugins with Lua. I’ll continue to post updates here as they occur.

Welcome!

This is my first post on this website. This site will serve as a hub for all projects moving forward. All source code from said projects will be available on my GitHub page. Each time I cut a release for a game, mod, or other project, I will post the changelog on this site. Each project will also have its own wiki available on this site, as well as a carbon copy available on its corresponding GitHub repo. Soon, I’ll post my first project here on the website. For now, have a great day, and make sure to subscribe for email notifications about new posts!