import React, { ReactElement } from 'react'; import Layout from '../components/layout'; import style from '../styles/lists.module.css'; type listItem = { children?: listItem[] | string[]; url?: string; title: string; description?: string }; const list: listItem[] = [ { title: 'Books', children: [ { title: 'Technology', children: [ { title: 'C programming', children: [ { title: 'The C Programming Language [K&R]', url: 'https://en.wikipedia.org/wiki/The_C_Programming_Language' }, { title: 'Expert C Programming by Peter van der Linden' }, { title: 'Practical C Programming by Steve Oualline (kind of outdated but still good)' } ] }, { title: 'Operating Systems', children: [ { title: 'Advanced Programming in the Unix Environment by W. Richard Stevens' }, { title: 'Operating Systems: Design and Implementation by Andrew S. Tanenbaum (I have not had a chance to read his other books on OS. I am not a fan of his networking book though.)' } ] }, // { // title: 'Networking' // }, // { // title: 'Electronics' // }, { title: 'Computer Engineering', children: [ { title: 'Making Embedded Systems: Design Patterns for Great Software by Elecia White' } // Computer Organization and Design: the Hardware/Software Interface [Patterson Hennessy] // Computer Architecture: A Quantitative Approach [Hennessy Patterson] ] }, { title: 'Compilers', children: [ { title: 'Compilers: Principles, Techniques, and Tools [Dragon Book] (discusses theory in detail so it is kind of hard to read)' } ] }, { title: 'Other', children: [ { title: 'Definitive Guide to sed: Tutorial and Reference' } ] } ] }, { title: 'Classics', description: 'Only the English ones for now.', children: [ 'A Tale of Two Cities', 'The Mayor of Casterbridge', 'The Citadel', 'Oliver Twist', 'Macbeth', 'Othello', 'Adventures of Huckleberry Finn' ] }, { title: 'Language Learning', children: ['Lingua Latina per se Illustrata (Both parts)'] } ] }, { title: 'Movies', children: [ 'Blade Runner 2049', 'The Hateful Eight', 'Goodfellas', 'Inception', 'Memento', 'The Grand Budapest Hotel' ] }, { title: 'Music', children: [ 'Große Fuge Op. 133', 'KV 387', 'KV 448', 'BWV 1048', 'Prelude in G Minor (Op. 23 No. 5)', 'String Quartet, Op. 20 No. 2 (Haydn)' ] }, { title: 'Video Games', children: [ 'The Legend of Zelda: Breath of the Wild', 'Portal 2' ] } ]; function mapChild(obj: listItem | string, level: number) { if (typeof obj === 'string') { if (obj === '') return <> return {obj} } if (obj.title === '') return <> if (obj.url) return {obj.title} if (!obj.children) return {obj.title} let title: ReactElement; if (level >= 0 && level <= 4) title = React.createElement(`h${level + 2}`, {}, obj.title); else title = React.createElement('strong', {}, obj.title); return ( <> {title} {obj.description ?

{obj.description}

: <>}
{obj.children.map(l => mapChild(l, level + 1))}
); } function Recommended() { return (

This page is really for me to not forget/revisit the good things I have read, seen, heard, and/or experienced. This list may change, just as my opinions.

If the one you are looking for is not on this list, it is most likely I have not had the chance to read it yet or I may have put it on the Resources page, if it is freely available.

{list.map(l => mapChild(l, 0))}
); } export default Recommended;