Wednesday, June 30, 2010

Information Security

One of the most important things facing computer technology is Information security. Without it we would be hacked all the time by expert programmers, and other evil IT guys. There is no simple way to secure information. Billions are spent on computer security, but the attacks are still coming at the same frequency.


see no evil, hear no evil, speak no evil. If only security were that easy, but it is not. There are many risks when getting on the Internet with any devices. Here are a few of the most common attacks done over the Internet: Trojans, Virus, Spyware, Worms, Honeypots, DNS(Denial of Service) Attacks, Logic Bomb, Spam/Adware, and Botnets. Overall, companies lose millions of dollars with these criminal acts. Employees of companies are the largest security threat to a business. Employees will write their passwords down, or surf the Internet which gets their Work computer infected, etc...

Monthly security newsletters are a great way to keep up with new security vulnerabilites. Here are a few newsletter websites to look at:
Sans
Schneier
MS-ISAC

Here are a few links to Network Security Solution companys:
terremark
Stanley
symantec
Most of their goals include: preventing data theft, stopping identify theft, avoid the legal consequences of not securing information (Social Security Cards, medical records etc.), maintain productivity(example: no Spam slowing employees down), and foil cyberterriorism.

Thursday, June 24, 2010

Confusing Programming terms

List of confusing programming terms:

[1]Confusing terms:: attributes-the data contained in an object; the characteristics of an object that will be implemented as properties. class-a program structure that defines an abstract data type. class declaration-defines a class and member variables, properties, events, and methods. objects (term can also be called class objects)-instances of a class that contain data and actions. derived class-a class that is based on another class. operations-actions performed by class objects. methods-a sub-procedure or function that is a member of a class, and it performs some operation on the data stored in the class.

procedures-are a set of programming language statements that are executed by the computer. functions-are specialized routine that performs a specific operation, and then returns or produces information. sub-procedures-are a collection of statements that performs a specific task and does not return a value. constructor-a method that is automatically called when an instance of the class is created.

encapsulation-the hiding of data and procedures inside a class. inheritance-an OOP feature that allows you to create classes that are based on other classes. modularize-to break an application's code into small, manageable procedures.

event-can be a click of a button or anything similar to this. event procedure-a procedure that an object executes in response to an event. keywords-programming language words that have a special meaning. programming language syntax-are rules that define the correct way to use keywords, operators, and programmer defined names. OOP-a programming technique centered on creating objects, and is a way of designing and coding applications that has led to using interchangeable software components. pseudocode-statements that are a cross between human language and a programming language.

example pseudocode:
initialize variable student's grade
If student's grade is greater than or equal to 50
Print "passed"
else
Print "failed"

[1]Glossary Starting out with Visual Basics 2008 fourth edition

CIS vs. Computer Science

Today, I will explain the difference between Computer Information Systems (CIS) and Computer Science (CS).

"computer science degree is more for research and development kind of companies. A CIS degree would be more for business related scenarios like banks, and other businesses. I have been told that there is more jobs related to CIS than computer science degrees." Mike M

Site --gives a great list of the types of jobs related to computers, and has lot of links to other resources of information. Site2 (this site really explains the different careers in the computer related field).

CS is geared more toward the theories of computers, and development of new technologies with computers. On the other hand, CIS is geared toward information from companies that have been organized in their computer systems. The nature of the work is slightly different. For example, a network engineer creates the network (with cables etc..), and does research on new ways to create a network. A network administrator maintains the network created by the engineer. Network engineers have Computer Science degrees, while network administrators have CIS degrees. This site really explains and gives statistical information about the different jobs and career paths. LINK

Overall, both degrees are great, but i am hoping my degree in CIS will give me more opportunities.

Alice

Alice is a free open source OOP programming language with an integrated development environment (IDE) that uses 3D models. Alice homepage The 3D models make it easy for anyone to create an animation for stories, games, etc... All you have to do is drag-and-drop what 3D model you want into the IDE program you are making. The instructions correspond to standard statements in a production OOP language. This can teach people OOP programming concepts much faster in Introduction Programming classes.

Students using Alice can better understand the relationship between code and the 3D models behaviors in the IDE. Here is promotional video about Alice. Video Site. Another great thing about Alice is that it is open source. Anyone can customize the Alice IDE program. All you have to do is follow the End User License Agreement. That is just legal stuff.

