Monday, October 28, 2013

HTML and CSS

I know I've let you all down as of recently on my informal yet informative tid-bits of knowledge toward anything and everything. Well, I have been thoroughly busy lately. I have my board exam for work next week (basically my job depends on knowing a certain amount of knowledge toward networking and consulting), I have been trying to start a new website with Josh (www.fan-bastic.com), making a webpage for that site (what we will talk about tonight), and juggle family in the middle of that. This has meant pause once again on a few things, namely my studies for C programming and also my home lab building.

Though, one thing I have been working on was making a website. Currently, if you visit www.fan-bastic.com, it will just take you to our tumblr with a pre-made theme. What I have been working on is modifying a theme that someone online created to fit our needs. Instead of having it laid out like a business page with "Info Info Info" in the middle. I wanted two updating columns with information of what we can provide. Namely, YouTube videos of things we do (video games and such) and then any posts we would make to tumblr. Well first, the page we decided on first looked good but the layout was off a bit.



(Here I like the color and the top tabs to navigate to different pages, not those huge gaudy buttons though. No need for those on our site)




(Here I like the background for a page section and button color/type but no need for the weird "example of work" layout.... I'm not a photographer or designer)






(No need for a newsletter. We don't offer that. In fact, we don't offer any service like that so. We just chunked all of this)


(I really like this part though! I kept this and just changed around the buttons and images in them)


OK so once we decided what to keep and what to not. I decided that hey, I would just dive in here and edit some code to make it work for me. HA! That was a slow process, to say the least! But here's where I started.

So, to preface this adventure, I haven't touched HTML in about 5 years. Even then, I knew that <html> </html>, <head>, <body>, and <p> were needed. Past that... Nothing. Drawing a blank so... Like any crazy man, I dove in. I took a look at the code behind this page and had to learn a few things. 

1.) CSS is basically a reference. It refers to a .css page that holds specifics about the layout you want. To do that.... As long as you include the .css at the top of your page and make it accessible on your site, the same as you do with your other pages. (IE if you link to page "about.htm" it has to be accessible and linked properly on the webserver... Same with .css, just not an external link for people to click on, instead it's a link in the HTML code so the code can read from it.)

2.) <div> is a weird thing... I'm really bad at them.

3.) When going back to this stuff... Google is your friend! Very much so...

4.) They say with coding, the only way to really learn is to do it and try. When it doesn't work, you'll have to learn to fix it. Very honest and worthwhile words! I broke this for so long that I eventually just kept going and going until things worked.


I've decided to not muddy the waters too much with ALL that I stumbled through... But if you want to watch me do it for a while.... Just go here.

The few things I wanted to share on this specific code are, <div id="wrapper2">... That means that <div> is referencing a list of commands set forth by the .css file. So in our example...

<link href="default.css" rel="stylesheet" type="text/css" media="all" /><link href="fonts.css" rel="stylesheet" type="text/css" media="all" />


Those are the links to the different CSS code for these pages. It is referenced in all pages that need it, in our case, all pages. So if we look at what "wrapper2" that is in our default.css...

#wrapper2
{
   background: #EDEDED;

}

That really just changes the background for anything that is contained in "wrapper2". So while I was working in "wrapper2", I wasn't really changing anything for it! So, from there I erased the entire middle part of my page and then it looked terrible. So, I put <div id="wrapper2" back in there, then I put in some tags and such to try to get the format right.... That took forever. But then I realized that layout I wanted involved a "sidebar" so I used that ID. It helped put a youtube video list from an RSS feed on the side. Then I basically did the same thing with the tumblr feed! It took a lot longer than I'm explaining here but... Basically. I'll try to explain each part of our code that I settled on.

Example of site:
(I like the layout so far, I would like a box or border on the left side to help it stand out a bit more but. At least the layout is there in the right spot for all three major browsers.)




#1 <div id="wrapper2">    <span class="align-left column5"><script #2 type="text/javascript" src="http://fanbastic.tumblr.com/js?num=25">         #3 </script></span>        </div><div id="wrapper2">  <div id="sidebar">           #4 <span><script type="text/javascript"    src="http://output93.rssinclude.com/output?  type=js&amp;id=783404&amp;hash=2dea277395faf6c9095952be362a7a61">      #5 </script></span> </div> </div>

