Category Archives: Week-14

OPEN SOURCE VS. COMMERCIAL LICENSING

A few weeks ago, I learned about the necessity of publishing code under a license and now that I have had the chance to implement proper licensing into assignments that I have been tasked with, I wanted to take a second and closer look at the positives and negatives associated with publishing software as “Open Source” as opposed to under commercial licensing. Before writing this blog post, I did some research and came across a blog titled, “Open Source vs. Commercial Software License: What Do You Need?” by Frank Amissah, which does a good job comparing and differentiating open-source licensing from commercial licensing. 

OPEN SOURCE:

Open source code is source code that has been made available to the public for free, allowing for anyone to read, share, or modify it. Open software licensing is divided into two categories, these being “Permissive” and “Copyleft”. Permissive licensing is less restrictive, allowing people to do as they please with the code, often only requiring the original author to be credited. Copyleft licensing is more restrictive, requiring future redistribution of code under a copyleft license to also abide by the terms of the originally implemented copyleft license. Open source code is easily accessible and adaptable by a community. The ease of acquiring the code also allows for a large scale of quality improvements and innovation provided by the community to be officially implemented. This, however, comes as a downside being that there is very limited funding for the future development of the code and if its users lose interest, it will ultimately be abandoned entirely.

COMMERCIAL LICENSING:

Commercial licensed software is usually proprietary and is distributed with the intent of its developer making a profit. The terms of use of the software is identified directly by the developer, but in general, licenses for their use will exist in the forms of subscription services or one-time payments, either for one user or an entire team of users. Benefits of using a commercial license include establishing direct ownership of the software for its users, as well as constant funding for improvements through the purchasing of copies of the software. On the other hand, commercial licenses often cost a lot of money to their customers, have longer development cycles for implementing changes, and suffer highly from piracy of the software. 

This blog post effectively compared the similarities and differences of both open source and commercial licensed software, even going so far as to teach me that the choice for which license to implement will come down to the goals of the project, as well as its intended audience and cost of operation. It was also formatted in a very user-friendly way, using well-organized diagrams to prove its point. Going forward, I feel that I will be more inclined to take my time weighing my choices when it comes to choosing the right license for my projects, especially now that I have been made aware of the difference one can make.

Blog Referenced: Open Source vs. Commercial Software License: What Do You Need? | Turing 

From the blog CS@Worcester – CS Blogs with Aidan by anoone234 and used with permission of the author. All other rights reserved by the author.

Microsoft’s Solution to Offensive Generated Text

Recently, I have been made aware of a “Alex” linter, which is capable of analyzing the words used in a program and identifying ones that may be offensive or used in a harmful context. This got me interested in looking further into what other forms of software are being used to perform similar actions and where. 

In order to learn more on the topic, I have read a blog titled, “Microsoft claims its new tools make language models safer to use” by Kyle Wiggers. This article goes in depth about how Microsoft has been developing open-source tools to audit AI generated content and automatically test them for potential bugs, especially in a content moderation context, where “toxic speech” may be used. Microsoft has focused their efforts on two projects for this cause.

ToxiGen is a dataset that contains 274,000 examples of statements that may be considered “toxic” or “neutral”, acting as a massive hate speech dataset and functioning in a similar but much greater scale of what the “Alex” linter does. ToxiGen is being used by researchers on LLMs similar to ChatGPT to generate statements that are likely to be misidentified and aid in finding potential weaknesses in these generative tools. 

AdaTest is the second program Microsoft is focusing on developing and should help address larger issues with AI language modules. It functionally generates a large number of tests, steered by human guidance, and organizes them into similar groupings. It is run with the goal of adding diversity to test cases and enhancing the reliability of LLMs. 

From my perspective, generative AI does not possess cognitive function in a comparable manner to that of a human and until it does, AI will forever struggle at identifying speech that may be acceptable in one context or culture but viewed as very offensive in a separate culture or environment. I also believe that because these newly developed programs are being made in the same way that the “Alex” linter is (that being through someone providing a list of key words or phrases to be cross referenced) and is not able to generate its own list of potentially harmful or “toxic” terms without human oversight, the most these programs will likely be able to do is provide quality standards for LLMs through testing. 

Through my research, I became aware of programs being developed by Microsoft to help detect harmful speech in a similar way that the “Alex” linter does (that being through cross referencing with a dataset). I also became aware of the many forms of biases that exist even in generative AI as a result of information provided by biased human input. Moving forward, I plan on being more careful with the phrasings I give or artificially generated when working on projects. Given that AdaTest is an open-source software as well, I am interested in using it in the future to test for bias and offensive speech wherever I use generative AI.

