1,283 karma · joined July 25, 2013
Whenever a subject like this comes up, I'm always reminded of Stewart Brand's "pace layering" [0].
I especially like the shoplist one. Such a simple application that's immediately useful.
# available at /style.css
proc wapp-page-style.css {} {
wapp-mimetype text/css
wapp-cache-control max-age=3600
wapp-trim {
body {
background: aliceblue;
}
}
}
# available at /hello
proc wapp-page-hello {} {
wapp-trim {
<html>
<head>
<link href="%url(style.css)" rel="stylesheet">
</head>
<body>
<h1>Hello HN!</h1>
</body>
</html>
}
}I worked for a company that microserviced themselves into a pit. We had a huge layoff which completely killed the morale of the remaining engineering staff. Over the next 3 years, more and more engineers left and the company refused to replace them. What started out as teams (~5 people) responsible for ~3 microservices ended up as teams of ~3 people responsible for ~6 microservices.
It was kind of cool to be responsible for more architecture and see how it all fit together, but the sad reality was that too many of the microservices that had been stood up were stitching together disparate data from other microservices to then perform what a single SQL query against a RDBMS was doing.
How so? Tcl has namespaces, a standard lib, runtime introspection, an OO system, threads, asynchronous programming capabilities via event loop, a GUI framework and is cross platform. Have you actually used it?
I don't know if I'm missing the mark here, but aren't you describing Checked Exceptions?
>Symbols are not storage locations (see Var)
I thought the way symbols worked in CL are one of the three big ideas (s-exps and macros being the other two).
[0] https://www.fs.fed.us/wildflowers/plant-of-the-week/asclepia...
For example, here is a really naive example of implementing a DSL that allows you to write something like
SELECT name age FROM person INTO name age
and have the values of the selected columns be placed in variables specified after the INTO keyword.Implementing that isn't too difficult:
# a pretend database
set language(name) Tcl
set language(created) 1988
set language(created_by) "John Ousterhout"
set language(stable_release) 8.6.11
proc SELECT {args} {
### Lowercase all the args to make things easy
set args [string tolower $args]
set from_index [lsearch $args from]
set cols [lrange $args 0 [incr from_index -1]]
set table [lindex $args [expr $from_index + 2]]
# Get access to the global variable with the value contained in $table
global $table
set into_index [lsearch $args into]
set vars [lrange $args [incr into_index] end]
foreach c $cols v $vars {
upvar $v local_var
set val [lindex [array get $table $c] 1]
set local_var $val
}
}
After that, you could "SELECT created name created_by FROM language INTO x y z" and then puts "$y was created by $z in $x"
>Tcl was created by John Ousterhout in 1988Isn't this the same as API's as a service?
set a 1
set b 2
define add (n,m) $n + $m
set result [add a b]
I think it would be simple enough to come up with some Awk pattern/actions to parse the above and execute the commands.** It's really light on dialogue (and characters for that matter). Way more emphasis on the Graphic part than the Novel part.
[0] https://blog.racket-lang.org/2009/03/the-drscheme-repl-isnt-...
This reminded me of a really disheartening (and probably 100% accurate) thread on Reddit recently. A developer was asking how to go about validating an idea for a SaaS that was catered towards small businesses. Most, if not all of the comments were along the lines of "no thanks, we've already dealt with a startup trying to 'solve' our problem."
https://kannel.org/download/1.4.5/userguide-1.4.5/userguide....
I'm not saying this is the case, but isn't there a greater opportunity to optimize TypeScript code over JavaScript due to the presence of types? Isn't this the same thing as a statically typed program being compiled into assembly (untyped) ?
(display "Done with looping")
then invoking the continuation would break out of the loop and display "Done with looping."To make it a little cleaner, I've replaced the "receiver" definition with a function reference instead. What's the continuation here?
(define sum-of-squares
(lambda (bound)
(call/cc the-receiver)))I don't really understand the argument that if everyone else drops support that Firefox should too. Firefox could champion themselves as continuing to support various protocols and live the principles they set out for themselves.
To address your concerns though: meter data is not ingested via FTP. That's done using other protocols. It's transferred b2b via FTP over private tunnels. And you're correct Firefox is not used for uploading data. If it were possible it wouldn't even be a good choice given the volume of data we deal with. It is, however, used heavily for accessing the uploaded data by Operations and other teams.