870 karma · joined October 30, 2009
https://fexl.com
https://absolutefundadministration.com
I've been programming since the '70s. I'm very experienced in C, but most of my work since 1998 has been in Perl. HEY! I hear you laughing back there, but it is possible to write beautiful code in Perl. I'm also working on rewriting everything in Fexl. Ctrl-w < make vertical window narrower
Ctrl-w > make vertical window wider
(You can put a numeric count before the < or >)Also:
Ctrl-w = make windows of equal size
And, when I want two vertical windows each of width 80: se co=161
:vsplit
Ctrl-w =
I gotta use 161 there because apparently one column is taken by the vertical separator.People would be free to attack it at will, but it wouldn't do much good because that password contains approximately 78 bits of entropy. The attack would be slow enough offline (for example if they somehow possessed a bcrypt hash of my passphrase), but far slower online (if they had to send each guess across the internet one by one).
I could of course cleverly substitute some digits here and there, which would make my public declaration a lie. I suppose some "security through obscurity" can help, though I could have accomplished just as much if not more by simply using seven words instead of six.
Also, the SSD is an option, not standard, in case you want that. (I certainly did.)
You can call them on the phone with any questions -- I found them responsive and helpful.
https://github.com/chkoreff/Fexl/blob/b1e149d1a0795aa191b887...
It's a great machine!
(Here's where I got it: http://linuxcertified.com/linux_laptops.html)
In particular here's the definition of "enhance", which is used to enhance the standard context with a potentially enormous set of extra definitions, spread across multiple files:
https://github.com/chkoreff/Fexl/blob/ced168cae71644ff9a9cb3...
Sometimes it's good to walk away, as in literally take a walk and utterly ignore all your problems, and sometimes it's good to chip away, as in doing one little easy thing that's within your immediate power, however meaningless it might seem. I find that such small efforts produce a sort of "compound interest" effect, where your gains start to pile up faster than you expect.
I'm gonna try Unity again, because I want to like it, but I always find myself getting angry at the "application-centric" grouping of my open windows, and how when it zooms out and I click the window I want, all sorts of other things I'm using become obscured.
This gives Fexl a potentially large library of built-in functions written in Fexl itself, in addition to the functions written in C (in the form of routines named fexl_X, where X is the function name).
The directory structure for the installed fexl is now:
/usr/bin/fexl
/usr/lib/fexl/
/usr/share/fexl/Then Quine observed that one could use a preponent binary operator "o" to dispense with parentheses, at which point ~"" All Schönfinkel's sentences build of "J" and parentheses go over unambiguously into strings of "J" and "o".""
Therefore all valid forms can be represented as binary numerals as well, though the converse is not true: not all binary numerals represent valid forms -- unlike Iota's bijective mapping.
#include <stdio.h>
int main(void)
{
long x = 9223372036854775807;
long y = 9223372036854775808;
printf("x = %ld\n", x);
printf("y = %ld\n", y);
printf("x and y are %s\n", x == y ? "equal" : "not equal");
return 0;
}
The error message is: gcc -c -Wall -Werror -ansi -O3 -fPIC src/test_num2.c -o obj/test_num2.o
src/test_num2.c: In function ‘main’:
src/test_num2.c:6:11: error: integer constant is so large that it is unsigned [-Werror]
src/test_num2.c:6:2: error: this decimal constant is unsigned only in ISO C90 [-Werror]
cc1: all warnings being treated as errors #include <stdio.h>
#include <stdlib.h> /* strtol, strtod */
/* Convert string to long and return true if successful. */
int string_long(char *beg, long *num)
{
char *end;
*num = strtol(beg, &end, 10);
return *beg != '\0' && *end == '\0';
}
int main(void)
{
char *x_str = "9223372036854775807";
char *y_str = "9223372036854775808";
long x;
long y;
int x_ok = string_long(x_str, &x);
int y_ok = string_long(y_str, &y);
printf("x_str = %s\n", x_str);
printf("y_str = %s\n", y_str);
printf("x = %ld (ok=%d)\n", x, x_ok);
printf("y = %ld (ok=%d)\n", y, y_ok);
printf("x and y are %s\n", x == y ? "equal" : "not equal");
return 0;
}
And here's the output: x_str = 9223372036854775807
y_str = 9223372036854775808
x = 9223372036854775807 (ok=1)
y = 9223372036854775807 (ok=1)
x and y are equal
I compiled it like so: gcc -c -Wall -Werror -ansi -O3 -fPIC src/test_num.c -o obj/test_num.oParse the source text, returning (pair ok; pair exp; symbols).
ok is true if the source is well-formed, i.e. no syntax errors.
If ok is true, exp is the parsed expression. If ok is false, exp is the string error message.
symbols is the list of all symbols used but not defined within the source text. It is a list of entries (pair sym line_no), where line_no is the line number on which the symbol first occurred.
If ok is true, then the caller can take the exp and successively apply the definitions of each symbol in the symbols list. The result will be the actual executable function which can then be run with "eval" in the Fexl intepreter.
Refactored the code so it's cleaner, faster, smaller, and with fewer inter-dependencies. The .bench2 test is about 6% faster.
That feels indispensable to my work flow, so I'm logging in with GNOME Classic now instead of Unity. Although I commend Mark Shuttleworth and his crew on their achievements with Unity, I just gotta have that task bar. Right now the laptop feels like a dream machine -- the keyboard is perfect and I'm a master with the touchpad.
Also, the desktop behaves so beautifully that it makes my wife slightly jealous, so when her Windows computer gives up the ghost I think she's gonna want the Linux desktop.
I'm pretty sure the problem is actually related to my deletion of all root CAs. Why? Because there's a red exclamation mark over the lock icon at bottom right of window, and when I hover it says "Warning: Contains unauthenticated content."
I already force-accepted the dswi.net certificate as a specific exception when I first played with DSWI yesterday. I would think that acceptance should apply to the JS content as well. But apparently not. So I'm poking around in my FF settings to see how I can trust your certificate even more than I already have -- yet without installing Comodo's root CA certificate.
It's all my fault, because of my bold yet insane experiment in distrusting all root CAs.
This is happening on two different Firefox browsers on two different Linux machines. It must be a problem with settings or a plugin. I'll try it on a brand new Linux machine with a fresh install of FF and let you know.
By the way, these concepts of localStorage and sessionStorage are new to me. Evidently they're something like glorified large cookies in HTML5. Chromium handles it just fine, but I don't think my Firefox browser even understands it yet. I see where I can examine all my live cookies there, but I don't see any mention of "storage" there. (I'm using Firefox 3.6.24 on Ubuntu.)
Consequently I haven't been able to get it to work yet on FF. But maybe that's because long ago I did a bold yet insane experiment wherein I deleted all trusted root CAs in that browser. So it might be my problem, not yours.