Blog Referenced: Microsoft claims its new tools make language models safer to use | TechCrunch

From the blog CS@Worcester – CS Blogs with Aidan by anoone234 and used with permission of the author. All other rights reserved by the author.

A List of Open Source Software

 

Open-Source software has become a vital source of tools for the development community, as well as innovative software. Recently I have become interested in finding out just how many of the applications I use are open-source, while at the same time finding new open-source software. I want to expand the software I have at my selection. First, let us reestablish what open-source software means: software that can be modified, enhanced, or inspected by developers who are not the original creators. This is done by packaging the source code along with the software so that it can be edited by anyone who knows how to.  

To start off this extensive list, Mozilla Firefox is open source to my surprise. Firefox has its source code internally available within the browser itself and can be found by using the URL https://searchfox.org/mozilla-central/source and has guidelines for contributors up on a separate website. Mozilla also has the source code for countless other projects up on GitHub, such as Gecko, the rendering engine for Firefox. Continuing down the list we got GIMP and Blender, two powerful tools for any aspiring artist out there. In recent days I actually downloaded Blender onto some of the computers at the school I work at. While I am not going introduce 3D modeling to my middle schoolers, there have been students who have shown an interest in the subject. I thought having Blender available to these students would foster interest and motivate these students to pursue more. It is for situations like these that I believe in the importance of open-source software and the need to have these tools available to all. GIMP has helped me out here and there in the past, and since it is the only image manipulation software that is free, I am also planning to implement it in my classroom. 

One of the most important pieces of open-source software is none other than the operating system Linux. So many pieces of technology are running on Linux, or some variation thereof. Android OS is based on Linux and is also open source, Chromebook OS is based off Linux, several routers are using Linux. From cars, TVs, to even super computers, Linux has been a reliable operating system for a massive amount of hardware. Even NASA has completely switched over to Linux as of 2013. I am partially convinced to convert to Linux after all the compelling evidence I found.  

Finally, I have already mentioned LibreOffice in a previous blogpost as well, but it bears mentioning here. Microsoft Office is such a ubiquitous piece of software it is almost impossible to work in any sector of society that does not make use of it. The downside is that it is expensive for many. This is where LibreOffice comes in and offers a free alternative that does not require making an account of some kind like Google’s services. It perfectly embodies the spirit of open-source software.

 

https://opensource.com/resources/what-open-source 

https://firefox-source-docs.mozilla.org/overview/gecko.html

https://opensource.com/article/19/8/everyday-tech-runs-linux

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

A List of Open Source Software

 

Open-Source software has become a vital source of tools for the development community, as well as innovative software. Recently I have become interested in finding out just how many of the applications I use are open-source, while at the same time finding new open-source software. I want to expand the software I have at my selection. First, let us reestablish what open-source software means: software that can be modified, enhanced, or inspected by developers who are not the original creators. This is done by packaging the source code along with the software so that it can be edited by anyone who knows how to.  

To start off this extensive list, Mozilla Firefox is open source to my surprise. Firefox has its source code internally available within the browser itself and can be found by using the URL https://searchfox.org/mozilla-central/source and has guidelines for contributors up on a separate website. Mozilla also has the source code for countless other projects up on GitHub, such as Gecko, the rendering engine for Firefox. Continuing down the list we got GIMP and Blender, two powerful tools for any aspiring artist out there. In recent days I actually downloaded Blender onto some of the computers at the school I work at. While I am not going introduce 3D modeling to my middle schoolers, there have been students who have shown an interest in the subject. I thought having Blender available to these students would foster interest and motivate these students to pursue more. It is for situations like these that I believe in the importance of open-source software and the need to have these tools available to all. GIMP has helped me out here and there in the past, and since it is the only image manipulation software that is free, I am also planning to implement it in my classroom. 

One of the most important pieces of open-source software is none other than the operating system Linux. So many pieces of technology are running on Linux, or some variation thereof. Android OS is based on Linux and is also open source, Chromebook OS is based off Linux, several routers are using Linux. From cars, TVs, to even super computers, Linux has been a reliable operating system for a massive amount of hardware. Even NASA has completely switched over to Linux as of 2013. I am partially convinced to convert to Linux after all the compelling evidence I found.  

Finally, I have already mentioned LibreOffice in a previous blogpost as well, but it bears mentioning here. Microsoft Office is such a ubiquitous piece of software it is almost impossible to work in any sector of society that does not make use of it. The downside is that it is expensive for many. This is where LibreOffice comes in and offers a free alternative that does not require making an account of some kind like Google’s services. It perfectly embodies the spirit of open-source software.

 

