Skip to content

Commit da3ea97

Browse files
committed
Updated on 2024-08-07
0 parents  commit da3ea97

File tree

7 files changed

+1179
-0
lines changed

7 files changed

+1179
-0
lines changed

books/list.json

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
[
2+
{
3+
"title": "銀河帝国の興亡1",
4+
"author": "アイザック・アシモフ",
5+
"date-complete": "2024-07-27",
6+
"page-count": "379",
7+
"rating": "95/100",
8+
"description": "心理歴史学 was very interesting. The comparison of making predictions about Brownian motion to that of the motion of large human populations/societies was fascinating, and something I could see happening."
9+
},
10+
{
11+
"title": "銀河英雄伝説4 策謀篇",
12+
"author": "田中芳樹",
13+
"date-complete": "2024-06-30",
14+
"page-count": "298",
15+
"rating": "95/100",
16+
"description": "Not sure if in this specific book, but I particularly liked the quote 「国家というのは、下から腐るものではなく、上から腐るものなんだ」, or something like that."
17+
},
18+
{
19+
"title": "宇宙が始まる前には何があったのか?",
20+
"author": "ローレンス・クラウス",
21+
"date-complete": "2024-06-17",
22+
"page-count": "343",
23+
"rating": "70/100",
24+
"description": "It seems like the universe will expand faster and faster."
25+
},
26+
{
27+
"title": "若きサムライのために",
28+
"author": "三島由紀夫",
29+
"date-complete": "2024-06-04",
30+
"page-count": "288",
31+
"rating": "75/100",
32+
"description": "Collection of essays / interviews with Mishima. I think some of these essays / interviews were right before he did 自決. His お茶漬ナショナリズム discussion was interesting."
33+
},
34+
{
35+
"title": "世界はラテン語でできている",
36+
"author": "ラテン語さん",
37+
"date-complete": "2024-05-19",
38+
"page-count": "216",
39+
"rating": "70/100",
40+
"description": "Basically just a bunch of うんちく. Good for random facts."
41+
},
42+
{
43+
"title": "銀河英雄伝説3 雌伏篇",
44+
"author": "田中芳樹",
45+
"date-complete": "2024-05-05",
46+
"page-count": "315",
47+
"rating": "95/100",
48+
"description": "The 査問会 section was the most interesting. Yan's rebuttal to 自由惑星同盟's government officials claims was quite interesting."
49+
},
50+
{
51+
"title": "グラスホッパー",
52+
"author": "伊坂 幸太郎",
53+
"date-complete": "2024-04-04",
54+
"page-count": "318",
55+
"rating": "70/100",
56+
"description": "鯨 was my favorite character. Mainly just an entertainment story."
57+
},
58+
{
59+
"title": "銀河英雄伝説2 野望篇",
60+
"author": "田中芳樹",
61+
"date-complete": "2024-03-22",
62+
"page-count": "334",
63+
"rating": "95/100",
64+
"description": "Using simple tools can beat powerful, but mismanaged ones."
65+
},
66+
{
67+
"title": "台湾の歴史と文化-六つの時代が織りなす",
68+
"author": "大東 和重",
69+
"date-complete": "2024-02-25",
70+
"page-count": "304",
71+
"rating": "80/100",
72+
"description": "Taiwan's history and culture. Told more like a story than a textbook."
73+
},
74+
{
75+
"title": "深層学習 改訂第2版",
76+
"author": "岡谷 貴之",
77+
"date-complete": "2024-02-16",
78+
"page-count": "384",
79+
"rating": "80/100",
80+
"description": "Easy to begin introduction. I thought that it was a little less rigorous, and more of an overview of the topic. Next will be the Goodfellow/Bengio/Courville book."
81+
},
82+
{
83+
"title": "マリアビートル",
84+
"author": "伊坂 幸太郎",
85+
"date-complete": "2024-02-05",
86+
"page-count": "539",
87+
"rating": "85/100",
88+
"description": "Book that inspired Bullet Train. Mainly just entertainment."
89+
},
90+
{
91+
"title": "日本語を遡る",
92+
"author": "大野 晋",
93+
"date-complete": "2024-01-20",
94+
"page-count": "217",
95+
"rating": "80/100",
96+
"description": "History of Japanese. The discussion of 大和言葉 and their relation to modern Japanese was insightful."
97+
},
98+
{
99+
"title": "現代語訳 老子",
100+
"author": "保立 道久",
101+
"date-complete": "2023-12-29",
102+
"page-count": "441",
103+
"rating": "85/100",
104+
"description": "Taoism by Laozi."
105+
},
106+
{
107+
"title": "銀河英雄伝説 1 黎明編",
108+
"author": "田中 芳樹",
109+
"date-complete": "2023-12-25",
110+
"page-count": "384",
111+
"rating": "95/100",
112+
"description": "Politics and war in space."
113+
},
114+
{
115+
"title": "三体",
116+
"author": "劉 慈欣",
117+
"date-complete": "2023-11-29",
118+
"page-count": "448",
119+
"rating": "95/100",
120+
"description": "Contact with aliens who live on a planet with three suns. China's cultural revolution also plays in."
121+
},
122+
{
123+
"title": "アルケミスト",
124+
"author": "パウロ・コエーリョ",
125+
"date-complete": "2023-10-27",
126+
"page-count": "199",
127+
"rating": "70/100",
128+
"description": "Young shepherd finds meaning."
129+
},
130+
{
131+
"title": "暁の寺",
132+
"author": "三島由紀夫",
133+
"date-complete": "2023-10-15",
134+
"page-count": "425",
135+
"rating": "60/100",
136+
"description": "Lawyer goes to Thailand, thinks princess is reincarnation of his old friend."
137+
},
138+
{
139+
"title": "ハーモニー",
140+
"author": "伊藤 計劃",
141+
"date-complete": "2023-09-20",
142+
"page-count": "398",
143+
"rating": "55/100",
144+
"description": "In a world without pain, some people want pain."
145+
},
146+
{
147+
"title": "老人と海",
148+
"author": "ヘミングウェイ",
149+
"date-complete": "2023-08-30",
150+
"page-count": "192",
151+
"rating": "80/100",
152+
"description": "Old man goes to fish."
153+
},
154+
{
155+
"title": "白夜行",
156+
"author": "東野 圭吾",
157+
"date-complete": "2023-06-28",
158+
"page-count": "864",
159+
"rating": "65/100",
160+
"description": "A death from years ago brings people together; criminal is found."
161+
},
162+
{
163+
"title": "虐殺器官",
164+
"author": "伊藤 計劃",
165+
"date-complete": "2023-02-15",
166+
"page-count": "428",
167+
"rating": "90/100",
168+
"description": "Linguist makes people crazy."
169+
}
170+
]

