Clearing out content

master
root 2018-04-21 16:43:39 -07:00
parent 1ad2ebf283
commit 43c8f2b60c
36 changed files with 1 additions and 8396 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,96 +0,0 @@
<?php
$slug = $_GET["slug"];
$servername = "localhost";
$username = "local";
$password = "";
$dbname = "articles";
$conn = new mysqli($servername, $username, $password);
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
$article_query = "SELECT title, author, description, keywords, updated FROM articles WHERE slug = '?'";
$keyword_query = "SELECT keyword FROM keywords WHERE id = ?";
if ($conn->connect_error) {
die("Database connection failed: " . $conn->connect_error);
}
if (!($stmt = $conn->prepare($article_query))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$stmt->bind_param("s", $slug);
$stmt->execute();
$article = $stmt->get_result()->fetch_assoc();
$stmt = $conn->prepare($keyword_query);
$stmt->bind_param("i", $article['keywords']);
$stmt->execute();
$keywords = $stmt->get_result()->fetch_assoc();
$conn->close();
$article_content_file_location = "/var/www/html/articles/" + $slug;
$article_content_file = fopen($article_content_file_location, "r") or die ("404 File not found!");
$article_content = fread($article_content_file, filesize($article_content_file_location));
fclose($article_content_file);
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="utf-8" />
<meta author="<?php echo $article['author'] ?>" />
<meta name="description" content="<?php $article['description'] ?>" />
<meta name="keywords" content="<?php implode(',', $keywords) ?>" />
<meta name="robots" content="index,follow" />
<title><?php echo $article['title'] ?> - Lijero</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<div id="navbrand">Lijero</div>
<ul><?php foreach ($navbar as $navitem) { ?>
<li><a href="<?php $navitem['url'] ?>"><?php $navitem['name'] ?></a></li>
<?php } ?></ul>
</nav>
<article>
<header>
<h1><?php $article['title'] ?></h1>
</header>
<?php $article_content ?>
</article>
<footer>
<div class="metadata">
<span><img alt="Author" src="//lijero.co/res/icon/person.svg" /> <?php $article['author'] ?></span>
<span><img alt="Updated" src="//lijero.co/res/icon/clock.svg" /> <?php $article['updated'] ?></span>
<div class="license">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
<img alt="This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License" style="border-width:0" src="/res/cc-by-sa-small.png" />
</a>
</div>
</div>
</footer>
</body>
</html>

View File

@ -1 +0,0 @@
Test content

Binary file not shown.

BIN
gk.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,75 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<!-- Uses Open Iconic: MIT licenses, attribution optional licenses. -->
<!-- This page is friendly to text browsers. -->
<head>
<meta charset="utf-8" />
<meta name="author" content="Lijero" />
<!-- <meta name="description" content="" /> -->
<meta name="keywords" content="Lijero,music,code,producer,games,website" />
<meta name="robots" content="index,follow" />
<title>Lijero</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<div id="navbrand">Lijero</div>
<ul>
<li><a href="/">Home</a></li>
</ul>
</nav>
<article>
<header>
<h1>Test Content</h1>
</header>
<h2>Summary</h2>
<div class="aside quote">
<div class="quote-content"> To make an apple pie from scratch, you must first invent the universe. </div>
<div class="author">~ Carl Sagan</div>
</div>
<p>
This is some <a href="//example.com">test content</a>. The purpose of this content is to demonstrate the readability of small-width, large-margined, well-spaced, large text. A lot of websites are extremely compact,
but this often comes at the cost of readability. My goal with this website is to provide an entirely different and more attractive user experience.
</p>
<h2>Lorem Ipsum</h2>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p>
<h2>Extra Content</h2>
<p>I have a bunch of content already, but I think a third paragraph would be nice too. In addition, this lets me intract with the website through scrolling, which could possibly make a difference, though I can't say for sure. Anyway, this content should help with both of these issues.</p>
</article>
<footer>
<div class="metadata">
<span><img alt="Author" src="//lijero.co/res/icon/person.svg" /> Lijero</span>
<span><img alt="Updated" src="//lijero.co/res/icon/clock.svg" /> 2017-12-16</span>
<div class="license">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
<img alt="This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License" style="border-width:0" src="/res/cc-by-sa-small.png" />
</a>
</div>
</div>
</footer>
</body>
</html>

View File

@ -1,25 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

View File

@ -16,25 +16,6 @@
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<meta http-equiv="refresh" content="5; url=https://lijero.co/switte/" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
@ -45,7 +26,6 @@
<h1>Home Page</h1>
</header>
<p>Sorry! This site is under construction.</p>
<p>In the mean time, here's a redirect to <a href="/switte/">the Switte Programming Language</a></p>
</article>
</body>
</html>

View File

@ -1,49 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<!-- Uses Open Iconic: MIT licenses, attribution optional licenses. -->
<!-- This page is friendly to text browsers. -->
<head>
<meta charset="utf-8" />
<meta name="author" content="Lijero" />
<!-- <meta name="description" content="" /> -->
<meta name="keywords" content="Lijero,music,code,producer,games,website" />
<meta name="robots" content="index,follow" />
<title>Lijero</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand">Lijero</span>
</nav>
<article>
<header>
<h1>Home Page</h1>
</header>
<p>Sorry! This site is under construction. It should be up by the end of March, so consider checking back then.</p>
</article>
</body>
</html>

View File

@ -1,88 +0,0 @@
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location /.well-known/acme-challenge {
try_files $uri =404;
}
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl on;
ssl_certificate /etc/letsencrypt/live-ecdsa/lijero.co/chain.pem;
ssl_certificate_key /etc/letsencrypt/live-ecdsa/lijero.co/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
# ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp384r1:secp521r1;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
ssl_stapling on;
ssl_stapling_verify on;
resolver 192.168.1.1;
# resolver 8.8.4.4;
ssl_trusted_certificate /etc/letsencrypt/live-ecdsa/lijero.co/chain.pem;
root /var/www/html;
index index.xhtml;
server_name _;
#add_header Content-Security-Policy "default-src 'none'; image-src 'self'; style-src 'self';";
location / {
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
add_header Link "</res/common.css>; rel=preload; as=style;";
try_files $uri $uri/ =404;
gzip on;
}
location /res/ {
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
# expires 7d;
# add_header Cache-Control "public";
gzip on;
}
location /res/cc-by-sa-small.png {
expires 180d;
}
location /res/icon/ {
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
expires 30d;
gzip on;
add_header Cache-Control "public";
}
location /favicon.png {
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
add_header Cache-Control "public";
expires 60d;
gzip on;
}
location ~ \.php$ {
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}

View File

@ -1,138 +0,0 @@
body {
display: block;
margin: 0;
font-family: sans-serif;
}
nav {
font-weight: 400;
font-size: 25px;
letter-spacing: 2px;
color: #404040;
}
#navbrand {
font-weight: bold;
font-size: 50px;
color: black;
font-style: italic;
}
nav li {
text-indent: 0;
}
nav ul {
list-style: none;
}
article {
margin: auto;
line-height: 1.5em;
letter-spacing: .05em;
font-size: 18px;
color: #303030;
}
p {
/* text-align: justify;
text-justify: distribute;*/
text-indent: 2em;
}
article h1 {
font-size: 30px;
}
article h2 {
font-size: 25px;
}
article h3 {
font-size: 20px;
}
li {
text-indent: 1em;
}
a {
text-decoration: none;
color: #5050B0;
}
a:hover {
color: #8080A0;
}
nav a {
color: inherit;
}
.quote-content::before {
content: url("/res/icon/double-quote-serif-left.svg");
}
.quote-content {
font-style: italic;
}
.quote-content::after {
content: url("/res/icon/double-quote-serif-right.svg");
}
.metadata {
font-size: 15px;
}
.metadata img {
width: 15px;
}
footer {
padding: 10px;
font-size: 10px;
position: relative;
bottom: 0;
text-align: center;
}
.license img {
display: inline-block;
width: initial;
vertical-align: bottom;
}
@media screen and (max-width: 600px) {
article {
padding: 5px;
margin: 0;
}
}
nav {
margin: auto;
padding: 0;
text-align: center;
}
nav ul {
padding: 0;
}
nav li {
margin: 0;
display: inline-block;
}
@media screen and (min-width: 700px) {
article {
padding: 0 80px;
min-width: 25em;
max-width: 33em;
}
article h1 {
margin-left: -20px;
}
}

