Sunday, April 21, 2024
Why Does LRCC Gatekeep Its CompTIA CE Classes
Thursday, April 18, 2024
ITP100 Capstone Project
ITP100 Capstone Project criteria is up.
Right now all you can see is the rubric for grading but, there's enough information there that you can start your pseudo coding for the modules your going to create. You should be able to start coding too, you'll just need to adapt your code to whatever requirements we find once the project is unlocked Monday morning. This information is currently available to anyone in the class and you can access it here: Rubric for Capstone Project (you must be logged into your school account to see it) or just clicking on the announcement in Canvas. If your like me and use the weekend to try and get the majority of your school work done this is a big help being able to plan your logic out a few days early.
I'm assuming the project is going to be in Java (since that's what we practiced on the most), but I couldn't tell from what I read. Feel free to share any insights you have below.
Edited: 4/19/2024 for brevity and clarity.
Edit: 4/21/204 -
I've got to say that I'm loving this project (I'm saying this with sincerity even though I'm describing my issues below). I feel like it's really forcing me to think and learn. I've had to go back and erase half my code because something I did created an error that I couldn't figure out how to fix. The erasing, rebuilding, and trying again and again is helping to cement things in my mind in regards to how things work - all this and the project technically hasn't even opened up yet (opens up tomorrow). Do I think I'm competent in coding? No. But I'm getting better. I can look at what I've done and understand it. I can look at it and see it's missing something. When it's throwing a compilation error I'm getting better at identifying the error and (hopefully) correcting it. I've realized that my original outline was inefficient and found a way to improve it doing multiple nesting and if statements.
Wednesday, April 17, 2024
Unlocking True Digital Ownership Through NFTs and Blockchain
Unlocking True Digital Ownership Through NFTs and Blockchain
In the physical world, ownership is clear - when you purchase a book, CD or DVD, it belongs to you. You can lend it, resell it, or even misplace it without fear of it vanishing forever. But in our increasingly digital age, the ownership of virtual goods has remained limited by licensing restrictions and reliance on centralized platforms.
That could finally change through harnessing blockchain technology and non-fungible tokens (NFTs). This revolutionary approach mints a unique, secure token on the decentralized blockchain to represent verifiable ownership of a specific digital file - be it an ebook, movie, album or other content. Recorded in an immutable public ledger, the NFT acts as a certificate proving you as the singular owner of that digital copy.
The Limitations and Failures of Today's NFT Landscape
As revolutionary as the concept of NFTs sounds for enabling verifiable digital ownership, the technology's initial entry into the mainstream has been marred by failures and misuse. The first major wave of NFT projects placing crypto asset links on digital art, video clips, and other media revealed critical shortcomings:
Speculative Overhype - Rather than practical ownership use cases, most NFTs became vehicles for rampant speculative investing and wildly inflationary pricing bubbles.
Lack of Utility - Beyond serving as artificial crypto-based collectibles, the majority of NFTs failed to convey any tangible rights, utility or functional ownership over the underlying digital goods.
Scaling Obstacles - With most NFTs minted on the energy-intensive Ethereum blockchain, technical and environmental scaling challenges arose for onboarding digital ownership at a mass consumer scale.
Legally Dubious - Many NFT projects raised intellectual property concerns by tokenizing content they didn't actually have full licensing rights for long-term commercial use.
These issues exposed how the initial NFT wave was greatly disconnected from enabling any legitimate semblance of practical digital ownership rights. They became an unruly speculative playground rather than foundational ownership layer for virtual goods.
Realizing the True Ownership Vision
In order to unlock NFTs' transformative potential for representing authentic digital ownership, an entirely new approach is required that avoids these pitfalls while encoding the key principles:
The Core Concept and Key Principles
At its core, an NFT-enabled digital ownership model aims to firmly establish and enforce property rights around virtual goods that have been sorely lacking:
True Ownership - Unlike standard licenses, an NFT represents authentic ownership over your digital item with the right to resell, transfer and lend it out.
Portable Access - Content tied to the NFT becomes a transferable asset you can access without relying on any single distribution platform.
Decentralized Rights - No central authority, app store or studio can unilaterally revoke access since ownership is encoded on the blockchain.
Open Marketplace - Owners gain the ability to buy, sell or trade digital NFTs on an open peer-to-peer marketplace enabling legal "secondhand" transactions.
The Freedom and Benefits of Legitimate Ownership
By fundamentally shifting digital media towards this verifiable ownership model, a whole new set of freedoms, revenue streams and use cases open up:
Resale/Inheritance - Just like physical goods, your e-books, movies, games and other digital files gain real, transferable value that can be resold, gifted or inherited.
True Lending - Easily and permissionlessly lend digital goods to friends, family without breaking any license terms as you temporarily transfer the associated NFT. Also applicable with public library lending.
Secondary Markets - A thriving, standardized secondhand market could emerge for digital content resales with funds going to both owners and the state (through sales tax)
Data Portability - No longer locked into a proprietary ecosystem, NFT ownership separates content licenses from access itself, making files freely portable across devices and interfaces.
Consumer Rights - NFT ownership aligns incentives in favor of true customer property rights, rather than limited licenses that grant few protections from loss of access.
Rather than blockchain-based fungible assets, these NFTs would be fundamentally architected as non-fungible licenses and ownership credentials issued through a new creator-partnered ecosystem.
New Revenue Models - Content creators and platforms can explore new revenue streams within the boundaries of legitimate digital ownership principles. Rather than demanding cuts of secondhand sales that would violate first-sale doctrine, their income opportunities emerge from other value-added services around the ownership ecosystem itself.
This could include rental fees for commercial lending services that provide temporary access without transferring ownership. Subscription models allowing users to access a catalog of content they don't fully own. Initial sale fees when minting new NFTs linked to their copyrighted works. And potentially additional services, certifications or utilities built atop the digital ownership platform. The key is allowing creators to find sustainable revenue flows without infringing on the public's right to resell their legitimately owned digital goods person-to-person without intermediaries taking a cut, per first-sale doctrine applied to physical goods today.
While seeding this revolution will require overcoming technical obstacles and driving mainstream adoption, the promise of bringing the idea of genuine digital ownership to the world of virtual media is an exciting frontier. Just as blockchain upended digital finance with cryptocurrencies, NFTs could permanently transform how we interact with and own our digital content and goods.
By learning from the failures of the initial NFT boom while adhering to true digital scarcity and ownership principles, a more thoughtful and sustainable path can emerge to realize NFTs' promised ownership use case for digital goods.
The Limitations of Licensed Digital Goods
While exploring how NFTs could enable legitimate digital ownership, it's important to underscore the restrictive nature of today's licensing models for virtual content:
Limited Financial Rights - Standard licensing means you don't actually own your digital purchases in any tangible way. You cannot resell or transfer them, nurturing a sense of disposable rentals rather than property.
Risk of Lost Access - Content platforms can revoke your access at any time for Terms of Service violations or if they go out of business. Unlike physical media, your purchased item can effectively disappear.
Copy Protection Overreach - Draconian digital rights management (DRM) measures restrict basic lending and personal use rights that are taken for granted with physical goods.
Proprietary Ecosystems - Different e-book, movie and music stores create fragmented digital libraries stuck in multiple incompatible ecosystems rather than unified ownership.
Unclear Preservation - With limited ownership rights, the long-term preservation of digital libraries faces uncertainty as licensing models and technologies rapidly shift over time.
This restrictive licensed approach creates an imbalance where customers have little certainty over their purchased content compared to the latitude of true ownership. NFTs and blockchain could help realign incentives.
As we increasingly exist in digital worlds and economies, tokenizing portable ownership of the virtual items we purchase could one day feel as natural as physical possession does today. The foundations for that future may be getting laid through emerging NFT and blockchain use cases.
By replacing temporarily licensed access with authenticated blockchain-certified ownership, NFTs could help restore a sense of true custodial rights over one's digital purchases. Just as cryptocurrencies empowered individuals with self-sovereignty over their money, tokenized ownership through NFTs could become the deed codes to the virtual items we acquire.
As we increasingly exist in digital worlds and economies, tokenizing portable ownership of the virtual items we purchase could one day feel as natural as physical possession does today. The foundations for that future may be getting laid through emerging NFT and blockchain use cases.
People have been looking at NFTs incorrectly since their inception. They are trying to make millions off of a few things when they should be trying to make a few dollars off of trillions of items. At the same time beneficially conferring property rights to digital items. It's a big miss by industry thus far. I'm talking at you Mr. Wonderful.
The core concepts of this blog post are mine. I did use Claude Sonnet 3 to assist me with fleshing out my ideas, assistance in articulation, and in organizing the post.
Tuesday, April 16, 2024
Java Exercise 4-1 Instructions
Thoughts On and Instructions
For Successfully Completing Exercise 4-1
We were assigned a java programming exercise in my Software Design class the other day. I started doing it the other night after a long day of work and studying. I had no 'plan' when I started. I took some code I had created earlier from Chapter 4 and tried to modify it to fit the assignment (Each of the chapters has a "You Do It" section where they instruct you in a step by step fashion to write code that is relevant to the material you just covered in the text. It's not necessary to do the coding, but I do it every time it comes up and save it in a library of code on my laptop). I found it overwhelming and just couldn't get it. I gave up that evening feeling extremely dejected.
I woke up in the morning and decided to tackle it with a set of fresh eyes. My first problem from the night before was that I just went in and tried to 'code' the exercise with no game plan. This is where things started to get better in the morning. I went back and found the relative text in the textbook that delt with what we were being asked to do and wrote a set of directions. Afterward, I refined the directions to make them easy to understand and to make it so someone who is familiar with the class should be able to complete the lesson using them (modified them for brevity and clarity). They are below.
What I would say I learned from this is that going in without a game plan is a potential path to failure. If I was good, or at least better, at coding I could have gotten away with it. But I'm not. Using pseudo code would have probably been best from a coder's perspective. But, I'm not a coder and I work better when I can set things out with explanations and a clear set of stepped instructions. I thought I was familiar enough with the material that I could just 'modify' my previous code and get it to work. I was not.
I did not complete the whole exercise (the last step). I ran out of time to tackle that step. And, to be honest, I was just so happy to get the first part done which put me in a 'B' letter grade range that I was okay with not finishing the last step.
One of my issues with coding (to date) is that I just don't remember the form. I constantly have to look up the correct way to write something. I'm thankful that my ITP100 class has been open book for everything. If I had to do any of the requirements from rote memory I would be in a bad position. The other feature of the class that has been good so far is that only 1 assignment (midterm?) was timed. Without a time limitation I'm free to look up answers to make sure I've got it correct. Also, if any questions we have in quizzes or tests have code questions in them, the lack of a timer on them allows me to put the code in an IDE and check what I think the outcome should be with what it is in reality. That has saved me from an incorrect answer a couple of times.
(Tasks
1-5) (pages 119-124 in Java book)
1. In codespaces it's important to follow the instructions (tasks 1-6) step by step. I normally hit the 'check my grade' button to verify a task was done correctly (it's Cengage so that doesn't always work).
2. Use proper java conventions when writing out your gets
and sets (the codespaces doesn’t want to give you credit if you don’t).
3. You know how to write a class
public
class ThisIsAClass
now create
one for the Sandwich class
4. The instructions give us the 3 variables (fields) we’re
going to use. After writing your class, you must declare your variables. Part A
of the instructions gives you all the information you need to complete this.
double price;
String mainIngredient;
String bread;
5. This last step will accomplish tasks 3-5. Once you do 1, you just
have to repeat it 2 more times, modifying it for each data field. We are
basically creating a method for working with each field (I’m trying my best to
use the correct vocabulary here; I may be wrong in the terms I’m using but my
output for the code is correct.)
A method is either public or private. I’m using public
because I don’t think I’m creating new objects and I’m not worried about hiding
data. We’re going to ‘get’ it first, then ‘set’ it. I’m going to use the words
get and set together with my data fields. Remember this order: ‘get’ it, then
‘set’ it. 2 methods for each field. Start like this:
public String getMainIngredient() to make it easy to follow,
and in what I believe is convention, we’re just adding ‘get’ to mainIngredient using
the camel casing format and we’re going to ‘return’ the variable. It should
look like this when done:
public String getMainIngredient()
{
return mainIngredient;
}
After we ‘get’ it, we need to ‘set’ it. So now we create a
similar method for setting. We’re going to public void setMainIngredient(String
newIngredient). What we’re doing is
taking the input that we got from the prior method and setting it into are
mainIngredient variable. It should look like this when done:
public void setMainIngredient(String newIngredient)
{
mainIngredient = newIngredient;
}
Just repeat this for each data field (variable) we’re going
to use. If I understand things correctly, the reason we leave the
( ) empty in the get method is because we’re getting or returning user input.
In the set method, we’re now assigning the data that we got earlier to a new
intermittent variable and back to the data field for use in our application.
Task 6 TestSandwich
(workInProgress)
Saturday, April 6, 2024
LRCC ITP100 Review
LRCC ITP100 Software Design Review
I recently took a beginning software design class at Laurel Ridge Community College, located in Middletown, Virginia. The course was ITP100 Software Design and it was conducted by Dr. José M. Nieves. This is my review of the professor and the class:
A quick note before my personal opinions on my
professor(s): I work full-time. All my classes this semester (Spring 2024) were
online with no Zoom meetings or classroom attendance. I think it can be
difficult to judge someone personally when the class is conducted entirely
online. All interactions with the professor are via email unless you schedule a
meeting (in-person or Zoom) due to issues, which I did not.
Another thing I'd like to note is the course title - Software Design. I think the course would better named Intro To Software Design & Beginning Programming. The first couple weeks deal with software design such as the software development lifecycle and pseudo code. A lot of the class is starting to learn the basics of the Java programming language; it touches on Python in a similar fashion.
At first Dr. Nieves writing comes across as a bit pretentious. He is clear (in my opinion) on
requirements in his course syllabus and module outlines. He was responsive to
my emails. However, his initial responses at the beginning were not on point to
my inquiries. At one point, I got terse with him, asking him to reread my email
before replying (not recommended speaking that way to any professor). My patience wore thin after a few improper
responses. Unfortunately, I'm not the most tactful, and my deference for position can be quickly overcome based on my age/ life experience (deference for position vs. deference for age and life experience; in other words I believe that all the professors are due respect based on their position, but I, being older than a typical college student (older than most of my professors) feel entitled to the respect of an apposite response to my inquiries and have no problem stating so as an equal in respect/deference owed due to my age and life experiences). After this
brief exchange, where I received a light reprimand by Dr. Nieves about respect, all of Dr. Nieves's
responses were on point and thoughtful.
I think an all-online beginner programming class is a
mistake for those with little or no experience in a software design/ beginning
programming class. I would have liked at least Zoom lectures from the
professor. This isn't a reflection on Dr. Nieves but more a reality about the
difficulty of learning something so new and different from what you may have
learned before. If you have prior experience, you'll be fine. If you're new,
you're likely to struggle. I put a lot of time and effort into this class. A lot
of time. Expect it to be hard if you have little to no experience.
In my opinion, Professor Nieves grows on you over time.
He repeatedly reminds the class about office hours and his availability to
assist. I never utilized anything other than email for direct communication with him, so I can't
speak on his in-person help. He coordinated and guided an extra credit activity
regarding local data centers, which only a few students participated in (done
via Zoom). While reading Rate My Professor, Dr. Nieves seems to get a lot of
flack from students about how hard he is. I found this difficult to reconcile
with the attendance for the extra credit. It leads me to believe that some
people who had problems with his 'toughness' may just not have a great work
ethic and are looking for an easy grade. Let me tell you now – it's not easy.
It's work. I started out with an unfavorable opinion. My opinion changed over
time. I think he's a professor that cares. I think learning programming is hard
for people with no experience, and people have unfairly attributed the
difficulty of the material to their opinion of the professor.
If I were to offer one criticism of the course,
it would be that Dr. Nieves time-gates all the material. To me, it doesn't make
sense to time-gate the material and prevent those able to proceed at a faster
pace from doing so. There are no Zoom lectures or any other professor-led
instructions that would warrant this policy. I would speculate that at best,
it's to help the professor manage what he has to deal with when responding to
student inquiries each day/week; limiting the type and amount of subject matter inquiries. If you're a fast
self-pacer you will be disappointed by this restriction.
Would I take a class with Dr. Nieves again? Yes. I'm not really choosy in that manner though (unless it was someone whom I thought was terrible, then I'd avoid them). Bottom line is I'm there to learn. He's knowledgeable, capable, and approachable. He can also be reasoned with. As far as I'm concerned his grading is fair; but know that I put work in to get my (good) grade.
In conclusion, I'm a little over a week away from our final project in this class, and my initial opinion that I am not made for software design & programming is re-affirmed after taking this class. I came into this class believing programming was not my cup of tea and I'm leaving it feeling the same way. I'm in the Cybersecurity degree program at LRCC and this is one of the required classes for the degree. There's one more I'm dreading - Python for Cybersecurity (okay, I'm also dreading Advanced Linux Administration too). In the end though (so far) I'm glad I'm being forced outside of my comfort zone in learning something new to me /hard for me. I don't regret the experience, the class, or my instructor; I view them all as beneficial to me.
Edit - 5/11/2024: Class is over. Capstone project complete. I loved the capstone project. It was hard for a beginner programmer, yet deeply satisfying to work through and apply all that we learned over the semester to complete the project. I actually got an 'A' on my project - which I was shocked on. I really thought my program looked sloppy (as I imagined an experienced programmer looking at it). I think the sloppiness was in part due to me switching my approach to a solution on more than one occasion. I was also certain the professor would find errors that I had missed in my own review of my programs functionality. If there were any, he did not fault me for them or point them out.
What has your experience been with Dr. Nieves and/or LRCC's ITP100 class? Let me know in the comments below.
LRCC ITE221 Review
ITE 221 PC Hardware and Operating Systems/ Dr. Leach Review Edited December 10, 2024. This Fall 2024, I enrolled in ITE 221 PC Hardware an...
-
LRCC ITP100 Software Design Review I recently took a beginning software design class at Laurel Ridge Community College, located in Middl...
-
LRCC ITN 100 Introduction to Telecommunications Review " Skynet will remind us: 'you should have written your papers word by word...
-
Updated 8/5/2024 LRCC ITN260 Network Security Basics Review This blog post provides a review of my experience in the ITN260 Network Security...