Hey there Internet, how are you all doing?
The week actually went by pretty smoothly, and now that it is the weekend I'm thinking I have some time to chill out and get some stuff done regarding nullshell and thing that I would actually like to be doing.
A lot of stuff has been coming to mind, so I guess I'll just get it all out there.
You guys all know the Python script I have been writing for my English vocabulary quizzes in school, right? I've been working on that project for more than a month now and I never seem to be really satisfied with it. I'm still working on it now, and I'm assuming by the time it's done the script will be more than 800 lines of code or more.
Anyway, I spent some time rewriting it. actually. The thing is the original version I had made was not very extensible; you could add new vocabulary words or lessons-- obviously something I would to fix if I kept on using this little study tool. And then it just happened; it became necessary for me to think through the logic once more and rewrite the code.
The thing is, the original one I had written that lets you 'run-through' the lessons or words was just the engine for testing. That in itself was about 400 lines, and I didn't really feel like it was ever completed. I still wanted to add support for the user to have a random question be asked to him, a series of random questions, a specific question in particular, asking for word-to-definition along with definition-to-word (and that goes the same with root-to-meaning) and more.
Like all 'good' programs: it's never really finished.
But now this new 'extensibility' feature adds a whole 'nother 400 lines of code, and a new logic and organization structure; so I have a lot more revision ahead of me. Woo.
The logic deals with a lot of arrays and integer-communication, and I'd really like to get into more detail on it when I actually write up a section for it in the Code portion of nullshell. You will have to wait for an in-depth analysis and some code!
Now the script is set up to work as a sort of 'interactive-console', where you can type in commands to access the program's features. I myself really like this interface, but that may be because I'm such a command-line guy who prefers the keyboard.
A crucial part of using the command-line though is being able to move around with the cursor keys and use the shell hot keys to clear the screen and prompt, and even hit
Tab to auto-complete some commands.
Now you can probably see what I am thinking.
You can't do all those things inside a command-line Python script.
Yeah, I mean, I guess it could be an idea.
Suppose the 'program' was not one single script or function; but instead lots of tiny programs that each do one thing individually and can communicate back and forth with each other. If each 'command' inside the Python script was a small C++ program that could create a sort of testing environment or workspace within the shell. Maybe a small
bash script would even be necessary to temporarily remove the system's
$PATH variable and replace it with the commands used for the vocabulary 'program' (The more I talk about this idea, the more loosely I use the term 'program' and I think more of 'environment').
That would, probably, require a bit more proficiency in C++ for me. Not a problem! That's exactly what I want, I do these things for the learning experience. But at the same time, I am almost a little scared of C++.
Memory allocation, strict typesetting, yada yada yada. . .
It's become something I have avoided more of rather than embraced now that I work in a more scripting-environment. Python, PHP, even some web-based stuff.
But that on it's own makes me think: the only reason I know so much Python and associate myself with it so highly is because I have sort of surrounded myself with it. I've submerged myself into the language and I let engulf me; I could be thinking about anything and I would wonder how to recreate something like that in code-- in Python.
Shouldn't I do that in C++, as well, and make myself stronger, more knowledgeable and versatile?
So I've reinstalled Code::Blocks and some work with C++ is on the agenda. :)
Make no mistake, though. Despite my discouragement and spiel with C++, I can't ignore the fact that the Python script is still my project and I can't just drop it. I'm continuing to work on it and will complete it. It just takes time.
Having dinner with fellow geeks, programmers, and IT gurus can be pretty beneficial.
The conversation is almost always far from the norm. One of the topics I found the most interest in was a language I had never heard of: Visual DialogScript.
I am sure you can guess by the name it is a Windows scripting language, much like batch or Visual Basic Script. Except this peculiar little language allows you access to the Windows API and GUI suite-- a really cool thing.
In all honesty, I am dying to play with this language. There are plenty of times I have assigned a school project, and you know, I'd like to make a program for it just because it is tons of fun, fast, and can display information in a really elegant way. But most people are used to mouse-clicking. Not typing strange commands into a bulky black box that we would call a command-line. GUI is what I'd need to actually bring my work to a different audience. I prefer to be showing off to the people that can really respect logic flow and understand beautiful code, even if it is in a command-line (where the most power is, anyway!)-- but hey.
I suppose I don't have a decent name for that project. You know it has never came to mind. Hmm.
But yes-- as it turns out, ImageMagick does happen to have a Windows edition, and I could convert still images to an animated
.gif; making the idea of the GM Animator perfectly possible. So there you have it, a new idea and a new project.
Now, onto the topic I have been wanting to discuss most, although it may be the most frustrating and discouraging project.
My Ubuntu 11.10 installation managed to break my Windows 7 installation on the new machine I got for Christmas.
I would say this is my fault: I did remove a partition Windows was using as a back up when I was trying to install Linux.
See now this is a sickly funny story, because when I had been running Wubi (off Windows), Windows kept breaking Linux. Now, with the real installation disc (Linux), Linux keeps breaking Windows. The two just don't play nicely with each other.
But Wubi was at least manageable, I knew what to look for and avoid. But with this, Windows throws a fit no matter what.
Windows will come to the typical Windows 7 "Starting Windows" screen: black display, with a usual animation that 'builds' the Windows logo. See now, the animation would not start. Windows would not start.
So I reboot. Try it again. It gives me the choice to try Windows one more time, or go to the Recovery tool. Tried Windows once more: no cigar. Time for the Recovery session. That scans, reminds me once more my computer won't start (Thanks a lot Windows, I already know), and offers me a choice to do a System Restore.
Sure. Why the hell not? I just want both my operating systems back. It does it's thing and recovers, and boom, Windows is back. It loads without a problem, and I get my desktop back, I can go about my business. Next time I go back into Linux, it dies again. System Restore. Get Windows back. Go back to Linux to program. Windows dies. System Restore.
Chyeah, thanks a boat-load, Windows. I can't access the operating system whatsoever at this point.
Now HP has loaded the computer with a ton of recovery tools and that sort of thing, and I mean, Linux still runs, so it's not really a big deal. I would just kind of like to have Windows back. I have some projects and ideas I would like to look at and initiate in that environment.
So I may restore the machine back to it's original factory settings. Wipe out Linux (again), restore Windows (again). Then re-install Linux with Wubi (again again) to have both operating systems run okay (again). Bahhh.
But this kind of brings back the problem with Wubi- I am limited to 30 GB of hard drive space, I don't have much storage.
This time I think I have a plan, though.
The Windows file system is mounted. . . so it's a possible solution to set my Linux user's home directory to part of the Windows system: giving me access to all of my hard drive. It mixes the two Windows and Linux environments together (and I can't say I am too pleased with that), but it works. It almost makes me feel like I am running the inverse of Cygwin.
So the next few days of my weekend could very well be eaten by reinstalling and reformatting, rather than actually working on the Python script like I had intended on. Ugh. But if it has to be done, it has to be done. What ever prepares my environment for more and more production!