Open Side Menu Go to the Top

07-19-2011 , 12:34 AM
Someone showed me a site they created.

They used Magento to create the site, and it is apparent they aren't familiar with the CMS. For example, the homepage ends in 'index.php', thus erasing the advantage of just having '.com' at the end. I was nice enough to tell them about htaccess.

The page is okay to look at, but the markup makes me want to puke. There is no markup really. It looks like:

Code:
<div class='big_wrapper'></div>
<div class='small_wrapper'>
<div></div>
</div>
<img = 'thisWebPage/xxxxxxxxxxx/location.com'</img>
<noscript>You don't have script activated. You will not be able use this website</noscript>
That is really the entire markup. No p or span tags, no divs around the images, nothing.

About 7 files of CSS, all 1500+ lines long and another 10 files of js.

The site does look okay, but what garbage for extensibility. Shockingly, the site uses the proper XHTML strict format: yes, including the <?xml > sub-tag. There are some errors in the layout, but nothing too major. For example, the drop-down menus are two layered, and one layer overlaps the other layer, if you get what I am trying to say.

What I am trying to say, is that this person has a good eye for design, but they are lost when it comes to the mechanics of building. They spent two months on this site so far. I could have marked what they have in less than a week. I guess I wouldn't care if this was their site, but this person is getting paid by someone else to build this thing. Ouch!
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
07-19-2011 , 12:42 AM
Quote:
Originally Posted by kyleb

Python is very useful since many of the future's applications and problems are computationally difficult and require a deep understanding of complex math. Since Python is well-hooked into the mathematics community, it's a great bridge between the two.
Are you specifically talking about the libraries that are available for it, like PyLab, et. al., or is there some feature of Python itself that makes it more advantageous for this purpose?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 01:12 AM
Quote:
Originally Posted by kyleb
since many of the future's applications and problems are computationally difficult and require a deep understanding of complex math.
i think the opposite of this is true for web development. it almost never requires an understanding of complex math. i assume you are referring to other kinds of work?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 01:45 AM
Quote:
Originally Posted by daveT
Are you specifically talking about the libraries that are available for it, like PyLab, et. al., or is there some feature of Python itself that makes it more advantageous for this purpose?
No specific feature IMO, but it is reasonably fast and has a very good grip on academia and mathematicians for some reason or another. Haskell is also popular.

Quote:
Originally Posted by gaming_mouse
i think the opposite of this is true for web development. it almost never requires an understanding of complex math. i assume you are referring to other kinds of work?
Oh yes I certainly agree with web dev. It's being heavily abstracted by scripting languages (PHP, Ruby, Rails, etc), which can only be a good thing. Though this does increase computational load / overhead as a result, it doesn't generally matter to the developer.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 04:22 AM
Blech, sound support in HTML5 is a nightmare here's an overview of it my brother wrote:

http://www.scirra.com/blog/44/on-htm...ts-aac-and-ogg

I really wish IE would support OGG or Firefox would support AAC, or MP3 would clarify their license. Why can't these companies just sit down and work it out early on, or we will get another stupid mess.

Same with video. Some of these companies just need to swallow their pride.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 06:35 AM
It's not about 'pride'. It's about money and patent law.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 06:38 AM
Why can't IE just support Ogg then? What money would they be losing out on? It would be the easiest solution and best for everyone probably.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 07:21 AM
Quote:
Originally Posted by Gullanian
Why can't IE just support Ogg then? What money would they be losing out on? It would be the easiest solution and best for everyone probably.
Does Microsoft own any of these disputed patents? Considering Microsoft's history and its attitude toward open source, they could just as easily be doing a power play to smash competition. Market share doesn't have much to do with pride.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 09:08 AM
Quote:
Originally Posted by Gullanian
Why can't IE just support Ogg then? What money would they be losing out on? It would be the easiest solution and best for everyone probably.
1. Ogg is just a file format.

2. The popular ogg-associated codecs aren't actually in the standards.

Google and Mozilla are playing embrace and extend.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 09:29 AM
Quote:
Originally Posted by jukofyork
Steve Brecher's hand evaluator lets you decode the hand type (read the comment in the header to see how):

http://www.stevebrecher.com/Software/software.html

You just need a bit of code to deal out one more card and you should have what you want.

Juk
Thanks. I'm just a newb playing around with programming but I always suspected it would help with poker. A few times I've attempted to find the EV of different multi street strategies like bloating the pot on purpose to take it away on a later street and the math is incredibly tedious. It seems like it wouldn't be too hard to make an app where you assign different actions for different ranges for the villian & yourself based on the turn & river cards and then simulate hands pokerstove style to come up with an EV of multi street strategies. It would still take a while to plug in all the info but much less time than multiplying out by hand the EV of each turn and river vs ranges and then adding them up.

