ticalc.org
Basics Archives Community Services Programming
Hardware Help About Search Your Account
   Home :: Archives :: News :: KnightOS Kernel 0.6.1 Released

KnightOS Kernel 0.6.1 Released
Posted by Ryan on 18 May 2014, 21:38 GMT

A couple of weeks ago, Drew "SirCmpwn" DeVault released a very impressive, long-dreamt-of package. That release? Why, it was KnightOS, of course! It doesn't take a lot of digging to be able to tell that KnightOS is serious business and marks a major milestone in the places that calcs can go. As such, we caught up with Drew to find out some more about the project in addition to getting to know him better. Click through to the discussion for the full interview!




Ryan:
Thanks for taking the time to do this. I'm very excited about KnightOS in case you couldn't tell :)

Drew:
What a coincidence! As it happens, I'm very excited about KnightOS, too! I always appreciate the exposure, so thanks to you for approaching me.



Ryan:
Let's start with some biographical information. Where are you from, what do you do, and how did you get into calcs? Who are you?!

Drew:
I'm Drew, aka SirCmpwn, hailing from Colorado. I spend my days writing a ton of open-source code, some of which happens to be for TI calculators. Like most, I got into TI calcs by being a tinkerer at heart and using one while I was in high school.



Ryan:
Could you start by giving us a quick description of what KnightOS is for those who are not familiar with it?

Drew:
I can! KnightOS is an attempt to produce a killer OS for TI calcs. It completely replaces TIOS with something completely different. The biggest goal here is to see just how far we can push these calculators, and with KnightOS, we can push them pretty far. It's got multitasking, dynamic memory management, and a full blown file system like you have on your computer. It feels a lot like Unix, if you're familiar with it.



Ryan:
You've been doing some very interesting work with some rather low-level OS-ish properties of the 83/84+ for a couple of years (SmileyOS and WFRNGOS come to mind). Can you talk a little bit about how you started tinkering at this level?

Drew:
I've been working on KnightOS for almost 4 years now. All of my operating system work, including WFRNGOS and SmileyOS, is based on KnightOS (literally - those OSes are both mostly reused KnightOS code). Once the signing keys were conquered, someone had to write an OS with our new power. I thought up ambitious goals and started working shortly after the private keys were factored.



Ryan:
What has the planning process been like for this project?

Drew:
Planning for KnightOS has been haphazard. I have this vision of the perfect calculator OS in my mind, and KnightOS is far from it. As a result, I keep wanting to throw out parts and do it better. Several people have kindly asked me to just finish the project instead of trying to make it perfect, and I've mostly fallen in line with this idea. There is a roadmap to 1.0.0 and I plan to stick to it. The *really* cool stuff can come after the initial release.



Ryan:
What have been some of the largest challenges in creating this project? If you could go back in time, what (if anything) would you have done differently in the creation of KnightOS?

Drew:
Though there have been loads of roadblocks, the one that immediately comes to mind is adding support for the TI-84+ CSE. I was starting to really break new ground here; working on an undocumented system with lots of subtle differences. Just getting KnightOS to boot up on these things took a lot of effort, and even now I'm trying to sort out weird behaviors that only happen on the CSE.



Ryan:
How do you envision KnightOS being used or built upon by other people in the future? Any advice for people who would be looking to do so? It's a rather impressive project thus far, which seems like it might make entry into this area a bit daunting for others.

Drew:
One of the goals of KnightOS is to be a great system for programmers to hack on. Any assembly programmer should have a great time working on it. We've tried to publish extensive documentation on knightos.org, but I would strongly suggest hanging out the IRC channel (#knightos on irc.freenode.net) if you hope to build stuff with KnightOS. Since it's not done, you'll run into some problems that you'll want to ask questions about.

However, assembly programmers aren't the only ones who can help. We have a painful lack of contributors who are *not* programmers, in fact. If you don't think you can help write code, you can still participate in discussions to shape the OS. You could also help write documentation, spread the good word, or do a number of other non-programming things to help out.



Ryan:
Switching to a more personal focus, how and when did you first get introduced to programming?

Drew:
I was lucky enough to grow up in a programming household. My entire family writes code, and good computers were always nearby for me to hack on. That being said, a family full of coders is a busy family indeed, so a lot of the time I was just exploring on my own.



Ryan:
What types of programming have you done aside from calcs, and on what platforms?

Drew:
I'm a full-time web developer, as a matter of fact. I also do a ton of cool open-source stuff in my spare time. Some of these projects involve things like Minecraft reverse engineering, Arduino hacking, writing libraries and development tools, and anything else that attracts my attention. In the past few months, I've been spending a lot of time improving MediaCrush, an open-source website.



Ryan:
What would you say is your strongest programming skill, and what is your skill that needs the most work?

