// Redesigned the website (again) // Have been updating Cataphract source code lately. Its almost complete, need to just work on FileManagement.java // May merge the Cataphract source code back into Truncheon. //

DAK's Bl@g

  • I'm Back!

    24-February-2023 0236 AM +0530 GMT

    Hello!

    I have been away from blogging for a while (2 years but what the hell), but I have been working on Truncheon in the meantime.

    Truncheon Update

    Soon after Truncheon's initial release in November 2021, new concepts were being written to make it better. The update was called 'Katana'. This update would contain a set of features that were being worked on separately so that the current code base would not be affected by the addition of any new features in terms of performance and security.

    So now, we have Katana, and it is still being worked on.

    The Improvements

    Abraxis File Integrity Checking System

    Truncheon can be run by simply downloading the source code, compiling it and then running it like any other Java program. But it didn't address the problem if a class file was bad due to an update or due to a malicious program that edits the class file.

    In the February 2021 update post, it is mentioned that a file integrity check was being worked. This could potentially make it more difficult for programs or people to alter any .class files.

    Currently, the system checks the MD5 hash of the files and compares it to a Manifest file. Should any alien file be found in the Truncheon's working directory that does not exist as an entry in the Manifest file, a warning is shown to the user about the same. Should the file integrity checking fail because of a bad file or a missing manifest file, the program shall refuse to boot, until the integrity checks pass.

    This implementation takes more effort and time for a bad actor who would want to tamper with the integrity of Truncheon class files. Note that the file integrity checking logic works for both Windows and Linux.

    Kernel Prober

    If a person who would want to use multiple kernels that complies with the working of Nion Kernels, a feature has been added to the program launcher to probe and check if a kernel is bootable or not. This means that the user can check if a given kernel is bootable or not.

    Improved Tools

    New tools have been added to help the developers and end users to compile and sign the builds. The new tools can be used within an editor or launching it directly. Once the Binaries are compiled and signed, Truncheon can be launched as usual.

    IOStreams.java

    It is always useful for the end user to see color coded messages to differentiate between an error string, a warning string, an information string or a string cautioning the user about something important.

    Previously, there was no color coding, making the output look dull, boring and mundane. But with Katana, that was not the case.

    - Implementation -

    Color coded outputs were possible in terminals by using char 27, the desired color separated by a ';', the desired background color and finally delimited by the ASCII character m.

    The older implementation had a hard coded system to achieve the same, where the statement would look something like this

    System.err.println((char)27 + "[31m[ ERROR ] " + message + (char)27 + "[0m");

    In the current implementation of the same, I tried a different approach to make a modular system to allow the user to make their own combinations of background and foreground colors for the output strings.

    So rather than hard coding for every color available, it was sensible to make 2 arrays: an array for foreground colors and an array for background colors.

    Now all that was needed to be done was a method that would accept the index for the same and then implement a logic to output with the desired color combination. This was done by the following implementation.

    import java.io.Console;
    
    public class IOStreams
    {
        //refer to the table for colors in the screenshot
        static String[] _textColorForeground = {"[30", "[31", "[32", "[33", "[34", "[35", "[36", "[37", "[39"};
        static String[] _textColorBackground = {"40", "41", "42", "43", "44", "45", "46", "47", "49"};
        
        public static void println(int foregroundIndex, int backgroundIndex, String message)
        {
            try
            {
                System.out.println((char)27 + _textColorForeground[foregroundIndex] + ";"
                + _textColorBackground[backgroundIndex] + "m" + message + (char)27 + "[0m");
            }
            catch(ArrayIndexOutOfBoundsException e)
            {
                System.out.println(e + "Invalid Syntax.");
            }
            catch(Exception e)
            {
                System.out.println(e);
            }
        }
    }

    With this implementation, it is safe to say that the users who would want to build modules on top of Truncheon can now easily create color coded outputs without reinventing the wheel. Additionally, it also helps to configure color codes in the future without too much hassle.

    Miscellaneous Improvements

    The program has been optimized and the scripting language is now being rewritten. As of now, the memory usage has been less than 5MB. The rewritten modules are now easier to debug, read and improve due to how modular it is, compared to how it was previously.

    Please keep an eye on the GitHub Repository to get all the latest updates regarding Truncheon!

    Progress on Truncheon is slow, but its getting there. It may take time but at the end, I feel that it will be worth the wait :)

    That's all for now, folks! Until next time then!
    DAK

    Back to Top
  • May Update

    27-May-2021 0308 AM +0530 GMT

    Hello there!

    It has been a bad enough year for everyone since 2020 since COVID spread rampantly everywhere. I hope all are doing well, and are keeping your hopes high for this debacle to end soon.

    Truncheon Update

    There have been a lot of concept and code being tried and mixed around to bring out a better and stable codebase regarding the Truncheon's architecture. There was a single feature that was lacking since the first iteration of Nion till Mosaic, but it has been conceptualized so many times over every iteration that one can remember about.

    Scripting Features

    The scripting feature is something that has been conceptualized for a long time which has not been materialized since Flux-Nova iteration.

    Imagine this: You login to the program, and you need to perform the same set of instructions all over again. You'll find it tedious to repeat the same set of commands over a period of time, and it is a waste of time to perform the same tasks all over again, every single day.

    Imagine this now: You write a script file once, say "StartUp.nScript" and then run it with a single line of code when the user desires! Or even better, you can automate that as soon as you login to the program and sip your preferred beverage as you watch the program run the script file for you. Simple and convinient, right?

    So the .nScript file is a Nion script file used to execute a batch commands by a user. This is designed to be compatible and scalable with the evolution of the project architecture and scale. Nion scripts will help the users to quickly execute a set of batch of instructions at a time, thereby saving time for the users to avoid running the same commands all over again. Note that there will be a directory created "./Users/<Username>/Scritps" where all the user scripts will be stored. Features shall be added to check if there are any scripts that are required to run after logging in.

    The scripting feature supports scripts to run as an Administrator using the Pseudo engine, which will elevate the user status to an Administrator status on a successful authentication to provide extra features which the normal users are restricted to use.

    Other Updates

    I plan to make a new blog post talking about privacy and how to protect your data and information. If time permits, I shall blog it over here!

    I have also been working on a patch for Mosaic to improve its performance and fix a few known issues. The update will be rolled out in the soon. Mosaic's update will remove the functionality of restart since there are a lot of issues regarding the program's restart feature.

    NOTE: THIS ISSUE HAS BEEN ADDRESSED AND HAS BEEN FIXED IN TRUNCHEON. SINCE THIS FIX REQUIRED AN ENTIRE REWORK ON THE ARCHITECTURE, MOSAIC WILL NOT BE GETTING THE FIX. USERS ARE RECOMMENDED TO MIGRATE TO TRUNCHEON AS SOON AS IT HAS BEEN RELEASED IF THEY NEED AN ENHANCED IMPLEMENTATION OF THE FEATURES PRESENT IN MOSAIC.


    That'd be all for this blog post though! Stay tuned!
    DAK

    Back to Top
  • March and April Update

    26-April-2021 0405 PM +0530 GMT

    Hello!

    This is the blog post which will update y'all on what's been happening for more than a month.

    Project Status and What Happened in March

    Uni has been a bit time consuming which took most of the time of the day to complete the uni work. There has been a bit of an update to Truncheon, where the components are being rewritten to optimize the code and program performance. The Truncheon Website is up, which has all the required details about the program. The readme file should provide a complete overview about the program. The program documentation is not yet available, it will be completed soon!

    Online Accounts Security and Safety Tips

    Aside from Truncheon, I've been reading about people having their accounts compromised or hacked. This can generally happen when people use the same credentials across services or websites. For example, using the same password for both Gmail and Outlook is risky. If either account credentials are compromised, the other account too has a high chance that it would be compromised too.

    While blogging this, I decided to include this section which will talk about how to keep your accounts secured. The following suggestions/recommendations can help you to keep your accounts safe.

    • Use different password for every website or service.
    • Use a popular and trusted password manager (like Dashlane) to help in generating a random, strong, new password, keeping a list of password safely, all in one place and for automatic logins for applications and websites.
    • Please check if the website uses "https" than "http". If you do not know how to check that, please install this extension called HTTPS Everywhere which will warn you if a site is downgrading from an https to an http site. An attack can be done only when the site is in http and the protocol is not secured.
    • Use 2 Factor Authentication! This may seem annoying but you will know if someone tries to login or compromise your account. This feature is the most important feature that one must enable if available!
    • Regularly check if your account has been compromised by using this website called haveibeenpwned. A positive result will mean that some or all of your details have been leaked which means that it is not safe to use the same password anywhere else. A new password must be used to maximise security.
    • Do not share your personal password to anyone! If you need others to access the same account, use a simple yet unique password which cannot be used again, after the person stops using it.
    • A strong password must have atleast 8 characters, 1 uppercase character, 1 lowercase character, 1 digit and 1 special character. This will mean that guessing the password becomes difficult for others who do not know it.
    • Use trusted and verified programs! Do not try to pirate or run software that seems to be sketchy or shady.
    • Use updated OS versions and the softwares! This will help in keeping your details private by mitigating or fixing the security vulnerabilities.
    • Prefer to use open source softwares. This means that the community or people will have access to the source code, which will make sure that security issues and problems can be easily detected and patched unlike closed source softwares which is hard to test and implement security measures compared to open source software.

    I really hope that someone finds this section useful to keep their account secure! Well, talks about privacy is for another day though!

    That'd be all from my side for 2 months! I hope you all are doing well and I wish all of you good health! Take care and stay tuned!
    DAK

    Back to Top
  • February Update

    25-February-2021 0932 AM +0530 GMT

    Hello!

    This is the monthly update of my blog.

    I have been working on my project, which the iteration for the same is changed to Truncheon. Lamatshu was a project which tried to implement the new features and implementations on the Mosaic Kernel.
    But the Mosaic Kernel had its architectural limitations which needed a new Kernel for the program to run on. This was somewhat achieved by modifying it, but did not satisfy the required security and implementation's stability. This program needed a much more advanced implementation which was needed to be developed from start.
    Truncheon was created to have a fully reworked code to completely satisfy the boot asserts securely. This meant that the program would use the same amount of memory but at the same time increase the program security.
    The project, now, will have the usual development cycle after completing the new program architecture. The program's source code will be opensourced on GitHub as usual, after the source code is stable.

    Here are a few screenshots of Truncheon running on Windows® with the basic implementation of the kernel working. (Click on image to view it in full size)

    Truncheon booting with the Debug Messages.


    Truncheon's shell after successful boot.

    I guess that's about it, regarding the update from January to February. Until next time then!
    DAK

    Back to Top
  • Projects, Progress and Plans

    20-January-2021 0740 PM +0530 GMT

    Hello!

    This is an update about my blogging schedule, projects, progress and the plans for the same.

    • Projects

      Since 2016, there would be a new version of Project Nion being developed under a certain codename. This was the same until 2020. In 2020, we saw 2 cycles: Zen Quantum and Mosaic. Each cycle lasted for 6 months, which boosted the overall program efficiency, optimization and size. Mosaic's architecture was good, but not the best. It borrowed and revived a ton of ideas which was shelved since 2015. The development cycles helped me fix fundamental security issues too. But again, I spent a lot of time, working on the project which saturated my schedule. I took a small break to re-evaluate on ideas and code samples, written way back since 2015, to get a few ideas on how the project needs to continue.

        Current design and plans for Lamatshu is as follows.

      1. Modularity:

        The program needs to be highly modular, which means that irrespective of the frontend, the backend implementation must work as a single unit, while providing a flexible architecture.

      2. Platform Independence:

        This aspect focus was the least until the Mosaic Iteration, where the architectural drawbacks were reflected when trying to run Mosaic on Linux and different platforms. Lamatshu's concept and prototyped architecture proved to be efficient in many aspects which solves the issues and enables a hassle-less experience on any platform.

      3. Multi-Threading and GUI:

        Multi-threading is an efficient way to enable even distribution of tasks across multiple threads. Since Java™ supports multi-threading, I am considering on including APIs which will make programs run using multiple threads.

        The aspect of a GUI has been almost non-existent since 2013. But looking at people's preferences and ideas, it would make sense to add a GUI mode to appeal to users who don't really prefer a command line interface. Graphical modes might increase memory usage, hence, it might be restricted only to the client mode, whilst the server code will be CLI based.

      4. Integral Engine:

        I plan to create a library called the Integral Engine which will perform fast math based calculations on Integration and Differentiation. This would mean that using an API, this library could be used for various workloads ranging from graphics to data science. THIS FEATURE IS NOT YET CONFIRMED TO BE INCLUDED, THIS FEATURE MAY NOT MAKE IT TO THE EARLY OR FINAL BUILDS OF LAMATSHU.

      Progress: Lamatshu has a heavily modified core/kernel called "Amethyst" with a new file structure which will allow administrators to work with multiple kernels from different iterations. Basic APIs are being implemented and probably in the month of May or June in 2021, the code will be complete for a stable release.

    • Blogging Schedule

      I plan to write a blog update every sunday or so, based on the project status and other important content such as gaming, programming and streaming. I might even cover generic content, covering my opinions on a given topic. I might miss out on writing or updating the blog on a few Sundays, but I shall try to be as regular as possible in terms of posting blog content here.

    • Future Of Content Creation

      I shall begin streaming on Twitch in a few weeks. I have a lot planned for this year in terms of YouTube content and in programming too. I will cover content about how to get started with programming, which might (I hope) help learners and those new to coding understand and practice coding in an efficient and elegant way. I shall try to make the videos as simple as possible which should help people to understand the concepts easily.

    TL;DR, I'm back! (sort of xD)

    Until next time then!
    DAK

    Back to Top
  • Welcome To My Website! (and Blog)

    05-January-2021 0141 AM +0530 GMT

    Hello all!

    A very Happy New Year to all! I welcome you all to my website's brand new Blog! I shall be posting content here frequently about coding, gaming or any random topic here. In this post, I am covering the Blog system. This has been done in such a way that its an easy way to express myself in this space which will talk about anything and everything.

    Navigation has been made easy! On the right hand side, you will see links to all my posts which will take you to the desired post. On the left hand side you can read my blog content, either manually scrolling through each post or using the quick links. At the end of the blog you shall find a link which will take you back to the top, which will help mobile users navigate through the page.

    I hope you guys like my website. I am working on Lamatshu, a successor to Project Mosaic. The repository will be made public as soon as the code is stable Stay tuned!

    To an amazing year ahead,
    DAK

    Back to Top