The future looks bright for Alice because of their partnership with Sun Microsystems Inc. Also the Alice developer team is improving Alice for the operating systems: Windows, Mac, and Linux. Teachers teaching programming should take advantage of this free educational software.

Note: don't confuse Alice with A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) which is a artificial intelligence chat robot open source program.

Programming logic OOP

Today, i will try and explain further some of the concepts of OOP. Hopefully, this sheds light on the details of OOP concepts. First, you must know how to create a basic program. You need the logic of what is going to happen, and then you can design a flow chart, or create pseudocode (just plain English with no programming code). When you write the actual code you need to make sure there is no syntax(the way the code should be spelled etc) errors or compiler(this makes code run on a computer) errors. This PDF really explains these concepts in great detail. PDF site

[1]Diagram of how to create a running program logically:


Remember the last post i explained inheritance really well?(I hope). Well now i am going to go into encapsulation. The hiding of data and procedures(methods) inside a class is achieved through encapsulation. Visualize the class as a capsule around its data and procedures. The usually words to create this feature is to use "Private" or "Public" keywords (programming code) in code. Example diagram i made in Visio (graphical flowchart-design software by Microsoft):


Next in line is abstraction. It is a general model of something that includes only the general characteristics of an object. For example, the term dog is an abstraction. It defines a general type of animal. The term captures the essence of what all dogs are without specifying the detailed characteristics of any particular breed of dog or any individual animal. In real life there are specific dogs, each sharing common characteristics such as paws and fur. Lets say Dan owns a rooweiler named Menance and Jimmy owned a poodle named Fluffy. In this analogy, the abstraction (dog), is like a data type and the specific dogs(Menance, and Fluffy) are instances of the type. Here is a good site for another way to explain abstraction--site

Lastly i want to talk about polymorphism. No its not morphing time Power Rangers! Polymorphism is defining some common behavior for multiple types of objects and having a common code-base, which may or may not care about the different variation of a type. For example, a dog kennel takes domesticated dogs. There are many breeds of dogs, but the kennel knows it can take any 4 legged dog and be compatible. Dog in general is polymorphic in a way. This site explains polymorphism in more detail--site

Overall, don't expect you the reader to grasp this concept right away. It is very high-level programming, and i am still trying to master it as well, but once mastered, your programs will become exquisite. These explainations are just part of what can be done with OOP.

[1]Programming Logic and Design, Introductory, Fourth Edition
[2]Starting out with Visual Basics 2008 fourth edition

Wednesday, June 23, 2010

Object-Oriented Programing

Object-Oriented Programming (OOP) is a type of programming approach that involves using "objects" (data structures) consisting of datafields (attributes) and methods (classes). These along with tools from the specific OOP language help programmers design applications and computer programs.

Some OOP languages include: Common Lisp, C++, C#, ColdFusion, Delphi (Object Pascal), Java, PHP, Python, VBScript, X++ and many others. Here is a site that lists them: wiki (note it is Wikipedia, and there were too many languages to go through to verify the information. I will eventually use each one as a topic for this blog).

Some common features are seen in OOP, which include: abstraction, encapsulation, inheritance, and polymorphism. These features help reduce code duplication, and promotes code reuse. If these are mastered properly then programs can run more efficiently, have less lines of code, and become easier to manage and update.

Why is OOP so special? Why should anyone learn it? Well it is special because instead of the old model of having a program doing a list of tasks, a program is divided into classes that give the blue print of how an object should behave and be created. In OOP "objects" are models of real world objects. Lets say you have objects that are animals, and they want to walk in your program. OOP makes just one class that the animal objects can call in order to all walk. The old model had to keep creating the same walking code over and over for each animal.

Lets say their are many specie objects that are related, and have similar attributes. OOP makes coding this example simply with inheritance. You can have a main class animal that describes the attributes of an animal, then you can have different types of specie classes that describe specific specie objects' attributes under that. The species classes can inherit the same attributes as the main class animal with the inheritance feature. With the old module you had to create code over and over for each attribute for all the different types of species. [1] site of picture The picture shows a class inheritance hierarchy, but adds a few levels like pet and livestock. Mostly same idea.