Drew:
My strongest skill is probably my ability to think about code when I'm not writing it. It's a useful skill. When I drive home from work, I'm already thinking about the next feature I'm going to add to whatever. By the time I sit down to write code, I know what I'm going to write.

I need to work on my perfectionism. I know that's a stupid answer, but in this case it actually is a real problem. I end up getting dissatisfied with how parts of a project are done and throw it all out, then rewrite entire subsystems from scratch in a slightly better way. As you can imagine, this doesn't bode well for deadlines and tends to annoy people who are waiting on new features instead.



Ryan:
What project or projects are you going to be working on in the near future, and what is your dream project?

Drew:
I'll keep on building whatever suits my fancy for a long time. I can't say for sure what the future will look like for me. KnightOS will always have a place in my schedule, though - it is my dream project. When I work on KnightOS, I get to design and implement some really cool systems, which is something I enjoy doing. It's not incredibly obvious if you look at KnightOS from a distance, but a TON of work has gone into the foundations of the system and it's really looking good.



Ryan:
Do you have any advice for budding programmers?

Drew:
Write and contribute to open source software. It's really important. You will be scrutinized by experienced programmers who can help you learn where you can improve, and will give you pointers on the right way to do things. Make a GitHub account and send a pull request to a project you're interested in. Try to offer something of value, though, don't just write code for the sake of writing code.



Ryan:
Anything else that you would care to share with the readers?

Drew:
The thing that's most important about KnightOS is that it's open-source. A consequence of this is that it's built by a team, not by an individual. If you're interested in it, don't just watch it from the sidelines. Come join us in IRC and talk about what you want to see in the project, or try to learn more about the direction it's going. If you have ideas, share them!

I would like to mention, though, that I always get sad when I don't notice that someone joins the IRC channel until after they've left. Stick around a while, we aren't paying attention 24/7 and it would be a pity if we didn't hear your ideas because you left too soon!






Thanks, Drew! KnightOS is already looking incredibly robust, and we're very much keeping our eyes open for continued development. Keep up the great work!

  Reply to this article


The comments below are written by ticalc.org visitors. Their views are not necessarily those of ticalc.org, and ticalc.org takes no responsibility for their content.


Re: KnightOS Kernel 0.6.1 Released
Travis Evans  Account Info
(Web Page)

Wanting to throw stuff out and rewrite it from scratch again is something most of us coders experience, I think, including myself. A while back, I did read some articles on the Joel on Software blog which intrigued me (see Web Page link for one in particular)—the argument is that it's perfectly possible to fix and refactor things one small step at a time instead of rewriting it all from scratch.

This is an idea I've since been experimenting with. It feels tougher at first, but seems to save time in the end, and you don't end up reinventing and re-fixing the same (and new) bugs over and over. :-)

Reply to this comment    18 May 2014, 23:03 GMT


Re: Re: KnightOS Kernel 0.6.1 Released
Merthsoft  Account Info

I find that refactoring piecemeal is almost always the better route to take rather than throwing it all away and rewriting. As you mentioned, sometimes bugs you've already fixed will pop back up because of corner cases you forgot about. Granted, using unit tests is a good defense against that, but sometimes things get overlooked. It's easier to hold in your head the couple of small pieces you're refactoring than the whole suite of things when rewriting from scratch.

Reply to this comment    19 May 2014, 21:38 GMT

Re: KnightOS Kernel 0.6.1 Released
DJ_Omnimaga Account Info
(Web Page)

What I am interested the most in is if we will finally see a fully completed third-party TI-Z80 OS useable by the average programmer, including high-level language users, on which it is easy to port programs from the mainstream and official OS?

Reply to this comment    18 May 2014, 23:05 GMT


Re: Re: KnightOS Kernel 0.6.1 Released
Drew DeVault  Account Info
(Web Page)

There's a lot of foundational work to be done. KnightOS is currently over 16 thousand lines of code and almost 4 years in development, and it's still not read for average users.

However, once the foundation is in place, there are plans to make it more accessible to the average programmer. A Python-like language is planned, which should be easy to use.

Reply to this comment    19 May 2014, 05:44 GMT

Re: KnightOS Kernel 0.6.1 Released
ThunderBolt  Account Info

This is a really cool project and I am glad I might finally be able to help with some aspects of it! I imagine that once 1.0.0 is released, there will be a bunch more assembly programmers on board to add in all the awesome features!

Reply to this comment    10 June 2014, 22:53 GMT


Re: Re: KnightOS Kernel 0.6.1 Released
Chickendude Account Info
(Web Page)

I'd love to help port some programs (games) over. I also can't wait for a 1.0.0 release.

Reply to this comment    12 June 2014, 00:13 GMT

  Copyright © 1996-2011, the ticalc.org project. All rights reserved. | Contact Us | Disclaimer