So if we work down through this...

 #1.) This is a lot of what does the magic. Basically it is saying "read wrapper2" and do what it says. Which is just change the background for anything included under it.... (The middle of our page). Then span the with a class of "align-left" which is a css reference I created that just floats an item to the left side of the page. I made a right side reference as well in case I will need it. I will show you the align-left and column5 references here in just a minute. But that brings us to the next point, column5. It is a references point in the CSS I made to be a column that I needed. It's really our entire left side, and I could have named it such but, I kept with the scheme they had so far in this CSS and stuck with column(#). 

So here is the CSS code for both of those. I just simply borrowed bits and pieces from other CSS references to build these until they worked the way I wanted them to. Luckily for me, the sidebar one was already created and worked well. (I had an issue with it sticking to the side in IE and Firefox but not chrome, until I removed an extra class or id tag, I was able to then get it to be generally located the way I want it to. Again, not perfect because if the page isn't maximized, it looks bad and the youtube drops below the tumblr feed but for now it's working well enough.)

.align-left
{
   width: 49%;
   float: left;
}

Please note: I put the percentage of width I wanted this format to take. Roughly it means that, if I assign something this tag, it will be able to take up half of the screen.

.column5
{
   float: left;
   font-family:Verdana, Geneva, sans-serif;
   font-size: 14px;
   margin-left: 8%;
   margin-top: 50px;
   width: 45%;
}



This basically says that this column will be on the left side, float it there. A certain font style will be applied to it. A certain font size. Then, the margin on the left side of this column, from the edge of the upper div (for this we are in wrapper2 so that is our edge, aka side of page, it could be different if I were elsewhere) will be 8% from the edge of it. Then I set a certain pixel distance from the top of the edge of the div as well which is 50px in this case. Than last but not least, the width of this specifically will be 45%. I didn't want it to take up the entire page but I wanted it to span most of it.

I'm sure that there are some things that aren't elegant about this code or even plain wrong but... It works exactly as I want it to for now. The more I learn, the better I can clean this up but, I don't know how to do it better for now.

#2.) At the end of #1, you'll notice the "<script" starts there and continues on line two. That is just the feed of our tumbler. It is a javascript feed of it instead of RSS.

#3.) This is where the script and the span close. Then, it starts my next div, again it's referencing wrapper2 and then instead of our tumblr feed, it is our youtube feed with basically the same thing. It's referenced as a sidebar which the creator had already set up so that was handy!

#4.) Then from there, it's basically the same as it was but instead of the tumblr feed, it's an RSS feed of our youtube videos after upload. But the size of the feed is controlled by the RSS-to-HTML converter that I use.


So, that is what I finally learned and eventually worked through with HTML and CSS. It's not pretty and it's not short. It took about 3-4 days of solid work and trial and error to get it all right and working. I think it turned out well and I would like to touch it up a bit more soon. Again, this isn't a post that will teach you everything you need to know from A-Z but, hopefully it will hit on small parts and highlight them and explain them in layman's terms. Then, if you have any specific questions behind this, you can ask me anytime! I will do my best to answer them and if I can't answer them right away, I will find the answer! I hope this has been helpful to at least someone! Thanks for listening! Sorry this post was so long. 


-mitch

Wednesday, October 16, 2013

Switch erasing

So... The day has finally arrived! I have a special surprise for you all. I set up one of the switches in my home lab and recorded it so that you can follow along. I tried explaining what I was doing along the way, though I must admit, I get a little ramble-ish throughout parts. Along with it being a little scatterbrained because that's how my mind works, as if you hadn't noticed from the layout of this blog so far! Ha. But, without further ado! I present my first video! Enjoy!








-Mitch

Monday, October 14, 2013

Chock full of excuses

I am currently so full of excuses, I can't seem to find anymore inside of me... That's not true. I have a few... just for you! I will not be giving JUST excuses tonight. I will, however, share with you my super secret plan. I was going to ........ show the erasing of the configs from my lab equipment and then initial setting up! Woo! But. Currently having some technical difficulties and it's 11:30pm at night so I'm not sure how diligent I will be on them this evening. I apologize about this and I hope to have it working again soon. Until then... I can provide you with a picture or two but... It's really boring since it's just me trying to get Wind-blows to play nicely with my Ubuntu 13.04 install in VMWare Workstation.

