I'll probably never be the best in the field...


 
Thread Tools Search this Thread
The Lounge What is on Your Mind? I'll probably never be the best in the field...
# 1  
Old 03-10-2019
I'll probably never be the best in the field...

I don't know how to start this but here goes.


I've been "using" Linux for over 10 years, possibly more and I still feel like I'm nowhere

where I should be. I'll be fair most of my time was spent either figuring out how

to run games on *nix at the time but as I got older and "wiser" I started learning
more about it. I do credit my dad for opening up the world of *nix to me as
he was more of a networks type of guy.

Long story short, I was blessed with a job working with Unix systems; Solaris & IBM i series.
I'm able to get tasks from my senior fairly done without much questioning from him I still feel
I'm light years behind, I don't know why but it seems that's so much more than #echo "hello world".

I guess I'm just venting, this is my first sysadmin job ever and, it was a huge jump from
being in tech support for a year and half. A few times I surprised my senior but, I don't know...
feels like I'm missing something.
# 2  
Old 03-11-2019
Hello samthewildone,

I am getting strong feeling from your post that you are looking for *NIX learning, if yes, then:
IMHO, we all should follow famous quote:
Quote:
To Begin---> BEGIN
You are on right place, this is one of the GREAT forum which I have come across. We have different forums(shell scripting, languages etc etc). Please go to HOME PAGE and you will see all sub forums there, go inside them 1 by 1 and you could learn real time prblems there. OR if you are a lover of Documentations then we have man page sections too where you can go through all command's manual entry and then you could go to forums and read already existing posts and could learn from them.

Trust me when I joined here I didn't know even ls command, today also I am learning but now at least I know few things and it is all because of UNIX.com.

Do and start reading here. And if you have timings issues(like most of the time I have, office, personal things etc) then also try to grab time in between and do something, make AIM of learning a new command daily(at least 1 command) and evaluate yourself after a month or so and keep doing this until you becoe expert 1 day. I am pretty sure anyone in this world who does HARD WORK it will always be a success.

Our best wishes are with you.

Thanks,
R. Singh
# 3  
Old 03-11-2019
Well, I don't fully understand your background from your post, but I call tell you my views on mastering technology and I have been applying UNIX/Linux technology in real-world applications since the mid 1980s until now. I coded this morning over a coffee.

First, it is important to understand there are two basic approaches, top down and bottom up and a lot of people get stuck in one or the other approach, but the key to success is to combine both together.

Top Down:

This is basically learning and understanding theory, high level concepts, overall system architectures (and standards), and all the "less than hands" knowledge. This could also include a number of classes and tutorials in "theory".

Bottoms Up:

This is the realm of the hands-on approach where we actually build working systems and applications. This is also taught in universities and in the educational system in general in "lab work"and other assignments where you apply your knowledge to solve a real-world problem your teacher gave you.

So having said that, I can tell you that while both are very important, I consider the "bottoms up" approach to be the most valuable (by a long shot) in terms of really accelerating your knowledge and skills. I mean really, think about; you can watch 100 YouTube videos on downhill skiing or motorcycle racing and that is all good knowledge, but you will never be a great skier or motorcycle racer. However, you can become a great skier or racer and never watch a single YT video or have a single "How to Ski" or "Motorcycle Racing 101" certification.

For me, I have been writing software for real-world applications all my life; and I am currently well on my way to mastering Vue.js over the past 30 days. Let me tell you how I did it.
  • First of all, I watched a lot of YouTube video tutorials (months ago before "going in"). This was before I ever coded my view Vue.js application.
  • Then, I started coding some simple Vue.js applications and installed Vue.js apps that others had built.
  • Then, I found a template for a very large Vue.js application I liked (after weeks of research), and I started to modify the components for a real-world project.
  • Then, I started writing my own components.
  • Then, I started optimizing my code, rewriting all the things which "worked" but as I learned Vue.js I realized there were better ways to do things, or I simply "realized" based on past experience how to improve things.
  • I still watch a YouTube video every day or so and refresh on theory or learn some subtle variance.
  • Now, I'm getting very close to mastering Vue.js at the intermediate level (in around 30 days). I am very comfortable with Vue.js these days (and absolutely love creating in Vue.js).

