Re: Searching for blind programmer to start a school for blind programmers

  • From: Dave <davidct1209@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Sun, 10 Apr 2011 06:33:40 -0700

Hey Sina,

The basics absolutely do matter, but I'd argue that a large portion of
the people I work with in industry stare at monolithic codebases.
There's sometimes almost no way to know with any certainty that a
small change won't have massively damaging consequences if the project
started off as most do without any sort of infrastructure to support
stability such as unit tests, regression tests, or a QA department.
That's not to mention that you rely on components that may or may not
have underlying assumptions or sideeffects that you're unaware of.

Also, people outside of academia simply don't prize TDD or absolutely
fault tolerant software to varying degrees.  You do have to weigh
those priorities with other things such as time to market or hiring
green developers for bodies to throw at a problem.  Ask someone how
2's complement works or how floating point numbers are represented,
then ask them how to resolve concurrency issues, and then ask them to
describe uniform cost search, and then how to implement a Red Black
tree...only a few can describe, and even fewer can write a working
program with correct syntax in C/C++...there's always a question to
stump even the best.


Computer science as a discipline's just so damn young that there's
simply not a standard bar that people can be entirely measured
against.  Again, software, more than any other selling product, has
arguably more defects than the majority of goods out on market today.

Not everyone out there has a CS degree; Microsoft wysiwyg, high level
"design" languages, and your slew of "web developers" made sure of
that among other things.  I mean, do you really need a CS background
to write scripts or even code in .Net?  What about dragging controls
onto a canvas or laying out html/css?

Until some of the CS learning "stack" trickles down into the standard
curriculum taught in k-12, it's not exactly common knowledge even
among developers.

I'm still shocked at the lack of knowledge when I interview
others...one such recent guy didn't know what the mod operator "%"
did...

As for machine language/asm, from an academic point of view, it's nice
to write toy instructions that demonstrate specific concepts.  It's
"cool" and interesting to write in hex and see what happens especially
if you want to dive into decompliations or disassembly.  Implementing
an entire product in asm or raw bits that you would *sell* to people
and expect to make a profit on is foolish and not at all what I think
Ken's suggesting.

Back on topic...if you as a blind person really want to get into
computers, go get a damn CS degree and preferably a graduate degree as
well.  Without one, you're not going to get that far within industry
since you'll battle with lack of CS fundamentals, but also a lack of
raw understanding of how your accessibility solutions work under the
hood.  That's terribly problematic when said solutions break which
they do all the time.



