Today is the anniversary of the end of fighting during the First World War, proverbially at the eleventh hour of the eleventh day of the eleventh month; so let us remember that the price for folly and arrogance in the state may be rivers of blood, paid out too often by the best and brightest. END
As the Third Christian Millennium dawns, the Caribbean is at kairos: the nexus of opportunity and risk. In light of the Christocentric fulness theme of Ephesians 4:9 - 24, perspectives and counsel will be offered to support reformation, transformation and blessing towards a truly sustainable future under God.
Friday, November 11, 2011
Thursday, November 10, 2011
Capacity Focus, 16: Java Hello World -- first steps towards Computer Programming for all
NB 1: A draft first unit for the course is presented here.
NB2: On the Java hacker attack and issues on using Java
in education in that light, cf. the onward discussion here.
NB3: This thread of thought is picked back up here: 1, 2, 3
NB2: On the Java hacker attack and issues on using Java
in education in that light, cf. the onward discussion here.
NB3: This thread of thought is picked back up here: 1, 2, 3
(Here is a bird's eye view tutorial, if that's what you want,
& a "for everyone" online textbook can be found here)
& a "for everyone" online textbook can be found here)
One of my deep-set education-and-development concerns is that here in the Caribbean, we are by and large participating in the digital world as consumers [think, music players, cell and smart phone and lap tops etc.], rather than as economically viable producers.
This is worrying in light of the accelerating pace of digitalisation of the global economy.
For instance, consider how in 1997, when Mr Bill Gates bought US$ 150 million of Apple to keep it going (to avoid antitrust suits from the US Dept. of Justice), and Mr Steve Jobs came back to Apple as CEO, Apple had been on the ropes. Jobs initiated a turnaround strategy, and by this summer when (sadly) he passed away from cancer that he did not treat sufficiently seriously fast enough, Apple had become a diversified digital technology company worth US$ 381 billions market capitalisation. This put it second to Exxon, the energy giant.
Clicks and bits can be very valuable indeed.
And, in an era where a reasonable PC can be had for US$ 300 - 500, where Tablets are looking like (also cf here, here and here) heading for US$ 100 or even less within two years, and where broad-band Internet access is as close as a phone line or a public wireless access point, the crucial resource for that productivity is knowledgeable, skilled, creative people.
Which is precisely the gap we need to address in our region.
For instance, consider how in 1997, when Mr Bill Gates bought US$ 150 million of Apple to keep it going (to avoid antitrust suits from the US Dept. of Justice), and Mr Steve Jobs came back to Apple as CEO, Apple had been on the ropes. Jobs initiated a turnaround strategy, and by this summer when (sadly) he passed away from cancer that he did not treat sufficiently seriously fast enough, Apple had become a diversified digital technology company worth US$ 381 billions market capitalisation. This put it second to Exxon, the energy giant.
Clicks and bits can be very valuable indeed.
And, in an era where a reasonable PC can be had for US$ 300 - 500, where Tablets are looking like (also cf here, here and here) heading for US$ 100 or even less within two years, and where broad-band Internet access is as close as a phone line or a public wireless access point, the crucial resource for that productivity is knowledgeable, skilled, creative people.
Which is precisely the gap we need to address in our region.
![]() | |
The Java SDK Logo (fair use) |
The target is to build a "first exposure" basic computer programming course for the computer literate that would introduce programming using a pivotal language used for all sorts of purposes, from cell phones to web content to creating office productivity applications [e.g. Open Office] and multimedia, and onwards to interfacing and control.
I note that the Wikipedia summary as just linked says of Java:
Java is a programming language originally developed by James Gosling at Sun Microsystems (now part of Oracle Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform . . . Java applications are typically compiled to bytecode (class file) that can run on any Java Virtual Machine (JVM) regardless of computer architecture. Java is a general-purpose, concurrent, class-based, object-oriented language that is specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere." Java is currently one of the most popular programming languages in use, particularly for client-server web applications.
What this boils down to, is that a program written in Java is broken down into a standard format called bytecodes, which can be used locally or transferred across the Internet etc. When it is to be used, the bytecodes are then fed to a software model "virtual machine" that acts like a standard model computer on devices from a cell phone to a PC etc. The program is then implemented based on the virtual machine. Illustrating:
This approach requires that, for every device using Java, there is a virtual machine that maps bytecode instructions to the actual physical machine:
But, by introducing such a standard Java virtual machine, code can be written for that, and the gory, ticklish details of matching the JVM to the actual physical device can be left to the expert programmers who designed and built it. (Watch videos here and here if you want more on this sort of thing. [MIT Intro Computer Sci & Programming course sequence videos here.])
That is the secret of the Java motto/principle/ideal/vision, let's call it WORA: write once, run anywhere.
Some of this will doubtless sound like technical gobbledygook, but the bottomline is that Java is used from the cell phone and game console, to the web (where it is very strong), to the PC for office style productivity applications, and in industrial control. (So good is this virtual machine idea that there are now versions of several other computer languages (even a classic one like Pascal) that write bytecodes for execution on the JVM!)
In addition, in its various implementations -- aka platforms or editions -- Java comes with a rich library of useful modules that give a leg up for highly productive programing with a minimum of donkey-work labour. It is therefore a useful gateway language for developing capacity for digital age productivity.
Hence (balancing the usual concern that a real language is complex and an "educational" one may be simplistic and irrelevant to real world practice), we see Java's suitability on the whole for a "programming for all" course. Also, we need to present an introductory course in a way that is neither naive and simplistic nor overwhelming.
{I add on a later thought from Jun 12, 2012: >> let's broaden and deepen our view, especially given how we now know that there are open source Java Integrated Development Environment [IDE] apps for Android devices.
![]() |
(Credit: GMU) |
This approach requires that, for every device using Java, there is a virtual machine that maps bytecode instructions to the actual physical machine:
![]() |
A Java Virtual Machine is built to match the actual physical device, so bytecodes "see" a "standard" virtual computer; built in software. (The bytecodes are in fact the JVM's "machine language.") NB; For sophisticated control, there are real-time implementations of the JVM. |
That is the secret of the Java motto/principle/ideal/vision, let's call it WORA: write once, run anywhere.
Some of this will doubtless sound like technical gobbledygook, but the bottomline is that Java is used from the cell phone and game console, to the web (where it is very strong), to the PC for office style productivity applications, and in industrial control. (So good is this virtual machine idea that there are now versions of several other computer languages (even a classic one like Pascal) that write bytecodes for execution on the JVM!)
In addition, in its various implementations -- aka platforms or editions -- Java comes with a rich library of useful modules that give a leg up for highly productive programing with a minimum of donkey-work labour. It is therefore a useful gateway language for developing capacity for digital age productivity.
Hence (balancing the usual concern that a real language is complex and an "educational" one may be simplistic and irrelevant to real world practice), we see Java's suitability on the whole for a "programming for all" course. Also, we need to present an introductory course in a way that is neither naive and simplistic nor overwhelming.
{I add on a later thought from Jun 12, 2012: >> let's broaden and deepen our view, especially given how we now know that there are open source Java Integrated Development Environment [IDE] apps for Android devices.
Before going further, I should note that Python must also be reckoned with.
![]() |
The Python Logo |
That is because of the clean design of
this scripting language, because it accommodates structured, object
oriented and functional programming approaches, and because of the
presence of powerful extensions for math and science, including
impressive virtual instruments. Python is probably competitive --
certainly on bang for buck -- with Matlab or MathCad etc. Python is a
highly favoured web programming language. It is not to be overlooked
that the open source software I have been tracking for animation and
non-linear editing, Blender, seems to be Python-based. Indeed, I learned
by the way that the local Volcano Observatory uses Python. Numpy, here, Scipy here. And, there is a surging wave of interest that pushes for Python as the first language for intro to programming.
I nearly said, why not just go for Python, then?
Then, it hit me: use both.
Java and Python are not competitors, they complement.
Especially because, given its clean code style, Python code looks a lot like the pseudocode that was popular twenty five or so years ago as the way to lay out structured programs in preference to the older flowcharts.
(I ask, am I the only one who preferred flowcharts and -- honest injun
-- used them in software design, because of their visual pattern and
relative simplicity? [The standard joke was that the code was written,
then you went back and drew up flowcharts as a documentation
requirement. I hope that is not happening with UML, etc.])
That way, we could exploit the advantages of each, and -- using the Pareto principle
of putting in the 20% of effort that gets 80% of results -- equip
students with enough to do something useful and "plug-in" extensions to
their knowledge base as needed to go on in the areas of interest they
have. Then also, we can exploit educational visual programming
environments like Greenfoot
and educational IDEs like BlueJ or Dr Java, to get reasonably
productive fairly quickly. And hovering out there is the Apps Inventor
for Android developed by Google then passed over to MIT Media Lab. (Cf a
first look, here.) >>
Where it makes sense to also take a Hello World look at HTML (with a few other features), as a good first level markup language (and perhaps as the first Hello World example for the course):
Of course, Java would take pride of place. Here is a "Hello World" for Java:
Of course, dissecting what is in it is a step or three beyond keying it in and running it! But, Hello World is a classic first example that allows us to then see, step by step how such a program works, and then move on to more complex and useful cases.
Since we are on the Hello World comparison game, let's look at a Python 2 example (cf. vid here):
Yup, once the internal writing package IDLE (or just Python) is open, that is all it takes. And, of course the line looks a lot like what pseudocode would say. Here is a useful 1 hour intro that is oriented towards the computer graphics industry, one of the places we need to go for digital productivity. But also, in another direction, we have some powerful open source extensions for numerical and scientific computing -- try: NumPy and SciPy -- which are what sealed the deal for me. Python is also the encouraged language for the Raspberry Pi, though of course that low cost educational computing platform can also be set up to run Java. (Lect course here. Wiki intro here, with links on key extensions.)
Of course, there is quite a debate over the complexity of Java and the suitability of a Hello World as a first program. [NB, cf. here with here and here for many examples.]
To this, my first point is that -- as we have just seen -- such a traditional programming exercise gives us a fair idea of the flavour of different languages, allowing us to understand what they are like and where they may go. It also allows us to learn how to set up a bit of code and get it to run on a computer, a skill-building experience that, though basic, is not to be despised. Then, as the linked discussions suggest, we can go for elaborations.
The original Hello World can first be modified as an exercise to show the classic programming structures, sequence, branching, decision nodes, iterative do while/until loops; even, cases -- "switch" in Java. (Cf. nuts and bolts summary here.) Also, of course, to bring out what an algorithm is, how data are organised in arrays, strings and other structures, how coding in a language works with a computer to execute a program, perhaps even some explanation of levels of language from machine code to assembly to high level languages and the different approaches, issues and concerns that have led to the importance of markup, database query and object oriented languages. Certainly, understanding context is a motivation for making effort towards a desirable goal, and gives a framework story-line that aids in recall and understanding.
[[ U/D, April 16, 2013: For instance, consider the following extension of the "Hello, world!" first case study, designed for manual insertion of the number of gallons of fuel and of tank capacity in litres:
Then, to introduce the objects idea more directly, a more elaborate example can be given that begins to more specifically display the key facets of object oriented programming. When it comes to the "magic words" involved with the main and the System.out, it is probably best to first give an admittedly simplistic explanation keyed to the level of those doing the course that will then be revisited and elaborated as apart of the spiral structure of an effective curriculum.
So, from Hello World examples, participants will have learned about different languages, how to use a language to compose and run programs on a computer, and will have in hand a framework for the further focus on the three gateway languages, HTML, Java and Python. BTW, along the way, Java Applets embedded in HTML pages and also Python scripts similarly embedded would be a useful exercise. As will the use of the windowing feature of IDE's such as Eclipse or Netbeans. Since it is laid out as a multi-language IDE, Eclipse may be preferred.}
Where it makes sense to also take a Hello World look at HTML (with a few other features), as a good first level markup language (and perhaps as the first Hello World example for the course):
Of course, Java would take pride of place. Here is a "Hello World" for Java:
Of course, dissecting what is in it is a step or three beyond keying it in and running it! But, Hello World is a classic first example that allows us to then see, step by step how such a program works, and then move on to more complex and useful cases.
Since we are on the Hello World comparison game, let's look at a Python 2 example (cf. vid here):
print "Hello, World!"
Yup, once the internal writing package IDLE (or just Python) is open, that is all it takes. And, of course the line looks a lot like what pseudocode would say. Here is a useful 1 hour intro that is oriented towards the computer graphics industry, one of the places we need to go for digital productivity. But also, in another direction, we have some powerful open source extensions for numerical and scientific computing -- try: NumPy and SciPy -- which are what sealed the deal for me. Python is also the encouraged language for the Raspberry Pi, though of course that low cost educational computing platform can also be set up to run Java. (Lect course here. Wiki intro here, with links on key extensions.)
Of course, there is quite a debate over the complexity of Java and the suitability of a Hello World as a first program. [NB, cf. here with here and here for many examples.]
To this, my first point is that -- as we have just seen -- such a traditional programming exercise gives us a fair idea of the flavour of different languages, allowing us to understand what they are like and where they may go. It also allows us to learn how to set up a bit of code and get it to run on a computer, a skill-building experience that, though basic, is not to be despised. Then, as the linked discussions suggest, we can go for elaborations.
The original Hello World can first be modified as an exercise to show the classic programming structures, sequence, branching, decision nodes, iterative do while/until loops; even, cases -- "switch" in Java. (Cf. nuts and bolts summary here.) Also, of course, to bring out what an algorithm is, how data are organised in arrays, strings and other structures, how coding in a language works with a computer to execute a program, perhaps even some explanation of levels of language from machine code to assembly to high level languages and the different approaches, issues and concerns that have led to the importance of markup, database query and object oriented languages. Certainly, understanding context is a motivation for making effort towards a desirable goal, and gives a framework story-line that aids in recall and understanding.
[[ U/D, April 16, 2013: For instance, consider the following extension of the "Hello, world!" first case study, designed for manual insertion of the number of gallons of fuel and of tank capacity in litres:
/*Our third educational program case will print "Hello, world!"This shows sequences and branching, with use of floating point variables and mathematical expressions. In the next steps, looping can be used to evaluate capacity in gallons automatically, and keyboard input could be used to set capacity in litres. Also, it would be "natural" to introduce an integer variable as a loop iteration counter. Thus, the three main structures of programming would be introduced.]]
* to the console on the screen then will demonstrate decision
* making and branching with a unit conversion from g U.S. gallons
* to l litres, tested for capacity c of a given tank in litres.
* On testing, the program will print an appropriate message,
* using the if ____ else _____ structure. The next case will
* introduce the third main structure, looping, to automatically
* identify the capacity in gallons of a fuel tank of a given size,
* c litres. (Of course this is using a sledgehammer to crack a nut,
* and will win no awards for elegant, compact professional style;
* but it is useful for our current educational purposes.)
*/
public class HelloWorld3{
// The main method is the entry of the program
public static void main(String args []){
//declaring variables, type floating point
double g; // number of gallons, double precision floating point
double l; // number of litres, double
float c;// capacity in litres, single precision floating point
double e;// excess of fuel over capacity
//giving values
g = 11.8;// input quantity of gas in US gallons
c = 45;// input fuel tank capacity in litres
//declaring the relationships
l = g * 3.78541; // converting U.S. gallons to litres
e = l - c;// finding out if there is or is not an excess
// next we print the greeting message to the console output
System.out.println("Hello, world!");
//this is followed by the conversion and -- if required -- a warning
System.out.print(g + " U.S. gallons");
System.out.println(" is the same as " + l + " litres");
if(e > 0) System.out.println("WARNING: fuel tank capacity is exceeded!");
else System.out.println("Fuel tank capacity is not exceeded.");
}
}
Then, to introduce the objects idea more directly, a more elaborate example can be given that begins to more specifically display the key facets of object oriented programming. When it comes to the "magic words" involved with the main and the System.out, it is probably best to first give an admittedly simplistic explanation keyed to the level of those doing the course that will then be revisited and elaborated as apart of the spiral structure of an effective curriculum.
So, from Hello World examples, participants will have learned about different languages, how to use a language to compose and run programs on a computer, and will have in hand a framework for the further focus on the three gateway languages, HTML, Java and Python. BTW, along the way, Java Applets embedded in HTML pages and also Python scripts similarly embedded would be a useful exercise. As will the use of the windowing feature of IDE's such as Eclipse or Netbeans. Since it is laid out as a multi-language IDE, Eclipse may be preferred.}
Now, the idea of doing a Java based Hello World intro to programming for productivity course is obviously a work in very preliminary progress. (Indeed, over a year after putting up the original post, during which it has become the most popular post in this blog, I find myself adding, modding and hopefully improving. Hopefully, we are getting close to something that will fly and soar.)
But, perhaps, course-topics (seeking to be neither unrealistically simplistic or leaving gaps that come back to bite nor going off the deep end) could include:
COURSE TITLE
COURSE AIMS, OUTLINE/SYNOPSIS, SCOPE & SEQUENCE
UNIT B -- Background Context & Rationale: The PC and other ICCT (Information, Communication & Control Technology . . . adding to the usual "IT" or "ICT," industrial control and web-oriented multimedia) in context, common digital formats for information/data, cracking the box on a hardware and software information systems and networks, to motivate the need for programming for various purposes.
![]() |
Taking off the lid of a Tower PC: notice input, processing & storage & output hardware (Credit: Raj) |
UNIT F -- A "Hello World," functional foundation for Java- based Programming: Programming, hello world Java Programming, hello world Java (also cf. here for a step by step tutorial approach) and the wider framework of programming by select examples (Dr Java lightweight compiler? BlueJ? Greenfoot? Alice? [Cf. here on Alice and Java etc.] Cf e-textbook here and Moodle online course approach here, also the in a nutshell here.) Programs as coded algorithms (step by step recipes) and the data structures (& storage) they use, thus the basic I --> P --> O information processing model: initialisation --> input, processing (step by step) & storage, output:
![]() |
The IPO model, expanded to show units & interactions. Feedback from o/p to i/p may also be important [especially in control of systems & processes] (Credit: Wiki) |
UNIT 1 -- Building practical proficiency in basics of programming with Java etc: Programing through instructive simple but not simplistic cases in light of a useful conceptual scheme for the web and for multimedia -- the Applets approach, scripting (Python . . . ), that of Greenfoot and/or Alice with Java, using the objects, actors and actions on a stage. Servlets and client/server applications. Standalone application programs. Illustrative cases, e.g. here, here and here.
UNIT 2 -- What's the buzz about objects and object-oriented programming?: A bit of a quick survey on the objects vs structured vs spaghetti code philosophies (cf. vid here, also useful modelling/design tools).{Since this is a for reference post, it is worth an update June 9th, 2012; to clip Fraser McKay:
There are certainly some good reasons for using Java in teaching. Firstly, it is object-oriented. It is now generally held that objects-first teaching is better than objects-later. There is evidence that objects-first students are better able to cope with solving real problems that their peers [7]. Evidence also indicates that objects-early is not, intrinsically, more difficult to learn than procedural programming [14] [4].
__________[7] Johnson, R. and Moses, D. Objects-First Vs. Structures-First Approaches to OO Programming Education: an Empirical Study. Academy of Information and Management Sciences Journal, 11, 2 ( 2008), 95.
[4] Ehlert, A. and Schulte, C. Empirical comparison of objects-first and objects-later. In Proceedings of the fifth international workshop on Computing education research workshop. (August 10-11 2009). ACM, 2009, 15-26.
[14] Lister, R., Berglund, A., Clear, T., Bergin, J., Garvin-Doxas, K., Hanks, B., Hitchner, L., Luxton-Reilly, A., Sanders, K. and Schulte, C. Research perspectives on the objects-early debate. ACM SIGCSE Bulletin, 38, 4 ( 2006), 146-165.
[From: Developing a new teaching language
for use with the Greenfoot platform]}
. . . Ask: what about moving from a virtual to a real stage with say a robot? (This may require creation of a standardised robot emulation package, preferably a pick-place and/or paint or spot-weld unit.)
![]() | |
Evolving from IPO to Objects as a programing paradigm, via encapsulation of data/state/attributes and methods/functions that act on them in response to messages. Object oriented programs are networks of software objects interacting through messages, and so carrying out the stages of "use cases," i.e. the scenarios or situations that happen when users interact with the system to carry out their own tasks. (Useful 101 here) |
. . . {added 12:12:11} where we may then put together a tentative view of how object oriented software can be studied and even designed using the software window approach:
. . . where we may apply the MVC concept, Models, Viewer and Controller to guide clustering of objects to carry out the interface and interaction with the model of the real or virtual object on the stage. In terms explained by Steve Burbeck (originally for working with Smalltalk-80):
In the MVC paradigm the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of object, each specialized for its task. The view manages the graphical and/or textual output to the portion of the bitmapped display that is allocated to its application. The controller interprets the mouse and keyboard inputs from the user, commanding the model and/or the view to change as appropriate. Finally, the model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller). [Applications Programming in Smalltalk-80: How to use Model-View-Controller (1987 & 92)]
MVC process, where the controller
interacts with both the view
and the model. This allows granularity
and isolation of info & components
are loosely coupled, enhancing
maintainability (Source: Wikipedia)
. . .which brings up the complementary DCI paradigm. (Cf here, here, here.) That is, data-context-interaction, which can be adapted to our purposes. In effect we can go back to the stage metaphor above. In a play, actors come on-stage, and carry out roles that they have been prepared for (i.e. they have personalities, responsibilities and relationships), in scenes, within the context and flow of the overall play, which moves from a beginning through a process that reflects some perspective on reality, and leads up to a climax and conclusion. Let the actors now become objects with states specified by relatively stable (but modifiable) data. Next, bring the objects together in the context of a relevant scene (use-case) that is related to the need and understanding of the relevant user. Then, permit a scripted interaction, to move from the initial status to the desired end, which may lead on to other transactions with the user, etc. (It helps to think about say an automated teller machine transaction, or a manufacturing process with an industrial robot and a workpiece.) This brings up the idea of a scripted context object (and story-board!) that brings together role objects and gives a specified pattern of interaction, providing cohesiveness and a "home" for the overarching step by step process or algorithm -- "method" -- by which the user's desired procedure is carried out on the stage seen in the software window:
. . . so, we can consider the different ways in which a system can be used by different users (actors), which sets up the significance of the UML (= unified modelling language, cf. video tutorial) use-case diagram [which can work at different levels of details up to the very broad way to interact with a system], and associated storyboards for the flow of activities for each detailed use case:
![]() |
A system-level use-case diagram for a web based broadcast system, with use cases in ovals, packaged sets of cases in sytlised folders with tabs, the system being within a box that marks its boundary, and with users being represented as stick figures. [SOURCE: Visual Paradigm, which gives more details. Ambler's discussion here is is also helpful. The breakout to the system modelling perspective is helpful, cf here on SysML (explanation here, reference card here), a system modelling language linked to UML.] |
. . . which brings back an updated form of the old fashioned flowchart, through the state and/or activity diagrams, including as a way to lay out the algorithm that effects a method. In UML 2.x, activity diagrams are based on Petri Nets, allowing them to capture workflows and process logic, i.e algorithms [finite, step by step procedures that move from a start to an end state, and often solve a problem or carry out a composite task, nb the concept that programs code and organise algorithms to act on data in structures to effect desired solutions]:
![]() |
In this activity diagram for brainstorming, the start-point is a filled circle and the end point is a similar circle with a ring around it. Activities are in rounded rectangles, decision nodes are in the traditional diamonds, with alternatives in square brackets. Concurrent clusters of activities start (split) and end (join) at bars, with arrows showing the flow of the activities that lead to the end state. The overall block is joined in a labelled enclosure and sometimes the chart can be broken into "swim lanes" that show parallel chains of activities. (Source: Wiki, cf Ambler here and here.) |
. . . and where also how such role and context objects specifically collaborate on the stage to carry out a programming/ user/ business step by step task or process can then be illustrated using a UML sequence diagram, e.g.:
![]() |
A UML sequence diagram, with actor/operator and objects interacting to carry out a task, by interacting through messages. The use case diagram allows us to study typical scenarios for the required behaviour of user - system interactions, the sequence diagram helps us see how software objects work together to do this, and the class diagram shows how the classes of objects identified are structured together, thus allowing the software network of objects to be assembled in code as a program. (It is helpful to apply the Pareto 20/80 principle -- 20% of a program's capabilities/features covers 80% of real world cases and effects, so an effective approach is to focus the core program on the pivotal 20%, and then to put in customising plug-ins to cover the odd cases; allowing for flexibility and customisation. It is often wise to allow for third parties to develop plug-in widgets that extend the function of the core program, and to share them in an exchange. [Background on Pareto here.]) The deployment diagram shows how the network of objects is put together on the ground in the actual system to be built. Other diagrams are also useful. (UML is a subject to itself, cf overview here, "cheat sheet" here, and more on seq'ce diags here.) (credit: Sanchez; pardon fuzziness.) |
. . . where also, a system-level sequence diagram can be particularly useful in analysing, understanding and developing key interfaces between major units in the overall system in view, e.g.:
![]() |
A system level sequence diagram, showing the user interface. From this level of analysis across use cases and scenarios, the required cluster of units on the stage can be identified, and the projected software window interface. More detailed sequence diagrams would help identify the interactions between units, and onwards helps in creation of a cluster of relevant classes and objects, the classes being blueprints for objects. In praxis, reference will be made to the library of predefined classes in the programming language's Applications Programming Interface [API]. Also cf. detailed development here, starting with hand drawn examples and bringing out how system level interfaces, background services and methods can all be analysed and developed through the sequence diagram technique, leading to OO programming. |
. . . such gives a context for one of the key UML constructs, the class diagram (summary here, cf. also here, here) which displays an overview of blueprints for the software objects, showing their relationships (and by extending to a fourth sub-box, perhaps role responsibilities) and so the structure of the system under development:
![]() |
Classes displayed by relationships, showing in this simple example, derivation of sub-classes that extend a more generic class and also displaying many to one relationships. Each class -- a blueprint corresponding to the actual objects to be used -- shows name, state-defining variables giving attributes, and methods required for roles (which can be listed in a separate box, but it may be more effective to use CRC cards and/or ORM diagrams) [Source: Tutorialspoint. NB: OO Programming is an approach that centres on objects, and the class diagram shows abstraction and inheritance: a generic super class allows sub classes (and onward objects) to be created by inheriting the core structure, then extending it for particular specific uses. In extension, variables (so, state data) and/or methods may be added, and in some cases what was inherited can be over-ridden. Encapsulation means that data and methods are hidden to outside objects, there is only message-passing to an interface, allowing for granular modularity and reducing the tightness of coupling of modules. Polymorphism follows: by using generic messages, the particular object responds in a particular way to a given message based on its data and methods, e,g a request for colour may return green, blue or violet. ] |
UNIT 3 -- Ballistics simulation as a first case study: A case study: creating a simple simulation or game -- no shoot-em-ups, please (maybe, a robot emulator or a drip irrigation for a plant nursery?) As a first step, creating a windowing environment based projectile simulation, first the ideal ballistics case then the case with air resistance. Then, a look at what is required for more advanced and relevant simulations, games and controllers.
UNIT 4 -- A cluster of possible simulations/games: Developing a realistic program for a significant situation, as a case study. [Here is an old applet based robot simulation. This is a position-arm robot simulation. This is another [Javascript?], downloadable.] -- for a PC or a smart phone like device, accessed via web technologies. Here is the Garduino setup for a garden drip irrigation controller:
![]() |
A lab scale garden controller. (Credit: Luke Iseman.) |
UNIT 5 -- Introduction to & preview of real-world, real-time interfacing and control: using ports and addressing the responsiveness issue for control. Discrete state control vs control of dynamical systems (the leaky tank with level control in light of of inlet and outlet as an example; perhaps making reference to the float-ball control of water level in the tank of "our friend John" in the bathroom). The issues of control in real-time -- how much latency in response is acceptable [the 4 - 6 samples per rise time rule of thumb], how predictable is the processing time for control responses, how reliable are communications [the widely distributed SCADA case], the issue of collapse vs degradation of control if the real time constraint is missed: hard vs soft real-time systems. The need for direct access to hardware memory or input-output space to deal with sensor and actuator interfaces, memory mapped I/O vs I/O space vs direct memory access, interrupt handling and latency, threaded programs and concurrency so the possibility of loss of integrity of an otherwise valid algorithm, memory garbage collection issues and latency, etc. Hosting of modules in languages that more easily address such challenges vs real-time Java implementations. Industrial PLCs, field buses [e.g CAN] and safety challenges and regulatory requirements to be life safe, etc.
UNIT 6 -- Developing a case study: simple drip irrigation control for a garden/shade house plot; this being a discrete state controller tolerant of considerable latency. (Cf. Iseman.) Such might be supplemented with a level controller on a feed tank [to maintain steady pressure in the feed lines], perhaps in turn driven by an input line from a rain water cistern.
UNIT 7 -- A further possible case study: a simple robot arm (emulated?) with a preview of what a full control system would require.
UNIT 8 -- A third possible case study: a simple multimedia exercise (gaming? [cf. Python-based pyglet exercise here])
UNIT 9 --Setting up and carrying out "simple" Projects: Projects (research, coding, emulation, interfacing) and evaluation.
UNIT 10 -- Epilogue: Where to go from here.
You will notice that I am moving beyond IT and even ICT to "ICCT."
That's because I am building in a bridge to industrial type interfacing and control, as we need to cross that bridge to create a new order of industrial development in the Caribbean.
{Added, 12:12:01: And in terms of a physical facility, we could do some version of a multimedia seminar room similar to a prototype developed for a regional university unit, at the turn of the 2000's. The development of LCD screens and thin client networks makes this very do-able for a church hall or community centre computing facility or even a room at the district post office. Indeed, something probably could be done along these lines with a couple of 40 ft containers put side to side with the inner walls taken out and a roof put on, with some sheet rock or thin ply panelling:
if you want to look at a real world case from a major university, here is a similar lab from (IIRC) Duke University:
In short, we could do something like this almost anywhere where we have broadband net access, to give the Web interface. And, I am sure something can be adapted for cases where that is absent, by creating a local network and information reference server, perhaps even with a local digital library.}
Is this or something like it doable?
I think so.
That's because I am building in a bridge to industrial type interfacing and control, as we need to cross that bridge to create a new order of industrial development in the Caribbean.
{Added, 12:12:01: And in terms of a physical facility, we could do some version of a multimedia seminar room similar to a prototype developed for a regional university unit, at the turn of the 2000's. The development of LCD screens and thin client networks makes this very do-able for a church hall or community centre computing facility or even a room at the district post office. Indeed, something probably could be done along these lines with a couple of 40 ft containers put side to side with the inner walls taken out and a roof put on, with some sheet rock or thin ply panelling:
if you want to look at a real world case from a major university, here is a similar lab from (IIRC) Duke University:
In short, we could do something like this almost anywhere where we have broadband net access, to give the Web interface. And, I am sure something can be adapted for cases where that is absent, by creating a local network and information reference server, perhaps even with a local digital library.}
Is this or something like it doable?
I think so.
Why not let's watch a Hello World video, then think on it together:
(See how a video can make a difference to how a course could be implemented? See the advantage of web-based, multimedia and interaction oriented courses? I also strongly believe that we need to bring knowledgeable facilitators and students together on the ground in the local community, hence the idea of a network of micro-campus centres joined in a web based network, and organised on a networked college basis. In particular, I think every church or community centre with a phone line and a room of adequate size could become a microcampus centre. If we do this, we could instantly have the largest college network across the Caribbean.)
{U/D 12:12:01: Where, once something like a programming and multimedia productivity certificate leads to creation of such a network, other components of an envisioned Associate Degree programme can be added, probably with an emphasis on part-time delivery. A certificate for agriculture for all integrated with something like the european-style traditional gardening allotment schemes would be helpful, too. Perhaps, something like the Schools of Hope, Haiti idea could help. Where also, something like a graduate certificate --> diploma --> Masters package could be used to create a piggyback Masters in Education. (This would serve to provide capacity strengthening for the proposed Associate, and could also provide a much broader in service upgrade track for teachers.) A similar approach could also be used to facilitate a franchised Masters in Business Education or Public Administration or the like also. Integration with a regional network of campus based programmes would then allow a much wider capacity to access education starting in communities where one is living and working. That is, the interest in digital technology can be a flagship and gateway for a more complete discipleship, education and capacity development based, strategic community transformation endeavour.}
So, what do we think about this sort of idea? Any volunteers to build Java case studies of programmable leaky tank, robot arm and drip irrigation garden plot emulators? Could Greenfoot or Alice do this? END
{U/D 12:12:01: Where, once something like a programming and multimedia productivity certificate leads to creation of such a network, other components of an envisioned Associate Degree programme can be added, probably with an emphasis on part-time delivery. A certificate for agriculture for all integrated with something like the european-style traditional gardening allotment schemes would be helpful, too. Perhaps, something like the Schools of Hope, Haiti idea could help. Where also, something like a graduate certificate --> diploma --> Masters package could be used to create a piggyback Masters in Education. (This would serve to provide capacity strengthening for the proposed Associate, and could also provide a much broader in service upgrade track for teachers.) A similar approach could also be used to facilitate a franchised Masters in Business Education or Public Administration or the like also. Integration with a regional network of campus based programmes would then allow a much wider capacity to access education starting in communities where one is living and working. That is, the interest in digital technology can be a flagship and gateway for a more complete discipleship, education and capacity development based, strategic community transformation endeavour.}
So, what do we think about this sort of idea? Any volunteers to build Java case studies of programmable leaky tank, robot arm and drip irrigation garden plot emulators? Could Greenfoot or Alice do this? END
Matt 24 Watch, 142c: Professor Craig interviewed after Oxford by Dr Frank Turek -- let's roll the tape
Professor Craig, having returned from the Oxford non-debate, is interviewed by Dr Frank Turek:
Well worth the 30 minutes to watch. END
Tuesday, November 08, 2011
Matt 24 Watch, 142b: The "is God a Delusion?" no-show empty chair lecture and panel at Oxford Oct25, 2011 -- let's roll the tape
The No-show lecture and panel response at Oxford's Sheldonian Theatre:
As the blurb records:
http://reasonablefaith.org - Sheldonian Theatre, Oxford (October 25, 2011) Richard Dawkins was invited by the Oxford student Christian Union to defend his book The God Delusion in public debate with William Lane Craig. The invitation remained open until the last minute. However, Dawkins refused the challenge and his chair remained empty. Craig then gave a lecture to a capacity audience on the weaknesses of the central arguments of the book and responded to a panel of academics. The event, which was chaired by atheist Prof. Peter Millican, was part of The Reasonable Faith Tour 2011 sponsored by UCCF, Damaris & Premier Christian Radio.
For more information please visit:
http://www.premierradio.org.uk/unbelievable
Sit back, relax and listen for the next two hours or so. And, notice, professor Craig is introduced by an Oxford professor of philosophy, who was his opposite in a debate only a few days previous, at Birmingham where Craig did his Phil Ph.D under John Hick. END
_______________
PS: If you are concerned about professor Dawkins' irresponsible and reckless false accusation of Christian support for genocide [BTW, did it ever dawn on this gentleman that the texts in question are in the specifically Jewish portion of the scriptures, as in . . . this blood libel has antisemitic overtones too], cf here, and the immediately previous posts in this blog series here and here.
Thursday, November 03, 2011
Matt 24 Watch, 142a: Professor Dawkins' manipulation of moral sensibilites -- let's roll the tape
For record (and in reply to ever so much turnabout rhetoric), let's roll the tape on the cynical manipulation by professor Richard Dawkins, as was discussed here at KF a few days ago:
If you take time to watch [11m:55s], you will see that professor Dawkins is evidently on record that he cannot find a cogent moral objection to infanticide, and that he similarly cannot find a cogent moral objection to Hitler's genocide. (This is unsurprising given the longstanding well-known point that unless a worldview has in it an IS that can ground OUGHT, it has no objective grounds for morality, so morality reduces to might and manipulation make "right." [Cf. more detailed discussions here and here. *Cf Appendix below.])
So, the projected moral outrage at Dr Craig, seems best explained as manipulative, as a way to throw up a poisonous and polarising rhetorical cloud to duck having to explain why he seems to be unwilling to stand up publicly to an informed and competent Christian Philosopher and Theologian to examine his claims in his recent book The God Delusion. (In case this is needed, this clip documents Dr Craig's actual views on morality, including obviously genocide etc.)
Perhaps, this second clip, where Dr Craig examines the central argument in this book, gives us a clue as to why:
The takeaway concern we should have, is that unfortunately, all too many out there are all too willing to believe the blood libel that there are Bible believing Christian thinkers and leaders who support genocide -- a taint that once attached to any widely respected Bible believing Christian leader inevitably will be projected unto all of us as a spreading cloud of suspicion. (For, such is the nature of scandal.)
That is a sadly telling sign of our times.
And, it is no storm in a teacup.
And, it is no storm in a teacup.
Unfortunately, in today's climate, we Christians plainly have to address and soundly answer ill-founded but dangerously popular unbridled hostility and slander. END
__________
APPENDIX: Will Hawthorne's analysis of the inherent, inescapable amorality of evolutionary materialism:
__________
APPENDIX: Will Hawthorne's analysis of the inherent, inescapable amorality of evolutionary materialism:
Assume (per impossibile) that atheistic naturalism [[= evolutionary materialism] is true. Assume, furthermore, that one can't infer an 'ought' from an 'is' [[the 'is' being in this context physicalist: matter-energy, space- time, chance and mechanical forces]. (Richard Dawkins and many other atheists should grant both of these assumptions.)
Given our second assumption, there is no description of anything in the natural world from which we can infer an 'ought'. And given our first assumption, there is nothing that exists over and above the natural world; the natural world is all that there is. It follows logically that, for any action you care to pick, there's no description of anything in the natural world from which we can infer that one ought to refrain from performing that action.
Add a further uncontroversial assumption: an action is permissible if and only if it's not the case that one ought to refrain from performing that action . . . [[We see] therefore, for any action you care to pick, it's permissible to perform that action. If you'd like, you can take this as the meat behind the slogan 'if atheism is true, all things are permitted'.
For example if atheism is true, every action Hitler performed was permissible. Many atheists don't like this consequence of their worldview. But they cannot escape it and insist that they are being logical at the same time.
Now, we all know that at least some actions are really not permissible (for example, racist actions). Since the conclusion of the argument denies this, there must be a problem somewhere in the argument. Could the argument be invalid? No. The argument has not violated a single rule of logic and all inferences were made explicit.
Thus we are forced to deny the truth of one of the assumptions we started out with. That means we either deny atheistic naturalism or (the more intuitively appealing) principle that one can't infer 'ought' from [[a material] 'is'. [[Emphases and paragraphing added.]In short, evolutionary materialism faces an often unacknowledged moral reduction to absurdity. Never mind its pretensions to be scientifically established "fact." (The just linked shows that instead it is an a priori imposition on science that -- before the facts are allowed to speak for themselves -- sets out to censor what Science can think and say on, especially, origins.)
Sunday, October 30, 2011
Matt 24 Watch, 142: Neighbourhood bullies . . . and the dangers of ill-informed (or outright cynical) gotcha rhetoric manipulating the public in democratic polities
CY, in an exchange at the UD blog, draws our attention to Bob Dylan's 1983 song, Neighbourhood Bully:
This biting commentary on ill-informed and/or cynically manipulated public opinion in our day, is sobering backdrop for addressing a wider cluster of issues.
It is worth pausing to note that not only has there been a report that Iran is within six months of nuke weapon production capacity if it wants to (as in does a flea-ridden dog want to scratch?), but there are serious questions as to whether it has got a few ex-Soviet tactical nukes by black-market means already. (I first heard whispers of that from Hal Lindsey in the mid 1990's; looks like he may well have had a point.)
That's why I read Mr Netanyahu's recent "better a bad press than a good eulogy" remark at the UN baked up by the pointed question he asked as to whether the world really wants to see nukes in the hands of Iran, as most likely a restatement of the point that sometimes, there is no avoiding a war, in such circumstances, it may only be postponed to the advantage of your enemies. As of course happened in the 1930's, when Europe's recoiling in horror from the slaughter of the 1914 - 18 war led to not acting in good time to avert an even worse war from 1939 - 1945. Hitler was not a man who could be placated, he could only be contained or stopped.
They failed to contain him, so they then had to stop him, at horrific cost, and with even more horrific possibilities lurking in the background.
Sadly, this lesson may be playing out again in our day, so we may need to do some rethinking about who the real bully in the neighbourhood is.
Sadly, this lesson may be playing out again in our day, so we may need to do some rethinking about who the real bully in the neighbourhood is.
Against that disturbing backdrop of the way that turnabout accusations can make us see the intended victim as the aggressor -- e.g. Churchill was dismissed in the 1930's as a war-mongering has-been when he was warning about the rising tide of Hitler -- I want to reflect on a recent brew-up on the Internet over Atheism advocate Richard Dawkins' recently announced reason for refusing to debate with Christian Philosopher-Theologian, William Lane Craig.
Namely, Dawkins -- falsely -- accuses Craig of supporting genocide, a word that drips with the implication: Nazi. (ADDED, Nov 3: In case this is needed, this clip documents Dr Craig's actual views on morality, including obviously genocide etc.)
Namely, Dawkins -- falsely -- accuses Craig of supporting genocide, a word that drips with the implication: Nazi. (ADDED, Nov 3: In case this is needed, this clip documents Dr Craig's actual views on morality, including obviously genocide etc.)
(NB:The particular matter is about a debate over the handling of the invasion of Canaan and some of the troubling issues it raises for Judaeo-Christian theists. Cf. my notes here.)
The utter cynicism and turnabout manipulation behind Dawkins' rhetoric can be seen from his 1995 Scientific American Article, "God's Utility Function" [pp. 80 - 85.]:
Nature is not cruel, only pitilessly indifferent. This lesson is one of the hardest for humans to learn. We cannot accept that things might be neither good nor evil, neither cruel nor kind, but simply callous: indifferent to all suffering, lacking all purpose.
We humans have purpose on the brain. We find it difficult to look at anything without wondering what it is "for," what the motive for it or the purpose behind it might be. The desire to see purpose everywhere is natural in an animal that lives surrounded by machines, works of art, tools and other designed artifacts - an animal whose waking thoughts are dominated by its own goals and aims . . . .
Somewhere between windscreen wipers and tin openers on the one hand, and rocks and the universe on the other, lie living creatures. Living bodies and their organs are objects that, unlike rocks, seem to have purpose written all over them . . . . The true process that has endowed wings, eyes, beaks, nesting instincts and everything else about life with the strong illusion of purposeful design is now well understood.
It is Darwinian natural selection . . . . The true utility function of life, that which is being maximized in the natural world, is DNA survival. But DNA is not floating free; it is locked up in living bodies, and it has to make the most of the levers of power at its disposal. Genetic sequences that find themselves in cheetah bodies maximize their survival by causing those bodies to kill gazelles. Sequences that find themselves in gazelle bodies increase their chance of survival by promohng opposite ends. But the same utility function-the survival of DNA-explains the "purpose" of both the cheetah [--> i.e. predator] and the gazelle [--> i.e. prey] . . . .
The total amount of suffering per year in the natural world is beyond all decent contemplation. During the minute that it takes me to compose this sentence, thousands of animals are being eaten alive, many others are running for their lives, whimpering with fear, others are being slowly devoured from within by rasping parasites, thousands of all kinds are dying of starvation, thirst and disease. It must be so. If there is ever a time of plenty, this very fact will automatically lead to an increase in population until the natural state of starvation and misery is restored.
In a universe of electrons and selfish genes, blind physical forces and genetic replication, some people are going to get hurt, other people are going to get lucky, and you won't find any rhyme or reason in it, nor any justice. The universe that we observe has precisely the properties we should expect if there is, at bottom, no design, no purpose, no evil and no good, nothing but pitiless indifference . . . . DNA neither cares nor knows. DNA just is. And we dance to its music.
[NB: This article raises the issue of the problem of evil, here emphasising the problem of natural evil; probably the strongest argument in the atheists' arsenal, but one that only works by implicitly assuming that good and evil, thus moral obligation, are real; while ducking the implication that the only valid worldview in a world in which OUGHT is real, is one that has a foundational IS that adequately grounds ought. And materialism -- scientific atheism today, has no such is. So, the objecting atheist actually has no grounds to stand on to make the argument; his argument, in the end is self-defeating, and so the proper response is to insist that such an atheist face that issue before proceeding further. (Cf here for a preliminary discussion of the problem of evil from a Christian perspective.)]
Given this additional perspective, we can now see that for Dawkins, appeal to moral sensibilities ends up being little more than a cynical means to persuade by manipulating emotions, for in his more frank and straightforward moments, he admits that, on his materialistic worldview, there is "no evil and no good."
And so, he acts as one who holds power to manipulate to advance his perceived interests: if your feelings can be so twisted by a false but persuasive accusation against one of those "ignorant, stupid, insane or wicked" backward, anti-science "fundamentalists," that you are repelled by the dominant idea of God we see in our civilisation, the Judaeo-Christian, Bible-based view, then that is pulling us away from fairy tales to get us to accept Science as the fount of practically all knowledge and truth. Which to him is as close to good and purpose as he gets.
"The end justifies the means," "might makes right," and "all is fair in love and [culture] war," etc.
If that is his real underlying view (and the evidence we can see points that way), then the willingness to smear, snip out of context and knowingly falsely accuse make a lot of saddening sense.
It is an effective means to a desired end, and one Dawkins expects to get away with in the major media.
Which, he knows, are in his corner.
No wonder, then, we see the amoral cynical heart-numbness that seemingly is unhesitating in smearing and slandering. For, Dawkins knows -- must know -- that neither Craig nor any other serious Christian thinker supports mass murder of a race; i.e. genocide.
But, if you think you can get away with the false accusation, and so get out of a tight spot . . .
The issue has stirred up somewhat of a storm of comment exchanges across the Internet, including at a leading Intelligent Design blog, Uncommon Descent. In one of the threads there that deal with the matter, I have felt it wise to comment as follows, in response to some rather heated exchanges.
I believe the matters raised are of sufficiently broad interest and relevance that I wish to now share them in their own right, here at the KF blog.
I pick up from an exchange of comments by CY and SA:
I believe the matters raised are of sufficiently broad interest and relevance that I wish to now share them in their own right, here at the KF blog.
I pick up from an exchange of comments by CY and SA:
___________________
>> . . . a major problem with Christian ethics on the ground, is that we tend to absolutise the turn the other cheek principle, taking it out of its proper context — do not be waspish in the face of insults and personal abuse, and turn it into a governmental mandate.
If you look carefully in the Gospels, you will see that Jesus has occasion to deal with the question of force in the teeth of determined evildoers.
For instance, that lurks under his dealings with soldiers including Centurions. He does not say, quit; he says, serve God. When he deals with the Herod family, as a prophet he is pretty direct in criticising the pattern of injustice. When challenged on taxes, he gives a classic: give Caesar what is his, and God what is his. The subtlety involved is what Paul discusses in Rom 13:1 – 10. Caesar is God’s servant to do us good by defending the civil peace of justice, holding the power of the sword in that cause and having taxing power in support of that mandate. Of course, as God’s servant, he is accountable under God for justice.
Also, elsewhere in scripture — Moshe’s “Let my people go” is classic — when a tipping point has been reached; i.e. when evil triggered by selfish abuse of the power of choice becomes an exceeding danger in the teeth of obvious consequences and ignored correction God will act on the behalf of an oppressed people. And a part of that can be expressed in popular uprising and actions of legitimate representatives.
This by the way is what across 2,000 years of Christian influence on our civilisation, was channelised into the peaceful means of the general election.
Then, when Jesus comes towards the end of his ministry, there is a crucial but puzzling incident. For, he says go buy a sword, and he is understood literally, there are two swords.
He says, that is enough.
Backdrop.
Then, we come to Gethsemane, and Peter pulls one of the swords and tries to start the revolution.
There is a palpable echo here of the situation in the Maccabees where at Modein, the pagan rulers have sent agents to make the village sacrifice pigs to idols. The revolution begins when the first Jew to turn traitor and blasphemer steps forward and the sword is pulled, cutting him down, with the officials who came to impose evil and apostasy by force. To abuse the power of the sword in the hands of government to protect the civil peace of justice. Wolves, in shepherd’s clothing.
The father and six of seven Hasmonean brothers perish in the struggle, in which the recurring theme is, that the Gentiles always break their treaties.
This is the background against which Peter tried to cut off the head of the servant next to him; he ducked, that’s why the ear was cut off instead.
Jesus’ reply was that those who live by the sword die by it. And he healed the servant.
Somehow, that did noting to defuse the situation, and seemingly, it was suspiciously missing in action in the trials that followed.
Somebody was suppressing highly relevant evidence that did not suit the kangaroo court’s agenda.
Jesus’ mission was NOT to launch a new Maccabean revolution.
Indeed, that is what comes out very explicitly in his trial: the authorities are reacting to a teacher of righteousness who is making them uncomfortable in injustice, hypocrisy and corruption [don't forget, he seems to have cleansed the temple twice, driving out the money changers at whip point] by treating him as if he were a rebel. Indeed, they end up manipulating the crowd — notice, the issue of the flip side of democracy, misrule influencing and influenced by manipulated, intimidatory mobs shouting out foolish slogans as popular will — to literally put him in the place of a notoriously murderous leader of rebellion and brigandage, Barabbas.
Notice, when he does speak before a judge willing to at least listen to the sound truth — he is silent before those who are just raging mobs dressed up in fancy robes and sitting in seats of government — he points out that he has not been leading rebellion, but publicly teaching the truth and calling men, including of course men in government, to repentance in light of the Kingdom of God in heaven. The ultimate kingdom foreshadowed by Daniel that shall grow as a mountain filling the whole earth, shattering the proud and arrogantly wicked kingdoms of unjust man in rebellion against his maker.
A kingdom that comes peaceably by the truth in love, in the teeth of fire and sword.
So, he is cutting clean across those who would lead a revolution against Rome: Rome has not yet filled the cup of its iniquity, but ISRAEL has, now culminating in scheming against Messiah.
An Israel that will not heed the sign of Jonah, nor the counsel of God by the example of Assyria: repentance even on the brink of prophesied national destructive judgement by disaster may avert it. For, God is merciful.
Something that Dawkins et al conspicuously omit in their overheated incendiary rhetoric.
Against that backdrop, those who tried to rise up against Rome, three times [once in the diaspora], would fail, at horrible cost to the nation over the next 100 years.
There are many lessons in that for our time and our civilisation, one that is rapidly filling up the cup of its iniquities.
In that context, I think we need to take serious and sobering stock of what it is for leaders of government to confront radical, out of control evil, and the dilemmas they often face of choosing the horrible in the face of the worse than merely horrible. And, we must tear our hearts through that reflection, until we have been opened up to be wounded, so that our hearts have lurched in the face of such terrifying dilemmas.
So, let us stand by the side of the road [to Verdun] with Petain, watching the young men he is forced to send to their doom because foolish policies maintained for years in the teeth of his own advice [advice that seems to have retarded his career . . . ] have brought the nation to that point where the forts they needed were not well guarded, had indeed been stripped of guns, and the officer corps was not properly prepared to handle the challenge of Germany; they had been trained to think in terms of fast-moving infantry attacks and cavalry tactics, in the face of over a decade of evidence from South Africa and from Eastern Russia on how much the world had changed thanks to the rapid fire long range rifle and the machine gun. Not to mention, the heavy mobile, rapid firing guns that were needed were missing — they were only then being hastily designed or improvised.
Stand by Petain as he sees the ashen faced, staggering few survivors coming back down the same road a matter of days later.
Knowing that this horrendous rent in blood was what was holding the pivot of the line. (The very reason why Verdun — guard city of a major invasion route ever since the days of Gaul — had in the 1880′s been re-fortified in the modern way [a ring of more or less underground forts at enough distance to keep artillery out of range of the key point] in the aftermath of the defeat at the hands of Prussia in the 1870′s, and had been updated in the early 1900′s.)
Let it rip a hole in our hearts, a sobering hole that can open our hearts and minds to understand that things too often are much much more painful, difficult, horrible and complex than we would like them to be.
THEN, we can safely address the sorts of issues that Craig was grappling with, with a perspective that is sufficiently broad to see that whichever way we come out on it, there will be horrific difficulties that we with our bounded rationality cannot fully understand.
And in particular, we must come to grips with the sort of dilemma a Churchill faced as he made the decision to send in heavy but fragile and vulnerable bombers to force Germany to fight a major home front attritional campaign that drained it of the crucial resources that would otherwise have made mincemeat of the Russians.
![]() |
88 mm Flak 18 in action against tanks in North Africa (note antiaircraft mounting) |
The same, for the fighter and fighter-bomber capacity that went into fighting off the bombers.
And the imposed losses on the cities put a severe restraint on the capacity of German war production to surge.
But, at a horrific cost in civilian lives, including children.
![]() |
Note the abortive Arras counter-attack, stopped in key part by Rommel's improvised 88 mm gun line |
Because Rommel’s improvised gun-line held in May 1940, there was not going to be a Western Front in France until the Germans had been bled white through horrific attrition, on the East Front and over Germany.
Attrition that could not even be put in words to the public who had seen what the Western Front in 1914 – 18 had cost and would do almost anything to avoid that again, which is exactly what led to the ill-advised passivity and appeasement in the face of Hitler in the 1930′s when he could have been stopped at far lower cost. (And let us not forget, the Russians paid something like over 20 million lives to defeat the Germans. But the alternative was much, much worse.)
I hope this is enough, that we have been duly torn, sobered up and shamed over our habitual superficiality and glib gotcha rhetorical tactics.
Those who refuse to learn from bitter history, are doomed to repeat it.
It is in that context, that I am utterly incensed at Dawkins’ cynical cowardice, lying — VJT has demonstrated that beyond doubt — and slander. Neither Craig nor any other responsible Christian leader or thinker is an advocate of genocide; something Dawkins full well knows.
They are grappling — and sometimes stumbling in the grappling — with issues that cut right across history and come down to today as we see how we foolishly talk about an Arab Spring, not seeing the rising tide of Islamist naked aggression that seeks to exploit the uprisings, or the Iranian nuke and ballistic missile programmes that back it.
Why is it that in an information age with experts on instant tap, we are so willfully ignorant of the religiously motivated ideology of the IslamISTS?
Why do we not even know that even the DATE of the 9/11 attacks — 318 years, less one day from the last IslamIST surge high water mark at the gates of Vienna in 1683 under the Ottoman Sultan as Caliph, just before Jan Sobieski of Poland personally led the Cavalry charge on the 12th of Sept that broke the siege — is pregnant with symbolism of the IslamIST intent? (Hint: UBL was making a bid to be Caliph, and his base “in the direction of Khorasan” was itself pregnant with symbolism connected to the end of days global conquest Black Flag Army and related hadiths.)
We live in a very, very dangerous time, and are too often willfully ignorant and foolish.
That is the price we pay for the sort of foolish gotcha polarising rhetoric that we tolerate in public discussions.
A price that predictably leads on to blood.
Rivers of blood.
That is the context in which Netanyahu has denounced the UN as a theatre of the absurd and has declared: better a bad press than a good eulogy.
Israel faces an existential crisis manipulated by Iran as it races to complete its nuke programme.
I am highly confident on the track record of 1967 that Israel will act decisively soon, regardless of the horrific cost and the price they will pay in the eyes of the world as “neighbourhood bully” [Thanks, CY]; for the alternatives are far worse than merely horrible. (Indeed, in that regard, I think the Schalit exchange is a clearing the decks for action.)
Against that backdrop, Dawkins is using the excuse of a known false accusation of support for genocide, to duck being held publicly responsible for his many ill-founded but manipulative statements over the course of decades.
That is a strong sign of a man who knows he is in the wrong, but is too proud to climb down, whatever the cost to others.
THAT is the main focus that his thread has from the Original Post.
The tangential and poisonous distractive talking point does need to be addressed, but it can only be soundly addressed in a context where we have first taken the time and effort to build enough background and have had enough moral pain to feel the weight of the full balance of the issues.
A weight that must start with: why is it that we find ourselves inescapably under moral government, even in the teeth of the materialistic ideology that Dawkins et al champion in the name of science, that leads to the implication that there is no real OUGHT, there is just IS, and no is that — per materialistic premises, can ground ought?
From that and other related considerations, we will then see that ethical theism is a serious and respectable position.
Then, we can look at the central warranting argument and grounds that are foundational to the Christian, ethical theistic tradition; a point that has been central to the Christian intellectual-prophetic challenge to our civilisation ever since Paul challenged the Stoics and Epicureans on Mars Hill on 50 AD. (This point, we must note, is pivotal to Craig’s argument as he then goes on to grapple with a difficulty on grounds that are much less firm either way. A responsible addressing of what Craig actually argued, would fairly deal with that context in a sober fashion instead of brushing it away in a gleeful, willfully out of context “gotcha and so I don’t need to talk to you.”)
Look back above and in other threads where this has come up, onlookers, and see if the objectors have seriously and soberly grappled with that context.
On fair comment, no; this has all been an exercise in selective hyperskepticism and too often gleeful rhetorical bashing.
That should be sobering, and it is a big part of why I have called up the sort of wider context as above.
We must be responsible.
In that context, we can then reasonably look at the particular issues in a more balanced, more informed, more sober-minded way. One that I find conspicuously missing in action.
And, onlookers, it is no accident that, after several times of linking the discussion just linked, there has been no responsible addressing of these aspects form the circle of objectors.
Red herrings, led away to strawmen soaked in vicious ad hominems [the false charge of support for genocide fairly drips with the implied accusation, Nazi] and ignited through incendiary gotcha rhetoric are rhetorically very effective. But hey come at a terrible price: clouding the issues, poisoning the atmosphere, polarising it, and stirring hostility that all too soon becomes hate and scapegoating, leading on to violence, overt mob violence or covert violence by abuse of the power of law and policy and institutional dominance.
Those are the tactics that Dawkins et al have been indulging for decades, and it is high time that they were called to public account for that.
That will not happen if we keep on following red herrings and cheering on the burning of ad hominem soaked strawmen.
So, please at lest think about what is at stake in the wider context of all this, for our civilisation.>>
____________________
Subscribe to:
Posts (Atom)