Binary file not shown.

View File

@ -1,145 +0,0 @@
\documentclass[11pt]{article}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage[compact]{titlesec}
\renewcommand{\familydefault}{\sfdefault}
\topmargin=0.0in %length of margin at the top of the page (1 inch added by default)
\oddsidemargin=0.0in %length of margin on sides for odd pages
\evensidemargin=0in %length of margin on sides for even pages
\textwidth=6.5in %How wide you want your text to be
\marginparwidth=0.5in
\headheight=0pt %1in margins at top and bottom (1 inch is added to this value by default)
\headsep=0pt %Increase to increase white space in between headers and the top of the page
\textheight=9.0in %How tall the text body is allowed to be on each page
\setcounter{secnumdepth}{0}
\setlength{\parindent}{0pt}
\setlength{\topmargin}{1pt}
\addtolength{\textwidth}{2cm}
\addtolength{\hoffset}{-1cm}
\addtolength{\textheight}{2cm}
\addtolength{\voffset}{-1cm}
\begin{document}
\centerline{\LARGE James Martin}
\centerline{Renton, WA 98056 | \href{mailto:jtmar@lijero.co}{jtmar@lijero.co} | 206-660-7633}
\centerline{\href{https://lijero.co/}{Website} | \href{https://github.com/lijerom/}{GitHub} | \href{https://www.linkedin.com/in/jtmarlijero/}{LinkedIn}}
\section{Capabilities}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Model complex real-world problems} in a way conducive to long-term growth
\item {\bf Simplify code} and {\bf waste less time} with powerful, reusable, understandable, DRY abstractions
\item {\bf Squash bugs} with sustainable design, clean code, unit testing, and test-driven development
\item {\bf Maximize productivity} by taking advantage of build tools, continuous integration, bugtrackers, development environments, and version control
\item {\bf Quick understanding} and {\bf deep conceptual connections} from a thorough theoretical background
\item {\bf Read and write specifications} to communicate formal details clearly and understand terse descriptions
\end{itemize}
\section{Programming}
\subsubsection{Technical Skills}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Languages}: Java, C\#, C, Forth, x86 assembly, Rust, Haskell, Scheme (Lisp), Prolog, SQL, HTML, CSS
\item {\bf Tools}: Git, Haskell's Stack, Java's Gradle, Visual Studio, Eclipse, Emacs
\item {\bf Bug squashing}: JUnit, QuickCheck, Jenkins CI, Travis CI, GitHub issues, and more
\item {\bf Documents}: Microsoft Office (incl. Word, Excel, PowerPoint), \LaTeX
\end{itemize}
\subsubsection{Domain-Oriented Knowledge}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Exploit parallel problems} with multithreaded processes and distributed networks
\item {\bf Solve optimization and learning problems} through neural networks, evolutionary algorithms, and logic/constraint programming
\item {\bf Improve program and data structuring} with a powerful grasp of dataflow programming and complex control flow, including FRP, continuations, and laziness
\item {\bf Get the most out of your language} with metaprogramming, macros, reflection, and generics
\end{itemize}
\section{Systems}
\subsubsection{Server Skills}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Daemons}: Nginx, Bind9 (authoritative), OpenSSH (SSH, SFTP), MariaDB
\item {\bf HTTP}: Caching (client-side \& server-side), CDNs, semantic URLs, REST
\item {\bf TLS \& Certs}: \href{https://www.ssllabs.com/ssltest/analyze.html?d=lijero.co\&latest}{A+ rating on SSLLabs}, ECDHE, RSA, Let's Encrypt, DNS CAA, OCSP, HSTS
\item {\bf Administration}: VPSes, firewalls (incl. iptables), capability-based security, disk encryption
\item {\bf Operating Systems}: Linux (esp. Debian, desktop \& server), Windows (XP, 7, 8)
\end{itemize}
\subsubsection{Protocols}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Can write packets by hand}: HTTP, IRC, SMTP, FTP
\item {\bf Implemented}: HTTP, IRC, Minecraft Protocol, and protocols I have made myself
\item {\bf Very familiar}: IP, TCP, UDP, TLS/SSL, HTTP/2
\end{itemize}
\section{Major Projects}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Games}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Minecraft clone}, written in C\# using the Unity game engine
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Procedural content generation} using Simplex noise
\item {\bf Networked multiplayer} mostly implemented
\item {\bf Hand-written mesh generation} and optimization
\item Map editing and world save files
\end{itemize}
\item {\bf Minecraft server implementation} in Rust, but not enough to be usable for gameplay
\item {\bf Mario-like platformer} game with a map editor and saving
\item Familar with the {\bf modern OpenGL} graphics pipeline and {\bf GLSL shaders}, but not yet in practice
\end{itemize}
\item {\bf Low-level}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Operating system}: Kernel, memory manager, filesystem, BIOS terminal IO, paging
\item {\bf Minecraft redstone CPU}: 16-bit stack-based von-neumann, before command blocks were added
\item {\bf Instruction set and CPU design}, though it was never physically built
\end{itemize}
\item {\bf Language Extensions}: The {\bf reactive paradigm}, an {\bf event system}, and a {\bf component-based object system}, for Java using reflection
\item {\bf Programming Language Implementations}: Dozens of {\bf Lisp}s, {\bf Forth} (x86 asm), and {\bf Prolog}
\item {\bf Web}: Personal website, hierarchical discussion board, HTML/XML DSL, HTML parser in Rust
\end{itemize}
\section{Education}
\subsection{Formal}
\subsubsection{2015 - Present | Hazen High School}
\begin{itemize}[noitemsep,nolistsep]
\item Multiple college-level and honors courses, including AP Computer Science
\item Straight-As last semester
\end{itemize}
\subsection{Independent}
In addition to previously listed skills, I have obtained:
\begin{itemize}[noitemsep,nolistsep]
\item Intimate familiarity with {\bf how computers function at a low level}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf CPU design and implementation}
\item {\bf Operating systems}: Kernels, memory management, scheduling, paging, syscalls, filesystems, network stacks, BIOS/UEFI, bootloaders
\end{itemize}
\item {\bf Deep understanding of programming languages}
\begin{itemize}[noitemsep,nolistsep]
\item {\bf Programming language theory} explains the implementation of programming language
\item {\bf Type theory} (polymorphic, dependent, linear, noncommutative) is the logic and structure
\item {\bf Category Theory} is the theoretical background to abstractions
\item {\bf Formal languages \& semantics} describe grammar, syntax, and behavior
\end{itemize}
\item {\bf Logic}: Classical logic, natural deduction, sequent calculus, lambek calculus, etc
\item {\bf Databases}: Relational algebra, principles such as ACID, tradeoffs like CAP and PACELC
\end{itemize}
\section{Experience}
\subsubsection{2017 - Present | Java Developer | \it{Hazen Robotics Club}}
\begin{itemize}[noitemsep,nolistsep]
\item Built {\bf foundational abstractions} that drive the entire codebase
\item {\bf Dramatically simplified} the manual control mode by implementing a dataflow system
\item {\bf Lead programmer} for the autonomous AI-driven mode
\item {\bf Improved organization and productivity} by introducing and teaching Git to the team
\end{itemize}
\subsubsection{2012 - 2015 | Java Developer, Admin, Owner | \it{The Mining Dead}}
\begin{itemize}[noitemsep,nolistsep]
\item Began at {\bf eleven years old}
\item Managed a {\bf community of hundreds}, 60+ concurrent connections at peak hours
\item {\bf Wrote custom functionality}, the main features of the server, with many thousands of lines of code
\item Ran custom {\bf Linux VPS paid for by the community}
\item Used web servers and the ``Bungee'' reverse-proxy, Technic Solder content distribution
\end{itemize}
\end{document}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,142 +0,0 @@
lijero@desktop:~/build/leksah$ stack exec --no-ghc-package-path leksah
Using default Yi configuration
Linked with -threaded
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Reading keymap from /home/lijero/build/leksah/.stack-work/install/x86_64-linux-nopie/lts-9.9/8.0.2/share/x86_64-linux-ghc-8.0.2/leksah-0.16.3.1/data/keymap.lkshk
Error reading session file /home/lijero/build/leksah/.stack-work/install/x86_64-linux-nopie/lts-9.9/8.0.2/share/x86_64-linux-ghc-8.0.2/leksah-0.16.3.1/data/current.lkshs : Error reading file "/home/lijero/build/leksah/.stack-work/install/x86_64-linux-nopie/lts-9.9/8.0.2/share/x86_64-linux-ghc-8.0.2/leksah-0.16.3.1/data/current.lkshs" "/home/lijero/build/leksah/.stack-work/install/x86_64-linux-nopie/lts-9.9/8.0.2/share/x86_64-linux-ghc-8.0.2/leksah-0.16.3.1/data/current.lkshs" (line 12, column 23):
unexpected read parser no parse Nothing
expecting field parser
CallStack (from HasCallStack):
error, called at src/Text/PrinterParser.hs:284:28 in ltk-0.16.2.0-20pNDZSt43Z2Dmg2j8UhX4:Text.PrinterParser
update workspace info called
Could not retrieve vcs-conf for active package. No vcs-conf set up.
update workspace info called
Now updating system metadata ...
callCollector
setChildren [0,0]
setChildren [1,0]
setChildren [0,0]
setChildren [1,0]
***server start
Bind 127.0.0.1:11111
Metadata collector has nothing to do
Metadata collection has finished
callCollector finished
Finished updating system metadata
Now loading metadata ...
now loading metadata for package Cabal-1.24.2.0
now loading metadata for package Cabal-2.0.1.1
now loading metadata for package array-0.5.1.1
now loading metadata for package base-4.9.1.0
now loading metadata for package binary-0.8.3.0
now loading metadata for package bytestring-0.10.8.1
now loading metadata for package containers-0.5.7.1
now loading metadata for package deepseq-1.4.2.0
now loading metadata for package directory-1.3.0.0
now loading metadata for package filepath-1.4.1.1
now loading metadata for package ghc-8.0.2
now loading metadata for package ghc-boot-8.0.2
now loading metadata for package ghc-boot-th-8.0.2
now loading metadata for package ghc-prim-0.5.0.0
now loading metadata for package ghci-8.0.2
now loading metadata for package haskeline-0.7.3.0
now loading metadata for package hoopl-3.10.2.1
now loading metadata for package hpc-0.6.0.3
now loading metadata for package integer-gmp-1.0.0.1
now loading metadata for package pretty-1.1.3.3
now loading metadata for package process-1.4.3.0
now loading metadata for package rts-1.0
now loading metadata for package template-haskell-2.11.1.0
now loading metadata for package terminfo-0.4.0.2
now loading metadata for package time-1.6.0.1
now loading metadata for package transformers-0.5.2.0
now loading metadata for package unix-2.7.2.1
now loading metadata for package xhtml-3000.2.1
Finished loading metadata
Now updating workspace metadata ...
updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "leksah-welcome"}, pkgVersion = Version {versionBranch = [0,16,0,0], versionTags = []}}
updatePackageInfo modToUpdate ["Main (/home/lijero/.leksah-0.16/leksah-welcome/src/Main.hs)","Main (/home/lijero/.leksah-0.16/leksah-welcome/test/Main.hs)"]
callCollectorWorkspace
callCollectorWorkspace finished
Finished updating workspace metadata
setChildren [1,0]
setChildren [1,0,0]
setChildren [1,0]
setChildren [1,0]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2,0]
setChildren [1,0,2]
setChildren [1,0,2,1]
setChildren [1,0,2]
setChildren [1,0,2,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [0,0]
setChildren [0,0,0]
setChildren [0,0]
setChildren [0,0]
setChildren [0,0,2]
setChildren [0,0]
setChildren [0,0,0]
setChildren [0,0]
setChildren [0,0]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2,0]
setChildren [0,0,2]
setChildren [0,0,2,1]
setChildren [0,0,2]
setChildren [0,0,2,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [1,0,2]
setChildren [1,0,2,0]
setChildren [1,0,2]
setChildren [1,0,2,1]
setChildren [1,0,2]
setChildren [1,0,2,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [0,0]
setChildren [0,0,0]
setChildren [0,0]
setChildren [0,0]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2,0]
setChildren [0,0,2]
setChildren [0,0,2,1]
setChildren [0,0,2]
setChildren [0,0,2,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2,1]
setChildren [1,0]
setChildren [1,0,0]
setChildren [1,0]
setChildren [1,0]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2,0]
setChildren [1,0,2]
setChildren [1,0,2,1]
setChildren [1,0,2]
setChildren [1,0,2,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2]
setChildren [1,0,2,1]
^C***lost connection
***lost last connection - exiting
^C

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

View File

@ -1,85 +0,0 @@
Using default Yi configuration
Linked with -threaded
Reading keymap from /home/lijero/build/leksah/.stack-work/install/x86_64-linux-nopie/lts-9.9/8.0.2/share/x86_64-linux-ghc-8.0.2/leksah-0.16.3.1/data/keymap.lkshk
Now updating system metadata ...
callCollector
***server start
Bind 127.0.0.1:11111
Metadata collector has nothing to do
Metadata collection has finished
callCollector finished
Finished updating system metadata
Now loading metadata ...
now loading metadata for package Cabal-1.24.2.0
now loading metadata for package X11-1.8
now loading metadata for package X11-xft-0.3.1
now loading metadata for package array-0.5.1.1
now loading metadata for package base-4.9.1.0
now loading metadata for package binary-0.8.3.0
now loading metadata for package bytestring-0.10.8.1
now loading metadata for package containers-0.5.7.1
now loading metadata for package data-default-0.7.1.1
now loading metadata for package data-default-class-0.1.2.0
now loading metadata for package data-default-instances-containers-0.0.1
now loading metadata for package data-default-instances-dlist-0.0.1
now loading metadata for package data-default-instances-old-locale-0.0.1
now loading metadata for package deepseq-1.4.2.0
now loading metadata for package directory-1.3.0.0
now loading metadata for package dlist-0.8.0.3
now loading metadata for package extensible-exceptions-0.1.1.4
now loading metadata for package filepath-1.4.1.1
now loading metadata for package ghc-8.0.2
now loading metadata for package ghc-boot-8.0.2
now loading metadata for package ghc-boot-th-8.0.2
now loading metadata for package ghc-prim-0.5.0.0
now loading metadata for package ghci-8.0.2
now loading metadata for package haskeline-0.7.3.0
now loading metadata for package hoopl-3.10.2.1
now loading metadata for package hpc-0.6.0.3
now loading metadata for package integer-gmp-1.0.0.1
now loading metadata for package mtl-2.2.1
now loading metadata for package old-locale-1.0.0.7
now loading metadata for package old-time-1.1.0.3
now loading metadata for package pretty-1.1.3.3
now loading metadata for package process-1.4.3.0
now loading metadata for package random-1.1
now loading metadata for package rts-1.0
now loading metadata for package setlocale-1.0.0.5
now loading metadata for package template-haskell-2.11.1.0
now loading metadata for package terminfo-0.4.0.2
now loading metadata for package time-1.6.0.1
now loading metadata for package transformers-0.5.2.0
now loading metadata for package unix-2.7.2.1
now loading metadata for package utf8-string-1.0.1.1
now loading metadata for package xhtml-3000.2.1
now loading metadata for package xmonad-0.13
now loading metadata for package xmonad-contrib-0.13
Finished loading metadata
updateWorkspaceInfo' no workspace
Now updating workspace metadata ...
update workspace info called
Could not retrieve vcs-conf for active package. No vcs-conf set up.
setChildren [0,0]
Now updating workspace metadata ...
updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "test-leksah"}, pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}}
updatePackageInfo modToUpdate []
callCollectorWorkspace
callCollectorWorkspace: Nothing to do
Finished updating workspace metadata
update workspace info called
setChildren [0,0]
setChildren [0,0,0]
setChildren [0,0]
setChildren [0,0]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0,2]
setChildren [0,0]
Now updating workspace metadata ...
updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "test-leksah"}, pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}}
updatePackageInfo modToUpdate []
callCollectorWorkspace
callCollectorWorkspace: Nothing to do
Finished updating workspace metadata
***lost connection
***lost last connection - exiting

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -6,10 +6,4 @@
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://lijero.co/articles/beyond-operating-systems</loc>
<lastmod>2017-10-07</lastmod>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
</urlset>