On 4/10/11, Sina Bahram <sbahram@xxxxxxxxx> wrote:
> But it's not even that. What these folks, I feel, are failing to realize is
> that even today it's important to understand two's
> complement and other fundamental concepts.
>
> Maybe some of you have heard of twitter. Well, guess what. If those folks
> had paid attention in computer freaking science 101, then
> maybe they wouldn't have used unsigned 32-bit integers for an application
> that obviously would break 4 billion in no time. So you
> know what happened? All of twitter went down for hours and hours because
> some idiot used a 32-bit int and they all rolled over to 0.
>
> But hey, let's just ignore the basics. In today's high level languages, it
> doesn't matter, right?
>
> And if you want real stories, ask Ken and I about the military screw ups
> with binary roll over, missle guidance systems screwing up,
> etc, etc.
>
> The basics matter folks .. it's just that simple.
>
>
> Take care,
> Sina
>
>
>
> -----Original Message-----
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry
> Sent: Sunday, April 10, 2011 12:46 AM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: RE: Searching for blind programmer to start a school for blind
> programmers
>
> Yes and I suppose that assembler wrote the code in what?  How did he know
> what to tell that assembler to write.  Excuse me mister assembler please
> output my code into the binary format made for this particular chip which I
> designed.
>
> Sigh I said I wouldn't say anymore now I am done.
>
> Ken
>
>
> -----Original Message-----
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Christopher
> Coale
> Sent: Sunday, April 10, 2011 12:22 AM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Re: Searching for blind programmer to start a school for blind
> programmers
>
> People need to understand though... I understand what you're saying, but
> even in hardware design, it is not important. Yes, the designer of a
> processor needs to know their own instruction set and how the
> instructions are encoded. However, and that's a huge however, they are
> not going to continually be writing test code by hand.
>
> A good friend of mine has been working on a processor design. Yes, he
> tested a few things out by feeding it raw bytes, however, he did not
> ever once write a full program for it using his machine language. In
> fact, instead of having to do that, he wrote his own assembler that
> would compile to his machine language, so that he was able to do
> something similar to:
>
> mov reg0, 100
> add reg0, 50
>
> and then test that. Point being, it is impractical to do what you are
> talking about in the real world and is therefore not important to be
> able to do. I hate for this to come out the wrong way, but maybe in the
> time you were working on hardware it was required, but today it is
> definitely not. Now don't get me wrong here.. it's an impressive skill
> to have if you can do it, and congratulations for being able to do it,
> but I'm just trying to get the point across to everyone else that it
> isn't an important skill that they need to develop.
>
>
> On 4/9/2011 9:10 PM, Ken Perry wrote:
>> I think the problem is  the meaning of important is different for
> different
>> people.  For example.  Knowing how the core of a bowling ball is important
>> to a professional bowler while knowing that it has 3 holes and has to hit
>> the pins is fine for people who bowl for recreation.  I will yield in that
>> it may not be important to some and probably not many but it all depends
> on
>> which place you are coming from.  I am coming from a frame of mind that
>> hardware design is just as important as coding and both have to meet in
> the
>> middle.  I don't just deal with Intel or AMD and sometimes the compilers
> are
>> not as good as those you might be dealing with.  So I am finished with
> this
>> conversation mainly because it's getting out of hand.  Besides in the
>> immortal paraphrased words of two famous presidents.  "let me be perfectly
>> clear",   " it all depends on the meaning of 'is'".
>>
>> Ken
>> Ken
>>
>> -----Original Message-----
>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Christopher
>> Coale
>> Sent: Saturday, April 09, 2011 10:36 PM
>> To: programmingblind@xxxxxxxxxxxxx
>> Subject: Re: Searching for blind programmer to start a school for blind
>> programmers
>>
>> How kind of you to join, master. Can you tell me who said that low-level
>> was NOT important to know and understand? You admittedly stated that you
>> ignored 65% of the messages, but then tell everyone to take Ken's side?
>> Are you kidding me? You admit that you don't know what the argument
>> (friendly argument) is about, yet you still pick a side? Come on now...
>>
>> Ken stated that --being able to write a program in pure machine code (no
>> compiler or assembler)-- is important. I disagreed saying that it is not
>> important. Knowing low-level concepts (like I pointed out earlier.. how
>> the processor works, operating system design, etc.) is definitely
>> important. Writing a program in pure machine code is an unnecessary
>> skill, not an important one.
>>
>> On 4/9/2011 7:27 PM, Sina Bahram wrote:
>>> I haven't read 65% of the messages in this thread, frankly because the
> SNR
>> is far too low.
>>> So can you guys please just listen to Ken on this one?
>>>
>>> low level is important to know and understand. End of conversation.
>>>
>>> Now go do something fun. It's Saturday night.
>>>
>>> Take care,
>>> Sina
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: programmingblind-bounce@xxxxxxxxxxxxx
>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Ken Perry
>>> Sent: Saturday, April 09, 2011 8:06 PM
>>> To: programmingblind@xxxxxxxxxxxxx
>>> Subject: RE: Searching for blind programmer to start a school for blind
>> programmers
>>> I think we are just going to have to disagree on this.  While I doubt
>> anyone
>>> is going to rush out and write a bit of Machine language I think it is
>> still
>>> important to know how.  It's sort of like saying it's not important to
>> know
>>> that there is a linker and what it does most people on this list will
>> never
>>> know what the linker does because they deal mainly with High level
>> languages
>>> but that doesn't mean the linker is not important.  Most people will
> never
>>> write machine language but when creating electronic circuits with smaller
>>> chips it is a useful tool.  True you may never hand write it but in
>> creating
>>> hardware it is very useful in reading it.  I just found learning to write
>> it
>>> was very useful back in the good old Hack hardware cartridges days.  Sure
>>> the Intel book has both got bigger and more complex but I just saw a post
>>> where a guy wrote a hello world in Machine language just to prove it
> could
>>> be done.  Now I will point out he did it in Linux and he had to make his
>> own
>>> linker of sorts well a shell linker all it did was write the file with
> the
>>> numbers he wanted but I think he did that just so he could use a normal
>>> editor and he had to add the Aelf stuff on top but he did it in 120 bites
>>> which I find pretty impressive since 80 of the bites were AELF stuff.
>>> Anyway I am sure we are boring most of the people on this list.
>>>
>>> Ken
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: programmingblind-bounce@xxxxxxxxxxxxx
>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Christopher
>>> Coale
>>> Sent: Saturday, April 09, 2011 7:39 PM
>>> To: programmingblind@xxxxxxxxxxxxx
>>> Subject: Re: Searching for blind programmer to start a school for blind
>>> programmers
>>>
>>> Wait, you are adding new stuff in here. Yes, to me, it is important to
>>> know how to optimize code for either size or speed. It is also important
>>> to know how programs are executed and created (knowing the PE32 format,
>>> for example); however, knowing how to write a program by scratch by
>>> using a hex editor and writing pure byte code is not important. And, you
>>> are misinterpreting my reason for saying it is not important. I'm not
>>> saying it's not important because it is nasty studying. I'm saying it is
>>> not important because it is simply not practical and teaches you no more
>>> than studying assembly and operating systems (assuming you are actually
>>> learning). And I didn't say it wasn't useful, either. Knowledge for
>>> knowledge's sake is always good. But, I said it wasn't important. You
>>> seem to be mixing up the knowledge required to do something and the
>>> knowledge gained from doing said thing. In order to start editing a
>>> program using a hex editor, you have to already have the knowledge to do
>>> it (as in, you have to know that there is a data section, a symbolic
>>> table, etc.). You gain no new knowledge (aside from knowing how to edit
>>> executables) from editing, and/or writing, executables from within a
>>> hex-editor.
>>>
>>> On 4/9/2011 3:59 PM, Ken Perry wrote:
>>>> Oh really?  I found it very useful knowing how to minimize code and data
>>>> sections by hand.  It explains what compilers and linkers have to go
>>> through
>>>> and ways to get around problems that exist.  It even is nice knowing how
>>> exe
>>>> files are laid out.  I agree that it's a nasty bit of study to get to
>> that
>>>> point but I totally disagree that the knowledge is not useful.  In fact
>> if
>>>> you ever want to get involved with the GNU compiler group believe me
> it's
>>>> useful.
>>>>
>>>>
>>>> Ken
>>>>
>>>> -----Original Message-----
>>>> From: programmingblind-bounce@xxxxxxxxxxxxx
>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Christopher
>>>> Coale
>>>> Sent: Saturday, April 09, 2011 6:52 PM
>>>> To: programmingblind@xxxxxxxxxxxxx
>>>> Subject: Re: Searching for blind programmer to start a school for blind
>>>> programmers
>>>>
>>>> My knowledge of how the processor works (by means of knowing assembly
>>>> and OS development) is useful. Knowing how to write a program using only
>>>> byte code is not (and I couldn't do it without many free hours and lots
>>>> of reference manuals, and even then it would be a difficult task). Not
>>>> to belittle your knowledge, but I'm just saying that being able to write
>>>> a program using a hex-editor (and if you can, more power to you) is not
>>>> very helpful in understanding how computers work; learning assembly and
>>>> learning operating system design is where it is important, I would say.
>>>>
>>>> On 4/9/2011 3:45 PM, Ken Perry wrote:
>>>>> Yes and us true geeks used to dream hex in our sleep.  I think there
> are
>>>>> still some of us left and I am no longer one, I know of all the
>>>>> possibilities and I can still code in ASM for burning chips but I no
>>>> longer
>>>>> dream in op codes and registers, memory locations and IRQ's.  All I was
>>>>> saying is learning of the existence and how it works is invaluable to a
>>>>> programmer even today.  Are you telling me your knowledge of the
> subject
>>>> is
>>>>> not useful?
>>>>>
>>>>> Ken
>>>>>
>>>>> -----Original Message-----
>>>>> From: programmingblind-bounce@xxxxxxxxxxxxx
>>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Christopher
>>>>> Coale
>>>>> Sent: Saturday, April 09, 2011 3:30 PM
>>>>> To: programmingblind@xxxxxxxxxxxxx
>>>>> Subject: Re: Searching for blind programmer to start a school for blind
>>>>> programmers
>>>>>
>>>>> I didn't say it was impossible (after all, how else would a compiler
>>>>> work?) I said that it was asinine and impractical.  I say this because
>>>>> the x86 instruction set is amazingly complex. Sure someone could use a
>>>>> debugger to look around at machine code, that's not hard at all (in
>>>>> fact, I do it a lot with vc++ to debug things and get performance
>>>>> boosts). But, writing a binary file from scratch? I see it being
>>>>> possible, but you would need to know the encoding of every instruction
>>>>> you use. For example, "int imm8" is apparently 0xCD + the immediate
>>>>> byte, so to do int 80h, you'd have 0xCD80. That is fairly simple, but
>>>>> the "mov" instructions where you can have memory, immediate, and
>>>>> register operands are difficult, and then for each memory, immediate,
>>>>> and register operand you have an 8-bit, 16-bit, 32-bit, and for x64,
>>>>> 64-bit versions. It's no small feat to write a binary by hand.
>>>>>
>>>>>> Laugh yes I have read them and there was a time I could write some
> very
>>>>> good
>>>>>> stuff with nothing but a debugger.  Just because it's nasty don't mean
>>>>> it's
>>>>>> impossible.  I was not even in the same class of some of the guys I
>> used
>>>>> to
>>>>>> hang out with.  I knew one that won a programming contest who wrote a
>>>>>> program to display a naked woman with nothing more than Assembler and
> a
>>>>> text
>>>>>> editor.  As for machine language you can write it on your own if you
>>> know
>>>>>> enough.  Unfortunately time has dulled my memory of useless interrupts
>>>>>> because we have so much easier ways to do things now.  I think I could
>>>>>> probably get a command line app to run with nothing but a hex editor
>> but
>>>>>> calling the GUI might be beyond me because you would have to do some
>>>>> serious
>>>>>> digging to get that to work and sometimes the information is just not
>>>>>> available anymore.
>>>>>>
>>>>>> Ken
>>>>>>
>>>>>>
>>>>>> Ken
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: programmingblind-bounce@xxxxxxxxxxxxx
>>>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of
> Christopher
>>>>>> Coale
>>>>>> Sent: Saturday, April 09, 2011 2:23 AM
>>>>>> To: programmingblind@xxxxxxxxxxxxx
>>>>>> Subject: Re: Searching for blind programmer to start a school for
> blind
>>>>>> programmers
>>>>>>
>>>>>> What? Have you ever read the x86 information sheets? Teaching someone
>>>>>> assembly is a good way to teach them how a computer works -- having
>> them
>>>>>> write programs in pure byte code (especially for x86) is both asinine
>>>>>> and impractical.  Maybe not so much for an extremely extremely simple
>>>>>> virtual machine or basic processor, but complex instruction sets like
>>>>>> x86 are flat-out beyond writing op-codes by hand. If you don't believe
>>>>>> me, just take a poke at the NASM source code. ;)
>>>>>>
>>>>>> On 4/8/2011 6:47 PM, Ken Perry wrote:
>>>>>>> I am not quite as old as you but I come from the same time zone.  I
>> had
>>>>> to
>>>>>>> learn assembler to hack games on the Vic 20 and the commodore 64 and
>>> the
>>>>>> TI
>>>>>>> but more than that when I joined the Air Force and took on
> Electronics
>>>>>>> Assembler made my life easier.  Then later in life after I lost my
>> site
>>>> I
>>>>>>> took software engineering and had to burn chips and while we could
>> have
>>>>>>> wrote stuff in C it was much easier to control the registers and
> stuff
>>>>>> with
>>>>>>> ASM.  If we used C we allot of the time had to use special assembler
>>>>>>> keywords to get things to work quite right.  If you look on the Fruit
>>>>>> Basket
>>>>>>> page I was also insane enough to write the fruit basket in Assembler
>>> for
>>>>>>> windows xp and it runs in vista.  I am not sure if that runs in
>> Windows
>>>> 7
>>>>>>> but I should revisit it and make sure it does.  Lost knowledge is not
>> a
>>>>>> good
>>>>>>> thing.  Assembler may not be a way I would write a project now days
>> but
>>>>> if
>>>>>>> you want to teach someone how your computers work there is only one
>>>> thing
>>>>>>> better.  The one thing better is straight opt codes using a debugger
>>> and
>>>>>>> watching what is going on.  Well you could also write straight binary
>>>>>> files
>>>>>>> like a good Fortran coder but who does that any more.  That what I
>>>> should
>>>>>> do
>>>>>>> is create the fruit basket with nothing but a hex editor.
>>>>>>>
>>>>>>> Ken
>>>>>>>
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: programmingblind-bounce@xxxxxxxxxxxxx
>>>>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Bill Cox
>>>>>>> Sent: Friday, April 08, 2011 11:40 AM
>>>>>>> To: programmingblind@xxxxxxxxxxxxx
>>>>>>> Subject: Re: Searching for blind programmer to start a school for
>> blind
>>>>>>> programmers
>>>>>>>
>>>>>>> On Fri, Apr 8, 2011 at 11:16 AM, Littlefield,
>>> Tyler<tyler@xxxxxxxxxxxxx>
>>>>>>> wrote:
>>>>>>>>> Assember?  Really?  You must be almost as old
>>>>>>>>> as me!  I can't even find people who care about speed or memory
>> usage
>>>>>>>>> anymore.
>>>>>>>> I love assembler. It's a great way to teach people what's going on
>>>> under
>>>>>>> the
>>>>>>>> hood and make them think about what they do. Every time I see
> someone
>>>>>>>> reserve a 100k buffer just because, I cringe. :)
>>>>>>> We must be from the same generation.  I'm 47, and learned to program
>>>>>>> in machine code on an 8080 based Intel board with a hex keypad and
>>>>>>> some LEDs.  It was a couple of years before I found out that people
>>>>>>> programmed using assemblers, rather than entering hex by hand.
>>>>>>>
>>>>>>> I worry that the new generation's early experience with computers is
>>>>>>> amazing games and technology so complex they could never
> realistically
>>>>>>> hope to understand it.  What's the natural path now days for kids to
>>>>>>> go from playing computer games to writing them?  On the old Apple
> IIs,
>>>>>>> you just typed list instead of run, and there was all the code.
>>>>>>>
>>>>>>> Bill
>>>>>>> __________
>>>>>>> View the list's information and change your settings at
>>>>>>> //www.freelists.org/list/programmingblind
>>>>>>>
>>>>>>> __________
>>>>>>> View the list's information and change your settings at
>>>>>>> //www.freelists.org/list/programmingblind
>>>>>>>
>>>>>> __________
>>>>>> View the list's information and change your settings at
>>>>>> //www.freelists.org/list/programmingblind
>>>>>>
>>>>>> __________
>>>>>> View the list's information and change your settings at
>>>>>> //www.freelists.org/list/programmingblind
>>>>>>
>>>>> __________
>>>>> View the list's information and change your settings at
>>>>> //www.freelists.org/list/programmingblind
>>>>>
>>>>> __________
>>>>> View the list's information and change your settings at
>>>>> //www.freelists.org/list/programmingblind
>>>>>
>>>> __________
>>>> View the list's information and change your settings at
>>>> //www.freelists.org/list/programmingblind
>>>>
>>>> __________
>>>> View the list's information and change your settings at
>>>> //www.freelists.org/list/programmingblind
>>>>
>>> __________
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/programmingblind
>>>
>>> __________
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/programmingblind
>>>
>>> __________
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/programmingblind
>>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
>
__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

Other related posts: