I can be reached at me@kiranwelle.com or the social links below.
Where I started
When I was 12 years old, my mother taught herself how to build simple websites and Visual Basic applications. When she wasn't using her reference books, I borrowed them and fell in love with HTML.
Programming didn't capture my attention until I found PHP and JavaScript two years later and was able to do more and more with my little websites. I've dabbled in various languages and applications over the years.
I started working as an IT intern after graduating from high school and worked my way up through Help Desk to a Systems Administrator position that allows me to do a little bit of everything; from desktop support to networking and server support to project planning.
Where I am
Systems Administrator, Nitto BioPharma, Inc.
Handling most of the IT operations for a pharmaceutical research and development company.
New Dad
Learning the ins-and-outs of raising two tiny human beings and how to work on little sleep.
Web Developer
Building hobby projects in PHP (often utilizing Laravel). Check out my latest project, Alphonic!
Where I'm going
Family will always be my first focus. With my kids growing up, I will focus on finding opportunities to teach them and encourage their curiosity.
Professionally, I hope to focus more on long-term projects and less on desktop/server support. In the meantime, I'm working towards a PMP certification in the near future.
Skills
- Back-end Development (PHP, Laravel)
- Software Design
- Database Design
- Technical Writing
- Windows Server management
- Windows desktop support
Guiding principles
- Quick to credit, slow to blame
- Fail fast
- Underpromise, overdeliver
Education
- B.S. Computer Science, California State University — San Marcos
- Certificate, ITIL Foundation, APMG International
Recent writings
Texturing Birthright adventure maps in Doom map editors
In my last post, I mentioned that the main Doom map editors don’t have any way of loading Birthright textures. This can be fixed by creating a PWAD with all of the textures from TEXTURES.RES. As I shared in The Case of the Missing PCX Palettes, we’re able to submit PCX files to Birthright’s resource files, but we’re not able to get them back out in their original state. A lot of information is lost when RESUTIL or BRUT convert the PCX files into Birthright’s internal bitmap format.Creating Custom Adventures for Birthright: The Gorgon's Alliance
Implementing LZSS compression in BRUT is still on my task list. I’ve written out a first draft of the algorithm, which is giving me some trouble. I hope to get that implemented soon. Since I’ve been staring at assembly language far too much, I decided to dig deeper into what we know about Birthright’s adventures, especially how they’re defined, referenced, and loaded. In the future, I’ll build a reference page to make finding some of the technical information necessary for proper level building easier.The Case of the Missing PCX Palettes
The BRUT project is now nearing feature parity with the original RESUTIL application, which feels fantastic. So far, the changes made by BRUT are identical to those made by RESUTIL on a binary level. The only missing feature is LZSS compression. As the test below demonstrates, overriding resources without LZSS compression is still possible. The video is a little choppy, but that really shouldn’t be related to the compression since the game would need to decompress the images to display them anyway. Today, I learned that I am not only much closer to a working decompression algorithm than I thought, but I also made a very bad assumption when starting this project—one that I could have avoided with a little more preparation. When I start a project from scratch or start working on something at work, I plan things out beforehand. I make sure I understand the scope of the work as fully as I can before I write any code. I’ve made far less progress than I was hoping. Part of the delay is just being busy with life. The algorithm isn’t really that complicated. There are some technical things about assembly language that I’ve had to relearn, like how the EFLAGS register works with bitshifting. (Specifically, the carry flag (CF) is relevant to this algorithm.) I also watched a great lecture on LZSS to understand the basics of what the algorithm was likely to do.How I've helped
- Installing Birthright: The Gorgon's Alliance in Windows 10
- Birthright: The Gorgon's Alliance Modding Reference
- Copying links from a specific protocol by default
- Behavior of the Windows COPY command when using wildcards
- Automatically restart a Windows executable after it crashes
- Querying items in Windows' Open With… list
- Changing the New Tab favicon in Firefox
- Opening multiple applications using Windows' context menu
- Removing all Windows wireless profiles except one
- Starting Windows troubleshooters from the command-line
- Replacing the Shutdown command in Windows
- Creating an on-exit command for the Windows command prompt
- Determining through the command line what files are scheduled to run with the Windows Task Scheduler
- Why Windows'
forfiles
command returns mysterious files beginning with~$
- Downloading a website's page source using PowerShell
- Setting the
doskey
command to automatically run for every opened command prompt - Closing a specific instance of Chrome in Windows using the command-line
- Renaming RAR volumes based on their index number