“Where do I Start?” – too many questions, not enough action. Continue reading
Shane Watson on The Slightly Great Commis…
A few years ago, My former employer once said to me: “I reached my peak in computer knowledge after around 10 years”. And indeed he was quite an incredible programmer. It got me thinking though, Is that peak a reality or just a perceived roof over our heads.
I’d like to be idealistic about the future and think that I’ll never hit that glass ceiling (laugh at my poor attempt at art), because well, can I know everything? Most likely no. But will I one day know enough to know exactly where to look for the gaps in my knowledge? hmmm.. that’s a separate question with a philosophy of it’s own. Technically speaking, We cannot know every detail, But we are talking about something created by humans, And humans also don’t know everything, So what we seek to know the answers to is also a confined realm.
Computers are complex machines, I don’t expect anyone to disagree, But they are far from incomprehension. If you break anything down you’ll see everything is made of simple components, those components which can be understood at a high enough level so as to be practical to use: “this does that when you touch this there” and so on so forth, ad nauseam. Break a computer down and you get the same thing. CPUs, memory, this goes there and does that when you do this. Programs are more of the same. Simple problems and simple solutions making complex creations all of which serve exponentially numerous purposes. and they all follow patterns.
With out order we find it hard to get around anywhere. Think about the rules that govern our roads, If there weren’t established conventions of driving to one side or following sign rules, then there’d be chaos. but when was the last time you had to think about what a road looks like? or which colour traffic signal means stop or go? It is something that is embedded in our brains and our muscle memory. Red things induce chemical reactions in our brains whilst driving that provokes physical response.
I.e. when red flashes in front we slam the brakes. This does not only happen at the red traffic lights we frequently visit, but any subsequent traffic signal that ‘looks light a red light’ as well. That is why some communities employ this effect to their advantage by having orange street lights which invokes caution in drivers naturally (personally i think this could have the adverse effects of ignoring actual orange signals).
So should this be different for computers. Computers – chief amongst man-made things – follow distinct patterns. Programs built for computers require efficient and well known patterns to operate. Is it possible to have sufficient knowledge of these patterns such that nothing becomes ‘new’ anymore? So that the recognition of such patterns becomes ingrained in our thinking and automate our understanding? Maybe, But if that were the reality, I’d wonder if I myself were fooled by my perceived ceilings. I do not believe for a split second that we’ve peaked our knowledge in any field. There are just too many combinations of simple things in a mere mathematical sense to believe such a knowledge exists. This world is too wonderfully made not to contain a great number of unknown discoveries.
Having reached a plateau in my pilgrimage, I’ve discovered increased ease when learning new frameworks, languages and paradigms. And for some areas, I’ve reached a dead end with Google search-ability. Such, I believe, is the realm of a pioneer. people who have reached the end of the known world and decided not to turn around. Familiarity is comfortable, safe and well traveled. But where we stand was not once a civilized place, It took the efforts of countless men to stand on the shoulders of giants (or as I like to think: ‘the ladder of men’).
What would happen if everyone on the edge of discovery pushed through the adversity and broke into new territory. What if the resolve of our generation was to innovate beyond known laws and boundaries. It is in assuming that there are limits that we limit ourselves. I never want to hint to those below me that there is a place where we can say “I have arrived”, for I don’t think we’ll ever find that in this existence. nor do i think we were meant to. Excuse my ‘archaic’ belief in a created world, but my passion would not be driven if not for a belief that my purpose extends greater than this life and into something only God could have ordained for me.
But regardless of religious belief, the what-have-you-tried philosophy of problem solving can help any man (by man i mean women too :P) and when what you’ve tried subtly extends past what is known, you too may begin to feel the incredible feeling that comes with smashing through glass ceilings…
Happy coding people.
We’ve entered a golden age of software development. the coder’s world is crowded with expressive languages, robust frameworks and job titles that leaves many starting-out programer-pilgrims deep in supermarket selection syndrome. What should you do? Continue reading
I don’t know how many times I’ve crossed regular expressions thinking: “gee willikers, I oughta learn something about those sometime soon yessireebob good sir yuppy duppy diddilumdeedee… meh…”. It’s not that i think they aren’t useful, I’ve always wanted some magical means of matching patterns to serve my agenda. Its just that Its yet another language, and i doubt how much more syntax i can squeeze into my head before I explode.
Currently as it stands, these are the language sets i know:
And I’m not counting here all the micro languages and DSL’s (Domain specific languages) that I have picked up from experience. Am i trying to boast here? not really, I’m just pointing out that after a while things are getting hard to keep track of. each one of these are spinning plates on top of a pole and when I’m not using one of them, I slowly forget. And i know that they can just escape from memory, because I used to know C and C++ very well, however I’ve since forgotten them from the earlier days of university.
But I’m not giving up yet, Regex.
Memory is an interesting thing. So is our brains. When we learn something, we’re creating pathways in our mind that are permanent fixtures, just not well travelled ones. I know enough about physiology to understand how memories form and how much room is really left in my head… Well it’s not a matter of how much room there is, because the brain literally makes new things when we learn.
There is such things as memories that don’t go away. Why? because the neural pathways are so strong that it is crossed over by mere default when we think upon the subject. And why do some memories stay? because the learning is attached to strong emotions and more importantly, revelation. When we understand something or feel like we’ve stumbled or conquered some learning hill, we remember those victories, and we remember what brought us there. That’s why many people feel like they learn much more in the field than in the books. It’s because the victories we experience there come with real consequences and reward. This reward attaches itself to the things we battled on the way and those memories stay with us.
I have to admit, The spinning plate allegory doesn’t quite fit this picture, As everytime you spin the plate, you increase the time it stays spinning, and with constant care, the plate stays in motion with little to no effort at all.
So Regex, Maybe I just need to climb that hill and use your magic to commit you to memory.
Recently I’ve stumbled across a pretty cool game. The name is Inflation RPG. The idea is that instead of growing levels slowly and acquiring gear over a long time like usual rpgs, You only have 30 battles (or battle points) before the game ends. Each battle can give you 100s or 1000s of levels at a time and gear that you gain during the game may be kept for the next one. So far the highest level I’ve got up to is around 55,000.
The way i play this game follows a very famliar pattern. In fact it is a pattern that has influenced the way I play any game:
Captialize, Risk, Bulldoze.
I tend towards mass accumulation and utilization of my resources until I have around a 70% perceived victory chance. I find that this percentage is the golden ratio – in fact the golden ratio stands around 1.61 which when flipped gives approximately: (0.62) – Although the percentage is not quite the same, The idea behind it remains. venture out into the uncertain when you are about this certain of victory.
You will learn the most when you work to 70% certainty of success.
There was a university study of this a while back that i can’t seem to Google, but It said that this ratio is the most efficient way to improve in any field. When you are 70% confident in your abilities given a particular task, You are at your peak of learning. Too confident and you won’t learn anything, Not confident enough and you will find yourself lost for direction, but 7/10 success chance and you find yourself just enough on the edge of breakthrough that you will push through to resolve. And sometimes you won’t, but even so you will have gained enough experience to apply for next time.
See this pattern? It’s the golden ratio spiral or the Fibonacci Spiral (each rectangle you see is the width of the last two widths added together). This isn’t quite the exponential growth I’m talking about – as I suggest growth happens in the ratio’s reciprocal – but we see this pattern naturally in the world around us, It’s in seashells, plants, even our body contains this ratio. I wouldn’t be surprised if this rate is inbuilt into how we learn.
Learn to take calculated risks. This will thrust you into knowledge and skill.
Take a good hard look at yourself. Now look back. Now look to your right, now back at me. I am on a horse.
But in all seriousness, HTML and CSS has to be the hardest thing I’ve had to learn so far. I account that not only to microsoft
being so darn slow at implementing conformant browsers (A dollar for every time i’ve seen “for this to work in IE <7…”), but
mostly for the countless caveats I encounter. Add that to cascading rules that make documentation grinding a grim reality and
specificity laws that change with authorship, user-clients, position in stylesheet, selector ids, classes and pseudo-classes and
you have a surefire way of ensuring depletion of ones patience repositories.
But I’m a noob. Maybe I fail often just because I expect css to work just like java. That i would only need a small language subset
and it would all just flow nicely from the tips of my fingers. Instead i find myself writting rules not logic and scratching my
head because the element on my page turned grey instead of beige due to some hidden css selector somewhere in bootstrap’s stylesheet.
Firefox comes to the rescue here slightly, their inspector is second to none IMHO and given the options available I would
recommend mozilla in a heartbeat. What it doesn’t tell you though is where the selector is. For that i have to know what possible
style sheets i have referenced and find it myself. And thats why I don’t like CSS. It’s not that its hard, but it is tedious. and
highly error prone to all but those who know their style sheets through and through and css cascading rules in their head. I’ve never
seen a specification for rule inheritance as complex as css’s. I suppose you’d need it though. There’s all this stuff about specified values,
computed values, inherited values and so forth. Selector specificity is a monster in itself and easily off putting to those new to the
If you are starting out in HTML and CSS there are a couple of things I would suggest.
Learn from example:
download bootstrap and set up a few base components where you can look into the style sheet and observe why elements are doing what they are doing. CSS is best learned in the field not in the book. You won’t be memorizing key attributes but you’ll experience their effect in real life and thats how you’ll learn.
Reference a selector cheat sheet until you know it from heart:
CSS is all about zeroing in on document elements given a certain criteria and applying properties to that element. once you understand this, It is easy to read through css sheets and anticipate an element’s computed properties. but to fully understand what an element will contain you must…
Learn the Inheritance model:
Google ‘css inheritance tutorial’ and you’ll find something useful eventually. Understanding this is crucial to ensuring you don’t spend hours tweaking a selector to make the element do what you will. If you use a css framework like bootstrap, There exist a multitude of selectors that will clobber your page you need to ‘beat’ in order to make your page behave the way you want.
Don’t use ids too often:
the power in CSS is in it’s inheritance and selectors and therefore it’s don’t-repeat-yourselfness (DRY), Using ID’s means that you are creating styles that cannot be reused. This is often counter intuitive unless you are certain the element itself is a once off (I.e. Your company logo).
don’t sulk, just do it:
Obligatory Nike reference here. Too often in my early html, css days I found my self staring at my blank page feeling overwhlemed at the css documentation, html creation, style syndication that lay before me. There is no shortcut to learning web design other than simply starting to design something. If you are stuck for ideas then there are a multitude of sites that give examples of goals you can make. Like i said in my first point, This field is best learnt in the pudding not out. Make short, acheivable goals. And I mean small; make this element pink, Make this box float left, small gradual goals will help you build confidence slowly. back this up with a decent source control system [i.e. use Git], and a build system like grunt and you can have a tight workflow of cause and effect, seeing changes immediately as you edit your source files.
I hope you find hope in the mess that is HTML and CSS more than I did when i started. It’s not impossible and eventually you will find your rhythm like I am finding mine. Just keep going!
Happy coding fellas!
I have been met with what I can only describe as being some form of April fools paraphernalia. This weird game keeps popping up in my intellij idea EAP release and i have no idea how to stop it popping up.
Any ideas?! google does not yield an answer.
I have concluded that this is an addictive game. Here is my best score so far…