https://opensource.com/resources/what-open-source 

https://firefox-source-docs.mozilla.org/overview/gecko.html

https://opensource.com/article/19/8/everyday-tech-runs-linux

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

A List of Open Source Software

 

Open-Source software has become a vital source of tools for the development community, as well as innovative software. Recently I have become interested in finding out just how many of the applications I use are open-source, while at the same time finding new open-source software. I want to expand the software I have at my selection. First, let us reestablish what open-source software means: software that can be modified, enhanced, or inspected by developers who are not the original creators. This is done by packaging the source code along with the software so that it can be edited by anyone who knows how to.  

To start off this extensive list, Mozilla Firefox is open source to my surprise. Firefox has its source code internally available within the browser itself and can be found by using the URL https://searchfox.org/mozilla-central/source and has guidelines for contributors up on a separate website. Mozilla also has the source code for countless other projects up on GitHub, such as Gecko, the rendering engine for Firefox. Continuing down the list we got GIMP and Blender, two powerful tools for any aspiring artist out there. In recent days I actually downloaded Blender onto some of the computers at the school I work at. While I am not going introduce 3D modeling to my middle schoolers, there have been students who have shown an interest in the subject. I thought having Blender available to these students would foster interest and motivate these students to pursue more. It is for situations like these that I believe in the importance of open-source software and the need to have these tools available to all. GIMP has helped me out here and there in the past, and since it is the only image manipulation software that is free, I am also planning to implement it in my classroom. 

One of the most important pieces of open-source software is none other than the operating system Linux. So many pieces of technology are running on Linux, or some variation thereof. Android OS is based on Linux and is also open source, Chromebook OS is based off Linux, several routers are using Linux. From cars, TVs, to even super computers, Linux has been a reliable operating system for a massive amount of hardware. Even NASA has completely switched over to Linux as of 2013. I am partially convinced to convert to Linux after all the compelling evidence I found.  

Finally, I have already mentioned LibreOffice in a previous blogpost as well, but it bears mentioning here. Microsoft Office is such a ubiquitous piece of software it is almost impossible to work in any sector of society that does not make use of it. The downside is that it is expensive for many. This is where LibreOffice comes in and offers a free alternative that does not require making an account of some kind like Google’s services. It perfectly embodies the spirit of open-source software.

 

https://opensource.com/resources/what-open-source 

https://firefox-source-docs.mozilla.org/overview/gecko.html

https://opensource.com/article/19/8/everyday-tech-runs-linux

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

A List of Open Source Software

 

Open-Source software has become a vital source of tools for the development community, as well as innovative software. Recently I have become interested in finding out just how many of the applications I use are open-source, while at the same time finding new open-source software. I want to expand the software I have at my selection. First, let us reestablish what open-source software means: software that can be modified, enhanced, or inspected by developers who are not the original creators. This is done by packaging the source code along with the software so that it can be edited by anyone who knows how to.  

To start off this extensive list, Mozilla Firefox is open source to my surprise. Firefox has its source code internally available within the browser itself and can be found by using the URL https://searchfox.org/mozilla-central/source and has guidelines for contributors up on a separate website. Mozilla also has the source code for countless other projects up on GitHub, such as Gecko, the rendering engine for Firefox. Continuing down the list we got GIMP and Blender, two powerful tools for any aspiring artist out there. In recent days I actually downloaded Blender onto some of the computers at the school I work at. While I am not going introduce 3D modeling to my middle schoolers, there have been students who have shown an interest in the subject. I thought having Blender available to these students would foster interest and motivate these students to pursue more. It is for situations like these that I believe in the importance of open-source software and the need to have these tools available to all. GIMP has helped me out here and there in the past, and since it is the only image manipulation software that is free, I am also planning to implement it in my classroom. 

One of the most important pieces of open-source software is none other than the operating system Linux. So many pieces of technology are running on Linux, or some variation thereof. Android OS is based on Linux and is also open source, Chromebook OS is based off Linux, several routers are using Linux. From cars, TVs, to even super computers, Linux has been a reliable operating system for a massive amount of hardware. Even NASA has completely switched over to Linux as of 2013. I am partially convinced to convert to Linux after all the compelling evidence I found.  

Finally, I have already mentioned LibreOffice in a previous blogpost as well, but it bears mentioning here. Microsoft Office is such a ubiquitous piece of software it is almost impossible to work in any sector of society that does not make use of it. The downside is that it is expensive for many. This is where LibreOffice comes in and offers a free alternative that does not require making an account of some kind like Google’s services. It perfectly embodies the spirit of open-source software.

 