Now, going back four decades, my first UNIX project, with zero prior UNIX training was to interface a Chicago-based radio manufacturers production line test equipment (all HP) with our HP-UX servers and record all test results in a (Progress) database. This was on a full production system where the company would lose huge sums of money if the production line was down for an hour. I learned the UNIX shell, vi, and UNIX IPCs, system programming, Rocky Mountain Basic (RMB, the language I had to use to get HP-UX to talk to the HP test gear), network communications, client-server coding on UNIX, and more with zero prior hands on UNIX background. I did have experience in computers, and of course had a EE degree, so I was no dummy at the time. HP engineers in Mountain View told me I was the first person they knew of that used the HP-UX shared memory features of RMB to work a in real-world HP-UX app (many decades ago) and so I ended up teaching HP system engineers how to use their own RMB system calls in a real-world app.

So, for my entire career, from pre university to post grad to professional life, in every step, I have coded logic on computers to build solutions to problems. From the TRS-80 to the Amiga, to the C-64 to HP-UX, to Solaris, ATT (3B2s), AIX, Linux and more, more, more. I think I have worked on (or at least examined the code or logged in to) most types of (but not all) UNIX system at least once in my life. All my work was on some "tech of the time". I have being told by many that I have forgotten more tech than most people know, LOL. So, let me tell you this:

The way to master technology is to build working applications that solve real-world problems. You must write code. Code is the language of information technology; and people who do not write code solving real-world problems are "posers', like the consultants who never code but try to tell us how to secure a server or admin a system. There are people who pose as experts, for example, cybersecurity experts, who have never been a real-world cyber attack where they had to defend against hackers in real-time. Imagine that! In fact, the entire industry is pregnant with these posers. I would venture to say that some very high percentage of "cybersecurity experts" on LinkedIn have never written a single line of defensive code, and even far less have ever been hands-on in a real-time cyber-battle. I have written millions of lines of code in my life, and nearly all of it was "not based on some standard or theory or certification" and almost none of it was "not very pretty" but it got the job done during an emergency / situational crisis.