Usually when I did the calculations by hand the EV difference between lines was like .03 bbs or something completely useless for the villian so maybe I'm over estimating how useful it would be? either way it seems like a decent project to help me learn.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 11:15 AM
Quote:
Originally Posted by e i pi
Thanks. I'm just a newb playing around with programming but I always suspected it would help with poker. A few times I've attempted to find the EV of different multi street strategies like bloating the pot on purpose to take it away on a later street and the math is incredibly tedious. It seems like it wouldn't be too hard to make an app where you assign different actions for different ranges for the villian & yourself based on the turn & river cards and then simulate hands pokerstove style to come up with an EV of multi street strategies. It would still take a while to plug in all the info but much less time than multiplying out by hand the EV of each turn and river vs ranges and then adding them up.

Usually when I did the calculations by hand the EV difference between lines was like .03 bbs or something completely useless for the villian so maybe I'm over estimating how useful it would be? either way it seems like a decent project to help me learn.
I'm currently building a simple ev calculator in Python. I posted the very ugly beginnings in the Python thread. If you want to take a look at it, it's on the last page. I'll post the entire source code and release it for free once I am done. It won't have a GUI, sorry.

The ev part is plenty difficult enough. I think simulations are a pain in the ass, but that is probably because I am a newb and basically suck at programming too. I may just do basic algebra in it, but I'll ponder that.

Adding in player actions and simulating a bot to find the optimal solutions will be very difficult. Not only are you attempting to create multiple strategies, but you will be attempting to find the optimal strategies on top of it.

I know that one poster in the HUSNG forum created something like you are talking about in Java. Though he spoke about it, he never released it. I don't blame him: he turned into a 6-fig/year winner on year one.

An easier project would be to write out a bunch of equations that read your inputs and spits out a bunch of numbers. I can't imagine how long it would take to translate all of MoP to computer code, but that would probably be worth the effort.

Anyways, I hope this is a better answer than "durp."
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 01:59 PM
Quote:
Originally Posted by daveT
Anyways, I hope this is a better answer than "durp."


lolololol