Edit: I was wrong! At 11:45pm, I have been able to at least get the serial adapter working to communicate with the switch! We are in business for part of this! Now I just need to get the desktop recording software ironed out and we will be set! (PS - A few kinks here and there with the minicom profile at the moment but, no worries there. I'm on the case!)(PPS - Kinks are worked out with minicom. That really is a great tool! Kudos to those guys!)


Ok... I leave you with this for the evening. Tomorrow, provided I can get the video recording kinks worked out. We will learn how to get around this little screen and start setting up a Cisco 3560 Layer 3 switch.


(Edit #2: I think I have most of my issues figured out. I have to do a little work around for this but it should be doable. I basically can't record the video with sound, instead I'll have to edit in the sound after. Maybe it will work better that way and I will make less mistakes. But, yay video sooner than later!)


































-Mitch

Saturday, October 12, 2013

Worth the wait...

I wanted to keep everyone abreast of my progress so far. I'm currently learning to read, write, and code in ANSI C;. This is a great base language. I've had many people tell me it's not worth learning because newer languages are better and more useful daily. Well, I'm sure that is true BUT! Most operating systems are written in ANSI C, so I figured I should be learning it. And once I get a good solid C base down, the other languages should be a LOT easier and flow better from there. 

That being said, I'm currently starting Chapter 11 of 32. Almost halfway there! Just over a third I suppose... Bah! I feel like I'm making good progress! It's really interesting too! I'm currently using an online book service that I am provided with at work called Safari Books Online. Really great tool. On this site, I'm currently using a book called "C Programming, Absolute Beginner's Guide" and it is a great read! Perfect pace. Perfect amount of details. Not too hand holdy and not too fast. Great, great, great, great book! Not sure on the cost of SafariBooks but, if you do reading about these things. I recommend it. And once I finish up this book, which will teach me ANSI C, I'll then read "Teach Yourself C in 21 Days" and hopefully it will just be a refresher so it won't take that long. Then I hope to move on to C++ since it is very similar to C. Then after that, I guess I hope to learn Python or Perl. Not sure which will be first though. Guess we'll find out together!

Though, while learning on my own here, I've taken the time one evening to set up my home lab! Whoohoo! So, that means that we will be going through some networking stuff here soon enough! Woo! Get excited! I will provide some proof below that my lab is set up and connected and we will catch up soon! Have a great weekend everyone!

no internets yet... sad switches



-Mitch

Tuesday, October 8, 2013

Broken down house

So... I'm really lacking in my material to regurgitate to you lately. I apologize about this, not for the fact that you are expecting more from me or that I am required to share it with you. I'm sorry in the fact that if this were my job, I would be doing a poor job of doing my job. So. Tonight, is not much different than last. That website I stumbled upon, is REALLY great. I mean really. You need to take some time to read through the material they have on how the computer speaks to each component. Fantastic read. I am currently just wrapping up the RAM and Cache memory sections to start on the CPU. It really helps lay out how a PC works in my mind. 

I wish I could share some of the information that I've taken away from this, but unfortunately, it's not that easy. It's a LOT of information. I hope to share some eventually but, it's very difficult to share this in small tidbits that will help you all learn. Also, since I'm mostly just learning the technical details of this myself, it would be hard for me to teach you about what I'm learning. So we will have to save some of this for a time when I've got a better grasp on it.

BUT.

I have learned that a house built in 1936, will break. I did however get to fix my dishwasher on my own. May not be a permanent fix but, at least it's working for now. 


At least some positive came out of these last few days though... So please bear with me. I'm hoping, tomorrow or Wednesday, to set up my home lab which is a set of 3 3560 Layer 3 switches. I may, if I can swing it, record a video on doing a few things in there to help. It will not only help me get ready for my (soon approaching) board exam, but it will also help show a good path to follow for the networking side of things. It will also act as a good test or two for recording videos and audio. I don't know if I can include them on here or if I have to post them to Google+ or YouTube but, I intend to find out. Thanks for sticking with me and please keep learning on your own, even where I may be lacking, it's worth it. I promise you that.


-Mitch

Monday, October 7, 2013

Broken dishwasher means Linux reading

Not much to report on in terms of learning today. Well. I guess that depends on your definition of learning. Learning in coding, networking, or anything related? No. I learned how to take my dishwasher apart. It stopped draining properly and so it's been a late night. However, I wanted to leave you with a little treat. This is a good website so far in breaking down a lot about what all Linux is and how it works. I hope it helps you guys as much as it's helping me refresh on Linux and it's key factors.


-Mitch

Sunday, October 6, 2013

A bit of kernel information

Good evening. Sorry I missed my normal post of yesterday but, just didn't have time with family and such. Tonight will actually be fairly short as well, but I promise I've got something in the works soon so hopefully that will make up for the few lacking posts recently.

Today, I want to share with you something that I learned. I want to share with you the [uname] and it's output in Linux.

It's main purpose is to tell you about the system you're on. It gives you handy information but it might not always look handy when reading it.

A few key elements to know and note. [uname] simply puts what kind of system you are on. If you're on Solaris, I believe it outputs "SunOS". If you are on Ubuntu, I know it outputs "Linux"


Pretty simple right? Let's see if we can't get it to do a few more things for us.

Let's try a [uname -a], I've heard of this one being used.



Well that looks more like it! That's so much information! IN fact... Let's probably say that is too MUCH information. Let's try reading through some of this and then maybe filtering it back.

We are gonna start from left to right.... Linux. Check. Ubuntu. Check. All of this is making sense so far. 3.8.0-31-generic. Uh. Check? I know it's referring to kernel but not much else. {insert garbage between #46-...2013}. Don't know what that ALL means but I've got a decent idea. It's at least got the date and time in there. So then i686. Well it's not 64-bit. It's telling us that it's based on the x86 architecture so. It's 32-bit. And the athlon part means it's AMD. Again, i686. Then it ends with GNU/Linux. Check. Pretty standard. Once you walk through each part at least.

Well let's focus on the kernel message. Let's take a closer look at what it outputs. I give it the old [uname -r] input. I get this:
Ok so. Let's start from left to right. Linux has a format for their kernel naming/numbering scheme. It goes in this format.

major.minor(stable/beta).revision-no_clue-generic


So the way to remember this is. I'm running version "blah". In my case, I'm running kernel 3. Most people include the minor in that though so, I would be running kernel 3.8... But! I found out a little tidbit this evening. Linux does a cool thing with their numbers on the minor. If it's a stable version, it's an even number. If it's an odd number, you're using an unstable, test, or aka BETA version. How cool is that?! They think of everything... Anyways. Then the revision. Minor updates for that happen and get appended on there. That number probably changes quite often. BUT! Now you should be able to look at at least SOME output from [uname] and read it. I thought that was some interesting stuff on the output for [uname] and I hope you did too. Good luck guys!



-Mitch

Friday, October 4, 2013

Changing gears

We are taking a left turn tonight. I promise though, that we will be back on our old track soon enough. I needed a slight break from my self studies tonight since my job has me running a test gauntlet to make sure I'm ready to take an actual exam soon that my job is relying on. SO! Pressure, is what that really means. Therefore, tonight I'm going to try to explain some of my networking learning instead of continuing down the path of shell scripts and programming. Don't want to overload my own brain with more learning on top of learning so. I'm going to try teaching what I know without myself learning anything new tonight.


A small recap. 'sed' is used in Linux to modify output or "data stream" without actually modifying the file. We learned what the -s means. Substitution. Then, we learned about some regex. With regex, we learned that -d is for digit, while -D is "anything but a digit". In fact, we learned that most of the time, anything that has a lowercase meaning and an uppercase meaning, they are opposites. Lowercase is usually referring to something. The uppercase usually refers to "anything but that something". Tonight though, change!


Tonight we start toward networking. I don't want to stick to just one knowledge topic with this blog so... I think this fits perfectly. I don't want to start at ground zero with networking... I think it best that we start in a middle ground. We are going to assume that, if you are reading this, you have at least some prior networking understanding. Maybe not enough to get your CCNA but probably enough that if you studied a bit, you could get your CCENT (first half of CCNA). In fact, since what I've been learning most recently has been ACLs. I think I'll do that tonight. I know that the topic of ACLs is probably well above the CCENT but, if you're going to work toward taking your CCNA, you need to know them! So why not have a really good understanding of the basics? I'll try to help with that.


First of all, ACLs are confusing as hell. No getting around it. Assume this setup has 2 in use VLANs. Vlan 10 and vlan 20. Vlan 10 is a management vlan, while vlan 20 is the data vlan. What if you wanted to restrict the data vlan from SSH'ing into any of your devices? Well... You don't have to imagine to hard, because that is a completely real thing you will need to know how to do if you are in charge of a network ANYWHERE. 


For our example here:
vlan 10 network is 192.168.10.0 /24
vlan 20 network is 192.168.20.0 /24.

So I'll start with what the list will look like, and then break each part down with the formula I use to remember it. If it doesn't make sense to you at the start. Trust me, it didn't to me either!

[ip access-list extended BLOCK_SSH
permit tcp 192.168.10.0 0.0.0.255 any eq 22
deny ip any any log]


Apply this to all 'vty' lines (usually 0 through 15)[line vty 0 15] that you want and you are set! And remember, an ACL ALWAYS READS DOWN, IN ORDER. "It's a first match system, not a 'best match' system."


Now first things first, you may be asking yourself... But how will that block everyone and don't we need to allow more people at the end? Since there's an implicit deny at the end? Well, no. Long story short, we'll get to that in due time. Let's break this down.


Step 1. [ip access-list] = You use this command at the 'config' mode to tell the router or switch that 'Hey, I will be making an access-list and I want you to save it for me.' and that's exactly what the device does.

Step 1a. [ip access-list extended] = You've got to tell the device what KIND of access list. Standard ACLs are limited, but quick and easy. Extended ACLs are more 'narrow' but complex. I know that sounds contradictory but... It's more specific when applying them, but the overall command is more complex. But for this example, we had to use 'extended' because standard doesn't offer a way to block port 22 (SSH).

Step 1b. [ip access-list extended BLOCK_SSH] = You have the option to name them with a word... I recommend this to help keep track of what you make and why you make it. Can't use spaces but you can use underscore. I use all capitals to help it 'pop out' to my eyes when looking for them in a config.

Step 2. [permit tcp] = You have to tell an ACL what to do. It'll either be permitting traffic through, or denying it. Today we chose to 'allow a certain set of guys through' so we are going to permit the specific ones and block the rest. And we chose to permit tcp because SSH operates on TCP. If we were blocking ping, SNMP, or DNS (etc..), we would need to block UDP. You have to know what they use so, helps to know those. (NOTE: If you chose one, then get the rest of the ACL set up, and hit ? at the end of the command after 'eq', it will give you most common options which is helpful. So therefore, it will show you ONLY TCP ones when you have chosen TCP and only UDP ones when UDP is selected.)

Step 2a. [permit tcp 192.168.10.0 0.0.0.255] = OK so we have said, 'Hey, we are permitting something. What you ask? It's going to be a TCP port. OK, what do you want to permit on this TCP port? I want to permit any IP from 192.168.10.0. OK. How will I know what parts of that IP are important?! No worries man, you can use this wildcard mask 0.0.0.255...' Easy enough right? Basically, the IP network we want to specify is 192.168.10.0... How do we determine the part of that IP network that is important? Well a wildcard mask works VERY similarly to a subnet mask so. Easy way to remember that is 'opposite!'... If a /24 is NORMALLY 255.255.255.0.... The opposite would be 0.0.0.255. Just like a subnet mask reads it through as '255, got it. Pay attention here! Zero? Ignore that shit!', the wildcard mask says the opposite... 'Zero?! Man! I gotta pay attention to that! 255? Don't care!' Easy way to look at it.

Step 2b. [permit tcp 192.168.10.0 0.0.0.255 any] = Well where is this headed? What is the destination I should be looking for? Oh, OK they are allowed anywhere on my device or past it... Basically "If this were a block or an allow, where do you want to block or allow to?" Well, we don't care where that network is headed! It's our management network so they have free reign. They are demi-gods in our network! Muahahahahahaha! That's why we allow them anywhere they want to go. But if you so chose... You could sub in a single IP here that allows them ONLY to that IP. But for us, we want them to be able to SSH anywhere!

Step 2c. [permit tcp 192.168.10.0 0.0.0.255 any eq 22] = What TCP port did you want to block or allow again? Oh, port 22 (SSH). Got it.

Step 3. [deny ip any any log] = This can easily be explained in one step using our rules from earlier. What are you doing? Denying something. OK. (IP covers both TCP and UDP) What do you want to deny? BOTH (TCP and UDP)! OK. Got it. Who do you want to block? Anyone. Oh... Seems extreme but OK if you say so... Where do you want to block them from? Anywhere! Well now I KNOW that is very extreme, but OK... Oh, and PS, please log all people that get denied!


So then your list is created! Awesome. But it's just sitting there not doing anything. It's like building a car but never using it. Just building it and saying "Yes, I have all the right parts in the right order. Cool." So once you apply them by putting in this :

[line vty 0 15
access-class BLOCK_SSH in]

That basically says "on the line virtual terminal (y OK I don't know what y means.... Yankees?)(Turns out The Google tells me it means Virtual TeleType, which was an old name for it)... I want you to use the access-list we created called 'BLOCK_SSH' and I want you to filter things that come IN with it..." And since you are ONLY applying it on your VTY lines and not some other interface on the device... It means that 'Hey, I will ONLY check this list when people are trying to telnet or SSH in.' That means that this list will only apply to people trying to do that! Woohoo! Luckily the other requests that go in and out of our device will be left alone! So, it makes our list SO much shorter! That also means that we didn't have to put that [deny any any log] in there but... We did for the sake of 'logging any denied requests'. We want to see the people that try SSH'ing in and aren't allowed. 


So, now that we have it all sorted out and explained... Let's try to find a short way to remember these lists instead of reading this whole page every time! (I know I wouldn't want to... This is a LOT of reading!)


ip access-list extended name (easy, ip acc ext and we do extended because it covers the standard ports too!)

permit tcp 'x.x.x.x w.w.w.w' any eq XX (easy again! read it out loud. permit or deny. permit or deny what kind of connection? 'coming from where?' headed to where? how do we match the port? equals a specific port in this case... OK... What port?)

So a short version of the permit or deny part is:

permit/deny | what | who | going where | match how | port to match


If you want to be more broad, the statements only get easier... I want to block all SSH port requests. OK. [deny tcp any any eq 22]... I want to block ALL remote connections to this device, TCP, UDP, or IP.... OK, even easier! [deny any any] So the more broad, the less specific commands it takes to cover it, but the more things get blocked and are harder to fix that way. So be careful! But that should help you remember ACLs at least a little bit better from now on! I hope this helped at least one person understand ACLs a little bit more!



-Mitch

Thursday, October 3, 2013

My humble Regex beginnings

I understand what Regex's are used for and how powerful they can be. But I've yet to use them regularly enough to learn more than a simple chart lookup here and there as a cheat sheet when I need it. I'm not much farther than that tonight, and it's already late so I don't think I will be going much farther either. I would like to share a few things that I've found out, and if I share them here, maybe I'll have a better chance of remembering them...

To really learn regex, I've been watching videos which means I'm just learning the material from someone else and spitting it back to you guys in layman's terms. In fact, for a while, I would bet on the fact that it will probably be mostly in this format for a while. I'm still new(ish) so, hang in there and we'll start moving forward together. PS - I want to link newthinktank.com since it was Derek from there that gave me a decent start in regex tonight. His videos also helped me realize my statements below really ring true when learning regex.

So the first thing I really took away from tonight's video session with regex is that, to truly learn it, you should write out what you want to accomplish in notepad to make sure it all looks correct. While doing so, there is no pressure to get it 100% right the first time. Just start writing it! You can work it out as you go! Along with that, you can also put the regex in any format that helps you learn better. So a perfect way Derek showed me was to take it and put each portion of regex on a newline. 

Example:
\d{3}       The d here represents searching for a 'digit' that is 3 digits in length ONLY
\s            The s here represents searching for a 'space'
\w+         The w means character, the plus at the end means "of any length (one or more)"
PS - The capital of each letter is usually a term for the exact opposite of what you were searching for. So 'S' means "anything BUT a space".

The above code would look completely wonky and overwhelming when put in a line as it's seen in use. So if you were looking for a 3 digit number followed by a space then a word... The regular expression you might see could look like \d{3}\s\w+ and it looks 100% foreign unless you know regex. So, a great way to learn, is to put it in a notepad and make each command you are learning (each small bit of a section) be a newline. When doing so, you break it down into small chunks of learning and hopefully that will help grasp it better.

This may even be able to be applied to many other scripting, programming, and shell functions and commands that you need to learn. It's common knowledge that learning in small chunks often is MUCH better than large dumps.


-Mitch

Wednesday, October 2, 2013

Knowledge baseline

I wanted to make sure to take the few short minutes I have today to note the general state of knowledge I'm currently at. It will cover quite a wide birth of topics since I apparently am a man of many hats. So my background is simply a love for computers. I like logical thinking more than abstract most days, I would say. I like the idea of abstract and useful thinking, I guess I'm just not that great at it. Sadly, I've yet to get too far into programming. One would assume with logical thinking as my safe-haven, I would take to programming. No real reasons behind me not heading that way other than lack of guidance toward it. No one I knew or admired did it so, why would I find it interesting enough to pursue? My simple past with computers started me down a path in college of "Computer Support and Repair" which gave me a wide brush to paint my career with but, it wasn't very specific when trying to move forward. I started off as a PC/Network Repair Technician. I got called for anything from a printer to a switch (very very simple networking at the start). Though I had a bit of help to hopefully get me started in a right direction, I still hadn't found what I liked. I liked computers but, it was mundane most days. I soon grew bored of it and wanted to move into servers. Well, I was able to get a small-to-decent amount of exposure to them and discovered that, other than learning more in the overall scheme of what it took to make them run... They were basically the same thing! Just a Windows box with the same problems, just a level up! Well, I'll be.... That was soon followed by the quick demise of my first job out of college. I phrased it that way 100% on purpose because I'm still not sure the stance they took regarding my "separation of employment". I will tell you though, it was not my choice at the time. It all worked out, though. I was able to move on to a job where I was the most knowledgeable employee at a small company! Yeah! Except since there was only two of us, it wasn't worth bragging about I suppose. That job was short lived for a variety of reasons that we don't need to get into either. I left that job for a better opportunity at a school. I wasn't directly employed by the school corp but instead I was a full time staff-aug. I was able to grow tremendously at that job! It was a great environment for learning and for honing in my skills with PCs, networks, servers (both old school Novell/Netware, new school Novell/Linux, and Windows), application deployment and imaging. There was also another key factor at this job, I was able to stick like glue to one of my coworkers remotely. He worked out of Southern Indiana, while I worked in basically Indianapolis. He taught me things about Linux, Windows, Novell, Zenworks, scripting, hard drives, programming, and much more! I owe him SO much... But I worked there for a year and a half. I was ready to move up but, sadly there weren't too many jobs that were readily available above me. It might have taken a while to move up, and I had put in my application at my current employer a while back to become an Associate. Basically, they train you for a year to 18 months on how to be a Cisco UC VoIP Phone Engineer and provided you can follow along, do what they ask, pass the tests that they require and prove you know what they want you to.... You become an engineer! Not the civil or mechanical kind but still, I couldn't pass it up! So I went into this job with middling network knowledge. I understood most of the basics, enough to pass my CCENT with no studying. I then was able to recently pass my CCNA. So, that is all the networking background I have. Almost no VoIP experience to speak of, other than I get the ideas behind QoS and call routing. But as I learn more in that, I plan on sharing it with you all! Hopefully it will help you some day when you need it. So then at my last job (school) and my current job (associate/learner) I have been running Ubuntu 12.04 LTS as my work OS. I like it, it's fast, light, easy, makes sense, all of my tools are built in, and anything that I may not be able to do on Linux (I'm not that naive, I realize there is a lot you can't do on Linux and just REALLY need Windows for..), I simply have a VM of Windows 7 running. Yeah I use it a lot but I promise I use my Linux box and it's easy built in powerful tools a lot more. And I plan to only use it more as the days go by. And with Linux, this brings me to my last point. My last point regarding my own knowledge.....

Sidenote: Ha a few short minutes. It's been about 30 and I'm so long winded that I've written an entire paragraph.

Ah yes, my last point for the evening. Programming. I have little to absolutely no programming language skills. I understand enough to be able to read and maybe write a ROUGH script. I know that #!/bin/bash is a shell script start and that #!/bin/bash/perl is a perl script on Linux. I know ZERO VBS or PowerShell for Windows. I started to learn either C or C++ a while back, but got preoccupied and was unable to continue the book on it. (I believe it was C.) I know a little about reading those, but other than that. Nothing. Consider this ol noggin an empty canvas for programming, scripting and learning. While continuing to learning networking and VoIP daily, I want to try on my own. With that said, today after working late, I was able to watch a few quick videos on the 'sed' command. Which, I learned yesterday, was the stream editor and that means that it doesn't actually modify the file you are looking at the output of. It's simply modifying the output as it appears on screen. I quickly realized how handy this could be when using that previous output as input on some other command, variable, or sub-routine. With that, I figured a few things to make sure that I kept note of for sed were that (-s) is for Substitute(separate). While using the -s option, if you choose, you can use some following options to help parse the information better. -f is the field that it is using to pull or separate the data out of. -d is the deliminator, or separator that is used to note the fields beginning / end. The other key to keep in mind with sed is that, while mostly taught with /// as the key characters to separate the statements of the sed, you don't have to use it. (Please be aware, 99% of the time when I'm referring to code input, I use [ and ] so that you know to remove those and the code within is what you are looking for.) So, an example to try is [sed 's/word/otherword/g' file] while trying [sed 's;word;otherword;g' file] and the output should be the same. 'sed' does not care about the separator that you chose to use, as long as you are consistent with those three. This can help make it a VERY powerful tool and one that will be quite handy in your upcoming arsenal that I plan on creating. It will be the arsenal used to defeat anything from a simple script you decide to make to a debug we will hopefully learn together later. For now, I leave you with this quick output picture of the sed command above working for myself. Best of luck, and I hope to be back tomorrow!



-Mitch


PS - Photo:
ha see, no change. handy!

Tuesday, October 1, 2013

First of many

So I don't think that I have a theme or a structure created in my mind for this yet but, I did want to start it. I have quite a few ideas in my head as of lately that I've wanted to get off the ground. I figured if I started with a simple blog to help others along my journey, then I would be forced into actually doing the journey. I'm not saying I would have been unmotivated otherwise, but no one says a little extra motivation won't hurt. A wise, yet VERY smartass teacher of mine from college said that, if you are getting into networking (and more), you need to try writing a blog to hold yourself accountable. So that is exactly what I chose to do tonight. I don't think I'm going post details on the lofty goals I have in mind in the near future but, I will give a hint of what's to come. I want to do walkthrough or few for Ubuntu 12.04 LTS issues that I've experienced over my transition to it within the last few years. I figured that, hey, if I'm experiencing these issues... Someone else has to be as well! And therefore, they need to have them answered in layman's term (which I happen to be very fluent in). So besides those, I want to try to document my current learning endeavors. My job is one that literally pays me to learn for the next year. So maybe, if I can, I'll share some of the knowledge and items I learn from that to help someone along the way who might not be as fortunate as I was to get a job that pays you to learn for 18 months before sending you in with the big dogs. While getting paid to learn from my company though, I think I want to continue to get better at things that interest me. So I'm currently learning how to write some shell/bash scripts for a variety of reasons. There will be more that I am sure I will dip my toe into as we move forward with this but, this seems like a pretty good start. I'm going to go take some notes on shell scripts and hopefully update this tomorrow. This might not be an "every night post" kind of blog but, I hope to keep it regular.


-Mitch

(PS - I don't think I need a handle or a pen-name do I? This is informal enough that Mitch should suffice for now...