These are just some of the ways that make OOP so powerful as a type of programming language. I will go into more detail and explanation when i talk about Programming Logic and Design.

Links: Procedural vs. OOP
OOP explained
Sources: i have include C++, C#, Java with BlueJ, and Visual Basics books. I may have more books on OOP fundamentals. In later posts i will get into more detail on OOP because it is such a broad topic. This was mainly just a small summary of what OOP is with an example of inheritance, objects, and classes.

Moodle

Moodle stands for Modular Object-Oriented Dynamic Learning Environment. It is a free open-source electronic learning software platform. Open source means developers can customize the software platform for the needs of educators that want to create online courses that are more interactive. Electronic learning is all forms of learning and teaching through electronic systems, which can be networked or not. Moodle is mostly seen as a course management system. About Moodle --This site goes into more details about Moodle.

Moodle is developed by project leader Martin Dougiamas, who started it back in the 90's. The first version came out in August 2002. The open source is GNU Public License (Note GNU doesn't stand for anything except for "GNU is Not Unix"). GNU is like UNiplexed Information and Computing System (UNIX), but it doesn't use any UNIX code. GNU is its own programming language. Another great feature of Moodle is that it can be installed on almost any Operating System.

Moodle keeps evolving as new designs are made and in turn creates new features. Some features that Moodle includes now are: Enrolment, Roles, Assignment Module, Chat Module, Choice Module, and many other features. Moodle really helps teachers in online courses, and improves the learning that a student can have through an online class. But Moodle is not just used by the school system, but also by government, healthcare, airlines, and many other area.

Overall, the future looks bright for Moodle. Looks like Moodle will always be open source, free, and ever expanding in the world.
Links:
http://moodle.org/ --Moodle's main site.
Example Log-in --Moodle log in example site
http://moodle.com/ --Moodle's commercial services site

Campus Connection/ConnectND

Campus Connection/ConnectND is a commonly used web based application that helps students in colleges across North Dakota access valuable information. Campus Connection is the broad based company that gives services throughout the US to both government and universities. ConnectND is North Dakota's implementation of it. It runs on Oracle/PeopleSoft for its web applications. Campus Connection Site ---This provides a nice summary of what ConnectND is and what information people need to know in order to access ConnectND. It also has a link to what type of security that Campus Connection uses.

Example Login ---This is an example of a basic login for ConnectND. Information that students can view include: financial aid, financial records, class schedule, unofficial transcript, pay stubs, browse course catalog, check admission application status, and academic records. Oracle and PeopleSoft were awarded the money to create ConnectND back in January 2002. This PDF provides the complete timeline of how ConnectND was planned, and implemented. PDF Link

Tuesday, June 22, 2010

Fast Processors

Central Processing Unit (CPU) is the brain of all computers. Over the years they have gotten better and faster. The first microprocessor was the Intel 4004 in 1971. It could do 4 bits at a time. Today, Intel Core i7-980X Extreme Edition can do 3.33 Gigahertz (with six cores). In 39 years the computer chip industry has pushed the boundaries of what a CPU can do. They have used new micro-technology, and new designs to push the envelope. They have even created CPUs with multiple cores, which i like having more than two or more CPUs combined. Article Site --this article really shows in detail how CPUs work, different types, etc...

Over-Clocking Site --This site really shows the top CPUs of today being tested, and pushed to the limit with over-clocking. Over-clocking is running a computer component at a higher clock rate (more clock cycles per second). This could create instability and most people who are not knowledgeable about over-clocking should not try it on their favorite computer.

Side note:: a bit is like an electrical switch, and can be either off or on / 0 or 1. A byte (in modern de-facto standard) is 8 bits. One kilobyte is 1024 bytes; One megabyte is 1024 kilobytes; One gigabyte is 1024 megabytes; one terabyte is 1024 gigabytes; and you see the pattern. Hertz in CPUs means the frequency of the Clock Rate in a synchronous circuit per second. Kilohertz is 10^3 Hertz; Megahertz is 10^6 hertz; and gigahertz is 10^9 hertz.

Home

As i was researching for Second Life, i found a similar concept being done by Sony for the PlayStation 3. It is called "Home", and it features better graphics than Second Life. Home is also more secure because it is closely guarded by Sony. These are the main difference between the two. Second Life offers more freedom, and user powers with OK graphics. Here is link explaining all the differences between the two virtual worlds----HowStuffWorks

