Re: Trent's projects

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ (text/plain)
Delete this message
Reply to this message
Author: Aaron Jones
Date:  
To: Main PLUG discussion list
Subject: Re: Trent's projects
The whole “you will be spiritually predisposed to coding” is stupid. No one wants a computer science person on the team because having a team of ten developers who can write crappy boiler plate code is faster than 9 shitty programmers being chased around by a good developer.

I have a website I work on that has a code base that is topping nearly 2gb and has to load over 986MB to load just the front page.

For what? Well we have 60+ items in composer, we have jquery, we have endless numbers of libraries and plugins. Sometimes we load thousands of lines of code to do a single action that literally might be called on the rarest of second tuesdays on the new moon.

This is the thought process of the brogrammer.

Mission - Write to database
Tools - PHP and mysql
Method - use https://www.slimframework.com/ to develop internal api for working with db. Manage entire api using restful calls using slim. Requires all total several thousand lines of code and we have to make updates depending on changes in framework.

My method -

Write a single sql update using prepared statements. Approximately 2 lines of code. Up time so far has been 100% with no code base changes in over a year. Azure restarted our db once but they emailed us about it so it doesn’t count.

Real life example between brogrammer and someone who likes the unix method. But the brogrammer has a continued source of income. My method is essentially immutable. The shitty programmers can do maintenance, updates, and upgrades for life. They will be twiddling that code for years. Its an endless source of income.

Why make good washers and dryers when we can make you buy a new washer and dryer everything 3-5 years.

Thats the mindset of these companies.