View File

@ -1,53 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>Community - The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/docs/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<h2>Community</h2>
<h3>Github: <a href="https://github.com/swittepl/switti/">swittepl/switti</a></h3>
<p>Feel free to open an issue or pull request!</p>
<h3>IRC Channel: <a href="http://webchat.freenode.net/?channels=%23switte">#switte IRC on freenode.net</a></h3>
<ul>
<li>IRC is a live chat, not customer support, so do not expect an immediate response.</li>
<li>As-is, I am the only regular. Make sure someone's online before talking.</li>
</ul>
</article>
</body>
</html>

View File

@ -1,62 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>Community - The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/docs/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<p>
<strong>Switte</strong> is a programming language that uses simplicity to its advantage.
</p>
<pre><code>
This is an example program.
> ABC = mulI1 parI1 [ lemI ] map2
</code></pre>
<h2>Features</h2>
<h3>Instant Relocation</h3>
Save a program mid-execution and restart it anywhere.
<h3>Flat Model</h3>
Arbitrary partitions of a program are equivalent.
Programs can safely be run out-of-order and trivially parallelized!
<h3>Partial Evaluation</h3>
Don't have the whole set of data all at once? That's fine!
<h3>Complete Safety</h3>
There's no such thing as a runtime error.
</article>
</body>
</html>