I think I would choose Second Life only because it can be at my computer, and the fact that it has been around longer. I also don't have a PS3, and the PlayStation Portable (PSP) version of Home called "Room" has been halted in development. They may not consider doing it for the PSP. I know iPhone apps are being made for Second Life. I will never have an iPhone until Verizon makes something like it or Apple finally realizes that most people are on Verizon. Yeck, Verizon is the only service you can really get that is good quality in ND. It looks like Second Life is more portable than Home.
Overall, Home will never be able to replace Second Life just for the simple fact that Second Life is through the computer and not a game console. I know for sure most people have computers in this day and age.

Monday, June 21, 2010

LSL

Linden Scripting Language(LSL) is a programming code similar to C that is used in scripts that give behavior to Scripting Language objects. It is used in Second Life, and mainly for editing avatars. LSL code can be used to many or things in Second Life, and helps the client/player customize their avatar or other things.

For example, you can edit the "Alpha" property of an object. The property messes with how opaque or transparent an object is. You use the scripting command llSetAlpha, and is represented by a percentage in parenthesis.

The main idea of LSL is based on 3D virtual world objects in Second Life. For example, a chair or table would be considered an object. If you were talking about a car there are parts to a car, which would be called a prim/primitive. The scripts then can run and modify the chair or table in some way. Another key note about LSL is that the language is state-event scripting/in a finite state machine. This means that there is only a set number of states that an object can be in. For example, a chair can be up or down, big or small, old or new. This language is not based on Object-Oriented Programming (OOP).

Another note to consider is that the new LSL engine uses Mono since august 2008. Mono is a free and open source project of Microsoft.NET framework. This makes LSL faster.


There is a downside to using Mono. Richard Stallman of the Free Software Foundation has stated it may be "dangerous" to use Mono because of the possible threat of Microsoft patents.[1]

[1]Stallman, Richard (2006-03-09). "Transcript of Richard Stallman on the Free Software movement, Zagreb". Free Software Foundation. Retrieved 2006-11-02. "(...)we know that Microsoft is getting patents on some features of C#. So I think it's dangerous to use C#, and it may be dangerous to use Mono. There's nothing wrong with Mono. Mono is a free implementation of a language that users use. It's good to provide free implementations. We should have free implementations of every language. But, depending on it is dangerous, and we better not do that. "

Second Life Explained

A good friend of mine showed me some very interesting information. It deals with a social networking/avatar/role playing/SIMs like online web program. It is not a game, but looks like one. It is Second Life.

It is like a virtual world where you can connect with people, shop, trade, make money, and be creative with your avatar. It features a software that allows clients/players to create geometric shapes, and Second Life makes sure that client/player has rights to any shapes created that client/player.

Now, the programming behind Second Life involves Linden Scripting Language (LSL). LSL Wiki This wiki site provides very detailed information about how LSL works, and how to learn to use it. I will be researching more about LSL in the very near future......

^^^^This site really explains in detail how Second Life works. Clients/players can even make money and earn a living. You can even use real USA dollars to buy land, and other items. The most interesting thing i found was that most people that try Second Life don't log back on ever again. There are more than 10.5 million accounts on Second Life, but there can be duplicate accounts from one user/client/player. "In October 2007, just fewer than 1,000,000 residents logged in."[1]

The Second Life virtual world has many advantages though. It gives clients freedom to do anything they like, except for the Linden Lab's terms of service. The terms of service has rules that must be followed, and legal stuff as well. Educational connection to Second Life is being used. The possibilities are endless in Second Life.

[2] Tateru Nino (Jan 6th 2008 at 10:30 am). "Second Life grid closed due to asset problems - Massively". Massively.com. Retrieved 2008-10-27.
I find only a few faults with Second Life. First the security is not that good, and Linden Lab's has the right to delete are items and account. Everyone needs to read the terms of service carefully. Second the servers behind Second Life have been connected and designed poorly. "The communication between the main servers and the asset cluster appears to constitute a bottleneck which frequently causes problems."[2]

All in all, it seems like a very complex and interesting virtual web program world, and i will be sure to try it out someday.

Network Protocols/IP