books_read.html

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Searchable book list</title>
7+
<style>
8+
table {
9+
border-collapse: collapse;
10+
width: 100%;
11+
}
12+
th, td {
13+
border: 1px solid black;
14+
padding: 8px;
15+
text-align: left;
16+
}
17+
th {
18+
background-color: #f2f2f2;
19+
cursor: pointer;
20+
}
21+
.search-inputs {
22+
margin-bottom: 10px;
23+
}
24+
.search-inputs input {
25+
margin-right: 10px;
26+
margin-bottom: 5px;
27+
}
28+
</style>
29+
</head>
30+
<body>
31+
<h1>Here's where I keep a list of books I have read.</h1>
32+
This list was curated by <a href="index.html">Lexington Whalen</a>, beginning from his first year of PhD to end. As he is me, I hope he keeps going!
33+
34+
I typically use this to organize books I found interesting. Please feel free to do whatever you want with it.
35+
36+
<div class="search-inputs">
37+
<input type="text" id="titleSearch" placeholder="Search title...">
38+
<input type="text" id="authorSearch" placeholder="Search author...">
39+
<input type="text" id="dateCompleteSearch" placeholder="Search date complete...">
40+
<input type="text" id="pageCountSearch" placeholder="Search page count...">
41+
<input type="text" id="ratingSearch" placeholder="Search rating...">
42+
<input type="text" id="descriptionSearch" placeholder="Search description...">
43+
<button id="clearSearch">Clear Search</button>
44+
</div>
45+
46+
<table id="bookTable">
47+
<thead>
48+
<tr>
49+
<th data-sort="title">Title</th>
50+
<th data-sort="author">Author</th>
51+
<th data-sort="date-complete">Date Complete</th>
52+
<th data-sort="page-count">Page Count</th>
53+
<th data-sort="rating">Rating</th>
54+
<th data-sort="description">Description</th>
55+
</tr>
56+
</thead>
57+
<tbody>
58+
<!-- Table body will be populated by JavaScript -->
59+
</tbody>
60+
</table>
61+
62+
<p id="bookCount">So far, we have read 0 books</p>
63+
64+
<script>
65+
const table = document.getElementById('bookTable');
66+
const tbody = table.querySelector('tbody');
67+
const clearButton = document.getElementById('clearSearch');
68+
const searchInputs = {
69+
title: document.getElementById('titleSearch'),
70+
author: document.getElementById('authorSearch'),
71+
'date-complete': document.getElementById('dateCompleteSearch'),
72+
'page-count': document.getElementById('pageCountSearch'),
73+
rating: document.getElementById('ratingSearch'),
74+
description: document.getElementById('descriptionSearch')
75+
};
76+
const bookCountElement = document.getElementById('bookCount');
77+
let sortOrder = {};
78+
79+
// Load books from JSON file
80+
fetch('books/list.json')
81+
.then(response => response.json())
82+
.then(books => {
83+
populateTable(books);
84+
updateBookCount(books.length);
85+
setupEventListeners();
86+
})
87+
.catch(error => console.error('Error loading books:', error));
88+
89+
function populateTable(books) {
90+
books.forEach(book => {
91+
const row = document.createElement('tr');
92+
for (let key in searchInputs) {
93+
const cell = document.createElement('td');
94+
cell.textContent = book[key];
95+
row.appendChild(cell);
96+
}
97+
tbody.appendChild(row);
98+
});
99+
}
100+
101+
function updateBookCount(count) {
102+
bookCountElement.textContent = `So far, we have read ${count} books`;
103+
}
104+
105+
function setupEventListeners() {
106+
for (let key in searchInputs) {
107+
searchInputs[key].addEventListener('keyup', searchTable);
108+
}
109+
110+
clearButton.addEventListener('click', function() {
111+
for (let key in searchInputs) {
112+
searchInputs[key].value = '';
113+
}
114+
searchTable();
115+
});
116+
117+
table.querySelector('thead').addEventListener('click', function(e) {
118+
const th = e.target.closest('th');
119+
if (!th) return;
120+
const column = th.dataset.sort;
121+
const dataType = (column === 'page-count') ? 'number' : 'string';
122+
sortOrder[column] = sortOrder[column] === 'asc' ? 'desc' : 'asc';
123+
sortTable(column, dataType, sortOrder[column]);
124+
});
125+
}
126+
127+
function searchTable() {
128+
const rows = tbody.getElementsByTagName('tr');
129+
for (let i = 0; i < rows.length; i++) {
130+
const row = rows[i];
131+
const cells = row.getElementsByTagName('td');
132+
let foundMatch = true;
133+
134+
for (let key in searchInputs) {
135+
const cellText = cells[Object.keys(searchInputs).indexOf(key)].textContent.toLowerCase();
136+
const searchTerm = searchInputs[key].value.toLowerCase();
137+
if (searchTerm && !cellText.includes(searchTerm)) {
138+
foundMatch = false;
139+
break;
140+
}
141+
}
142+
143+
row.style.display = foundMatch ? '' : 'none';
144+
}
145+
}
146+
147+
function sortTable(column, dataType, order) {
148+
const rows = Array.from(tbody.querySelectorAll('tr'));
149+
const columnIndex = Array.from(table.querySelector('thead tr').children).findIndex(th => th.dataset.sort === column);
150+
151+
rows.sort((a, b) => {
152+
let aValue = a.children[columnIndex].textContent;
153+
let bValue = b.children[columnIndex].textContent;
154+
155+
if (dataType === 'number') {
156+
return order === 'asc' ? Number(aValue) - Number(bValue) : Number(bValue) - Number(aValue);
157+
} else if (column === 'date-complete') {
158+
return order === 'asc' ? new Date(aValue) - new Date(bValue) : new Date(bValue) - new Date(aValue);
159+
} else if (column === 'rating') {
160+
return order === 'asc' ? Number(aValue.split('/')[0]) - Number(bValue.split('/')[0]) : Number(bValue.split('/')[0]) - Number(aValue.split('/')[0]);
161+
} else {
162+
return order === 'asc' ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue);
163+
}
164+
});
165+
166+
tbody.append(...rows);
167+
}
168+
</script>
169+
</body>
170+
</html>

cv.pdf

75.6 KB
Binary file not shown.

index.html

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Website</title>
7+
</head>
8+
<body>
9+
<h2>Welcome.</h2>
10+
<h3>Who?</h3>
11+
<p>
12+
My name is Lex Whalen.
13+
</p>
14+
<a href = "cv.pdf">Here</a> is my CV.
15+
<h3>What?</h3>
16+
<p>
17+
I am a first year PhD student at Georgia Tech, where I study algorithmic and hardware optimization for machine learning.
18+
</p>
19+
<h3>Why?</h3>
20+
<p>
21+
This website is largely just to store papers I've read so I may search them.
22+
</p>
23+
<p>
24+
<a href="papers_read.html">Here's</a> a searchable paper list.
25+
</p>
26+
<p>
27+
I also store <a href="books_read.html">book's I've read</a>.
28+
</p>
29+
<p>
30+
</p>
31+
<h3>Where?</h3>
32+
<p>
33+
You can contact me by emailing at [lastname lowercase][firstname lowercase]@gmail.com.
34+
</p>
35+
<p>
36+
You can could also check out my <a href="https://github.com/lxaw">GitHub</a>.
37+
</p>
38+
<h3>
39+
When?
40+
</h3>
41+
<p>
42+
Last time this was edited was [date].
43+
</p>
44+
</body>
45+
</html>

0 commit comments

Comments
 (0)