https://opensource.com/resources/what-open-source 

https://firefox-source-docs.mozilla.org/overview/gecko.html

https://opensource.com/article/19/8/everyday-tech-runs-linux

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

A List of Open Source Software

 

Open-Source software has become a vital source of tools for the development community, as well as innovative software. Recently I have become interested in finding out just how many of the applications I use are open-source, while at the same time finding new open-source software. I want to expand the software I have at my selection. First, let us reestablish what open-source software means: software that can be modified, enhanced, or inspected by developers who are not the original creators. This is done by packaging the source code along with the software so that it can be edited by anyone who knows how to.  

To start off this extensive list, Mozilla Firefox is open source to my surprise. Firefox has its source code internally available within the browser itself and can be found by using the URL https://searchfox.org/mozilla-central/source and has guidelines for contributors up on a separate website. Mozilla also has the source code for countless other projects up on GitHub, such as Gecko, the rendering engine for Firefox. Continuing down the list we got GIMP and Blender, two powerful tools for any aspiring artist out there. In recent days I actually downloaded Blender onto some of the computers at the school I work at. While I am not going introduce 3D modeling to my middle schoolers, there have been students who have shown an interest in the subject. I thought having Blender available to these students would foster interest and motivate these students to pursue more. It is for situations like these that I believe in the importance of open-source software and the need to have these tools available to all. GIMP has helped me out here and there in the past, and since it is the only image manipulation software that is free, I am also planning to implement it in my classroom. 

One of the most important pieces of open-source software is none other than the operating system Linux. So many pieces of technology are running on Linux, or some variation thereof. Android OS is based on Linux and is also open source, Chromebook OS is based off Linux, several routers are using Linux. From cars, TVs, to even super computers, Linux has been a reliable operating system for a massive amount of hardware. Even NASA has completely switched over to Linux as of 2013. I am partially convinced to convert to Linux after all the compelling evidence I found.  

Finally, I have already mentioned LibreOffice in a previous blogpost as well, but it bears mentioning here. Microsoft Office is such a ubiquitous piece of software it is almost impossible to work in any sector of society that does not make use of it. The downside is that it is expensive for many. This is where LibreOffice comes in and offers a free alternative that does not require making an account of some kind like Google’s services. It perfectly embodies the spirit of open-source software.

 

https://opensource.com/resources/what-open-source 

https://firefox-source-docs.mozilla.org/overview/gecko.html

https://opensource.com/article/19/8/everyday-tech-runs-linux

From the blog CS@Worcester Alejandro Professional Blog by amontesdeoca and used with permission of the author. All other rights reserved by the author.

Week 14 – Token #2 – CS-343

For this blog, I specifically wanted to look into how this class relates to the preferred field I want to go into, which is Game Design. I wanted to see what kind of languages would be used, what kind of design elements are implemented, and even in the case of frontend vs. backend, how online games employ servers.

However, it seems like I had a misunderstanding that these two positions were similar omewere, as I find many sources that say software design vs. game design are a completely different beast, which only made me more interested. I did some more research, and this lead me to end up reading this article below:

Specifically I noticed that software development has more rigidity when it comes to designing and delivering a product. Software engineers are usually employed to design a software to meet consumers demands, which usually entails specific features and options they’d want in the software you’re developing. Whereas with game design, you have a much more flexible development cycle, as theres a lot more creativity involved. You’re less focused on making sure specific features are available and more focused on delivering a product that is unique and interesting for consumers, and keeps them engaged.

Game developers also rarely work with programming languages when it comes to development of products. Game developers mainly use engines, which are interfaces that employ programming languages to create building blocks to build off of to create a video game. Software engineers mainly work with the code directly at almost all times, making sre each line is properly written. That’s not to say some game devs don’t work with code directly, some do, and many Triple A companies actually write their own engines using their own code, like in the case of Epic Games’ Unreal Engine, which is used to power their famous game Fortnite.

Something this article notes is that software developers may not need to worry about performance compared to game developers, and I can understand why they might say that. Games rel on having a fluid and enjoyable experience, and that is dependant on the performance of a game, making sure theres no glitches, bugs, or lag. However, I would argue that performance is still a factor within software design too, because what if a simple calculation process in a program takes multiple minutes? Consumers will still have an issue with that. While I do think it’s definitely a lot more important in game development, that’s not to say it’s not unimportant in software design.

And that’s all my blogs for this semester! I’ll be taking another of Professor Wursts classes next semester, so I’ll likely be writing again then. See all you readers come January!