I have found a goldmine of a site that explains every Internet protocol. I have mainly been reading up on the network protocol Internet Protocol (IP), which is closely tied in with Transfer Control Protocol (TCP). Most people put them together when naming Internet protocols.
RFC Site The RFC's give the most detail on protocols, and it has original documentation. For example, the RFC for IP gave to in detail what the 14 fields in IP are and how they work.
Network Protocol Site This site gives a great overview of some network protocols

IP i learned was developed in the 70's and is used with TCP for transferring data over the networks. IP is made up of 14 fields that gives it the power to contain some level of security, addressing, fragmentation option, ensure header integrity, and a time to live which is like an expiration time. IP is part of the foundation in which the Internet is built on.

so ends my lesson for today.

Friday, June 18, 2010

What I know...

Help Desk knowledge-We re-image a computer (both laptop and desktop) by connecting an Ethernet cable to it, and pressing either F12 or F10 button at the first start-up screen. Doing this will contact the server on our Local Area Network, and it starts the re-imaging process. I have seen Windows XP, Windows Vista, and soon to come Windows 7 operating systems being used for our computers.

I have taken apart both types of computers. M45, M75, M85, M95 Gateway Tablet PC Laptops are the Gateway brands i have worked with hardware and software wise. Now at the campus we have Fujitsu T-series Lifebooks (also Tablet like the gateways). I have replaced screens, Random Access Memory (RAM) sticks, Wireless Network Interface Cards, speakers, latches, hinges, motherboards, Central Processing Units (CPUs), hard drives, touch pads, keyboards, and CPU fans.

On the software side i have installed Operating systems like Ubuntu, Microsoft XP/Vista/7, Photoshop, Microsoft Visual Studios 2008/2010, Dreamweaver, Office Suite, and maybe a few other ones that i can't think of right at this moment.

I take care of Malware like Trojans, and Viruses on a daily basis. I use a two step attack to get rid of these malicious programs. I first go into Safe Mode by turning the computer off by the button or switch. Then i do a system restore, which usually takes out most malicious programs. Then i use a scanner like Malwarebites from http://download.cnet.com/windows/. This takes care of about 95% of malicious programs, but some are so nasty and cruel that we have to re-image the computer. I always make sure to get the customer's data off their hard drive first before this final desperate step.

I also help the campus by being able to reset passwords for login ins of email, and portal. I don't have the power to help with any other logins. I have cleaned many computers over the years. There are minor things i fix like restarting the IVN system or showing someone how to use it. The IVN system is a Polycom live video classroom. This is how my campus does some classes with other colleges. I have worked with video cameras, digital still cameras, mics, projectors, and other equipment.

At my current Internship, i am helping create the new campus website. I learned how to use Microsoft Sharepoint to makes links, pages, content, workflows, lists, and data entry forms. The great thing about Sharepoint is you don't have to know much about code. You just have to read the manual for Sharepoint. It is nice to know some ASP.NET code, which i know.

I have taken many Computer Information System classes. These include: Database Application Programming (VB.NET), Web Application Programming I & II (ASP.NET, Coldfusion), Programming I & II (VB), Data Communications Security (network security), Object Oriented Programming (Java), C#, Introduction & Advanced Relational Database Management System (SQL Server), Networking Administration, C++, Systems Analyze and Design, Website Design/Development (HTML), Data Communications, Hardware Troubleshooting, Computer Operating Systems, Introduction to Access/Excel/Word/Powerpoint/Outlook , Computers in Society, and Programming Logic & Design (Raptor). I am truly not an expert in any of these topics, but i am not a newbie about them.

I have one more year left of college, and don't have many more computer classes to take. I am going to go get certifications like A+ and others that could be beneficial to my career. I am also considering getting a master's degree.

Overall, i need a lot of improvement in learning about computers and the technologies closely associated with them.

Introduction

I am starting this blog in order to share my thoughts and knowledge in the field of computers. There are many things to explore in computers. I will be blogging about networking, programming, hardware, software, and many other technology subjects.

My profile--http://www.google.com/profiles/mike.computerlover13


my links:


I respect"All rights resevered" for all terms, products, inventions, etc..I don't own anything. I only summarize information i find interesting in books, internet, and other sources. And i do my best to cite all sources, but i am not perfect so forgive me lol.