Skip to content

Commit a6e2c0d

Browse files
committed
Technical overview
1 parent 4cd0fa1 commit a6e2c0d

File tree

6 files changed

+85
-9
lines changed

6 files changed

+85
-9
lines changed

resources/ecs/main.ecs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
button AboutButton
1919
button PhilosophyButton
2020
button CodexButton
21-
button ThisIsMeButton
21+
button TechnicalButton
2222
hr Rule
2323
a ShowNotes
2424
module ShowdownModule
@@ -194,13 +194,13 @@ BuildPage:
194194
end
195195

196196
create ButtonItem in ButtonList
197-
create ThisIsMeButton in ButtonItem
198-
set the style of ThisIsMeButton to ButtonStyle
199-
set style `margin-top` of ThisIsMeButton to `0.25em`
200-
set the text of ThisIsMeButton to `This is Me`
201-
on click ThisIsMeButton
197+
create TechnicalButton in ButtonItem
198+
set the style of TechnicalButton to ButtonStyle
199+
set style `margin-top` of TechnicalButton to `0.25em`
200+
set the text of TechnicalButton to `Technical Overview`
201+
on click TechnicalButton
202202
begin
203-
location `/thisisme/index.html`
203+
location `/technical.html`
204204
end
205205

206206
create Notes in Main

resources/ecs/technical.ecs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
! EasyCoder Main
2+
3+
script Technical
4+
5+
div Body
6+
div Main
7+
div Header
8+
div Document
9+
img Banner
10+
hr Rule
11+
a ShowNotes
12+
module ShowdownModule
13+
variable Script
14+
15+
create Body
16+
if mobile
17+
set the style of Body to `width:100%`
18+
else
19+
set the style of Body to `width:100%;max-width:1200px;margin:0 auto`
20+
21+
create Header in Body
22+
if mobile
23+
set the style of Header to `text-align:center`
24+
else
25+
set the style of Header to `margin:0 2em;text-align:center`
26+
27+
create Banner in Header
28+
if not mobile set the style of Banner to `width:50%;margin:0 auto`
29+
set attribute `src` of Banner to `resources/img/banner.png`
30+
31+
create Rule in Body
32+
33+
create Main in Body
34+
if not mobile
35+
begin
36+
set style `display` of Main to `flex`
37+
end
38+
39+
create Document in Main
40+
set the style of Document to `flex:1`
41+
42+
rest get Script from `/resources/ecs/showdown.ecs`
43+
run Script with Document as ShowdownModule
44+
45+
rest get Script from `/resources/md/technical.md`
46+
send Script to ShowdownModule
47+
48+
stop

resources/md/home.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
- Any part of the screen can be replaced with new content taken from a remote server without the need to reload the page.
1414

15-
Although these features are the ones most likely to be used by the averge website owner, ~ec~ can do a lot more, to the point it can be used to build entire interactive websites without a single line of JavaScript ever being seen. A good example is our own site, that you're reading now.
15+
Although these features are the ones most likely to be used by the averge website owner, ~ec~ can do a lot more, to the point it can be used to build entire interactive websites without a single line of HTML or JavaScript ever being seen. A good example is our own site, that you're reading now.
1616

1717
### Do I need to learn programming? ###
1818

resources/md/philosophy.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# Our philosophy #
2+
23
"It's very easy to make things complicated, but it's very hard to make them simple".
34

45
~ec~ **_Software_** has a mission: to make complicated things simple. We created ~ec~ because JavaScript is just too hard for most people to learn, yet many of the things that people want it to do can be easily expressed in English. So we figured if we can't make everyone a programmer, let's make programming easy for everyone. ~ec~ is the result of our efforts.
56

67
## Analysis ##
8+
79
The mainstream software industry is driven by the desires of top developers to achieve results quickly. While this works quite well for big projects and in large teams, there are 2 areas in which it falls down badly. The first is that it fails to allow for people with lower skill levels, and the second - deriving from the first - is that it takes little to no account of future maintenance needs.
810

911
Although JavaScript is a mature programming language it is continually evolving and in the process becoming more complex. Fortunately, because of the need for older websites to go on working, it continues to support old code. This means a project can be written using a 10-year old version of JavaScript (if that is the preference of the programmer) with little risk of it not working.
@@ -15,10 +17,13 @@ The language itself, however, is only half of the problem. The other half is the
1517
Large professional programming teams do not see these problems; they are unaffected by them as they always have the resources they need to maintain continuity. For many smaller projects, however, this is far from being the case.
1618

1719
## A fresh view ##
20+
1821
The great majority of websites can be described in plain English, if necessary by focusing on one block at a time. Indeed, if a website is too complex to describe it's probably also too complex to use. So the idea that complex tools and frameworks are essential is for many sites a flawed one unless you start with the view that frameworks are always good and should be used at all times.
1922

2023
Here's a very approximate calculation. We estimate the total amount of effort that will be expended during development and maintenance, then multiply each part by the cost of the people that will be needed. It immediately becomes clear that there's a trade-off between the complexity of the development tools and the skill levels of the developers. With less complex tools, development may take longer (though we would in fact dispute that because simpler tools are quicker to learn) but cost less, and the maintenance cost is also lowered. There are so many factors in play that the calculation can only be heuristic (i.e. not rigorous), but if we compare building and running a new Facebook with, say, a local real-estate website then it's quite likely the former would benefit from the latest technology but the latter might well not.
2124

2225
It's in the latter category that tools like ~ec~ provide a viable alternative to the current mainstream. Any website that will require maintenance at a level that does not justify the retention of high-level skills will become unmaintainable if development assumes such skills will always be present.
2326

24-
Next: It's about language, not structure
27+
## Technical overview ##
28+
29+
~ec~ is about language, not structure. For a brief summary of how it works, see here.

resources/md/technical.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Technical Overview #
2+
3+
~ec~ is a scripting language for browsers, written in JavaScript. It comprises a compiler and a runtime and by using a pluggable, modular architecture it can handle projects of any size.
4+
5+
Modern web programming puts structure above content. A plethora of frameworks exist to provide a structural basis for any web project. Many of these are explicitly component oriented, React being the leading example. It is hard to be taken seriously as a web programmer without a deep understanding of at least one such framework.

technical.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<html lang="en">
2+
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>EasyCoder - coding made simple</title>
7+
<link rel='stylesheet' href='resources/css/styles.css' type='text/css' media='all' />
8+
<script type='text/javascript' src='easycoder/easycoder.js?ver=3.0.0'></script>
9+
</head>
10+
11+
<body>
12+
<pre id="easycoder-script" style="display:none">
13+
variable Script
14+
rest get Script from `/resources/ecs/technical.ecs`
15+
run Script
16+
</pre>
17+
</html>
18+
</body>

0 commit comments

Comments
 (0)