I don't think its necessary for it to find the optimal line for you, just to spit out an EV for the full multi street strategy. Then you can tweak it and compare it to different lines. In my mind the program works like this, you input your hand, a range for the villain and the flop. You then assign actions for different hand strengths for each street. So for example, you could set your action as something like bet all turns where you have 2nd pair+ given the 3 flush didn't get there, and fold facing a raise unless you have 2pair+ (i'll either invent a syntax for this or make a gui for selecting hand strengths and actions). The conditions are key, because the developing flop textures dictate our actions. I don't think it should be too difficult to have the program notice when a backdoor flush or 4 straight or whatever ran out. You can also choose actions for turns and rivers based on the cards that come, so you can set it to 2 barrel all over cards, triple barrel all backdoor 4 straights, flushes... You also set have to set the calling/folding/raising ranges based on board texture & relative hand strength for the villain obv.

The program then runs through a couple million simulations, randomizing both the hand the villain is holding as well as the turn and river cards.

It will be interesting to see how quickly the EV converges. Especially if its simulating something super standard like 2 barreling good over cards with air with wide range vs wide range like in a HU match.

I'll have a look at your ev simulator to see if our approaches are similar
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 03:03 PM
Yikes, that is a tall order. Definitely not something I would give away for free.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 03:15 PM
sounds like PokerRazor
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 03:33 PM
Quote:
Originally Posted by e i pi
(i'll either invent a syntax for this or make a gui for selecting hand strengths and actions).
Does this exist already? Seems like a solid syntax for describing complex poker situations like you're describing would be pretty awesome.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 04:33 PM
Quote:
Originally Posted by e i pi


lolololol

I don't think its necessary for it to find the optimal line for you, just to spit out an EV for the full multi street strategy. Then you can tweak it and compare it to different lines. In my mind the program works like this, you input your hand, a range for the villain and the flop. You then assign actions for different hand strengths for each street. So for example, you could set your action as something like bet all turns where you have 2nd pair+ given the 3 flush didn't get there, and fold facing a raise unless you have 2pair+ (i'll either invent a syntax for this or make a gui for selecting hand strengths and actions). The conditions are key, because the developing flop textures dictate our actions. I don't think it should be too difficult to have the program notice when a backdoor flush or 4 straight or whatever ran out. You can also choose actions for turns and rivers based on the cards that come, so you can set it to 2 barrel all over cards, triple barrel all backdoor 4 straights, flushes... You also set have to set the calling/folding/raising ranges based on board texture & relative hand strength for the villain obv.

The program then runs through a couple million simulations, randomizing both the hand the villain is holding as well as the turn and river cards.

It will be interesting to see how quickly the EV converges. Especially if its simulating something super standard like 2 barreling good over cards with air with wide range vs wide range like in a HU match.

I'll have a look at your ev simulator to see if our approaches are similar
you have basically described cardrunnersEV tool:

http://www.cardrunners-ev-calculator.com/

It's a very powerful program, although it's not so great about making intelligent assumptions. that is, you have to really specify every possible situation for it work.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 11:35 PM
dave,

i've never really taught anyone programming, so i find it fascinating to watch you learn how to do it. it's clear that you're a bright guy and i think jumping in at the deep end -- computer science for MIT whiz kids! -- is awesome and will teach you a ton.

what is your background? i get the sense that you come from web design or something?

didn't read the lecture notes but i've read the referenced ESR and paul graham articles many times. if you haven't read the source material, i recommend it; both writers are excellent and accessible.

(for a good time, esr's sex tips for geeks is a somewhat awkward, somewhat adorable read.)

Quote:
Eric Raymond has written an essay called "How to Become a Hacker," and in it, among other things, he tells would-be hackers what languages they should learn. He suggests starting with Python and Java, because they are easy to learn. The serious hacker will also want to learn C, in order to hack Unix, and Perl for system administration and cgi scripts. Finally, the truly serious hacker should consider learning Lisp:

Lisp is worth learning for the profound enlightenment experience
you will have when you finally get it; that experience will make
you a better programmer for the rest of your days, even if you
never actually use Lisp itself a lot..


Agree/disagree?
i think python is a fine language for beginners. i like the fact that you can just start writing code -- right into interactive mode if you like! you don't have to set up a whole object hierarchy or import a billion things just to write hello world, but when you're ready, the language is industrial strength.

i think java is a ****ing terrible language to foist onto a beginner. basically everything that's good about python is what's bad about java. introducing someone to programming with a compiled language is psychotic and criminal.

(if you really want to teach a noob something java-ish, javascript is a terrific choice.)

for the intermediate coder, c is pretty essential. we've discussed the value of c (and assembly) in this thread.

and yeah, the linux kernel is still c. all the tools are still c.

i think perl is becoming less essential by the day and will fall out of major use sooner than most of these other languages. it's still cool -- there's something refreshing about the anarchy of TMTOWTDI -- and i would never dissuade anyone from learning any language just to learn it. but honestly there's nothing you can do in perl that you can't do just as easily in python (or ruby).

i can't say i'm enlightened enough to truly grok lisp, but i am intrigued by the prospect. i can say that functional programming a la scheme/lisp is interesting and blew my mind as a college freshman.

it's hard to describe why this is so. i think of programming languages like natural languages. being exposed to more is always good. learning a new language will teach you things you never expected about your mother tongue.

it's easier to learn a language similar to one you already know (if you know spanish, picking up french or italian is no big deal; if you know perl, python and ruby should feel somewhat familiar) than to learn one utterly unlike anything you've seen before (for most english speakers, russian and chinese may as well be martian). but it's the mindbending experiences like chinese and lisp that really deepen your understanding.

Quote:
If you ever do find yourself working for a startup, here's a handy tip for evaluating competitors. Read their job listings. Everything else on their site may be stock photos or the prose equivalent, but the job listings have to be specific about what they want, or they'll get the wrong candidates.
During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried.


Mind that this guy is speaking about his experiences during the mid-90s, but I wonder if this is still pertinent today. What languages has replaced (if they have been replaced at all) Python and Perl?
i think kyleb's answer is right on:

Quote:
Originally Posted by kyleb
Today, you worry about the job listings that say: "We don't care what you know. Only if you are smart."
i would say that python, perl, and ruby all occupy the hacker "space" that graham refers to. i think C# .NET and, to a lesser extent, ruby on rails now fills the c++/java niche.

i also think that IT is quite as shameful as it was then. there are a lot of companies solving interesting problems with what i think of as "IT": facebook, twitter, yelp, etc.

Quote:
I figure if you are going with maximum impression, the guy who knows how to parallel is the top of today's heap?
not sure how well the industry recognizes the importance of concurrent programming, but i def agree that there will be high demand for programmers with this skill set.

(sorry for wall o' text)
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-19-2011 , 11:44 PM
Quote:
Originally Posted by tyler_cracker
(sorry for wall o' text)
Great post!
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 01:19 AM
Quote:
Originally Posted by tyler_cracker


(if you really want to teach a noob something java-ish, javascript is a terrific choice.)
i love js, but this is not true at all. beneath the surface, js is nothing like java, a point douglas crockford makes a lot. it is much closer in spirit to lisp and other functional languages. while its easy to get a beginner doing stuff with js which is fun and they can see the results of, actually understanding the language at a deep level requires a lot of programming experience.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 01:39 AM
mouse,

i agree, but to a beginner, javascript "looks like java" and for the kinds of things a beginner is doing, it kinda acts like java (i = 0; someString = "foo". that's all i mean by "java-ish".
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 01:43 AM
Quote:
Originally Posted by gaming_mouse
you have basically described cardrunnersEV tool:

http://www.cardrunners-ev-calculator.com/

It's a very powerful program, although it's not so great about making intelligent assumptions. that is, you have to really specify every possible situation for it work.
well i'll be damned

i might have to buy this
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 01:47 AM
Quote:
Originally Posted by tyler_cracker
mouse,

i agree, but to a beginner, javascript "looks like java" and for the kinds of things a beginner is doing, it kinda acts like java (i = 0; someString = "foo". that's all i mean by "java-ish".
true. and i agree it's a fine language to use as a beginner learning tool.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 05:53 AM
Quote:
Originally Posted by tyler_cracker
dave,

i've never really taught anyone programming, so i find it fascinating to watch you learn how to do it. it's clear that you're a bright guy and i think jumping in at the deep end -- computer science for MIT whiz kids! -- is awesome and will teach you a ton.

what is your background? i get the sense that you come from web design or something?
When I saw this forum, I was really excited because I thought I was a decent programmer because I could do HTML markup and some shoddy CSS.

I embarrassed myself pretty bad with a PL/SQL thread and my 'advanced javascript' thread. I believe it was Zurvan who posted about Stanford Opencourse and told me that I needed to go backwards and learn the basics after I had a massive meltdown writing a basic calculator in javascript.


I chose to see what else was offered because I didn't like the Stanford approach at all. Rather than learn how to use a language from the ground up, they have you use a bunch of plug-ins and write pseudo-java, then use a bunch of plug-ins and use a bunch of pseudo-C, et. al. I didn't think this was a healthy approach. Besides, MIT has homework.

The intro to programming class isn't that hard. The problem sets are basically color-by numbers. You get about 30% of the code with the functions names you have to fill in. You fill in the rest of what you need. I will admit that I struggled like hell with a few of them though.

Regardless, I still am weak with objects, still unsure of what "if __xxx__ = __main__... execute" means, am lost to the concept of closures, et. al. But man, I can tear up some lists, though.

My background is nothing at all to do with computers. I'm a techno-phobe by heart.

Quote:
didn't read the lecture notes but i've read the referenced ESR and paul graham articles many times. if you haven't read the source material, i recommend it; both writers are excellent and accessible.

(for a good time, esr's sex tips for geeks is a somewhat awkward, somewhat adorable read.)
I'll definitely look into their other work. I should have figured out that they are well-known.



Quote:
i think python is a fine language for beginners. i like the fact that you can just start writing code -- right into interactive mode if you like! you don't have to set up a whole object hierarchy or import a billion things just to write hello world, but when you're ready, the language is industrial strength.

i think java is a ****ing terrible language to foist onto a beginner. basically everything that's good about python is what's bad about java. introducing someone to programming with a compiled language is psychotic and criminal.

(if you really want to teach a noob something java-ish, javascript is a terrific choice.)
I agree with everything except the javascript part. To a new programmer, I wouldn't even know where to start with "hello world."

Do you just go straight to the body and have them write the program? I wouldn't encourage that. Even though it is straight-forward, you have to get the student in the habit of good practice, and that is non-obtrusive javascript. So now you have to create and external file that is five lines long. You are not only stuck explaining .write, but .innterHTML and window.onlaod, discuss if the start function should have a name or anonymous, and you see you get into a deep discussion about all sorts of paradigms you probably don't want to get into already. Note that I didn't even get into whether the onload.function should be on the same line, at the end of the file, what to name your html tags, etc.


Quote:
for the intermediate coder, c is pretty essential. we've discussed the value of c (and assembly) in this thread
.

I saw that thread. I'll definitely do assembly. I want to be a sicko too.

Quote:
and yeah, the linux kernel is still c. all the tools are still c.

i think perl is becoming less essential by the day and will fall out of major use sooner than most of these other languages. it's still cool -- there's something refreshing about the anarchy of TMTOWTDI -- and i would never dissuade anyone from learning any language just to learn it. but honestly there's nothing you can do in perl that you can't do just as easily in python (or ruby).

i can't say i'm enlightened enough to truly grok lisp, but i am intrigued by the prospect. i can say that functional programming a la scheme/lisp is interesting and blew my mind as a college freshman.
Scheme is a very interesting language. I'm not deep enough into it yet to say anything that won't embarrass me, so I'll just say that it is fascinating to learn, in a slow and painful way.

"Take three numbers, find the largest two and add the squares."

Pretty classic, and one I could bust out in Python in about 10 minutes. It took me about 2 hours in Scheme due to the strange syntax. I was so proud of it, I still haven't turned off my computer and have it written in my notebook.

Not sure how coding like this is fast, but what I like about Scheme is how everything that is used today was done decades ago with it. I assume that it is easier to extend, but that is probably because this current class deals with doing a bunch of tricky Voodoo magic with Scheme. Scheme is, after all, MIT's brain child, and they are very proud of it, so of course they will present it in the best possible light.

Quote:
it's hard to describe why this is so. i think of programming languages like natural languages. being exposed to more is always good. learning a new language will teach you things you never expected about your mother tongue.

it's easier to learn a language similar to one you already know (if you know spanish, picking up french or italian is no big deal; if you know perl, python and ruby should feel somewhat familiar) than to learn one utterly unlike anything you've seen before (for most english speakers, russian and chinese may as well be martian). but it's the mindbending experiences like chinese and lisp that really deepen your understanding.



i think kyleb's answer is right on:



i would say that python, perl, and ruby all occupy the hacker "space" that graham refers to. i think C# .NET and, to a lesser extent, ruby on rails now fills the c++/java niche.
The ads that scare me are the ones that demand that you are a "Coding Ninja," and "Jedi," or some wacked variant thereof. I also get scared of someone that wants a buffet of 15 different languages for 60k/year and demands you are the Head Guru of them all. This is all telling: maybe the manager took some programming classes at a community college and isn't a complete moron. but the biggest head-scratcher are those that think API is a programming language. Now THAT is a 'tell.'

Quote:
not sure how well the industry recognizes the importance of concurrent programming, but i def agree that there will be high demand for programmers with this skill set.

(sorry for wall o' text)
It'll be a tough road for parallel computing I think, but I digress.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 07:11 AM
sorry for being so blunt but I don't see you ever being a strong programmer in any language. By strong I mean someone who would be hired for a "programming" or "development" job. It just takes too long for you to pick up anything, the guys who are good pick up how to write that in Scheme in minutes. Plus, as you mention, you are finding it hard to shake that technophobe mentality where the computer or the language is always out to get you. You need to be able to treat the computer as a tool to help you work faster, not something to fight against.

It does sound like you knew some stuff about web design, standards, etc, though. So it is possible you could do more of that and occasionally hack something together in Javascript when you wanted more functionality on a given page.

Last edited by RoundTower; 07-20-2011 at 07:12 AM. Reason: also, feel free to prove me wrong
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
07-20-2011 , 07:22 AM
His biggest problem IMO is that he worries about stuff that is completely irrelevant. Things like <b> vs. <strong> and arcane CSS/HTML validation simply doesn't matter that much when you don't even get the basics of markup. Screwing around with <canvas>, for example.

I would probably master the OS layer first, starting with the basics of Linux. Successfully writing shell scripts that use sed and grep should be the first place anyone starts their hackerdom from the ground up; screw perl, php, python, c, or whatever. Then do something like... crack a WEP network using BackTrack or something.

I think an understanding of what happens with the computer matters a lot before you even get into programming languages. "I'm not good with Linux" is no different than saying "I'm bad at understanding the fundamental reasons to use a computer in moderately complex ways," and developing non-trivial programs quickly outpaces "moderately complex."

This is just IME; I spent the days of my youth writing drivers for my ASDL modem in SuSE and loving the idea of writing network scripts for my Novell 3 installations. While I use Ubuntu and Windows 7 now and while everything is heavily abstracted these days (aside from the NN work I do which is infuriatingly tough/underresearched), having a non-trivial understanding of the underlying layers of the high-level processes helps in logically useful ways.

ETA: As an example, the best data architect at our company uses NOTHING but shell scripts to write ETL/management jobs. He uses mysqld command line for all ETL processes churned out by sed/grep; he uses a 50-line php script only to interface with an API for Google Analytics and one other tracking source we use (where a language that handles JSON natively is relatively useful).
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

      
m