> On Jan 21, 2018, at 8:43 AM, wrote:
>
> I'm intrigued by your comments that one needs a computer science foundation to be more effective as a programmer.
>
> In this article [http://fortune.com/2015/09/01/computer-science-degree/], it is reported that a start up CEO says "He prefers people who have an innate passion and talent for coding in the first place.". I think I understand how to determine if someone has passion... But how do we determine if someone has " talent for coding"?
>
> There seems to be two camps. One camp believes you need CS training. The other says you need exposure to current technologies and exposure to working in a team. Maybe both are correct?
>
> Your thoughts?
>
>
>
>
>> On 2018-01-20 14:18, David Schwartz wrote:
>>
>> Back in the 80's there was a library I used that I really loved. The author was clearly dedicated to supporting it and was very active on their discussion forum, and was constantly helping people fix problems they had with the code. (It was a 'C' library.) He was constantly releasing updates at a pace that I'd feel challlenged to keep up with.
>>
>> I went to a Software Developer's Conference and this company had a booth, so I swung by to meet the guy. I turns out he was quite disabled. He reminded me of Stephen Hawking. He may have had ALS, I dunno. Nobody said, and I didn't ask. There was also a close buddy of his there who I guess was his "caregiver" of sorts. Sadly, this guy appeared quite drunk most of the time. I suspect he may have been an alcoholic, which must have been quite frustrating to the software guy. (Unless he had some disability himself, but at the evening parties where I saw him, he was going through beers pretty quickly.)
>>
>> Like Hawking, here was a brilliant mind trapped inside of a dysfunction body, and he discovered that software was a great way to keep himself occupied and engaged in the world. Not to mention that because this was a fairly popular library, it brought in a nice steady income for these two fellows.
>>
>> It's not uncommon to find disabled people who've accumulated lots of academic creds. In this case, I'd say it's more a reflection that there's a sharp mind trapped in a dysfunctional body doing its best to keep itself occupied in a positive way.
>>
>> The failure here is probbably on the part of the not-so-sharp minds trapped in fully-functional bodies who probably see their jobs in supporting these people (as "case workers" and "coaches") as little more than pacifiers, keeping folks like Trent modestly occupied and engaged enough so they're not much of a bother to them. That would infuriate the hell out of me if I were disabled.
>>
>> Software is a perfect domain for lots of folks with physical disabilities to engage in because most of the activity around software is going on in our heads anyway.
>>
>> I was quite shocked to find that the developer of that library was so extremely disabled that he couldn't even talk and had extremely limited physical abilities. (I seem to recall he had some kind of beak or stick he wore on his head that let him tap on keys on the keyboard. This was pre-Windows before mice were in common use. His typing was very slow and labored. Yet he managed to write all of that software and help people online and everything anybody else would do. He was just very slow at it, although in the end that didn't matter in the least.)
>>
>> That said, find a project you like that's in a direction you want to learn more about, and just take it on.
>>
>> If you can take classes that help you learn, all the better. Don't worry about your academic background. However, it would be good to have a few core Comp Sci courses under your belt.
>>
>> It bothers me that our educational system has become somewhat bifurcated, in that it's teaching core Comp Sci topics as part of a larger educational curriculum but ignoring them at the other end where they're starting by teaching "coding" and never go very deep with the theory.
>>
>> People need to be able to learn core Comp Sci subjects without being encumbered with all the other crap required to get a Bachelor's Degree. Unfortunately, AA degrees are just the first 2 years of a BS program, and they only include about 1/2 of the core CS material.
>>
>> What's preventing this from happening is a shift in the industry from hiring people with core competencies to hiring people who've mastered superficial skills — you don't need core competencies to become highly facile with runtime libraries that allow you to crank out code really fast.
>>
>> But all of that code you end up cranking out may not be structured very well because you have no underlying core competencies! This is what people are totally missing, thanks in large part to those who've risen in the ranks without the core competencies and therefor are competely blind to their value.
>>
>> ("Hey, I've never had a compiler construction course, and that hasn't hurt my performance over the years!" Well, this person probably never had anybody with any background in compiler construction or finite automata theory look at their code where that stuff would have helped them and pointed out how horribly it was structured and how hard it is to maintain.)
>>
>> You don't recognize that some particular task requires things taught in a basic data structures course, or you don't see the algorithmic complexity of something you're building because you never had an analysis of algorithms class. With no formal set theory background, you don't have any grounding in how to write efficient SQL queries. With no formal language theory background taught in a compiler construction course, you have no understanding of tokenizing and parsing streams of input data.
>>
>> This lack of foundational background does not prevent you from writing code. It simply prevents you from recognizing various tasks as belonging to a larger set of already recognized and well-understood tasks that have been studied and their various structures and dynamics carved out for them to adapt as a "best practice".
>>
>> The one class that probably had the most relevant impact on my professional life was called "Discrete Math Structures". It was the most boring and seemingly irrelevant class I had in college. But it ended up being the basis of most of the work I've been involved with throughout my career. It was all about "counting". You'd think, "what a boring-ass topic!" Perhaps, but what I learned there forms the foundation of just about everything I've ever done in programming.
>>
>> The point is, when you attack programming from the coding-side — mastering a language and libraries rather than fundamentals — you never really learn the fundamentals, other than a little by osmosis.
>>
>> I used to get hired by people who said, "Oh, you've got a Computer Science degree. You can learn anything!" and they didn't give a rip what languages or libraries I knew. Today it's just the opposite. People want to know how fast you can hit the ground running with their particular "stack" and they tend to hire people who have the LEAST TO LEARN. Then they wonder why their code base is big and fat and slow and hard as hell to maintain, and why their development schedules seem to stretch out to oblivion.
>>
>> If you can take some core Comp Sci courses without having to be enrolled in a BS program, I encourage you to do that. Even just one a semester. there are only a handful (6-8) and they'll make a huge difference in your ability to learn new stuff going forward. THIS is the "core" of Comp Sci — not the rest of the crap you have to take to get your degree, like Sociology, Psych, and English Lit.
>>
>> Spend some time learning these core competencies and you'll find yourself far better for it down the road. That approach won't get you a degree, but you will find it much easier to approach new langauges and platforms and come up to speed faster.
>>
>> Because in the end, everything in the software world really is based on some core foundational theories and disciplines. For example, every imperative programming language is structured the same, and if you understand compiler theory, they pretty much all look and work alike.
>>
>> They didn't teach parallel programming, multi-threading, and stuff like that when I was in college, but they probably do today. That would be a great class to take if you're trying to learn something like Haskell and how to leverage the use of highly distributed parallel processors, even if they're arrays of CPUs on GPU chips.
>>
>> I believe it's not so much your familiarity with the language and run-time libraries that get you ahead, but rather the underlying theories that the languages are usually based upon that inform a lot of your decisions in these cases.
>>
>> So, yes, pick an open-source project to work on and focus on something concrete, like R or Haskell or whatever. But spend some time learning the foundations upon which those technologies are built.
>>
>> -David Schwartz
>>
>>
>>> On Jan 19, 2018, at 9:59 PM, trent shipley <> wrote:
>>> At present I am working through an introduction to R and an introduction to Haskell. Both are fun, but Haskell is more fun--and harder.
>>>
>>> I'm about a quarter of the way through each textbook.
>>>
>>> I'm also in DES's Vocational Rehab, because I have three disabilities, two master's degrees, and work as a telephone customer service representative for low wages. My vocational rehab coach wants me to start contributing to an opensource project ASAP. I'd like to contribute to Frege (Haskell for the JVM) but it will be weeks before I can finish the Haskell book, and then I'd still be a newbie. The most advanced training I have is a community college certificate of completion in computer programming, so I'm not that sophisticated or experienced a programmer. I am having trouble convincing my worker that making a meaningful contribution to an opensource project is actually a daunting proposition in most cases. Is anybody looking for an entry-level contributor to an opensource project?
>>>
>>> Anyway, there are opensource projects I'd like to work on. One is extending and documenting Frege (https://github.com/Frege/frege). They want Haskell plugins translated into Frege+Java. The project, unfortunately, seems moribund. No matter, maybe it would be possible to "borrow" directly from the GHC after going over a compiler textbook with exercises. Of course, what one would REALLY want would be a JIT Frege compiler, and I have a feeling you won't get that by slavishly translating the GHC.
>>>
>>> The other, rather harder, project I want to work on is translating, then modifying and extending Peter Sestoft's Funcalc (Spreadsheet Implementation Technology: Basics and Extensions, 2014). I have some idiosyncratic ideas of what I want to do with a functional language that is a spreadsheet. I want to target the JVM, and write most of the compiler/interpreter in a functional language. I'd use Frege + Java but Frege isn't nearly mature enough. I expect that if I ever do it, I'll use Kotlin + Java.
>>>
>>> That implies that future projects are going to be learning to write compilers and learning to code in Kotlin.
>>>
>>> How might someone with the equivalent of an AA in CIS (not CS) emphasizing programming get competent at (human) reading and (human) writing of lexers-parsers-compilers-linkers? What are prerequisites.
>>>
>>> Does anyone have favorite compiler textbooks? Any compiler textbooks they really hate?
>>>
>>>
>>> Regards,
>>>
>>> Trent Shipley
>>> ---------------------------------------------------
>>> PLUG-discuss mailing list -
>>> To subscribe, unsubscribe, or to change your mail settings:
>>> http://lists.phxlinux.org/mailman/listinfo/plug-discuss
>> <blocked.gif>
>> ---------------------------------------------------
>> PLUG-discuss mailing list -
>> To subscribe, unsubscribe, or to change your mail settings:
>> http://lists.phxlinux.org/mailman/listinfo/plug-discuss
> ---------------------------------------------------
> PLUG-discuss mailing list -
> To subscribe, unsubscribe, or to change your mail settings:
> http://lists.phxlinux.org/mailman/listinfo/plug-discuss

---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change your mail settings:
http://lists.phxlinux.org/mailman/listinfo/plug-discuss