• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Advice needed from Linux knowledgable members ...

OK there is this Cooperative education position in a company that designs custom hardware for clients and they are heavy into electronics & Linux / Unix (kernel modules ,drivers...etc) they build and design of special hardware in tons of fields (Aerospace,IT, environmental...etc) the position is a perfect fit for me concerning my interests in working with only Linux / Unix systems plus I am double majoring in Electrical Engineering and Computer Science and Engineering,they design the hardware (according to the client's requirements) and then get it it to work under a Linux / Unix environment, and that is exactly what I have in mind for a career.
The company is real big and spread world wide ,I can't say who they are though.

I have made contact with them and spoke with various representatives on campus and I am in tight with one of them, as I have kept regular contact with her for a while now, and after studying my qualifications and reading my resume, she told me everything is up to their standards (GPA, Linux experience, courses taken, research interests..etc) and after long conversations with her and her checking my resume and everything she told me she is willing to put in a good word for me with her bosses once my application is received by her company's office 😀.

I tried getting as much info from her as possible, she told me the big pluses for students applying for that Co-op position with them are : C/C++ know how, BASH, in depth Linux / Unix knowledge, Electronics background
and much more.

And she also told me that her company gets impressed with students that don't have to be taught all of this stuff on Co-op because that will give them more time to learn more stuff related to the company's field and therefor giving an almost certain chance of getting hired with them post graduation (theoretically Spring 2008)!

The good news is I have till next spring to go on co-op, but I have been informed by my co-op director that I am to start sending my resume out by the end of this semester to companies I am considering for the co-op, so I am planning on putting as much Linux related info on my resume, such as BASH in addition to whatever else I am planning to have in my pocket by the time I actually go on co-op.

Plus this summer I don't have much courses available for me to take from my university, so there is this technical college near me that offers Linux classes in the summer and I am planning to take a class about BASH and whatever else I find fit for what I need for this position, that way any company considering hiring me on co-op can see proof that I really know what I have in my resume (as this stuff is not part of my university courses) and I am not just putting "bling-bling" words in there to get accepted as is the case with many of the students that try and get a co-op with them and don't really know what they are going in to and end up getting kicked out (as she told me)!

So now, before Summer comes , I want to be able before I take the Linux courses to already know most of them at a good level like how to write BASH scripts and be able to know Linux at a deeper level than what I am at right now (which is not bad from my point of view).


I need pointers from very experienced Linux users / developers on how do I approach this situation, what's good to do and what's the most efficient way to reach the goals set ?
What is my best resource for info from now till summer ?
What did you do to know what you do now , and what did you rely on to get your info the most ?
What do you think are good questions for me to ask the company from now ?
What is really important and applies to Linux systems (in addition to Unix) across the board ?
From your work experience, what did you notice to be the most crucial / beneficial for you to know?
Am I setting my goals too high ?
Do you think I will have enough time to reach the goals that I have set till now ?

Any help / pointers is deeply appreciated, I want this position real bad, and willing to do whatever it takes to be very confident that this company considers me even more qualified to the said position and therefor taking me in a heartbeat.
 
I would answer, but since I have no working experience whatsoever, I'm not sure that my opinions would have any validity.

Anyway, good luck with that.
 
Build a linux from scratch project. Read Learning bash from o'riely. Write a few admin scripts for day to day tasks in bash. Make sure you know c++ inside and out. Use nothing but linux from now until you start working.

Thats what it is going to take.

For me to learn linux I had to remove the possiblity of an out to windows. I gave myself a linux boot CD with gnome on it. Then I did a lfs install http://www.linuxfromscratch.org/. After I got that working (which was complicated for me). I went and found a distro I liked and used it. The reason I did the LFS was to understand what the pieces of the OS were, and why there were there. How they could be replaced, and how they could break (a lot of this). I ended up choosing gentoo linux for my distro. Bash is not a complicated scripting language to learn, but it is powerful. It should take a person who has moderate programming knowedge a week to get a good handle on. Now if you dont have a lot of c++ exp, that could be hard to get in short order.

But you need projects and goals to learn. Have a goal. First goal, get a working system with linux from scratch so you can download and install a real linux distro. By then you should know enough about linux to use it full time and not need windows to fall back on. Everytime you go back to windows, you are stunting your learning. Oh, and DO NOT format and reinstall when you break something, there is nothing you can break that you can't fix. So figure out how.
 
Originally posted by: sourceninja
Build a linux from scratch project. Read Learning bash from o'riely. Write a few admin scripts for day to day tasks in bash. Make sure you know c++ inside and out. Use nothing but linux from now until you start working.

Thats what it is going to take.

For me to learn linux I had to remove the possiblity of an out to windows. I gave myself a linux boot CD with gnome on it. Then I did a lfs install http://www.linuxfromscratch.org/. After I got that working (which was complicated for me). I went and found a distro I liked and used it. The reason I did the LFS was to understand what the pieces of the OS were, and why there were there. How they could be replaced, and how they could break (a lot of this). I ended up choosing gentoo linux for my distro. Bash is not a complicated scripting language to learn, but it is powerful. It should take a person who has moderate programming knowedge a week to get a good handle on. Now if you dont have a lot of c++ exp, that could be hard to get in short order.

But you need projects and goals to learn. Have a goal. First goal, get a working system with linux from scratch so you can download and install a real linux distro. By then you should know enough about linux to use it full time and not need windows to fall back on. Everytime you go back to windows, you are stunting your learning. Oh, and DO NOT format and reinstall when you break something, there is nothing you can break that you can't fix. So figure out how.


I want to thank you for the info, however I have been using Linux solely since 7 months now, I have become very comfortable with many Linux distros, I have troubleshooted so many problems on the various machines that I have tried getting different distros working on (thanks to you guys here on ATOS), that I became very familiar with the Linux filesystem and have written BASH scripts here and there to get my feet wet, I have setlled on Fedora Core as my main OS, but that LFS sounds like a very good idea to have a closer look at the base system and how does it work and what to do to get it up and working.

What I think is my weak point here is how to use this powerful tool BASH, It's number one on my priority list, I just love how in Linux everything can be run via a bash script no matter how complicated the adminstrative task is a Bash script can handle it. I use for instance BASH scripts to pass commands on bootup to enable my hardware that is disabled by default on startup and alot more, yet I don't thin kI have enough BASH know how so to speak.
For a couple of weeks now I have been reading this BASH guide, I think it's pretty informative Link, the only programming languages I know so far are Java & VB.net so my lack of C is forming a hurdle for me here as C knowledge is very important here. Perhaps C should be on my list of extra curricular summer courses to be taken at that technical school I am going to.
 
Learn C!!!!!!! C++ will not help you with low level driver development.

Pick up a copy of O'Reilly's UNIX Systems Programming for SVR4, and familliarize yourself with signals, and multiprogramming & synchronization.

Go Here: http://www.emunix.emich.edu/~remmers/431/ and do the projects. This course was designed for students for whom C is a new language. Do the assignments. (that was the course I took, the professor has since retired).

This might help too: http://www.catb.org/~esr/writings/taoup/html/

As for the kernel hacking, maybe somebody else can help you with that.
 
Originally posted by: The Linuxator
I want to thank you for the info, however I have been using Linux solely since 7 months now, I have become very comfortable with many Linux distros...
I think you're missing sourceninja's main point, which is also my advice as well - find a project. Set a goal and learn what you need to in order to achieve it. Make it specific and measurable - i.e. you will know that you have achieved this goal when you have a system that does X, Y, and Z, or a network that does A, B, and C, or whatever. Books and classes are OK for filling in gaps or providing a system to tie together knowledge you already have, but you learn the most (in any computer-related field IMO) when you're learning purposefully. What that goal is for you I don't know, because I don't know what you already know or what exactly this position would entail. But try to find something that is A) fun, B) something you're interested in, and C) something related to the position you want.