View File

@ -1,47 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/documentation/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<h2>Documentation</h2>
<p>Switte's main documentation is the specification/manual generated from the literate program Switti. Check out the <a href="/switte/download/">downloads</a>.</p>
</article>
</body>
</html>

View File

@ -1,46 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/documentation/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<h2>Documentation</h2>
</article>
</body>
</html>

View File

@ -1,49 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>Downloads -- The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/documentation/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<h2>Downloads</h2>
<p>
There are currently no releases and no build server. However, you can build the latest code using the instructions on <a href="https://github.com/swittepl/switti">GitHub</a>.
</p>
</article>
</body>
</html>

View File

@ -1,62 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>The Switte Programming Language -- Downloads</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/docs/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<p>
<strong>Switte</strong> is a programming language that uses simplicity to its advantage.
</p>
<pre><code>
This is an example program.
> ABC = mulI1 parI1 [ lemI ] map2
</code></pre>
<h2>Features</h2>
<h3>Instant Relocation</h3>
Save a program mid-execution and restart it anywhere.
<h3>Flat Model</h3>
Arbitrary partitions of a program are equivalent.
Programs can safely be run out-of-order and trivially parallelized!
<h3>Partial Evaluation</h3>
Don't have the whole set of data all at once? That's fine!
<h3>Complete Safety</h3>
There's no such thing as a runtime error.
</article>
</body>
</html>