Instead of telling you story after story of what I have coded and why (it's mind boggling, actually), let me tell you this:

Anytime you examine code written by others before you, you will see things that could be written better.

Everyone who writes code does this under some constraint, time, money or both. No one has the luxury in the real-world to write perfectly beautiful code which meets all standards and would make his software-engineering professor proud. Companies do not pay for perfection and "pretty", in general. Code evolves based on the need. It starts out messy, in general, and is optimized as time and resources permit (if it ever does).

I code real-world projects everyday. My code can always be improved. But I have to decide what is the "critical path" and often optimizing code is not the best use of time, but then again, when I have time, I go back and optimize. I did this just this morning, and eliminated a single AJAX network call to a REST API because I dreamed that it needed to be done and woke up with solution in mind, made a coffee, fired up my development environment, and re-coded a working solution (I wrote a few weeks ago) to eliminate a slow network call and optimize the user experience. Actually, I laid the groundwork (in code) for this yesterday, optimizing a back-end PHP MySQL method.

SO CODE.

Create a project and code it. Dream of a project and do it.

If your work does not permit that, then code your own project at home. If you can't think of a project, then join a volunteer project and code for someone else.

CODE. CODE. CODE.

Coding is fun. It is a great way to express yourself, creatively and artistically, from a digital and logical perspective. Coding is good for the brain. Just don't forget to go outside and get some exercise and enjoy the non-coding world.

Just do it.

And never forget, there are around 100 billion stars in a single galaxy and you have around 100 billion neurons in your brain; so your brain has as many neurons as a galaxy has stars - and that is not including the connections between your brain's neurons! Wow. Think about the gift you have between your ears! Each one of us has this amazing "expensive" living, biological computing creation between our own ears! It's true!

Just use it and enjoy!

Life is a GIFT and a blessing!

Don't get hung up on dogma and belief systems, traditions and social memes, just enjoy your 100 billion neurons and use them wisely every day of your life, in whatever you choose to do.
These 5 Users Gave Thanks to Neo For This Post:
# 4  
Old 03-11-2019
Hi Neo...
Brilliant!

Hi samthewildon...
(Apologies for typos, etc...)

I back everything Neo has said.
I am an amateur coder, I do it as a serious hobby, but when I first started coding it was on a Sinclair Spectrum using its default BASIC.
I had a Sharp MZ80K before that but its BASIC was convoluted, and initially put me off coding entirely.
However Sinclair BASIC was idiot proof, syntax errors were impossible as any line with one could not be entered directly or into a _script_.
This meant any errors were coding ones, mine and mine alone.

As an electronics engineer I decided to write a testcard program for the Spectrum, it took me a while but by trial and error I learnt things like, simple loops and decision statements. I wrote other testing snippets too for my professional work.
Well although it wasn't perfect it worked and this is what got me into hammering hardware, because drawing in the Spectrum's border was very, very limited in BASIC.
So I decided to learn Z80 assembly, I was told this was FAST, and it was a revelation. I bought a commercial assembly compiler, (by HiSoft).
It turned out that because of learning BASIC, Z80 assembly coding became second nature; and, the result being I started drawing inside the border crosshatch lines and colour bars.
This transformed my testcard and became my standard, FREE CRT alignment tool until I got my AMIGA which got me into ANSI C, a language I don't use much at all now.

I STILL code in BASIC in various platforms for quick and dirty stuff, as proof of concept for an idea.

I have coded serious stuff for the AMIGA, including an AudioScope with a full non-standard GUI which is probably my best piece of work and that was finished in 2001.
I was proficient in Python and a few other languages and all but abandoned them now in preference to UNIX shell scripting, although even after 6 years I am still only scratching at its surface as it is SOOO flexible.
When I joined in Jan 2013 I bragged about doing an AudioScope in text-mode shell scripting and it is still going on here, six years later.

SO, find something that you are interested in that requires software and start learning, words like mutable, immutable will appear in your vocabulary which I didn't know 15 years ago until I started with python. Python is a powerful language and has a library for just about EVERYTHING you need coding wise.

My pet love is coding stuff that a language was not designed to do and I have gotten the shell to do lots. I am now considering doing AudioScope in 'dash' but that might be a step too far with my POSIX compliance knowledge at present.

You do not need a maths and/or computer science doctorate, just an accepting mind and the ability to logically create code, BUT, most of all, patience and LOTS of practice.

Bazza...
These 4 Users Gave Thanks to wisecracker For This Post:
# 5  
Old 03-11-2019
Quote:
Originally Posted by wisecracker
I am an amateur coder

Much has already been said - mostly by Neo in his passionate post - so i will concentrate on some minor points:

Moderator's Comments:
Mod Comment Neo: Edited by Admin


Quote:
Originally Posted by wisecracker
You do not need a maths and/or computer science doctorate, just an accepting mind and the ability to logically create code, BUT, most of all, patience and LOTS of practice.
You are right - but a working understanding of math principles certainly will help. In fact i got the most education about programming from Don Knuths famous "TAOCP", The Art of Computer Programming. It is a heavily mathematical book and may be "love at third sight", but i guarantee you that it will change your life as a programmer forever.

Also notice that Knuth says it is an "art" - not a science, not a trade. In fact - like any art - it is a trade at the base like masonry is at the base of sculpting. But this trade is, as the apprentice ascends to journeyman and finally to master - transcended into the realm of the artistic. The words "technics", "technical", etc. come from the greek word τέχνη ("techne"), which means "art". We should do accordingly.

Art seems like breaking every rule and in some respect it certainly is. But at the basis art is something completely different. The apprentice learns rules like iron laws - obey them or else! Once the apprentice has learned all the rules he becomes a journeyman. The journeyman knows all the rules and can skillfully apply them. He knows and understands that sometimes the rules seemingly contradict each other and can weigh their relevance against each other. With increasing understanding a "feeling" for what is "right" (or "correct" or "good", ...) develops and the journeyman ascends to the level of master. The master still follows the rules - not their extrinsic expression any more but their innate meaning. He might find ways to obey a certain rule in a deeper sense by contradicting it on a perfunctory level. Knowing how to do that - and do it for the desired effect - first needs the perfect understanding of the rules he is ignoring at some particular point. You "throw away the ladder" - but only after you used it to climb over and above it.

"CODE, CODE, CODE", as Neo suggested is very sound advice. Not because the world needs more code but because the world needs more good coders - especially to replace all the bad code that is already in place. The more you learn and exercise the application of the rules the faster your eye will develop that hard to describe "understanding of good versus bad" code.

There was an experiment about learning: they showed professional airplane pilots a picture of a cockpit in mid-flight for a very short time (2s) and asked them to tell if the plane was in trouble or not. Guess what, it is impossible to really read all the hundreds of displays in that time but still the pilots did it with a stunning rate of precision. They were not trained for that but they developed - simply by practice - the ability to discern what "looked good" from what "looked bad". This is called "pattern learning". An experienced programmer can tell you similarly at one glance if the program is written poorly or written well. He might not know if it contains some syntax error, but he will be able to judge the "overall structure" and with astonishing precision.

Sometimes you will come across old and wise UNIX guys (unlike me, i am only old) who will tell you this or this is "not UNIX-like" or "doesn't seem quite right" or something such. Listen to them. It is hard to explain these feelings like the pilots would have a hard time explaining why they thought something is wrong with the plane.

Finally, a last advice: learning from the masters only means copying them at first. Learning from the masters means using what they can teach you (so, yes, start by copying them) to form your own finally. Mozart didn't become Mozart by composing the same way Haydn or Bach did. In fact he did compose quite similar to these two in the beginning but then used what he learned to form his own genuine and singular style.

I hope this helps.

bakunin

Last edited by bakunin; 03-11-2019 at 11:15 AM..
These 2 Users Gave Thanks to bakunin For This Post:
# 6  
Old 03-11-2019
Quote:
Originally Posted by bakunin
"CODE, CODE, CODE", as Neo suggested is very sound advice. Not because the world needs more code but because the world needs more good coders - especially to replace all the bad code that is already in place. The more you learn and exercise the application of the rules the faster your eye will develop that hard to describe "understanding of good versus bad" code.
Actually, coding is great for the human mind. Coding teaches people to think logically and is beneficial for human development in many ways and here are just a few examples:
  • Coding teaches people to think logically in a step-by-step way.
  • Coding teaches people to break large problems down into smaller components.
  • Coding teaches people how to organization large complex problems.
  • Coding teaches and reinforces math and language skills.
  • Coding facilitates creative thought.

Of course there are more benefits for coders than in the small bullet list above. I am talking about writing code to solve a real world problem, not just small exercises and theory. The skills developed by coding real-world projects are skills which can be used in every walk of life and in most all careers. Coding is just digital art, not very different than any art or literature. Coding is something to feel good about. Coders are modern day artists.

I want to push back strongly on any negative view of "coders" with a somewhat relevant (but maybe not, LOL) story from my past on Wall Street.

In and around 1997, I worked as a very senior cybersecurity consultant for many clients including banks on Wall Street. I lived in the Northern Virginia area and flew up and back from NY to the DC area a few times a week, sometimes in very scary seasonal weather.

One spring day as I recall, I was called to immediately fly up to NY because a major bank (one of my clients) was in the newspaper for a "fat client crypto breach" and I was called into the bank to help the bank address and fix the problem.

When I arrived, many people were yelling and the stress level was very high. The managers had assembled many department heads and team members into a smallish room and they were waiting for me around the table; and of course there were the normal "what took you so long to get here" comments from bank vice presidents so familiar when doing business in NYC.

At the whiteboard, I asked people around the table to describe the problem and I white-boarded the system architecture, step-by-step, as they all chimed in, some shy to speak up.

This brainstorming and analysis went on and on, with me at the whiteboard, for about 3 hours as I recall as we detailed the code and the various crypto algos on the board. There was some debate about how to proceed because of "the bad code" (as some people like to say), and so I asked the bank "Do you have the phone number of the original coder? If so, let's call and talk to him right now".

We got him on the speaker phone (he was no longer with the bank as I recall) and I asked him if he was under pressure to get the code out quickly and what was the process at that time and what would he do different if he had to do it over again. He told us he was under great pressure by management to get the code out and it was certainly far from perfect and could (and should) be better and he agreed with me that a new set of underlying crypto libs were the best solution. Everyone in the room was happy, understood the problem, their roles in the solution, and the tension and stress level went from a 10++ to a 3 and everyone then knew what they had to do.

After the meeting, one of the bank VPs pulled me aside in the hallway outside the meeting room door, and I thought he was going to compliment me on my great team building and problem solving skills. Wow! Surprise! I was wrong!

The VP told me that is was obvious that I knew early on what the solution was and he was very unhappy I wasted the banks precious time and money "team building" and "getting buy-in" and ripped me a new one.

However, I knew in my heart that they would call me back often, and they did, and they paid us big bucks. The bank quickly solved the crypto issue and all was good on Wall Street, at least for a few hours. The bank issued a press release, the fix was done by the next day. When they are yelling at you in NYC, that means they like you. It's when they don't talk to you or yell at you is when you should worry.

My point is, if there is a point to my word in a forum, as I mentioned in my earlier post, is that commercial code is generally written under heavy constraints. Sometimes it is a time constraint or a money constraint. Sometimes people are being yelled at by managers to get the app out ASAP and are being threatened to be fired if they don't get the code done yesterday. (I can tell stories about game programmers in Japan I knew personally living under their desks for months at a time because they could not go home or they would lose their job. They were not permitted to even shower.).

I learned a long, long time ago to never look at code before me and judge it as "bad code" because we generally do not know the constraints the prior coder was working under. In Japan, game programmers live under their desks for months to meet deadlines. They are exceptions of course, but few people create "bad code" on purpose with malicious intent (except the bad actors who write malicious code, of course).

Code is code and real commercial code is written for real applications in real commercial production systems where time and money rule, generally speaking. Very few coders have the luxury to write 'elegant code' which is 'pretty' and 'nice' or 'meeting perfect standards' and nor is most commercially code 'perfectly optimized' because businesses have time and resource constraints, and after getting one app out the door, they are directed or required to write another app, and have it done yesterday. Businesses do not code for the sake of coding

I have never considered myself a great coder but I have a lot of commercial code running over the years that solves real-world problems and some might call it all "bad code" but I could care less. I do not write code for theory or to please others, or to meet some standard set by others, I write code to solve real world problems and to create real applications. I don't write code for the sake of writing code.

If anyone wants to code, I have a lot of great project to work on but they all require modern software tools and libs like Vue. js and Javascript, GitHub and Postman, and even though I use VI every day of my life, most of my code is written in an IDE like Visual Studio Code (actually in VSC) and I test all API calls using tools like Postman; and tend to use modern tools because they make us very productive and very fast developers.

For everyone who writes web-based code and apps, I recommend you download and install, at least:
  • Visual Studio Code
  • Postman

Most mornings I open the following workspaces with my fresh brewed coffee:
  • Virtual Desktop 1: Four command line terminals in a single screen in a 2 x 2 matrix.
  • Virtual Desktop 2: One large terminal window, full screen size.
  • Virtual Desktop 3: Visual Studio Code
  • Virtual Desktop 4: Postman
  • Virtual Desktop 5: Chrome (browser)
  • Virtual Desktop 6. GitHub

Well, I'm done talking for now... Smilie .

I might guess everything I just wrote is not very useful, but at least I remembered and told a story Wall Street story from 22 years ago.

Cheers.
These 2 Users Gave Thanks to Neo For This Post:
# 7  
Old 03-11-2019
@NEO


Thanks so much for pouring out your heart, the passion came through.



I believe my issue is not focusing on one thing at a time. End up getting caught up with the new
technologies like bitcoin, cloud and so on. They're nice but not what I'm really passionate about.
It's almost as if I feel I'm going to miss out on some big market. (Microsoft BOOM)



I know another one of my issues is rushing through, trying to get that quick dopamine hit when
I figured out a problem. It's like I've become the product of societies instant gratification

and easily give up when there's serious resistance. I wouldn't say I'm lazy because
if I really want to learn something I put in the time to learn.



I'm also a fan of the "bottom up" approach as reading about theories all day
makes jack a dull admin.



I have to find balance as I'm 28 and, life is already finite as it is now.


Again, thanks responding. You'll be seeing me around.

--- Post updated at 01:41 AM ---

Woah...


Brother, I enjoy your life experiences stories. I almost feel like I'm there with you especially,
the Wall Street war experience.



Code is indeed the language of information technology. Also getting something to

work in the commercial world is more important than elegant design.

That comes later in the term "refinement".



You just made my night a good one to remember.
These 2 Users Gave Thanks to samthewildone For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with getting awk to multiply a field by a value set based on condition of another field

Hi, So awk is driving me crazy on this one. I have searched everywhere and read man, docs and every related post Google can find and still no luck. The actual files I need to run this on are sensitive in nature, but it is the same thing as if I needed to calculate weighted grades for multiple... (15 Replies)
Discussion started by: cotilloe
15 Replies

2. Shell Programming and Scripting

awk to update field using matching value in file1 and substring in field in file2

In the awk below I am trying to set/update the value of $14 in file2 in bold, using the matching NM_ in $12 or $9 in file2 with the NM_ in $2 of file1. The lengths of $9 and $12 can be variable but what is consistent is the start pattern will always be NM_ and the end pattern is always ;... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

awk to adjust coordinates in field based on sequential numbers in another field

I am trying to output a tab-delimited result that uses the data from a tab-delimited file to combine and subtract specific lines. If $4 matches in each line then the first matching sequential $6 value is added to $2, unless the value is 1, then the original $2 is used (like in the case of line... (3 Replies)
Discussion started by: cmccabe
3 Replies

4. Shell Programming and Scripting

Display combination of 4 field uniqe record and along with concatenate 5th and 6th field.

Table ACN|NAME|CITY|CTY|NO1|NO2 115|AKKK|ASH|IND|10|15 115|AKKK|ASH|IND|20|20 115|AKKK|ASH|IND|30|35 115|AKKK|ASH|IND|30|35 112|ABC|FL|USA|15|15 112|ABC|FL|USA|25|20 112|ABC|FL|USA|25|45 i have written shell script using cut command and awk programming getting error correct it and add... (5 Replies)
Discussion started by: udhal
5 Replies

5. Shell Programming and Scripting

Command/script to match a field and print the next field of each line in a file.

Hello, I have a text file in the below format: Source Destination State Lag Status CQA02W2K12pl:D:\CAQA ... (10 Replies)
Discussion started by: pocodot
10 Replies

6. Linux

How do I format a Date field of a .CSV file with multiple commas in a string field?

I have a .CSV file (file.csv) whose data are all enclosed in double quotes. Sample format of the file is as below: column1,column2,column3,column4,column5,column6, column7, Column8, Column9, Column10 "12","B000QRIGJ4","4432","string with quotes, and with a comma, and colon: in... (3 Replies)
Discussion started by: dhruuv369
3 Replies

7. Shell Programming and Scripting

Plz Help. Compare 2 files field by field and get the output in another file.

Hi Freinds, I have 2 files . one is source.txt and second one is target.txt. I want to keep source.txt as baseline and compare target.txt. please find the data in 2 files and Expected output. Source.txt 1|HYD|NAG|TRA|34.5|1234 2|CHE|ESW|DES|36.5|134 3|BAN|MEH|TRA|33.5|234... (5 Replies)
Discussion started by: i150371485
5 Replies

8. Shell Programming and Scripting

AWK: Pattern match between 2 files, then compare a field in file1 as > or < field in file2

First, thanks for the help in previous posts... couldn't have gotten where I am now without it! So here is what I have, I use AWK to match $1 and $2 as 1 string in file1 to $1 and $2 as 1 string in file2. Now I'm wondering if I can extend this AWK command to incorporate the following: If $1... (4 Replies)
Discussion started by: right_coaster
4 Replies

9. Shell Programming and Scripting

awk, comma as field separator and text inside double quotes as a field.

Hi, all I need to get fields in a line that are separated by commas, some of the fields are enclosed with double quotes, and they are supposed to be treated as a single field even if there are commas inside the quotes. sample input: for this line, 5 fields are supposed to be extracted, they... (8 Replies)
Discussion started by: kevintse
8 Replies

10. Shell Programming and Scripting

Sort alpha on 1st field, numerical on 2nd field (sci notation)

I want to sort alphabetically on the first field and sort in descending numerical order on the 2nd field. With a normal "sort -r -n" it does this: abc ||| 5e-05 ||| bla abc ||| 3 ||| ble def ||| 1 ||| abc def ||| 0.2 ||| def As you can see it ignores the fact that 5e-05 is actually 0.00005... (1 Reply)
Discussion started by: FrancoisCN
1 Replies
Login or Register to Ask a Question