What I think is my weak point here is how to use this powerful tool BASH, It's number one on my priority list, I just love how in Linux everything can be run via a bash script no matter how complicated the adminstrative task is a Bash script can handle it.
Eh... I don't get the fascination with bash. Yes, you can probably get bash to do anything you want to, but that doesn't mean it's a good idea. If a script would require any "advanced" bash features you're probably better off writing it in perl or python. Particularly since this company seems focused on low-level device stuff, I can't see how you're going to need a bash script much more complicated than the stuff in /etc/init.d, which isn't all that hard to figure out.
...the only programming languages I know so far are Java & VB.net so my lack of C is forming a hurdle for me here as C knowledge is very important here. Perhaps C should be on my list of extra curricular summer courses to be taken at that technical school I am going to.
You don't know C and you want to work for a company that writes device drivers for custom hardware? Hell yeah, that's what you need to concentrate on. Pick up a good book on C (I like King's "A Modern Approach") and get working. When you know a little bit of C, start making up some projects to work towards with it. Ultimately, you would probably want to end up studying/modifying some simple kernel device driver code, but there's a lot to learn before you get there.

 
Originally posted by: Vadatajs
Learn C!!!!!!! C++ will not help you with low level driver development.

Pick up a copy of O'Reilly's UNIX Systems Programming for SVR4, and familliarize yourself with signals, and multiprogramming & synchronization.

Go Here: http://www.emunix.emich.edu/~remmers/431/ and do the projects. This course was designed for students for whom C is a new language. Do the assignments. (that was the course I took, the professor has since retired).

This might help too: http://www.catb.org/~esr/writings/taoup/html/

As for the kernel hacking, maybe somebody else can help you with that.

Excellent info :thumbsup: this should be great to read on whatever time I can spare for it.
Thanks.

Originally posted by: cleverhandle
Originally posted by: The Linuxator
I want to thank you for the info, however I have been using Linux solely since 7 months now, I have become very comfortable with many Linux distros...
I think you're missing sourceninja's main point, which is also my advice as well - find a project. Set a goal and learn what you need to in order to achieve it. Make it specific and measurable - i.e. you will know that you have achieved this goal when you have a system that does X, Y, and Z, or a network that does A, B, and C, or whatever. Books and classes are OK for filling in gaps or providing a system to tie together knowledge you already have, but you learn the most (in any computer-related field IMO) when you're learning purposefully. What that goal is for you I don't know, because I don't know what you already know or what exactly this position would entail. But try to find something that is A) fun, B) something you're interested in, and C) something related to the position you want.