View File

@ -1,64 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>
<span id="navbrand"><a href="/switte/">Switte PL</a></span>
<ul>
<li><a href="/switte/download/">Download</a></li>
<span> | </span>
<li><a href="/switte/documentation/">Documentation</a></li>
<span> | </span>
<li><a href="/switte/community/">Community</a></li>
</ul>
</nav>
<article>
<p>
<strong>Switte</strong> is a programming language that uses simplicity to its advantage.
</p>
<pre><code>
This is an example program.
> ABC = mulI1 parI1 [ mulE1 ] [ lemI ] map
</code></pre>
<h2>Features</h2>
<h3>Instant Relocation</h3>
<p>Save a program mid-execution and restart it anywhere.</p>
<h3>Flat Model</h3>
<p>
Arbitrary partitions of a program are equivalent.
Programs can safely be run out-of-order and trivially parallelized!
</p>
<h3>Partial Evaluation</h3>
<p>Don't have the whole set of data all at once? That's fine!</p>
<h3>Complete Safety</h3>
<p>There's no such thing as a runtime error.</p>
</article>
</body>
</html>

View File

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charaset="utf-8" />
<meta name="robots" content="index,follow" />
<title>The Switte Programming Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
</html>

View File

@ -1,27 +0,0 @@
* Highly parallel processing-- distribute code over CPU cores, GPU cores, or computers on a network-- completely transparently.
* Free networked programs-- location-agnostic code can be run anywhere or everywhere, and multi-user systems via a multi-entry point program.
* Streamable computations-- computation can begin even when not all of the data has arrived yet.
* High performance-- simple and fast computations on CPU or GPU, easy to compile.
* Hard real-time, strict determinism-- extremely simple program semantics and implementation allow making very strong guarantees, including precise computation times and results.
* Secure-- deterministic and provable program behavior allows trivially creating secure subsets of the language.
* High-quality debugging tools-- the compiler is aware of a large amount of metadata for generating messages, and program images allow easy reproducibility/analysis.
* Portability-- no programming language behavior is platform-dependent, so only calls to native libraries are platform-dependent.
* Provable correctness-- everything else not good enough for you? prove your programs correct using the formal semantics.
* Low- or high-level-- the programming language depends on virtually no runtime (just malloc), not even a garbage collector, and would be suitable for writing OS-level code wherever C would be. In fact, it could be feasible to implement Switte as a CPU instruction set.
* High-quality type inference-- strongly and statically typed, but you'd never know it.
* Code inference-- built-in proof helper can automatically infer your code based on its type.
* Highly granular versioning-- hash and graph-based version control applies not just to libraries, but individual functions and types. This could theoretically be used for a completely decentralized/distributed package manager.
* High-quality documentation-- every aspect is formally specified and explained for academics, developers, or laymen, such that anyone can learn it.
* Extreme simplicity-- a very small yet complete set of primitives and virtually no syntax makes learning or porting it easy.
* Extensibility-- if you don't appreciate the simplicity, you can simply encode your favorite syntax or language structures directly into the language.
* Mathematician- and logician-suitable-- basis in a very general type theory makes it suitable for mathematicians (though unfortunately it is not Homotopy-based)
* Linguist-suitable-- the Lambek fragment is suitable for describing categorical grammars
* Staticstics interpretation-- the non-associative fragment corresponds with concepts in statistics.
* Programmer-suitable-- if you don't care about all that stuff, the full fragment is Turing-complete and a suitable programming language.
* Native literate programming support
* Rich code editing-- textual source code is possible but unneccessary. Compiled code and source code are essentially equivalent, so between the instruction set and hash-graph VCS, it is possible to interact with code entirely non-textually.
* Eager or lazy?-- irrelevant! Switte's linear semantics make evaluation strategy definitionally irrelevant. In other words, Switte is strongly normalizing (with a few exceptions related to the full fragment).
* Stateless-- dump a running program and restart it anywhere. You might even argue that all Switte programs are always running, in a sense.
* Flatness-- Switte has no syntax, and therefore arbitrary partitions of programs are equivalent.
* Simplicity-- a very small set of primitives and no syntax.
* Derived from type theory-- clear formal semantics makes it easy for both humans and compilers to reason about programs.

View File

@ -7,7 +7,7 @@
<meta name="author" content="Lijero" />
<!-- <meta name="description" content="" /> -->
<meta name="keywords" content="Lijero,music,code,producer,games,website" />
<meta name="keywords" content="Lijero" />
<meta name="robots" content="index,follow" />
<title>Lijero</title>
@ -16,23 +16,6 @@
<link href="/favicon.png" rel="icon" type="image/png" />
<link href="/res/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _paq = _paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
_paq.push(["setCookieDomain", "*.lijero.co"]);
_paq.push(["setDomains", ["*.lijero.co"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//p.lijero.co/";
_paq.push(['setTrackerUrl', u+'foo']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'foo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body>
<nav>