Wednesday, January 14, 2015

ReadyNAS 104 and iSCSI

There are many talks about cloud storage and storing files remotely as a way to protect data from loss.  While it is a great way to use free services for this purpose, you might also need to think about learning about this technology as a learning environment.  It does not matter if you are an information technology, information assurance, digital forensics, cybersecurity, or computer science student, you will need an infrastructure where you can experiment and learn on your own.  Hardware prices and open source operating systems make the setup of this environment easy and cheap.

If you are in computer science and try to learn about programming, you might find it easier to learn about network based programming by setting up a web server and experimenting with HTML and JavaScript as a start.

It seems like every application that is written these days are based on web services or use web services as its interface.  Thus, it is in your interest to learn about network based programs and program execution.  You will also need to think about safeguarding the code you write and ensuring its availability as you are progressing with your studies. So, you might need to learn about server management and file sharing.

One of the lesser known file sharing technologies is iSCSI ( Internet Small Computer System Interface, an Internet Protocol (IP)-based storage networking standard ).  It typically use TCP ports 860 and 3260 and provides authentication for secure sessions.  It is based on the Target ( server ) and the iSCSI Initiator ( client ) model that is built into Microsoft Windows 7 and above or can be freely installed on XP machines for iSCSI support.

There is not much "talk" about this technology, so I wanted to bring this technology to light for those of you interested setting up a home based network environment.

Watch video on how to setup and use a ReadyNAS based system.
http://youtu.be/Ag3tfc2VSUA

 

Wednesday, January 7, 2015

Problem to Execution Methodology

Computer Science does not start by coding, but preparation and analysis in order to solve a problem at hand. That process requires many years of preparation and logical approach to solve problems. Thus, computer science is not as dependent on the programming language as most people think it is. Your first question about computer science should not be, "What language I should learn?", but how do I learn to solve mathematical problems. Problem solution starts with simplification, pattern recognition, and strong math background to create an algorithm that can solve the problem at hand in a finite amount of time and in a reliable way. Lately, we might also add the consideration of "securely" in order to solve problems in a way that is securely controlled.

                                                                   Methodology

                                      Problem                                           Logical thinking
                                           |
                                          V
                                     Analysis   <----------------              Simplification, experiments, pattern recognition                                                           |                                  |
                                          V                                 |
                              Algorithm Design  <----------- |              Math
                                           |                                  |
                                          V                                 |
                                      Coding  <-------------------|               Language ( security )
                                           |       <---------------- |   |
                                          V                             |   |
                                 Pre-processor                 |   |              Operating system  ( security )
                                           |                              |   |
                                          V                             |   |
                                    Compiler------ Error ---     |             Integrated Development Environment ( IDE )
                                           |                                  |
                                   (No Error)                          |              Syntax error depends on language used
                                           |                                  |
                                          V                                 |
                    Library --> Linker                              |             Operating system  ( security )
                                           |                                  |
                                          V                                 |
                                     Loader                              |             Operating system  ( security )
                                           |                                  |
                                          V                                 |
                                     Execution ------ Error ----              Run time error ( strong testing methodology )
                                           |                                                                    Input validation
                                   (No Error)                                        Logical errors hard to detect (test, test, test, ...)
                                           |                                                                        ( security )
                                          V
                                      Results                                                    Aesthetics and user friendliness
                                                                                                ( security -  displayed error messages )

In many cases, you will need to learn how to compile your code, but the Graphical User Interface ( GUI ) based IDE environments can divert your attention from how the process actually works.  I have created a video to help you understand the process of compiling code.  The video will also show you how to create libraries and DLLs and compile these static and dynamic libraries into your code.

http://youtu.be/7Gt5FJpEQvA