What I think is my weak point here is how to use this powerful tool BASH, It's number one on my priority list, I just love how in Linux everything can be run via a bash script no matter how complicated the adminstrative task is a Bash script can handle it.
Eh... I don't get the fascination with bash. Yes, you can probably get bash to do anything you want to, but that doesn't mean it's a good idea. If a script would require any "advanced" bash features you're probably better off writing it in perl or python. Particularly since this company seems focused on low-level device stuff, I can't see how you're going to need a bash script much more complicated than the stuff in /etc/init.d, which isn't all that hard to figure out.
...the only programming languages I know so far are Java & VB.net so my lack of C is forming a hurdle for me here as C knowledge is very important here. Perhaps C should be on my list of extra curricular summer courses to be taken at that technical school I am going to.
You don't know C and you want to work for a company that writes device drivers for custom hardware? Hell yeah, that's what you need to concentrate on. Pick up a good book on C (I like King's "A Modern Approach") and get working. When you know a little bit of C, start making up some projects to work towards with it. Ultimately, you would probably want to end up studying/modifying some simple kernel device driver code, but there's a lot to learn before you get there.

It's a co-op position the purpose behind it is to learn new things, don't you think companies know that already ? As I said, they already know that I don't know C yet, and the representative that I keep talking to told me it would be a plus If I knew C instead of Java but not a condition. Their paper as I am reading it says,
Programming experience preferebly C/C++ experience

Among their extras that they would LIKE to see students have are :

- Linux/ Unix
- OS and network programming
- Ethernet and or TCP / IP familiarity
- Familiarity with software development ( compilers, debuggers, assemblers ,version control systems...etc )

It's really the kind of Job were you learn most of what you need on site, and they told me the only thing that would cause problems for them is co-op students with no good teamwork skills, as all can be managed except that !

But ofcourse C is right there on my list in addition to many other things.
 
Originally posted by: silverpig
Don't limit yourself to bash. You'll be sort of lost if they use csh, tcsh etc.

What do you suggest I do ?
I have constraints and wanted to focus on what I think is widely used .
How different is Korn and others from BASH and which is more widley used in this kind of field ?
 
I run into more korn scripts in the wild that have been used forever then bash scripts. I perfer bash, but I'll use whatever I am told to use. If you have a good solid base in a few languages (I have lots of c++, php, and perl exp) its easy to pick up new langauges. I have done projects in java, asp, c, vb, and cobal. It might not be the best thing to work with languages you dont have a lot of exp in. But programming is programming.

I frequently attempt to do small side projects in different languages to help keep common ideas fresh in my head, and not get stuck in the 'php way' or the 'c++ way' etc. For example, last month I did a very small project in x86 Assembly. It was a 2 day project the client wanted done in vb. I did it in vb and delivered it to the client. Then I recreated it in Assembly. I think it took me about a month, but I learned a lot of interested (if not useless) stuff.

You dont have to be the best programmer in the world. You just need to know where to look for information, and understand the basics common to all langauges.
 
Originally posted by: The Linuxator
Originally posted by: silverpig
Don't limit yourself to bash. You'll be sort of lost if they use csh, tcsh etc.

What do you suggest I do ?
I have constraints and wanted to focus on what I think is widely used .
How different is Korn and others from BASH and which is more widley used in this kind of field ?

Try creating a new user who logs in to a csh shell. Use that user for a while and try to do some scripting.
 
Back
Top