From the blog CS@Worcester – You're Telling Me A Shrimp Wrote This Code?! by tempurashrimple and used with permission of the author. All other rights reserved by the author.

Week 14 – Token #1 – CS343

For this blog I’ll be using one of my tokens for this class so I can hit the 6 blog minimum before the semester is over.

In this blog post, I wanted to look more into JavaScript since I didn’t really know too much about it. I struggled with the backend homework we had because I never knew anything about the syntax or language at all. So, I want to learn a bit more about this language within this blog. For this, I consulted this website, and gave it a good hearty read:

https://developer.mozilla.org/en-US/docs/Web/JavaScript

This site gives an overview of JavaScript and the applications in which it is used in general, and what benefits and downsides it has compared to other languages.

What I found very interesting is that I originally knew that JavaScript was mainly used for website development and coding, but this site gave some examples of applications such as Node.js and Adobe Acrobat. I believe we’ve actually utilized Node.js before in our classes, but I can’t quite put my finger on what exactly we used it for, but I recgonize the name appearing in one or more of the repositories we’ve been working with.

It seems like JavaScript is much like Java in the sense that it can use object oriented code, but I think the similarities between the two end there. In the past, I always heard that JavaScript was a completely different beast from Java, and after look more into it, I see why. This site below describes the differences:

https://www.lighthouselabs.ca/en/blog/java-vs-javascript

JavaScript it object-orientedcode, whereas Java is object-based. That may sound the same as each other, but there is some very specific distinctions between them. Java relies on objects to function, whereas JavaScript has functionality for objects and suggests use of them with it’s language, it is not required. JavaScript is also a lot more fluid with it’s syntax, and has a lot more free-form and flexibility with it, which reminds me a lot of what I’ve heard about Python. Java is a lot more rigid, and requires specific pre-set uses of it’s syntax.

But back to JavaScript, it seems like its The language for web design, as a lot of it’s language is made with web design in mind. My future for this area of study is some form of design in technilogical areas, so it would be possible I go into Web Design. If I do, I’ll definitely have to teach myself more JavaScript. It seems like a really useful language to have on hand in that case.

I will be posting one other blog today, using another token, so stay tuned for another!

From the blog CS@Worcester – You're Telling Me A Shrimp Wrote This Code?! by tempurashrimple and used with permission of the author. All other rights reserved by the author.

Week 14: CS-343

Design Patterns

A design pattern is a general solution that can be used to solve commonly occurring problems in software design. A design pattern cannot be put directly into code, rather it is a template of how to solve a problem that can be used various situations.

Design patterns are helpful as they speed up the development process by providing proven examples to be used as a reference for common problems. When designing software, small subtle issues can build up leading to major problems that can only be seen during implementation. Using design patterns can help prevent these subtle issues from occurring which reduces the likelihood of major issues occurring.

Because design patterns are tested, proven, and commonly used, patterns also allows for better communication among developers by using well known and understood names for software interactions.

Types of Design Patterns

Creational

Creational design patterns cover class instantiation. These patterns can be further divided into two classifications, class-creation and object-creational patterns. Class creation uses inheritance in the instantiation process, while object creation uses delegation to create objects. Some creational design patterns are:

  • Singleton
    • A class where only a single instance can exist
  • Factory Method
    • Creates an instance of several derived classes
  • Object Pool
    • Avoids expensive acquisition and release of resources by recycling objects that are no longer in use

Structural

Structural design patterns are about class and object composition. Like creational patterns, structural patterns can also be broken down into class creation and structural object patterns. Class creation patterns use inheritance to compose interfaces, while object patterns define ways to compose objects to obtain new functionality. Some structural patterns are:

  • Adapter
    • Matches interfaces of different classes
  • Private Class Data
    • Restricts accessor/mutator method access
  • Decorator
    • Adds responsibility to objects dynamically

Behavior

Behavior design patterns are about how objects communicate with each other. Some examples of behavior design patterns are:

  • Null Object
    • Used to act as a default value of an object
  • Chain of Responsibility
    • A way of passing a request between a chain of objects
  • State
    • Alter an object’s behavior when its state changes

Conclusion

This article was chosen because it clearly described what design patterns are, what they are used for, and gave examples of the different types of design patterns. As stated before, not only does the usage of design patterns help with preventing major issues, they also allow for better communication among developers which is essential to a team’s success which is why I chose to write about design patterns. As I continue to design software, effectively using design patterns will become more and more prevalent, so learning about them now will only be beneficial.

Resources:

https://sourcemaking.com/design_patterns

From the blog CS@Worcester – Zack's CS Blog by ztram1 and used with permission of the author. All other rights reserved by the author.