I worked out why colleague was so cool towards me when I started a new project. I thought he just didn't like me. But no, it's not about me. Turns out he was in the midst of job-hunting. He found the new job and is leaving this week.
I've seen this behaviour so many times in my working career but my basic paranoia always makes me think it's personal. It almost never is. Usually it's job-hunting, sometimes it's a sick or dying relative, once it was gambling.
The best time was when I was the IT manager for a company and I was fighting with the CFO who kept blaming me for the financial state of the company. (An independent auditor had blamed the GM and CFO and exonerated me.) But he decided to make me redundant (a 'nice' way of firing me) anyway. I went above his head and asked the GM to intervene but he acted as though it wasn't his problem. Once again my paranoia told me it was about me. But as I was walking to the exit on my last day there, the GM walked out with me. He'd been fired by his boss. The bastard CFO got away clean.
Monday, October 20, 2008
Sunday, October 19, 2008
A possible UBM
Better get this idea down before it gets lost in the haze. Louis Savain's UBM looks like the way computing is heading. IntellaSys' SEAForth chip looks very much like what Savain says a parallel processing CPU (MIMD) ought to look like. Are the processing elements of COSA implementable in 64 words of RAM and 64 words of ROM?
The problem is that the devel tools for the SEAForth are primitive. There's no way a non-specialist is going to write parallel programs for the SEAForth using circuit emulators and Forth. So the task, if I care to take it, is to implement a graphical COSA devel environ which targets the SEAForth. Or hosts the IDE itself? Is that feasible?
The problem is that the devel tools for the SEAForth are primitive. There's no way a non-specialist is going to write parallel programs for the SEAForth using circuit emulators and Forth. So the task, if I care to take it, is to implement a graphical COSA devel environ which targets the SEAForth. Or hosts the IDE itself? Is that feasible?
Tuesday, October 7, 2008
My continuing Forth education
To answer the question I asked in a previous post, the Perl source code is at least 10MB, on top of how many gigabytes are taken up by the OS.
A Forth interpreter could be as small as 8k. Even full-blown development versions are only a couple of hundred kilobytes. Hence Forth can go anywhere there is a CPU and some memory. One can even buy CPUs with the instruction set being Forth. So think pervasive and lots of bang per byte. Employing the principal of "learn once, use everywhere" (hence I use bash, Vim and Perl), Forth looks like a more useful tool to learn than say VHDL or Verilog for FPGAs.
And I like the look of the new SEAForth 40C18 chip: 40 CPUs(with RAM and ROM) on a chip, all with in-built Forth interpreter. $21 in quantity. Could be quite interesting.
A Forth interpreter could be as small as 8k. Even full-blown development versions are only a couple of hundred kilobytes. Hence Forth can go anywhere there is a CPU and some memory. One can even buy CPUs with the instruction set being Forth. So think pervasive and lots of bang per byte. Employing the principal of "learn once, use everywhere" (hence I use bash, Vim and Perl), Forth looks like a more useful tool to learn than say VHDL or Verilog for FPGAs.
And I like the look of the new SEAForth 40C18 chip: 40 CPUs(with RAM and ROM) on a chip, all with in-built Forth interpreter. $21 in quantity. Could be quite interesting.
Thoughts and feelings and House.
Was watching an episode of 'House' where House is accused of trying to biopsy a patient's spinal cord for his own benefit and not that of the patient. The whole premise of the House series is that House is constantly required to be completely objective despite his own life and that of his colleagues being in tatters.
It got me thinking about the nature of objectivity and human motivation. I remember John Macmurray's definition of objectivity being to act in terms of the thing or person one is considering. For example to act according to what someone needs, not in terms of one's own desires. An objective but tired parent will get out of bed at 3am to feed a crying baby even though every nerve and fibre wants to return to sleep. I also remember Macmurray pointing out in the light of Freud's discoveries about the unconscious, how impossible it is to know one's own motives. Aside from the simple fact that everything we do and think is the result of a whole spectrum of motivations, Macmurray pointed out that the motive(s) we are aware at any time are only the surface and almost certainly will not be the primary motivations. And I remember Macmurray's conclusion that to be a person is to be aware that every positive motivation contains within it it's own negative.
Hence the interesting House episode where we are never sure what House's motive is for seeking the biopsy. And in the end even House is not sure. But he still acts objectively. (I used to wonder why it is so hard to depict good people in drama but there obviously is no such thing as a 'good person', only people with more or less positive motivations. I'm sure there is some would-be PhD mapping out his/her thesis on 'The Christ-image in House M.D.' or whatever.)
What also triggered these thoughts was that yesterday afternoon I was walking home and a young couple passed by, hand in hand. How lovely! I thought. Then I overheard their conversation and realised both were mentally retarded or delayed learners or subnormal intelligence or whatever euphemism or politically correct term is used these days. And I then thought how difficult their lives together would be simply because of lack of understanding of how the world functions and their part in it. How would they/did they discover sex? Would anyone tell them or would they watch some awful X-rated video and get totally misled about what it's all about (speaking from experience here folks!). How would they manage a household budget?
Then I got to thinking, reminding myself that people do not need high intelligence to live well if their motivations are life seeking, not destructive. And how do people acquire life seeking motivations? The same way we acquire logical thoughts: we learn to do it. But we live in a society that is only just starting to discover that life affirming emotions are learnable and desirable. We actually live in an emotionally retarded society, intellectual giants but emotional retards.
And how do we learn life affirming emotions/motivations? Well to be honest I'm not sure. ('Emotional retards' includes me.) I do know that learning to trust one's own feelings is absolutely critical (just as being able to trust one's own thoughts is necessary for mature thinking). I also know that educating the senses is important. Seeking new experiences, discovering new tastes, hearing new sounds, seeing new colours and shapes. And so is feeling new feelings, meeting new people, loving intensely, crying in sadness and crying for joy, trusting even though frightened.
The aim of such education is to become aligned with one's life-affirming motivations and to learn to moderate one's destructive motivations. If one learns to habitually act affirmatively then we don't need to spend as much brain power trying to think our way out of dangerous, awkward, messy, unhappy situations and get on with enjoying the wonders of life on this beautiful planet. And we can still love life even if we don't think as fast or as clearly as we used to. Ultimately we can learn to feel objectively just as well as we can think objectively.
My conclusion though seems as wimpy as a wedding sermon. It just becomes more and more obvious to me that love is the only life-affirming motivation worth the effort of learning and teaching. All our other motivations are in the end self-seeking, albeit dressed up in the nicest terms. Only love acts in the interests of that which is not ourselves. Only love is truly objective.
It got me thinking about the nature of objectivity and human motivation. I remember John Macmurray's definition of objectivity being to act in terms of the thing or person one is considering. For example to act according to what someone needs, not in terms of one's own desires. An objective but tired parent will get out of bed at 3am to feed a crying baby even though every nerve and fibre wants to return to sleep. I also remember Macmurray pointing out in the light of Freud's discoveries about the unconscious, how impossible it is to know one's own motives. Aside from the simple fact that everything we do and think is the result of a whole spectrum of motivations, Macmurray pointed out that the motive(s) we are aware at any time are only the surface and almost certainly will not be the primary motivations. And I remember Macmurray's conclusion that to be a person is to be aware that every positive motivation contains within it it's own negative.
Hence the interesting House episode where we are never sure what House's motive is for seeking the biopsy. And in the end even House is not sure. But he still acts objectively. (I used to wonder why it is so hard to depict good people in drama but there obviously is no such thing as a 'good person', only people with more or less positive motivations. I'm sure there is some would-be PhD mapping out his/her thesis on 'The Christ-image in House M.D.' or whatever.)
What also triggered these thoughts was that yesterday afternoon I was walking home and a young couple passed by, hand in hand. How lovely! I thought. Then I overheard their conversation and realised both were mentally retarded or delayed learners or subnormal intelligence or whatever euphemism or politically correct term is used these days. And I then thought how difficult their lives together would be simply because of lack of understanding of how the world functions and their part in it. How would they/did they discover sex? Would anyone tell them or would they watch some awful X-rated video and get totally misled about what it's all about (speaking from experience here folks!). How would they manage a household budget?
Then I got to thinking, reminding myself that people do not need high intelligence to live well if their motivations are life seeking, not destructive. And how do people acquire life seeking motivations? The same way we acquire logical thoughts: we learn to do it. But we live in a society that is only just starting to discover that life affirming emotions are learnable and desirable. We actually live in an emotionally retarded society, intellectual giants but emotional retards.
And how do we learn life affirming emotions/motivations? Well to be honest I'm not sure. ('Emotional retards' includes me.) I do know that learning to trust one's own feelings is absolutely critical (just as being able to trust one's own thoughts is necessary for mature thinking). I also know that educating the senses is important. Seeking new experiences, discovering new tastes, hearing new sounds, seeing new colours and shapes. And so is feeling new feelings, meeting new people, loving intensely, crying in sadness and crying for joy, trusting even though frightened.
The aim of such education is to become aligned with one's life-affirming motivations and to learn to moderate one's destructive motivations. If one learns to habitually act affirmatively then we don't need to spend as much brain power trying to think our way out of dangerous, awkward, messy, unhappy situations and get on with enjoying the wonders of life on this beautiful planet. And we can still love life even if we don't think as fast or as clearly as we used to. Ultimately we can learn to feel objectively just as well as we can think objectively.
My conclusion though seems as wimpy as a wedding sermon. It just becomes more and more obvious to me that love is the only life-affirming motivation worth the effort of learning and teaching. All our other motivations are in the end self-seeking, albeit dressed up in the nicest terms. Only love acts in the interests of that which is not ourselves. Only love is truly objective.
Wednesday, July 2, 2008
Am I missing something about Forth?
As part of my "educate myself about FPGAs" curriculum, I've noticed Forth turning up in a lot of Google hits. Forth has always been on my long-standing list of languages I wanted to learn. I remember spending my last bit of hard-earned cash in the early 70s to buy an HP-35 programmable calculator. It got me through my final Electrical Circuit Theory exam so was worth the hundreds of dollars it cost me. It had just arrived here in Oz and the examiners didn't have time to change the rules about pocket-size programmable calculators (they didn't exist before the HP-35).
The HP-35 was a Reverse-Polish stack machine. I loved it. Stack machines seemed so obvious I couldn't understand why they never took off.
So when Forth came out I was intrigued to try it but never found a way to do so. There was no Internet then so one couldn't just download a copy and try it out. I saw Forth mentioned in lots of places by people I respected. There was even a microcontroller project (Elektor again?) with Forth being the built-in interpreter rather than BASIC.
So I downloaded gForth and worked my way through the included tutorial. OK, I can print "Hello world" and add some numbers. I also started reading Thinking Forth.
But what makes Forth so interesting to so many obviously intelligent people? Found a 1-hour movie where a skilled Forth developer writes some code. It left me quite cold. It seemed to take ages to write the simplest things. And in the end it looked so much like a recursive decent parser I kept asking myself why didn't he just use one to begin with. OK so that wasn't the point. He was showing people how he thinks in Forth and he succeeds really well in that and deserves praise for that.
But I couldn't see any advantage in using Forth for that particular task and it actually seemed really slow and tedious to use Forth compared to, say, Perl and RecDescent. Part of my task as a Perl programmer when I am about to write new code is to check CPAN for modules which already do what I need. "The best programmers don't" as they say. So there's no doubt a different mind-set between Forth programmers who appear to want to write everything themselves "because it's so easy" and say, Perl programmers, who tend to just re-use existing code from CPAN and rarely write code themselves at all.
Something to ponder a bit further.
The HP-35 was a Reverse-Polish stack machine. I loved it. Stack machines seemed so obvious I couldn't understand why they never took off.
So when Forth came out I was intrigued to try it but never found a way to do so. There was no Internet then so one couldn't just download a copy and try it out. I saw Forth mentioned in lots of places by people I respected. There was even a microcontroller project (Elektor again?) with Forth being the built-in interpreter rather than BASIC.
So I downloaded gForth and worked my way through the included tutorial. OK, I can print "Hello world" and add some numbers. I also started reading Thinking Forth.
But what makes Forth so interesting to so many obviously intelligent people? Found a 1-hour movie where a skilled Forth developer writes some code. It left me quite cold. It seemed to take ages to write the simplest things. And in the end it looked so much like a recursive decent parser I kept asking myself why didn't he just use one to begin with. OK so that wasn't the point. He was showing people how he thinks in Forth and he succeeds really well in that and deserves praise for that.
But I couldn't see any advantage in using Forth for that particular task and it actually seemed really slow and tedious to use Forth compared to, say, Perl and RecDescent. Part of my task as a Perl programmer when I am about to write new code is to check CPAN for modules which already do what I need. "The best programmers don't" as they say. So there's no doubt a different mind-set between Forth programmers who appear to want to write everything themselves "because it's so easy" and say, Perl programmers, who tend to just re-use existing code from CPAN and rarely write code themselves at all.
Something to ponder a bit further.
Doing what I like
I occasionally browse through Elektor magazine. I've always been interested in gadgets especially the electronic ones and although I haven't earned a dollar building circuitry for a long time now, I've tried to keep up with what's been happening in electronic design. In the late 70s I wrote a BASIC program to convert circuit diagrams into wirewrap instructions and although I sold a copy to a small electronics firm I never pursued it as a marketable product (fool me!). I was never willing to spend the ten of thousands of dollars needed to buy an auto wirewrap machine and my vision of what I wanted to do never got to the "make a living" stage. So most of the time I was content to manually type in the circuit diagram to my program and let it calculate the length and order of the wires and then I could manually wrap my little circuits and get on with the fun of testing and debugging them.
I've referred in another post to Louis Savain's Universal Behaviour Machine. He's been getting heaps of flak in his comments posts, not the least because he doesn't seem willing/able to move beyond rhetoric about why a UBM (parallel processing) is a better paradigm for computing than a Universal Turing Machine (serial processing). One of the comments caught my attention. It suggested that Savain's UBM is "nothing more" (I love that phrase, it immediately alerts me that there is something to look at) than VHDL. "What's VDHL?" says I. Quick Google throws up a wealth of info and links including a series of articles in Elektor on FPGAs which I had glossed over. FPGAs were always attractive but the devel kits were typically thousands of dollars and not for doodlers like me. But then I saw an ad for a really cheap evaluation kit. For $39 I don't care if I blow it up, it's worth trying out.
So the web of ideas goes something like: no UBM yet -> make one -> how? -> modify an existing micro-core -> how? -> learn how to build/install/modify a micro-core in an FPGA -> how? -> buy a cheap eval kit -> where? -> aha! Avnet just released one -> order it -> learn about VHDL -> how? -> read on-line stuff -> note that some people are using Forth to program FPGAs -> how? -> learn Forth -> install a Forth micro-core on FPGA and try it out... and so on and so on.
But the best news for me is that I can use all those years of building logic systems once again. I already know about sync pulses and NOR/NAND logic and multiplexed buses etc. etc. It's quietly gotten a whole lot easier and cheaper to implement this stuff. My last attempt was an ASIC in the 80s, really expensive to design, test and make.
And it's something I like doing.
I've referred in another post to Louis Savain's Universal Behaviour Machine. He's been getting heaps of flak in his comments posts, not the least because he doesn't seem willing/able to move beyond rhetoric about why a UBM (parallel processing) is a better paradigm for computing than a Universal Turing Machine (serial processing). One of the comments caught my attention. It suggested that Savain's UBM is "nothing more" (I love that phrase, it immediately alerts me that there is something to look at) than VHDL. "What's VDHL?" says I. Quick Google throws up a wealth of info and links including a series of articles in Elektor on FPGAs which I had glossed over. FPGAs were always attractive but the devel kits were typically thousands of dollars and not for doodlers like me. But then I saw an ad for a really cheap evaluation kit. For $39 I don't care if I blow it up, it's worth trying out.
So the web of ideas goes something like: no UBM yet -> make one -> how? -> modify an existing micro-core -> how? -> learn how to build/install/modify a micro-core in an FPGA -> how? -> buy a cheap eval kit -> where? -> aha! Avnet just released one -> order it -> learn about VHDL -> how? -> read on-line stuff -> note that some people are using Forth to program FPGAs -> how? -> learn Forth -> install a Forth micro-core on FPGA and try it out... and so on and so on.
But the best news for me is that I can use all those years of building logic systems once again. I already know about sync pulses and NOR/NAND logic and multiplexed buses etc. etc. It's quietly gotten a whole lot easier and cheaper to implement this stuff. My last attempt was an ASIC in the 80s, really expensive to design, test and make.
And it's something I like doing.
A replacement for Make
Bzr and Hg interesting but client wants Perforce so am moving client's repository from Clearcase to Perforce. Code base (mostly) written in C++ to run on various platforms including **nx and Win.
I'm taking this opportunity to see if build system could be improved.
First requirement is to replace Clearmake. Looked very closely at SCons and was about to make (pun!) it the build tool for new repository when I discovered an article about Makepp (awful name, sounds like a pre-schooler discussing urination), i.e. Make++ => MakePlusPlus => Makepp. My one major misgiving about SCons is that it is written in Python and although I like Python I don't have the years of experience in Python that I have in Perl. Makepp is written in Perl!. SCons even uses (a limited selection of) Python commands as its scripting language. Makepp OTOH uses GNU Make syntax for most of its scripting language but with the ability to insert Perl code when needed. Not sure if Make syntax is of much benefit to me. I haven't used anything but the simplest Make scripts for years. That's what MakeMaker.pm is for! But, like SCons, Makepp has some pretty intelligent default behaviour. It works out what language the source is in, looks for any required include files, knows the useful options for a host of compilers etc. etc. And, doesn't suffer from Make's recursion problem.
Makepp, again like SCons, has another very useful feature: the ability to correctly track intermediate files. One of the urgent problems, to me at least, with our existing build system is that it does a "clean" build every time. Nothing is kept from previous builds. I suspect this was not intended initially but is a consequence of how Clearmake/Make are being used. No wonder faulty branches are being checked in. I wouldn't wait 5 hours to confirm a build either if I were a developer. I'd much rather leave it to the overnight run and clean up the mess in the morning. So, hopefully, with quicker builds there will be less faulty code checked in.
Anyway, from my initial investigations, it looks like Makepp is the way to go.
I'm taking this opportunity to see if build system could be improved.
First requirement is to replace Clearmake. Looked very closely at SCons and was about to make (pun!) it the build tool for new repository when I discovered an article about Makepp (awful name, sounds like a pre-schooler discussing urination), i.e. Make++ => MakePlusPlus => Makepp. My one major misgiving about SCons is that it is written in Python and although I like Python I don't have the years of experience in Python that I have in Perl. Makepp is written in Perl!. SCons even uses (a limited selection of) Python commands as its scripting language. Makepp OTOH uses GNU Make syntax for most of its scripting language but with the ability to insert Perl code when needed. Not sure if Make syntax is of much benefit to me. I haven't used anything but the simplest Make scripts for years. That's what MakeMaker.pm is for! But, like SCons, Makepp has some pretty intelligent default behaviour. It works out what language the source is in, looks for any required include files, knows the useful options for a host of compilers etc. etc. And, doesn't suffer from Make's recursion problem.
Makepp, again like SCons, has another very useful feature: the ability to correctly track intermediate files. One of the urgent problems, to me at least, with our existing build system is that it does a "clean" build every time. Nothing is kept from previous builds. I suspect this was not intended initially but is a consequence of how Clearmake/Make are being used. No wonder faulty branches are being checked in. I wouldn't wait 5 hours to confirm a build either if I were a developer. I'd much rather leave it to the overnight run and clean up the mess in the morning. So, hopefully, with quicker builds there will be less faulty code checked in.
Anyway, from my initial investigations, it looks like Makepp is the way to go.
Subscribe to:
Posts (Atom)