Mirror, mirror ...
Mirror, mirror ...
I am going to give some reflections on some of my journals, starting with this one. This is the last required journal, and I like making them, so it's probably not going to be the last actual one. Sometimes I feel like I come across something important that should be shared, like The Pet-Petter I made, or the C framework object I made, or ValueBlaster. The journal is good because you can't remember everything. I really liked, but had completely forgotten about until I ran across yesterday, my Java VLC-Remoter program I made in the first Java class we took here. It's a good thing I put it in my journal, to remind me to finish it, that will be a handy program. Plus, sometimes I like to share things I learned which I find amazing, even if they're known, for example, one very important thing probably lots of people already know about, but I personally hadn't learned until this curriculum was the JavaScript for - 'of' keyword. I've been programming in JavaScript for at least 16 years. It's my favorite language, even above Java, my original favorite language. But it wasn't until I took Professor Wisneski's excellent Introduction to Databases course here at CSUMB, CST-363, that I saw a JavaScript for-loop using the 'of' keyword. I knew for - in, which gives you each index, and of course the old standby for(;;). But for-of iterates the loop presenting each object property itself, directly, instead of each index, a very, very handy syntax that, even after sixteen years of programming in that language, and it being my favorite language, I still had not seen. Since I'm very familiar with JavaScript, when I saw this in use I immediately recognized it as an indispensable syntax I just hadn't seen yet for whatever reason, picked it up and took it and ran with it - that's by far my go-to loop when I write in JavaScript now, ever since this course. Seems like a good thing to share.
So to put it differently, you could do loops in JavaScript lots of different ways:
for(let i=0;i<x;i++){/* i is an index of something probably */}
// pretty common syntax:
for(i in some_array){/* i is an index of the array some_array */}
for(e of some_array){/* e is one of the elements of the array some_array */}
The thing about the index methods is most of the time you're using the index to get at the element. Getting at the element directly with the 'of' loop is the simplest way, but I didn't know about it until Professor Wisneski highlighted it for us in use accessing database fields, during our Introduction to Databases course here.
The entire subject of data science was entirely unknown to me until this curriculum, even up until the day of orientation in that course. Immediately I was both impressed and overwhelmed, subsequently de-overwhelmed as I learned the amazing capabilities of simplification built into data science, most excellently taught to us by Professor Ergezer here. Data science I didn't even know of much less anything about - now I feel like that's one of my favorite things to experiment with. It's definitely one of my favorite additions to my knowledge. And thanks to our final project here in CST-499 I have my own web interface I can use to interact with it, ValueBlaster! And ValueBlaster can use JavaScript 'of' and I can combine all my favorite paradigms together.
I used to do that with Java a lot, create apps that were simultaneously Applets and JNLP apps and plain desktop apps, but the only thing about Java is the app better be essential, because nobody wants to have to 'allow' an app to run on their computer, like you do with a JNLP app or an Applet with permissions. That's why I started learning web programming, and it's sort of my preferred paradigm now, although I still like desktop apps, Java swing, Python or Perl with Tk.
I kind of dead-ended in MIPS this week trying to make an array and pass it out of a function - my last lab - sort of frustrating. I really wanted to like MIPS but I feel completely stuck. I got pretty far, I even thought I had that functionality, but I'm starting to think I might have actually not, and the paradigm is so different from what I'm used to, although I got to the point I could flow quickly programming it, it's still extremely enigmatic when I don't know how to do something, like create and pass out an array from a function other than main. The thing about MIPS is, we all know it's not for using, it wouldn't be smart anyway to keep programming in it. So that's frustrating too, because I almost liked it, I wanted to like it, I kind of did really. But there are so many things in life, it's hard to say, okay, today I'm going to do some assembly MIPS programming. I hate to say it, but I'm probably not going to do that, unless I find a good reason for it. C on the other hand, Arduino uses it, so I'll probably be doing some C programming, next! Arduino projects, here I come! In fact I already ordered a bunch of parts, a water pump, some relays, everything's getting automated now.
But, actually, even before that, my cats took over on the carpeted dog stairs I made for my dog two days ago, so I'm going to have to make a carpeted cat-pyramid in the backyard - and stat.
The last journal was the one I did just the other day, about there not being that much left. "...done .... almost!" Making the video was sketchy, and so was the presentation, and by that I mean, it seems like Murphy himself was waiting everywhere to impose his law anywhere he could to put the kibosh on progress, in any way possible, squeezing his little toes into the cracks. But we all made it! So all's well that ends well, and super, super awesome!!! Everyone did such amazing projects, it was so cool to be there to see and even cooler to be actually be part of it all. What an amazing experience.
The one right before that was on the video we all made for our projects, more specifically on my video I made for my project. I am still going down the list from memory, I'll check and make sure. The video one was probably - oh that's right - I remember - making it really didn't start off good - bad in fact - but as always, I turned it around, (I actually installed a new OS to do it, which was Ubuntu Media!) Video production begrudgingly completely grew on me (Kdenlive! Audacity! Zoom Video Recording! (Another screen recorder, I forget what it was called, but I found built-in to Ubuntu Media!) ) and I hate to say it, but I super had a blast in the end, making the video. I wish I had a better song for it, to make it actually good. Ubuntu Media is 'low latency'. Which is why it worked so great. So, ironically, the brief history of the OS I was on right before that, I had installed it, tried out some guitar software I had found - GuitarX - got it working perfectly - exactly how I wanted - but there was a 1/4 second of audio latency - super annoying to play the guitar with - so I gave it up. I have better things to do - it was just a quick test-experiment to see if I could get a toy-guitar to sound like Metallica or something - yeah, I can, but not until I found Ubuntu Media could I do it latency-free. So I thought installing whatever sound software, pipewire and GuitarX, had messed up my OS, I thought this while I was video editing for this class, because it wasn't working. This was what prompted me to decide to try installing a different OS a week or two ago. Mint had been rubbing me the wrong way anyway, because the latest version moved save buttons to the top right of dialogs, without asking anyone. Long story short, I thought I messed up my computer by installing GuitarX, so when I went to make the video for this class, it wasn't working right, so I stumbled on Ubuntu media, which had GuitarX installed by default, and working completely latency free. Just a funny circle-back, not particularly relevant, other than it's weird it seemed to connect in a circle like that, and it was neat to finally get a quick, resistance-free conclusion to the experiment I had been working on a few months ago, with the toy guitar, GuitarX, and pipewire. The song in the video wasn't any guitar, just my computer keyboard and some piano software I found that could emulate guitar-strings. I played the notes, duplicated them so they were cords, adjusted them so it sounded real and it almost came close to sounding not terrible but overall, but, I know I'm no sound technician or musician, just a programmer that likes complete interfaces with all the bells and whistles.
The journal before that was about ValueBlaster. It's a really great addition to the collection. I've still got every program I've ever written since I started programming, and that was almost 35 years ago, when I was 12 years old. I started because my vice-principal told my parents I should have a computer, since 'people are starting to use computers now.' So my parents got one off Craigslist or something . . . . except we didn't have Craigslist, so it must have been the 80's version of it, whatever that was (I'm talking about the year 1988 right now) And so my parents met this guy who was doing graphic design/home floor plan layout plans as a business, using a Mac Plus, or upgrading from one anyway. So he sold us his Mac Plus, but he was super, super nice, and didn't just sell us his Mac plus, he also set us up with like every side-accessory you would want. We had had a Commodore 64 prior to that, and now that I think about it we were doing some tel-net something-or-other with it, but that was hardly programming, just technical computer use. So we got all this awesome futuristic Mac stuff, including the manual to program this program that came with it called HyperCard. Dan, the guy we got the computer from, gave me several programming books on it. HyperCard was a graphical program, alongside the paint program and the word-processor program. You made cards within it like a slide-show or something, and then you could put buttons and text-fields or whatever you wanted and add functionality with scripts, the language was called HyperTalk. It was almost like what web-page programming aims toward, today. The cursor was the browser hand. In fact, I think the web actually got some of its features from HyperCard. HyperTalk - HyperText? Browser hand? I made a paper route tracking program for myself with it, which became a goofy-childish personal pre-cursor to what AccountBlaster is now. But then Jobs killed HyperCard around 1999. Since Jobs turned on HyperCard, I turned on Apple, learned Java, and got a PC. Which I owe to my physics professor at the time, Professor Knight at Cal Poly San Luis Obispo. He mentioned casually he had built a Java Applet to teach us how a physics principle worked. That clicked with me, plus Java was kind of all the rage at the time, judging by bookstore content - books about it were all over the bookstore near where I lived. Java is awesome - I love it - I can do - ah - almost - everything I want with it. (There are some syntax paradigms I don't understand - why it doesn't have, like, multiple inheritance, and I don't understand why they had to add erasure instead of just doing it a more Java-y way - I don't know all the exact implementations, but that's just how it seems to me, from a perspective of language use, and knowing just the basics of how the language implementations work.)
I reflect that ValueBlaster is super awesome and I will carry it into the future as a super awesome addition to my always growing arsenal of super awesome programs I've made through the years. The best of which is always going to be AccountBlaster BTW. My game, SBR could be a close runner-up, if I get it going again, but it will never surpass the usefulness, utility and uniqueness of AccountBlaster. ValueBlaster could even become a funny add-on for AccountBlaster so its future is very, very bright. It's such a fun program, and interface, and tying it in with such a powerful paradigm of data science, its utility will surely bloom.
The Journal before that was probably 'The Heat is On' and it was entitled like that because I had a lot of stuff to finish right about then. I had a video of my pot of water boiling, as a possible sound effect, so that was what gave me that idea.
Before 'The Heat is On' was probably the Dawn of the Pet Petter and maybe the other two about Arduino get-ahead time. That class was a lot too, having to learn LaTeX, MIPS, and a bunch of obscure (to me anyway) topics. But it was an excellent, indispensable class, and I'm really happy about what I learned in it - especially the Arduino applicable knowledge - which is just pure gold.
I might have to look now. I just looked, those are all in the right order.
Before those were the ones about Java Software Engineering class, taught by Professor Wisneski. In that class we learned the Spring Boot framework with Java backend and a React front end. And we used MySQL database for content within the site we built. The Spring framework handled a really significant portion of the database accesses so it made database use very easy, to the point we didn't even have to write queries. All we really had to do was run the automatically generated database install code generated by the framework when you write Java objects for data into the program. It's pretty amazing really, and a really great paradigm to work with. In addition, we learned some other indispensable paradigms and tools in that class. I learned about the tool called Postman, which would have come in extremely handy many years ago, had I known about it. It's half your site in a tool, so you can build one half, test, then build the other half, knowing the first half is already working. Web development is funny in that generally speaking there are two halves, the server half and the client/browser half. The client browser half is what you see on your computer screen. The server half can be non-existent - to an enormous cluster-cloud of parallel-running server computers serving some enormously complex application or suite of them or who knows what. One example of a non-existent server is AccountBlaster. Using a non-existent server program is an asset because it cuts security risk. AccountBlaster is a web app, but its use is closer to how a desktop app works, you save your own files on your own computer. That cuts out any possibility for the server to get breached - since there's no server, it's just an HTML app, running sole-ly in the client.
Another highly invaluable tool we learned in Software Engineering class was Git - and Git I'd wanted - needed to learn - for forever. The instruction we got in this class to teach us Git was invaluable and I can finally now use Git effectively like I've always wanted.
Eclipse is amazing but I'm not sure I prefer it - It's great - it's not going to beat my all-time favorite though, Notepad++, which was also a recommendation in this course, specifically used in our front-end development in the React.js framework.
React is another essential tool I learned in Software Engineering class. Also Java server programming, in Spring Boot.
Another essential tool I learned in Software Engineering class was the Google OAuth login methodology/how to set up Google OAuth login. I needed that - I had facebook for a while - then they changed it - it got complicated - and people stopped using facebook, too, it seems like, at least not to the same degree we all used to anyway, so it's really great to have a second major social login to be able add to web apps for authorization.
CST-499, Capstone class actually taught me session variables. I've known about them for years and always resisted using them for anything, but ValueBlaster needed data stored somewhere between requests, and sessions turned out to really be the way to do that. So it was good for myself to be able to distinguish at least one situation where you would definitely want to use session variables, and how to use them. I used them in a very bare-bones way, not even requiring any particular log-in, which was my desired methodology. So that way, the server can distinguish clients, even though they aren't logged in per-se, it saves everyone's stuff separately and securely (not that there's anything personal or sensitive anyway, but, client data is all stored separately in each client's separate session).
One more important thing I learned in Software Engineering class, I guess for the second time, because we also learned it in either database class or Java I class, is JDBC, a methodology of connecting Java and MySQL. In Software Engineering class we connected them in a Server Environment, I personally connected them with pure Java JDBC and then in the course we used the Spring Boot framework to connect them.
Before Software Engineering class was Logic class, a very exciting class, I really like doing proofs, and this class really taught us a lot about them. Exactly as I said on my ILP site, this class taught me: "To think a good and long time about something you can't figure out!! The first order logic rules are deep, in that you might find unexpected nuances of the functionality of the meaning of the symbols we use. Even more specifically, I learned that, for example, when you existentially generalize, because it's <i>existential</i> generalization, you don't necessarily need to generalize <i>every</i> single term. When you universally instantiate, because it's universal, you are allowed to instantiate to anything you want, even terms that are <i>already present</i>. Those nuances caught me off guard during the class but hopefully I won't forget them! I can't share them because they’re sensitive school work but I saved every proof from the class so I can go back over it all any time I want."
During Logic class I was able to squeeze in three more side classes at the local Junior College, Cabrillo College - Spanish, Political Science, and History from the 1400s to 1865. I want to recognize my history teacher at Cabrillo College, Professor Michael Mangin, for being one of the most phenomenal teachers I've ever had. I started the class not thrilled about the immense seeming workload, reading and reporting back, in writing each day, most days, what we were learning - until I realized the teacher was more than keeping up with us - responding to our work in his own subsequent work, daily, personally, individually, and completely. Multiply that by however many students he had, and if I'm not mistaken, there were around forty. He was asking us to address many topics, in writing, each day - but then he was coming right back to us each day, addressing to us, each topic, personally, in reflection on our reflection. In addition, he is really great at making sure to highlight interesting and important aspects of history so that we can see a wide yet detailed perspective. I've never had such personal attention from any teacher I don't think, ever before, so thank you Professor Mangin for such high commitment to quality of teaching in History class at Cabrillo this summer.
Data science class was before Logic class. I already mentioned it above, I had no idea about anything about the amazing topic of data science until this class started, and now it's definitely one of my very favorite programming topics! It's a really, really very useful tool, and I'm extremely excited to be able to take it with me into the future, as most excellently taught to us here at CSUMB.
Oh no! Blogger's malfunctioning. I've got 85 journals published, and it's choking past # 63 going backward!!! Aaaack! I'm going to post this now and keep writing more after I post. I have every one of these journals myself, if it deleted them, and if it did, that's super not cool. I'm going to publish this for now. Ha, it was just the ol' you aren't logged-in anymore... thankfully.
Algorithms class was before data science, and it was really a blast. We developed Java or C++ programs on Repl.it that did various algorithms. We learned traditional algorithms and had quizzes on them and the assignments on Repl.it were kind of like coding exercises - most of them weren't based on a traditional algorithm but rather practical programming exercises that allowed us to design our own algorithms as appropriate for each problem. In other words, there might be one related to quicksort in quicksort week, but not exactly be quicksort, so we would make it do the algorithm exercise correctly, and we would have to design the specific algorithm to make it work right, perhaps with knowledge gained from understanding how the quicksort algorithm works. If that makes any sense. As I wrote in my journals at the time, the instruction was particularly insightful and enlightening to a really unexpected degree. I had a very insightful Algorithms I class, focusing on traditional algorithms, and Algorithms II class was equally or more insightful, going more in the direction of teaching us to design our own insightful algorithms, having gained knowledge from the known traditional algorithms.
I mention quicksort there too because I remember the explanation for quicksort in this course being particularly enlightening. I knew about it and I knew how it worked but the way it was explained to me in this class, by Professor Jia, really clicked with me, and helped me to really actually understand it like I had not, before that.
Before Algorithms II class was volunteer helping class and Graphics Design class. Volunteer class wasn't so bad, and I got to volunteer at my very favorite local used electronics outlet. They are super nice and do food donations too, and all kinds of other recycling as well, a community oriented non-profit recycling center called Grey Bears that has an amazing electronics and computer hardware department and staff.
Graphics design class was invaluable and finally taught me Illustrator - and in a way I'm now able to apply easily in the Inkscape program, which I prefer, for being open source. Inkscape (and Illustrator) have always been super elusive to me, and the instruction for this course was really great. It was how to use the tools I didn't know how to use but also how to design right. We learned lots of design principles such as the Gestalt principles and had really fun and exciting Graphics Design assignments. I love art, I'm a terrible artist, computer art is super powerful, much more my style than a paintbrush, and I always need more practice so I'm very thankful for the expert knowledge in Graphic Design we were given in this course. We had Photoshop instruction too, and which taught me quite a bit as well, especially with regard to some of the technicalities, like the distinction between making a higher or lower resolution image, some techniques for fine tuning the colors and shading to make photos look professional and web-ready.
Not only that but the stuff we made in that class is so much fun to show off, because it's graphics, and they're all super fun to look at. I even made one of myself skateboarding and it looks like a movie clip or something, and another one that looks like there's many-of-me skateboarding simultaneously. There was one that came out looking like Trump, perfectly, and I didn't even mean for it to, at first. True art in the making, perhaps, maybe it's a ... one of those things people keep talking about, expensive SVG graphics people sell back and forth, somethin' I forget what they're called. You never heard of...!!??'s people say...I can't think of it. Lil' graphics things people sell around, they made a South Park about it.
JavaScript class! Yes, JavaScript is my favorite language. I'm pretty good at it, but I'm also a student, so not everything was crystal clear at first, no fault of the class, I just wrote something wrong, and didn't see it. And when I got stuck - Professor Lara is like a shark - a good shark - he's on it - he got me unstuck immediately, as soon as I posted in the discussion. And this class taught me an amazing paradigm, I had no idea about before the class - a very, very useful paradigm, one I used on the final project, CST-499, for it's extreme-efficiency in development speed - Node with Express. I ported that to Python Flask in the end, for the final project, but that's the thing - Python Flask is almost exactly the same as Node with Express. We developed on Repl.it which is how I learned Repl.it - and which is an amazing platform - and also which I selected as a platform for my final project. Repl.it lets you start with any one of countless server configurations of softwares stacks, Java, JavaScript, Node, Python, and lets you add anything you want - within software compatibility limits - in your own site - just like you would in any other OS. It's an amazing platform, very versatile, very powerful, free, and very easy to use and understand. I wound up paying them $7 for an 'always on' site which is totally fair, considering it's completely optional - you could even just keep it on manually by using it all the time - the $7 just helps it boot super quick for visitors. Anyways, my arm is getting sore now, but JavaScript class was invaluable. It was another class we walked away with tons of example programs to show off with, too. The sites are really complete, they have MySQL database access, Node with Express server back ends, Express JS server front ends, and of course you can build that all out with JavaScript and JQuery and CSS as far as you want. JavaScript class gave us extensive and very practical knowledge and tools to use, going forward, that I did not have until the class, even with JavaScript already being my favorite language.
Networking Class blew my mind. We learned so much, and one of the things we learned was how immense the networking field truly is. I don't know how many networking courses you need to know everything in networking, but it's probably a lot. This class gave me all kinds of knowledge I didn't have before, including how to use Wireshark, how to use SSH X-Forwarding - an incredibly cool and useful trick that fits right in my toolbox, also the Mini-Net program, a programmable software-network! I had no idea there even was such a thing until this class. You build a virtual network in Mini-Net and then run network tests on the configuration. Some practical tools we learned were ping, tracert, net, nodes, links, dump ... shoot I didn't put it in my blog - that's from memory - I'm going to have to dig it out - there was just a short list of really important and useful networking troubleshooting and testing commands we learned, it was that, but a couple more too. I'll dig it out and get it handy, try and put it up here at some point soon.
The Mini-Net OS was pretty cool. It’s Ubuntu, trimmed, and with networking tools. Super awesome.
C/OS class had some very useful C and threading assignments, I really appreciate the exercises we were given in this course.
Introduction to Databases: I knew the basics of MySQL database programming before this class - enough to make a game that was live for several years with it - but this course magnified my knowledge hundreds-fold. Taught to us by Professor Wisneski. I mentioned it at the top.
Java class was as comprehensive as I can imagine you could possibly make it, very well taught, and, I didn't like the videos we had to make, overall, even though I discovered it was actually sort of fun, and we learned some really great paradigms such as Android programming, team programming, oh and I learned syntax I didn't know too, amazing considering my experience.
In Java class I finally learned the long-overlooked objectInstance.new SubClassObject(); that. I couldn't figure out how to make new subclasses in that context until I saw this in that class, a big DUH moment for me, and I'm extremely glad I know how to do that now. I can't believe I had skipped it over accidentally the first time I learned Java, maybe 24 years ago now. Professor Cecil is a very wise professor, and provided excellent and excellently directed help during the course.
CST-300 gave me something I should have had a really long time ago - but didn't - how to make APA references, and how to correctly format a technical college paper. I'm taking the how to make references knowledge and running with it - I skipped over learning that in seventh grade - I mean I learned it but threw it right out the window - I was a kid - skateboarding was waaay more important at the time - and so re-learning how to correctly make research references in CST-300 was pure gold for me. I'll be using that - all the time now.
Thank you CSUMB and all the instructors I have had, as well as the instructors at the local community college, Cabrillo College. Everyone I did not name individually was also very helpful and super awesome and amazing, so thank you everyone here, and at Cabrillo. This is a long awaited goal, but more importantly, the knowledge I have gained is completely invaluable. I look forward to taking this excellent knowledge I have been given, and doing the best I can to help the world with it, any way I can.
This is it, ValueBlast.Us in an iFrame:
Or if you want, you could visit the site:Now that this journal is posted, my school status is upgraded from 'Done - Almost' - to: 'Done - Maybe'
Comments
Post a Comment