[{"data":1,"prerenderedAt":3819},["Reactive",2],{"$dLD8mTPNbj":3,"$ZfxvygTd7d":3273,"content-query-jVVOnPj5nk":3802},[4,74,136,186,275,379,414,505,569,653,710,738,761,842,891,975,1004,1064,1161,1253,1318,1335,1363,1396,1469,1530,1553,1590,1657,1720,1772,1819,1840,1921,1972,2014,2063,2104,2149,2212,2269,2320,2363,2401,2428,2460,2504,2565,2607,2633,2713,2748,2800,2835,2895,2945,3014,3065,3094,3130,3158,3175,3200,3219,3247],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"order":11,"month":12,"year":13,"date":14,"cover":15,"repo":16,"tech":17,"category":22,"featured":7,"navigation":7,"tag":6,"body":23,"_type":69,"_id":70,"_source":71,"_file":72,"_extension":73},"/projects/systems/61-nosql-app","systems",false,"","NoSQL App","A blog server built with a Python frontend\nand a MongoDB backend.\nIt supports registered users posting updates and comments, querying for posts\nand comments, and deleting posts and comments.",1,10,2022,"2022-11-03T00:00:00.000Z","featured-relational-db.gif","https://github.com/siavava/nosql",[18,19,20,21],"Python","MongoDB","NoSQL","Database Systems","featured-project",{"type":24,"children":25,"toc":66},"root",[26,52],{"type":27,"tag":28,"props":29,"children":30},"element","p",{},[31,34,42,44,50],{"type":32,"value":33},"text","A blog server built with a ",{"type":27,"tag":35,"props":36,"children":40},"a",{"href":37,"rel":38},"https://www.python.org/",[39],"nofollow",[41],{"type":32,"value":18},{"type":32,"value":43}," frontend\nand a ",{"type":27,"tag":35,"props":45,"children":48},{"href":46,"rel":47},"https://www.mongodb.com/",[39],[49],{"type":32,"value":19},{"type":32,"value":51}," backend.\nIt supports registered users posting updates and comments, querying for posts\nand comments, and deleting posts and comments.",{"type":27,"tag":28,"props":53,"children":54},{},[55,57,64],{"type":32,"value":56},"Collaborative project with ",{"type":27,"tag":35,"props":58,"children":61},{"href":59,"rel":60},"https://www.linkedin.com/in/ke-lou-898301133",[39],[62],{"type":32,"value":63},"Ke Lou",{"type":32,"value":65},".",{"title":8,"searchDepth":67,"depth":67,"links":68},2,[],"markdown","content:projects:systems:61-nosql-app.md","content","projects/systems/61-nosql-app.md","md",{"_path":75,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":76,"description":77,"order":11,"month":12,"year":13,"date":78,"cover":15,"repo":79,"tech":80,"category":22,"featured":82,"navigation":7,"tag":6,"body":83,"_type":69,"_id":134,"_source":71,"_file":135,"_extension":73},"/projects/systems/61-relational-app","Relational Database App","A relational database with a\nPython frontend\nand a MySQL backend,\nincluding various triggers and SQL automations.","2022-10-20T00:00:00.000Z","https://github.com/siavava/relational",[18,81,21],"MySQL",true,{"type":24,"children":84,"toc":132},[85,122],{"type":27,"tag":28,"props":86,"children":87},{},[88,90,97,99,104,105,111,113,120],{"type":32,"value":89},"A ",{"type":27,"tag":35,"props":91,"children":94},{"href":92,"rel":93},"https://en.wikipedia.org/wiki/Relational_database",[39],[95],{"type":32,"value":96},"relational database",{"type":32,"value":98}," with a\n",{"type":27,"tag":35,"props":100,"children":102},{"href":37,"rel":101},[39],[103],{"type":32,"value":18},{"type":32,"value":43},{"type":27,"tag":35,"props":106,"children":109},{"href":107,"rel":108},"https://www.mysql.com/",[39],[110],{"type":32,"value":81},{"type":32,"value":112}," backend,\nincluding various triggers and ",{"type":27,"tag":35,"props":114,"children":117},{"href":115,"rel":116},"https://en.wikipedia.org/wiki/SQL",[39],[118],{"type":32,"value":119},"SQL",{"type":32,"value":121}," automations.",{"type":27,"tag":28,"props":123,"children":124},{},[125,126,131],{"type":32,"value":56},{"type":27,"tag":35,"props":127,"children":129},{"href":59,"rel":128},[39],[130],{"type":32,"value":63},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":133},[],"content:projects:systems:61-relational-app.md","projects/systems/61-relational-app.md",{"_path":137,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":139,"description":140,"order":11,"date":141,"cover":142,"repo":143,"tech":144,"category":22,"featured":7,"navigation":7,"tag":148,"body":149,"_type":69,"_id":184,"_source":71,"_file":185,"_extension":73},"/projects/ai/76-markov-maze","ai","Robot Colocation","A common problem in robotics is localizing a robot in a novel environment\ngiven sensor readings. This project uses hidden markov models\nand the forward-backward algorithm\nand the viterbi algorithm to decipher where a robot's\nsituation probabilities in a maze, given a sequence of\nsensor readings from the robot.\nEmissions due to sensor inaccuracies are also factored in.","2021-11-02T00:00:00.000Z","featured-robot-colocation.gif","https://github.com/siavava/ai/tree/main/06-HiddenMarkovModels",[18,145,146,147],"MDP","Robotics","AI","artificial intelligence",{"type":24,"children":150,"toc":182},[151],{"type":27,"tag":28,"props":152,"children":153},{},[154,156,163,165,172,173,180],{"type":32,"value":155},"A common problem in robotics is localizing a robot in a novel environment\ngiven sensor readings. This project uses ",{"type":27,"tag":35,"props":157,"children":160},{"href":158,"rel":159},"https://en.wikipedia.org/wiki/Hidden_Markov_model",[39],[161],{"type":32,"value":162},"hidden markov models",{"type":32,"value":164},"\nand the ",{"type":27,"tag":35,"props":166,"children":169},{"href":167,"rel":168},"https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm",[39],[170],{"type":32,"value":171},"forward-backward algorithm",{"type":32,"value":164},{"type":27,"tag":35,"props":174,"children":177},{"href":175,"rel":176},"https://en.wikipedia.org/wiki/Viterbi_algorithm",[39],[178],{"type":32,"value":179},"viterbi algorithm",{"type":32,"value":181}," to decipher where a robot's\nsituation probabilities in a maze, given a sequence of\nsensor readings from the robot.\nEmissions due to sensor inaccuracies are also factored in.",{"title":8,"searchDepth":67,"depth":67,"links":183},[],"content:projects:ai:76-markov-maze.md","projects/ai/76-markov-maze.md",{"_path":187,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":188,"description":189,"order":11,"month":12,"year":190,"date":191,"cover":192,"repo":193,"tech":194,"category":22,"featured":82,"navigation":7,"tag":148,"body":196,"_type":69,"_id":273,"_source":71,"_file":274,"_extension":73},"/projects/ai/76-chess","Intelligent Chess bot","A chess bot that uses various strategies including\nminimax, alpha-beta pruning,\niterative deepening,\ntransposition tables, move ordering,\nnull-move pruning,\naspiration windows, and quiescence search to maximize outcome against an opponent\nin chess.",2021,"2021-10-01T00:00:00.000Z","featured-chess-ai.jpeg","https://github.com/siavava/ai/tree/main/03-ChessAI",[18,195,147],"adversarial search",{"type":24,"children":197,"toc":271},[198],{"type":27,"tag":28,"props":199,"children":200},{},[201,203,210,212,219,221,228,229,236,237,244,245,252,253,260,262,269],{"type":32,"value":202},"A chess bot that uses various strategies including\n",{"type":27,"tag":35,"props":204,"children":207},{"href":205,"rel":206},"https://en.wikipedia.org/wiki/Minimax",[39],[208],{"type":32,"value":209},"minimax",{"type":32,"value":211},", ",{"type":27,"tag":35,"props":213,"children":216},{"href":214,"rel":215},"https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning",[39],[217],{"type":32,"value":218},"alpha-beta pruning",{"type":32,"value":220},",\n",{"type":27,"tag":35,"props":222,"children":225},{"href":223,"rel":224},"https://en.wikipedia.org/wiki/Iterative_deepening_depth-first_search",[39],[226],{"type":32,"value":227},"iterative deepening",{"type":32,"value":220},{"type":27,"tag":35,"props":230,"children":233},{"href":231,"rel":232},"https://en.wikipedia.org/wiki/Transposition_table",[39],[234],{"type":32,"value":235},"transposition tables",{"type":32,"value":211},{"type":27,"tag":35,"props":238,"children":241},{"href":239,"rel":240},"https://en.wikipedia.org/wiki/Move_ordering",[39],[242],{"type":32,"value":243},"move ordering",{"type":32,"value":220},{"type":27,"tag":35,"props":246,"children":249},{"href":247,"rel":248},"https://en.wikipedia.org/wiki/Null-move_heuristic",[39],[250],{"type":32,"value":251},"null-move pruning",{"type":32,"value":220},{"type":27,"tag":35,"props":254,"children":257},{"href":255,"rel":256},"https://en.wikipedia.org/wiki/Aspiration_window",[39],[258],{"type":32,"value":259},"aspiration windows",{"type":32,"value":261},", and ",{"type":27,"tag":35,"props":263,"children":266},{"href":264,"rel":265},"https://en.wikipedia.org/wiki/Quiescence_search",[39],[267],{"type":32,"value":268},"quiescence search",{"type":32,"value":270}," to maximize outcome against an opponent\nin chess.",{"title":8,"searchDepth":67,"depth":67,"links":272},[],"content:projects:ai:76-chess.md","projects/ai/76-chess.md",{"_path":276,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":277,"description":278,"order":67,"date":279,"cover":280,"repo":281,"tech":282,"category":22,"featured":82,"navigation":7,"tag":6,"body":285,"_type":69,"_id":377,"_source":71,"_file":378,"_extension":73},"/projects/systems/51-logisim-cpu","Logisim Processor","A fully functional 16-bit CPU implemented in Logisim.\nAll CPU components including the ALU, registers,\ncontrol unit, program counter,\nRAM, micro-sequencer,\nfinite-state machine, and IO are implemented from basic gates.","2021-11-05T00:00:00.000Z","featured-logisim-cpu.gif","https://github.com/siavava/assembly/tree/main/cs51/practice/hw8",[283,284],"Assembly","Computer Architecture",{"type":24,"children":286,"toc":375},[287],{"type":27,"tag":28,"props":288,"children":289},{},[290,292,299,301,308,310,317,318,325,326,333,334,341,342,349,350,357,358,365,366,373],{"type":32,"value":291},"A fully functional 16-bit ",{"type":27,"tag":35,"props":293,"children":296},{"href":294,"rel":295},"https://en.wikipedia.org/wiki/Central_processing_unit",[39],[297],{"type":32,"value":298},"CPU",{"type":32,"value":300}," implemented in ",{"type":27,"tag":35,"props":302,"children":305},{"href":303,"rel":304},"https://en.wikipedia.org/wiki/Logisim",[39],[306],{"type":32,"value":307},"Logisim",{"type":32,"value":309},".\nAll CPU components including the ",{"type":27,"tag":35,"props":311,"children":314},{"href":312,"rel":313},"https://en.wikipedia.org/wiki/Arithmetic_logic_unit",[39],[315],{"type":32,"value":316},"ALU",{"type":32,"value":211},{"type":27,"tag":35,"props":319,"children":322},{"href":320,"rel":321},"https://en.wikipedia.org/wiki/Processor_register",[39],[323],{"type":32,"value":324},"registers",{"type":32,"value":220},{"type":27,"tag":35,"props":327,"children":330},{"href":328,"rel":329},"https://en.wikipedia.org/wiki/Control_unit",[39],[331],{"type":32,"value":332},"control unit",{"type":32,"value":211},{"type":27,"tag":35,"props":335,"children":338},{"href":336,"rel":337},"https://en.wikipedia.org/wiki/Program_counter",[39],[339],{"type":32,"value":340},"program counter",{"type":32,"value":220},{"type":27,"tag":35,"props":343,"children":346},{"href":344,"rel":345},"https://en.wikipedia.org/wiki/Random-access_memory",[39],[347],{"type":32,"value":348},"RAM",{"type":32,"value":211},{"type":27,"tag":35,"props":351,"children":354},{"href":352,"rel":353},"https://en.wikipedia.org/wiki/Microsequencer",[39],[355],{"type":32,"value":356},"micro-sequencer",{"type":32,"value":220},{"type":27,"tag":35,"props":359,"children":362},{"href":360,"rel":361},"https://en.wikipedia.org/wiki/Finite-state_machine",[39],[363],{"type":32,"value":364},"finite-state machine",{"type":32,"value":261},{"type":27,"tag":35,"props":367,"children":370},{"href":368,"rel":369},"https://en.wikipedia.org/wiki/Input/output",[39],[371],{"type":32,"value":372},"IO",{"type":32,"value":374}," are implemented from basic gates.",{"title":8,"searchDepth":67,"depth":67,"links":376},[],"content:projects:systems:51-logisim-cpu.md","projects/systems/51-logisim-cpu.md",{"_path":380,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":381,"description":382,"order":383,"date":384,"repo":385,"tech":386,"category":22,"featured":7,"navigation":7,"tag":148,"body":389,"_type":69,"_id":412,"_source":71,"_file":413,"_extension":73},"/projects/ai/10-pos-tagging","Parts-Of-Speech Tagging","A bot that uses hidden markov models to tag parts of speech in a sentence.\nWe use the viterbi algorithm to\ngenerate a sequence of tags\nfor the sentence keeping in mind the\ntag probabilities for each word and the\ntransition probabilities between tags.",3,"2021-03-02T00:00:00.000Z","https://github.com/siavava/java/tree/main/Problem%20Sets/PS-5",[387,388],"Java","Markov Decision Processes",{"type":24,"children":390,"toc":410},[391],{"type":27,"tag":28,"props":392,"children":393},{},[394,396,401,403,408],{"type":32,"value":395},"A bot that uses ",{"type":27,"tag":35,"props":397,"children":399},{"href":158,"rel":398},[39],[400],{"type":32,"value":162},{"type":32,"value":402}," to tag parts of speech in a sentence.\nWe use the ",{"type":27,"tag":35,"props":404,"children":406},{"href":175,"rel":405},[39],[407],{"type":32,"value":179},{"type":32,"value":409}," to\ngenerate a sequence of tags\nfor the sentence keeping in mind the\ntag probabilities for each word and the\ntransition probabilities between tags.",{"title":8,"searchDepth":67,"depth":67,"links":411},[],"content:projects:ai:10-pos-tagging.md","projects/ai/10-pos-tagging.md",{"_path":415,"_dir":416,"_draft":7,"_partial":7,"_locale":8,"title":417,"description":418,"order":419,"month":11,"year":420,"date":421,"repo":422,"tech":423,"featured":82,"navigation":7,"tag":426,"body":427,"_type":69,"_id":503,"_source":71,"_file":504,"_extension":73},"/projects/computer-vision/optical-flow","computer-vision","Optical Flow","Experimentation with different techniques for tracking optical flow\nin a video sequence. Optical flow is the apparent motion of objects,\neither due to the motion of the objects themselves or the motion of the\ncamera.\nTechiniques implemented include:",4,2024,"2024-03-03T00:00:00.000Z","https://github.com/lostflux/computer-vision/tree/main/psets/04",[18,424,425],"OpenCV","Computer Vision","computer vision",{"type":24,"children":428,"toc":501},[429,448,488],{"type":27,"tag":28,"props":430,"children":431},{},[432,434,440,442,446],{"type":32,"value":433},"Experimentation with different techniques for tracking ",{"type":27,"tag":435,"props":436,"children":437},"strong",{},[438],{"type":32,"value":439},"optical flow",{"type":32,"value":441},"\nin a video sequence. Optical flow is the apparent motion of objects,\neither due to the motion of the objects themselves or the motion of the\ncamera.",{"type":27,"tag":443,"props":444,"children":445},"br",{},[],{"type":32,"value":447},"\nTechiniques implemented include:",{"type":27,"tag":449,"props":450,"children":451},"ul",{},[452,465,477],{"type":27,"tag":453,"props":454,"children":455},"li",{},[456,463],{"type":27,"tag":35,"props":457,"children":460},{"href":458,"rel":459},"https://en.wikipedia.org/wiki/Lucas%E2%80%93Kanade_method",[39],[461],{"type":32,"value":462},"Lucas-Kanade method",{"type":32,"value":464}," for estimating optical flow by\nassuming that the flow is constant in a local neighborhood.",{"type":27,"tag":453,"props":466,"children":467},{},[468,475],{"type":27,"tag":35,"props":469,"children":472},{"href":470,"rel":471},"https://en.wikipedia.org/wiki/Lucas%E2%80%93Kanade_method#Inverse_compositional_algorithm",[39],[473],{"type":32,"value":474},"Lucas-Kanade inverse-compositional method",{"type":32,"value":476}," for estimating\noptical flow by assuming that the flow is constant in a local\nneighborhood and that the flow is smooth across the image.",{"type":27,"tag":453,"props":478,"children":479},{},[480,486],{"type":27,"tag":35,"props":481,"children":483},{"href":470,"rel":482},[39],[484],{"type":32,"value":485},"Matthews-Baker inverse-compositional method",{"type":32,"value":487}," for estimating optical flow by\nassuming that the flow is constant in a local neighborhood and\nthat the flow is smooth across the image.",{"type":27,"tag":28,"props":489,"children":490},{},[491,493,500],{"type":32,"value":492},"You can view the report ",{"type":27,"tag":35,"props":494,"children":497},{"href":495,"rel":496},"https://github.com/lostflux/computer-vision/blob/main/psets/04/writeup/main.pdf",[39],[498],{"type":32,"value":499},"here",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":502},[],"content:projects:computer-vision:4.optical-flow.md","projects/computer-vision/4.optical-flow.md",{"_path":506,"_dir":507,"_draft":7,"_partial":7,"_locale":8,"title":508,"description":509,"order":419,"month":11,"year":420,"date":510,"repo":511,"tech":512,"featured":7,"navigation":7,"tag":514,"body":515,"_type":69,"_id":567,"_source":71,"_file":568,"_extension":73},"/projects/linguistics/audio-emotions","linguistics","Emotion Detection in Audio","Exxperimented with using transformers to classify emotions\nin audio data, using Wav2Vec2 and\nMFCC (Mel-Frequency Cepstral Coefficients) features\nto train a model to classify emotions in audio data.","2024-03-02T00:00:00.000Z","https://github.com/lostflux/linguistics-project",[18,513],"Transformers","Natural Language Processing",{"type":24,"children":516,"toc":565},[517,540],{"type":27,"tag":28,"props":518,"children":519},{},[520,522,529,531,538],{"type":32,"value":521},"Exxperimented with using transformers to classify emotions\nin audio data, using ",{"type":27,"tag":35,"props":523,"children":526},{"href":524,"rel":525},"https://huggingface.co/transformers/model_doc/wav2vec2.html",[39],[527],{"type":32,"value":528},"Wav2Vec2",{"type":32,"value":530}," and\n",{"type":27,"tag":35,"props":532,"children":535},{"href":533,"rel":534},"https://en.wikipedia.org/wiki/Mel-frequency_cepstrum",[39],[536],{"type":32,"value":537},"MFCC (Mel-Frequency Cepstral Coefficients)",{"type":32,"value":539}," features\nto train a model to classify emotions in audio data.",{"type":27,"tag":28,"props":541,"children":542},{},[543],{"type":27,"tag":544,"props":545,"children":546},"em",{},[547,549,556,557,564],{"type":32,"value":548},"Collaborative project with\n",{"type":27,"tag":35,"props":550,"children":553},{"href":551,"rel":552},"https://github.com/theivyzhang",[39],[554],{"type":32,"value":555},"Ivy (Aiwei) Zhang",{"type":32,"value":530},{"type":27,"tag":35,"props":558,"children":561},{"href":559,"rel":560},"https://github.com/carlosguealv",[39],[562],{"type":32,"value":563},"Carlos Guerrero Alvarez",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":566},[],"content:projects:linguistics:07.audio-emotions.md","projects/linguistics/07.audio-emotions.md",{"_path":570,"_dir":416,"_draft":7,"_partial":7,"_locale":8,"title":571,"description":572,"order":419,"month":11,"year":420,"date":573,"repo":574,"tech":575,"featured":7,"navigation":7,"tag":426,"body":576,"_type":69,"_id":651,"_source":71,"_file":652,"_extension":73},"/projects/computer-vision/reconstruction","3D Reconstruction","Experimentation with different techniques for 3D reconstruction of a\nscene using multiple images taken at slightly different angles.\nTechiniques implemented include:","2024-02-18T00:00:00.000Z","https://github.com/lostflux/computer-vision/tree/main/psets/02",[18,424,425],{"type":24,"children":577,"toc":649},[578,587,638],{"type":27,"tag":28,"props":579,"children":580},{},[581,583,586],{"type":32,"value":582},"Experimentation with different techniques for 3D reconstruction of a\nscene using multiple images taken at slightly different angles.",{"type":27,"tag":443,"props":584,"children":585},{},[],{"type":32,"value":447},{"type":27,"tag":449,"props":588,"children":589},{},[590,602,614,626],{"type":27,"tag":453,"props":591,"children":592},{},[593,600],{"type":27,"tag":35,"props":594,"children":597},{"href":595,"rel":596},"https://en.wikipedia.org/wiki/Sparse_3D_reconstruction",[39],[598],{"type":32,"value":599},"Sparse reconstruction",{"type":32,"value":601}," to estimate the 3D structure\nof a scene from a set of 2D images.",{"type":27,"tag":453,"props":603,"children":604},{},[605,612],{"type":27,"tag":35,"props":606,"children":609},{"href":607,"rel":608},"https://en.wikipedia.org/wiki/Epipolar_geometry",[39],[610],{"type":32,"value":611},"Epipolar geometry",{"type":32,"value":613}," to identify corresponding points\nin different images.",{"type":27,"tag":453,"props":615,"children":616},{},[617,624],{"type":27,"tag":35,"props":618,"children":621},{"href":619,"rel":620},"https://en.wikipedia.org/wiki/Triangulation_(computer_vision)",[39],[622],{"type":32,"value":623},"Triangulation",{"type":32,"value":625}," to estimate the 3D position of\na point in space given its position in multiple images.",{"type":27,"tag":453,"props":627,"children":628},{},[629,636],{"type":27,"tag":35,"props":630,"children":633},{"href":631,"rel":632},"https://en.wikipedia.org/wiki/Bundle_adjustment",[39],[634],{"type":32,"value":635},"Bundle adjustment",{"type":32,"value":637}," to refine the 3D reconstruction by\nminimizing the reprojection error.",{"type":27,"tag":28,"props":639,"children":640},{},[641,642,648],{"type":32,"value":492},{"type":27,"tag":35,"props":643,"children":646},{"href":644,"rel":645},"https://github.com/lostflux/computer-vision/blob/main/psets/03/writeup/main.pdf",[39],[647],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":650},[],"content:projects:computer-vision:2.reconstruction.md","projects/computer-vision/2.reconstruction.md",{"_path":654,"_dir":507,"_draft":7,"_partial":7,"_locale":8,"title":655,"description":656,"order":419,"month":11,"year":420,"date":657,"repo":658,"tech":659,"featured":7,"navigation":7,"tag":514,"body":662,"_type":69,"_id":708,"_source":71,"_file":709,"_extension":73},"/projects/linguistics/neural-net-embeds","Neural Networks & Word Embeddings","Implemented neural networks (using PyTorch)\nto learn multi-class classification.\nAlso experimented with similarities in word\nembeddings using cosine similarity and t-SNE.","2024-02-09T00:00:00.000Z","https://github.com/lostflux/linguistics/tree/main/P4",[18,660,661],"Neural Networks","Word Embeddings",{"type":24,"children":663,"toc":706},[664,695],{"type":27,"tag":28,"props":665,"children":666},{},[667,669,676,678,685,687,694],{"type":32,"value":668},"Implemented neural networks (using ",{"type":27,"tag":35,"props":670,"children":673},{"href":671,"rel":672},"https://pytorch.org/",[39],[674],{"type":32,"value":675},"PyTorch",{"type":32,"value":677},")\nto learn multi-class classification.\nAlso experimented with similarities in word\nembeddings using ",{"type":27,"tag":35,"props":679,"children":682},{"href":680,"rel":681},"https://en.wikipedia.org/wiki/Cosine_similarity",[39],[683],{"type":32,"value":684},"cosine similarity",{"type":32,"value":686}," and ",{"type":27,"tag":35,"props":688,"children":691},{"href":689,"rel":690},"https://en.wikipedia.org/wiki/T-distributed_stochastic_neighbor_embedding",[39],[692],{"type":32,"value":693},"t-SNE",{"type":32,"value":65},{"type":27,"tag":28,"props":696,"children":697},{},[698,699,705],{"type":32,"value":492},{"type":27,"tag":35,"props":700,"children":703},{"href":701,"rel":702},"https://github.com/lostflux/linguistics/blob/main/P4/report/00.report.pdf",[39],[704],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":707},[],"content:projects:linguistics:4.neural-net-embeds.md","projects/linguistics/4.neural-net-embeds.md",{"_path":711,"_dir":507,"_draft":7,"_partial":7,"_locale":8,"title":712,"description":713,"order":419,"month":11,"year":420,"date":714,"repo":715,"tech":716,"featured":7,"navigation":7,"tag":514,"body":718,"_type":69,"_id":736,"_source":71,"_file":737,"_extension":73},"/projects/linguistics/attention-copy-2","Attention-Based Machine Translation","Implemented a transformer architecture that uses\nattention mechanism to translate from English to Pig Latin.\nAlso created visualizations of the attention weights,\ndemonstrating the progress of the attention mechanism over time\nas it generates a more accurate alignment between the input and\nthe eventual output sequences.","2024-02-06T00:00:00.000Z","https://github.com/lostflux/linguistics/tree/main/P5",[18,717,675],"Attention Mechanism",{"type":24,"children":719,"toc":734},[720,724],{"type":27,"tag":28,"props":721,"children":722},{},[723],{"type":32,"value":713},{"type":27,"tag":28,"props":725,"children":726},{},[727,728,733],{"type":32,"value":492},{"type":27,"tag":35,"props":729,"children":731},{"href":701,"rel":730},[39],[732],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":735},[],"content:projects:linguistics:05.attention copy 2.md","projects/linguistics/05.attention copy 2.md",{"_path":739,"_dir":507,"_draft":7,"_partial":7,"_locale":8,"title":712,"description":713,"order":419,"month":11,"year":420,"date":714,"repo":715,"tech":740,"featured":7,"navigation":7,"tag":514,"body":741,"_type":69,"_id":759,"_source":71,"_file":760,"_extension":73},"/projects/linguistics/attention",[18,717,675],{"type":24,"children":742,"toc":757},[743,747],{"type":27,"tag":28,"props":744,"children":745},{},[746],{"type":32,"value":713},{"type":27,"tag":28,"props":748,"children":749},{},[750,751,756],{"type":32,"value":492},{"type":27,"tag":35,"props":752,"children":754},{"href":701,"rel":753},[39],[755],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":758},[],"content:projects:linguistics:05.attention.md","projects/linguistics/05.attention.md",{"_path":762,"_dir":416,"_draft":7,"_partial":7,"_locale":8,"title":763,"description":764,"order":419,"month":11,"year":420,"date":765,"repo":574,"tech":766,"featured":82,"navigation":7,"tag":426,"body":767,"_type":69,"_id":840,"_source":71,"_file":841,"_extension":73},"/projects/computer-vision/augmented-reality","Augmented Reality with Planar Homographies","Experimentation with using planar homographies to overlay images on top of\nother images. The goal is to create an augmented reality effect by\ntransforming the perspective of the overlay image to match the perspective\nof the background image.\nTechiniques implemented include:","2024-02-05T00:00:00.000Z",[18,424,425],{"type":24,"children":768,"toc":838},[769,778,827],{"type":27,"tag":28,"props":770,"children":771},{},[772,774,777],{"type":32,"value":773},"Experimentation with using planar homographies to overlay images on top of\nother images. The goal is to create an augmented reality effect by\ntransforming the perspective of the overlay image to match the perspective\nof the background image.",{"type":27,"tag":443,"props":775,"children":776},{},[],{"type":32,"value":447},{"type":27,"tag":449,"props":779,"children":780},{},[781,803,815],{"type":27,"tag":453,"props":782,"children":783},{},[784,786,793,794,801],{"type":32,"value":785},"Image feature descriptors, such as ",{"type":27,"tag":35,"props":787,"children":790},{"href":788,"rel":789},"https://en.wikipedia.org/wiki/Binary_Robust_Independent_Elementary_Features",[39],[791],{"type":32,"value":792},"BRIEF",{"type":32,"value":686},{"type":27,"tag":35,"props":795,"children":798},{"href":796,"rel":797},"https://en.wikipedia.org/wiki/ORBSLAM",[39],[799],{"type":32,"value":800},"ORB",{"type":32,"value":802},", for\ndetecting and describing keypoints in images.",{"type":27,"tag":453,"props":804,"children":805},{},[806,813],{"type":27,"tag":35,"props":807,"children":810},{"href":808,"rel":809},"https://en.wikipedia.org/wiki/Random_sample_consensus",[39],[811],{"type":32,"value":812},"RANSAC algorithm",{"type":32,"value":814}," for estimating the homography\nbetween two images.",{"type":27,"tag":453,"props":816,"children":817},{},[818,825],{"type":27,"tag":35,"props":819,"children":822},{"href":820,"rel":821},"https://en.wikipedia.org/wiki/3D_projection#Perspective_projection",[39],[823],{"type":32,"value":824},"Perspective Transform",{"type":32,"value":826}," for transforming the perspective of\nan image to match the perspective of another image.",{"type":27,"tag":28,"props":828,"children":829},{},[830,831,837],{"type":32,"value":492},{"type":27,"tag":35,"props":832,"children":835},{"href":833,"rel":834},"https://github.com/lostflux/computer-vision/blob/main/psets/02/writeup/main.pdf",[39],[836],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":839},[],"content:projects:computer-vision:3.augmented-reality.md","projects/computer-vision/3.augmented-reality.md",{"_path":843,"_dir":507,"_draft":7,"_partial":7,"_locale":8,"title":844,"description":845,"order":419,"month":11,"year":420,"date":846,"repo":847,"tech":848,"featured":7,"navigation":7,"tag":514,"body":851,"_type":69,"_id":889,"_source":71,"_file":890,"_extension":73},"/projects/linguistics/naive-bayes-copy","Naive Bayes & N-Grams","Implemented text classifiers using naive bayes\nand n-grams,\nboth implemented from scratch, to learn word probabilities in a\ncorpus and classify text documents based on those probabilities.","2024-01-26T00:00:00.000Z","https://github.com/lostflux/linguistics/tree/main/P2",[18,849,850],"Naive Bayes","N-Grams",{"type":24,"children":852,"toc":887},[853,876],{"type":27,"tag":28,"props":854,"children":855},{},[856,858,865,867,874],{"type":32,"value":857},"Implemented text classifiers using ",{"type":27,"tag":35,"props":859,"children":862},{"href":860,"rel":861},"https://en.wikipedia.org/wiki/Naive_Bayes_classifier",[39],[863],{"type":32,"value":864},"naive bayes",{"type":32,"value":866},"\nand ",{"type":27,"tag":35,"props":868,"children":871},{"href":869,"rel":870},"https://en.wikipedia.org/wiki/N-gram",[39],[872],{"type":32,"value":873},"n-grams",{"type":32,"value":875},",\nboth implemented from scratch, to learn word probabilities in a\ncorpus and classify text documents based on those probabilities.",{"type":27,"tag":28,"props":877,"children":878},{},[879,880,886],{"type":32,"value":492},{"type":27,"tag":35,"props":881,"children":884},{"href":882,"rel":883},"https://github.com/lostflux/linguistics/blob/main/P2/report/report.pdf",[39],[885],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":888},[],"content:projects:linguistics:2.naive-bayes copy.md","projects/linguistics/2.naive-bayes copy.md",{"_path":892,"_dir":416,"_draft":7,"_partial":7,"_locale":8,"title":893,"description":894,"order":419,"month":11,"year":420,"date":895,"repo":896,"tech":897,"featured":7,"navigation":7,"tag":426,"body":898,"_type":69,"_id":973,"_source":71,"_file":974,"_extension":73},"/projects/computer-vision/hough-filters","Image Filtering with Hough Transforms","Experimentation with using convolutions and hough transforms\nto detect lines and corners in images.\nTechiniques implemented include:","2024-01-23T00:00:00.000Z","https://github.com/lostflux/computer-vision/tree/main/psets/01",[18,424,425],{"type":24,"children":899,"toc":971},[900,909,960],{"type":27,"tag":28,"props":901,"children":902},{},[903,905,908],{"type":32,"value":904},"Experimentation with using convolutions and hough transforms\nto detect lines and corners in images.",{"type":27,"tag":443,"props":906,"children":907},{},[],{"type":32,"value":447},{"type":27,"tag":449,"props":910,"children":911},{},[912,924,936,948],{"type":27,"tag":453,"props":913,"children":914},{},[915,922],{"type":27,"tag":35,"props":916,"children":919},{"href":917,"rel":918},"https://en.wikipedia.org/wiki/Harris_Corner_Detector",[39],[920],{"type":32,"value":921},"Harris Corner Detection",{"type":32,"value":923},", a method for detecting corners in images\nby identifying regions with high variation in intensity in both the x and y\ndirections.",{"type":27,"tag":453,"props":925,"children":926},{},[927,934],{"type":27,"tag":35,"props":928,"children":931},{"href":929,"rel":930},"https://en.wikipedia.org/wiki/Hough_transform",[39],[932],{"type":32,"value":933},"Hough Line Transform",{"type":32,"value":935},", a method for detecting lines in images by\nmapping points in the image space to lines in the hough space.\nLines are detected by finding intersections in the hough space.",{"type":27,"tag":453,"props":937,"children":938},{},[939,946],{"type":27,"tag":35,"props":940,"children":943},{"href":941,"rel":942},"https://en.wikipedia.org/wiki/Gaussian_blur",[39],[944],{"type":32,"value":945},"Gaussian Smoothing",{"type":32,"value":947},", a method for reducing noise in images by\napplying a gaussian filter to the image.",{"type":27,"tag":453,"props":949,"children":950},{},[951,958],{"type":27,"tag":35,"props":952,"children":955},{"href":953,"rel":954},"https://en.wikipedia.org/wiki/Sobel_operator",[39],[956],{"type":32,"value":957},"Sobel Operator",{"type":32,"value":959},", a method for calculating the gradient of an image\nby convolving the image with a pair of 3x3 kernels.",{"type":27,"tag":28,"props":961,"children":962},{},[963,964,970],{"type":32,"value":492},{"type":27,"tag":35,"props":965,"children":968},{"href":966,"rel":967},"https://github.com/lostflux/computer-vision/blob/main/psets/01/writeup/main.pdf",[39],[969],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":972},[],"content:projects:computer-vision:1.hough-filters.md","projects/computer-vision/1.hough-filters.md",{"_path":976,"_dir":507,"_draft":7,"_partial":7,"_locale":8,"title":977,"description":978,"order":419,"month":11,"year":420,"date":979,"repo":980,"tech":981,"featured":7,"navigation":7,"tag":514,"body":983,"_type":69,"_id":1002,"_source":71,"_file":1003,"_extension":73},"/projects/linguistics/chatbot","Swahili Chatbot with RegEx","Implemented a simple chatbot in Swahili using regular expressions\nto match patterns in the input text\nand generate appropriate responses.\nThe chatbot is able to respond to greetings, questions, and farewells,\nas well as dismissing insults and handling unknown input.","2024-01-12T00:00:00.000Z","https://github.com/lostflux/linguistics/tree/main/P1",[18,982],"RegEx",{"type":24,"children":984,"toc":1000},[985,989],{"type":27,"tag":28,"props":986,"children":987},{},[988],{"type":32,"value":978},{"type":27,"tag":28,"props":990,"children":991},{},[992,993,999],{"type":32,"value":492},{"type":27,"tag":35,"props":994,"children":997},{"href":995,"rel":996},"https://github.com/lostflux/linguistics/blob/main/P1/report/report.pdf",[39],[998],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1001},[],"content:projects:linguistics:1.chatbot.md","projects/linguistics/1.chatbot.md",{"_path":1005,"_dir":1006,"_draft":7,"_partial":7,"_locale":8,"title":1007,"description":1008,"order":419,"month":11,"year":1009,"date":1010,"url":1011,"repo":1012,"tech":1013,"featured":82,"navigation":7,"tag":1016,"body":1017,"_type":69,"_id":1062,"_source":71,"_file":1063,"_extension":73},"/projects/data-mining/ai-transitions-study","data-mining","Societal Attitudes Toward AI","Artificial Intelligence (AI) is a hot topic, especially in light of\nrecent improvements in its capabilities.\nThis research project studies the societal attitudes toward AI,\nboth present and how they have evolved over the years,\nas a way to understand how different events have\nshaped the public's perception of AI.\nWe use topic modeling, sentiment analysis, and procrustes analysis\nto analyze relationships across time periods and extract insight\ninto the changing story of artificial intelligence.\nHere's the studied dataset and the project report.",2023,"2023-11-20T00:00:00.000Z","https://github.com/siavava/data-mining-project/blob/main/report.pdf","https://github.com/siavava/data-mining-project",[18,1014,1015],"LaTeX","NLP","data mining",{"type":24,"children":1018,"toc":1060},[1019,1040],{"type":27,"tag":28,"props":1020,"children":1021},{},[1022,1024,1031,1033,1039],{"type":32,"value":1023},"Artificial Intelligence (AI) is a hot topic, especially in light of\nrecent improvements in its capabilities.\nThis research project studies the societal attitudes toward AI,\nboth present and how they have evolved over the years,\nas a way to understand how different events have\nshaped the public's perception of AI.\nWe use topic modeling, sentiment analysis, and procrustes analysis\nto analyze relationships across time periods and extract insight\ninto the changing story of artificial intelligence.\nHere's the ",{"type":27,"tag":35,"props":1025,"children":1028},{"href":1026,"rel":1027},"https://huggingface.co/datasets/siavava/ai-tech-articles",[39],[1029],{"type":32,"value":1030},"studied dataset",{"type":32,"value":1032}," and the ",{"type":27,"tag":35,"props":1034,"children":1036},{"href":1011,"rel":1035},[39],[1037],{"type":32,"value":1038},"project report",{"type":32,"value":65},{"type":27,"tag":28,"props":1041,"children":1042},{},[1043,1044,1051,1052,1059],{"type":32,"value":56},{"type":27,"tag":35,"props":1045,"children":1048},{"href":1046,"rel":1047},"https://www.linkedin.com/in/aimen-abdulaziz/",[39],[1049],{"type":32,"value":1050},"Aimen Abdulaziz",{"type":32,"value":686},{"type":27,"tag":35,"props":1053,"children":1056},{"href":1054,"rel":1055},"https://www.linkedin.com/in/angelic-mcpherson/",[39],[1057],{"type":32,"value":1058},"Angelic McPherson",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1061},[],"content:projects:data-mining:ai-transitions-study.md","projects/data-mining/ai-transitions-study.md",{"_path":1065,"_dir":1006,"_draft":7,"_partial":7,"_locale":8,"title":1066,"description":1067,"order":419,"month":11,"year":1009,"date":1068,"url":1026,"repo":1069,"tech":1070,"featured":82,"navigation":7,"tag":1016,"body":1073,"_type":69,"_id":1159,"_source":71,"_file":1160,"_extension":73},"/projects/data-mining/ai-tech-dataset","AI / Tech Dataset","I wrote a high-performant web scraper\nin Haskell to scrape 17000+ articles from\nonline technology websites such as\nDeepMind,\nMIT Tech Review,\nOpenAI,\nSingularity Hub, and\nTechCrunch","2023-11-04T00:00:00.000Z","https://github.com/siavava/functional-scraper",[1071,18,1072],"Haskell","Data Mining",{"type":24,"children":1074,"toc":1157},[1075,1120,1141],{"type":27,"tag":28,"props":1076,"children":1077},{},[1078,1080,1087,1088,1095,1096,1103,1104,1111,1113],{"type":32,"value":1079},"I wrote a high-performant web scraper\nin Haskell to scrape 17000+ articles from\nonline technology websites such as\n",{"type":27,"tag":35,"props":1081,"children":1084},{"href":1082,"rel":1083},"https://deepmind.com/",[39],[1085],{"type":32,"value":1086},"DeepMind",{"type":32,"value":220},{"type":27,"tag":35,"props":1089,"children":1092},{"href":1090,"rel":1091},"https://www.technologyreview.com/",[39],[1093],{"type":32,"value":1094},"MIT Tech Review",{"type":32,"value":220},{"type":27,"tag":35,"props":1097,"children":1100},{"href":1098,"rel":1099},"https://openai.com/",[39],[1101],{"type":32,"value":1102},"OpenAI",{"type":32,"value":220},{"type":27,"tag":35,"props":1105,"children":1108},{"href":1106,"rel":1107},"https://singularityhub.com/",[39],[1109],{"type":32,"value":1110},"Singularity Hub",{"type":32,"value":1112},", and\n",{"type":27,"tag":35,"props":1114,"children":1117},{"href":1115,"rel":1116},"https://techcrunch.com/",[39],[1118],{"type":32,"value":1119},"TechCrunch",{"type":27,"tag":28,"props":1121,"children":1122},{},[1123,1125,1132,1134,1140],{"type":32,"value":1124},"The scraper uses ",{"type":27,"tag":35,"props":1126,"children":1129},{"href":1127,"rel":1128},"https://www.cse.chalmers.se/~rjmh/afp-arrows.pdf",[39],[1130],{"type":32,"value":1131},"Arrows",{"type":32,"value":1133}," and other functional programming\npatterns to ensure concurrency and efficiency.\nThe dataset is open-source and available on ",{"type":27,"tag":35,"props":1135,"children":1137},{"href":1026,"rel":1136},[39],[1138],{"type":32,"value":1139},"HuggingFace",{"type":32,"value":65},{"type":27,"tag":28,"props":1142,"children":1143},{},[1144,1145,1150,1151,1156],{"type":32,"value":56},{"type":27,"tag":35,"props":1146,"children":1148},{"href":1046,"rel":1147},[39],[1149],{"type":32,"value":1050},{"type":32,"value":686},{"type":27,"tag":35,"props":1152,"children":1154},{"href":1054,"rel":1153},[39],[1155],{"type":32,"value":1058},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1158},[],"content:projects:data-mining:ai-tech-dataset.md","projects/data-mining/ai-tech-dataset.md",{"_path":1162,"_dir":1163,"_draft":7,"_partial":7,"_locale":8,"title":1164,"description":1165,"order":419,"month":11,"year":1009,"date":1166,"repo":1167,"tech":1168,"category":22,"featured":82,"navigation":7,"tag":1170,"body":1171,"_type":69,"_id":1251,"_source":71,"_file":1252,"_extension":73},"/projects/deep-learning/transfusion","deep-learning","Generative Pre-trained Transformer","For fun, I implemented the Generative Pre-trained Transformer (GPT) architecture\nin PyTorch. GPT is a language model that uses a transformer architecture\nto generate text. I trained the model on the tiny Shakespeare dataset\nand used it to generate text in the style of Shakespeare.","2023-09-17T00:00:00.000Z","https://github.com/siavava/transfusion",[18,675,1169],"Deep Learning","deep learning",{"type":24,"children":1172,"toc":1249},[1173,1195,1200],{"type":27,"tag":28,"props":1174,"children":1175},{},[1176,1178,1184,1186,1193],{"type":32,"value":1177},"For fun, I implemented the ",{"type":27,"tag":35,"props":1179,"children":1182},{"href":1180,"rel":1181},"https://openai.com/research/gpt-4",[39],[1183],{"type":32,"value":1164},{"type":32,"value":1185}," (GPT) architecture\nin PyTorch. GPT is a language model that uses a transformer architecture\nto generate text. I trained the model on the ",{"type":27,"tag":35,"props":1187,"children":1190},{"href":1188,"rel":1189},"https://www.tensorflow.org/datasets/catalog/tiny_shakespeare",[39],[1191],{"type":32,"value":1192},"tiny Shakespeare dataset",{"type":32,"value":1194},"\nand used it to generate text in the style of Shakespeare.",{"type":27,"tag":28,"props":1196,"children":1197},{},[1198],{"type":32,"value":1199},"Transformers are a type of neural network architecture that employes techniques such as:",{"type":27,"tag":449,"props":1201,"children":1202},{},[1203,1215,1227,1238],{"type":27,"tag":453,"props":1204,"children":1205},{},[1206,1213],{"type":27,"tag":35,"props":1207,"children":1210},{"href":1208,"rel":1209},"https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a",[39],[1211],{"type":32,"value":1212},"Self-attention",{"type":32,"value":1214},", which allows the model to learn the relationships\nbetween different parts of the input data.",{"type":27,"tag":453,"props":1216,"children":1217},{},[1218,1225],{"type":27,"tag":35,"props":1219,"children":1222},{"href":1220,"rel":1221},"https://kazemnejad.com/blog/transformer_architecture_positional_encoding/",[39],[1223],{"type":32,"value":1224},"Positional encoding",{"type":32,"value":1226},", which allows the model to learn the\nrelative positions of the input data.",{"type":27,"tag":453,"props":1228,"children":1229},{},[1230,1236],{"type":27,"tag":35,"props":1231,"children":1233},{"href":1208,"rel":1232},[39],[1234],{"type":32,"value":1235},"Multi-head attention",{"type":32,"value":1237},", which allows the model to learn\ndifferent relationships between different parts of the input data.",{"type":27,"tag":453,"props":1239,"children":1240},{},[1241,1247],{"type":27,"tag":35,"props":1242,"children":1244},{"href":1208,"rel":1243},[39],[1245],{"type":32,"value":1246},"Residual connections",{"type":32,"value":1248},", which allows the model to learn\nthe difference between the input data and the output data.",{"title":8,"searchDepth":67,"depth":67,"links":1250},[],"content:projects:deep-learning:transfusion.md","projects/deep-learning/transfusion.md",{"_path":1254,"_dir":1163,"_draft":7,"_partial":7,"_locale":8,"title":1255,"description":1256,"order":419,"month":11,"year":1009,"date":1257,"repo":1258,"tech":1259,"featured":82,"navigation":7,"tag":1170,"body":1260,"_type":69,"_id":1316,"_source":71,"_file":1317,"_extension":73},"/projects/deep-learning/adversarial","Adversarial Training for Neural Networks","Experimentation with various adversarial training techniques for neural networks.\nAdversarial training is useful to improve the robustness of neural networks to\nadversarial attacks — which often happen as noise in the input data.\nTechniques explored include:","2023-05-17T00:00:00.000Z","https://github.com/siavava/deep-learning/tree/main/homeworks/02",[18,675,1169],{"type":24,"children":1261,"toc":1314},[1262,1266],{"type":27,"tag":28,"props":1263,"children":1264},{},[1265],{"type":32,"value":1256},{"type":27,"tag":449,"props":1267,"children":1268},{},[1269,1290,1302],{"type":27,"tag":453,"props":1270,"children":1271},{},[1272,1279,1281,1288],{"type":27,"tag":35,"props":1273,"children":1276},{"href":1274,"rel":1275},"https://www.datacamp.com/tutorial/complete-guide-data-augmentation",[39],[1277],{"type":32,"value":1278},"Data augmentation",{"type":32,"value":1280},", which helps the model have more data to learn from.\nNew samples are generated by randomly cropping and/or flipping some images.\nWe also add ",{"type":27,"tag":35,"props":1282,"children":1285},{"href":1283,"rel":1284},"https://www.sciencedirect.com/science/article/pii/S0167865521002440",[39],[1286],{"type":32,"value":1287},"pertubations",{"type":32,"value":1289},", to a random subset of images,\nwhich helps the model learn to be robust to noise.",{"type":27,"tag":453,"props":1291,"children":1292},{},[1293,1300],{"type":27,"tag":35,"props":1294,"children":1297},{"href":1295,"rel":1296},"https://paperswithcode.com/method/dropout",[39],[1298],{"type":32,"value":1299},"Dropout",{"type":32,"value":1301},", which entails randomly blocking a subset of the neurons in the network\nfrom transmitting information during training. This helps huge models avoid overfitting,\nthus generalize better.",{"type":27,"tag":453,"props":1303,"children":1304},{},[1305,1312],{"type":27,"tag":35,"props":1306,"children":1309},{"href":1307,"rel":1308},"https://www.sciencedirect.com/science/article/pii/S1319157823000228",[39],[1310],{"type":32,"value":1311},"Ensemble learning",{"type":32,"value":1313},", which entails training multiple models on the same dataset\nand then averaging their predictions. This helps the model generalize better\nby mitigating the effects of a single model overfitting.",{"title":8,"searchDepth":67,"depth":67,"links":1315},[],"content:projects:deep-learning:adversarial.md","projects/deep-learning/adversarial.md",{"_path":1319,"_dir":1163,"_draft":7,"_partial":7,"_locale":8,"title":1320,"description":1321,"order":419,"month":11,"year":1009,"date":1322,"repo":1323,"tech":1324,"category":22,"featured":7,"navigation":7,"tag":1170,"body":1325,"_type":69,"_id":1333,"_source":71,"_file":1334,"_extension":73},"/projects/deep-learning/hyperparameter-tuning","Hyperparameter Tuning for Neural Networks","Experimentation with how variations in specific hyperparameters affect the performance of neural networks.\nHyperparameters are parameters that are not learned by the model, but are instead set by the user.\nUsually, such hyperparameters control the learning process of the model.","2023-04-14T00:00:00.000Z","https://github.com/siavava/deep-learning/tree/main/homeworks/01",[18,675,1169],{"type":24,"children":1326,"toc":1331},[1327],{"type":27,"tag":28,"props":1328,"children":1329},{},[1330],{"type":32,"value":1321},{"title":8,"searchDepth":67,"depth":67,"links":1332},[],"content:projects:deep-learning:hyperparameter-tuning.md","projects/deep-learning/hyperparameter-tuning.md",{"_path":1336,"_dir":1163,"_draft":7,"_partial":7,"_locale":8,"title":660,"description":1337,"order":419,"month":11,"year":190,"date":1338,"cover":1339,"url":1340,"repo":1341,"tech":1342,"category":22,"featured":7,"navigation":7,"tag":1170,"body":1344,"_type":69,"_id":1361,"_source":71,"_file":1362,"_extension":73},"/projects/deep-learning/neural-jl","As part of a\npublication exploring the emergence of and the state of the art in machine learning,\nI implemented neural networks to demonstrate\nhow predictions work in the context of simple classification\nand regression problems.","2021-03-15T00:00:00.000Z","featured-neural-networks.gif","https://amittai.space/computing/neural-networks/data-driven-behavior-change","https://github.com/siavava/neural",[1343,1169],"Julia",{"type":24,"children":1345,"toc":1359},[1346],{"type":27,"tag":28,"props":1347,"children":1348},{},[1349,1351,1357],{"type":32,"value":1350},"As part of a\n",{"type":27,"tag":35,"props":1352,"children":1354},{"href":1340,"rel":1353},[39],[1355],{"type":32,"value":1356},"publication exploring the emergence of and the state of the art in machine learning",{"type":32,"value":1358},",\nI implemented neural networks to demonstrate\nhow predictions work in the context of simple classification\nand regression problems.",{"title":8,"searchDepth":67,"depth":67,"links":1360},[],"content:projects:deep-learning:neural-jl.md","projects/deep-learning/neural-jl.md",{"_path":1364,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1365,"description":1366,"order":1367,"date":1368,"cover":1369,"repo":1370,"tech":1371,"category":22,"featured":82,"navigation":7,"tag":6,"body":1376,"_type":69,"_id":1394,"_source":71,"_file":1395,"_extension":73},"/projects/systems/50-tse","Tiny Search Engine","A hyper-efficient search engine\nthat crawls webpages (whose domain can be restricted\nto a given subset) and indexes them,\nthen handles user queries on the contents of the collection of pages,\nwith results ranked by frequency.\nIt also supports query modifiers such as AND, OR,\nand NOT.",5,"2021-05-22T00:00:00.000Z","featured-search-engine.gif","https://github.com/siavava/tse",[1372,1373,1374,1375],"C","Bash","Make","Web Crawling",{"type":24,"children":1377,"toc":1392},[1378],{"type":27,"tag":28,"props":1379,"children":1380},{},[1381,1383,1390],{"type":32,"value":1382},"A hyper-efficient ",{"type":27,"tag":35,"props":1384,"children":1387},{"href":1385,"rel":1386},"https://en.wikipedia.org/wiki/Web_search_engine",[39],[1388],{"type":32,"value":1389},"search engine",{"type":32,"value":1391},"\nthat crawls webpages (whose domain can be restricted\nto a given subset) and indexes them,\nthen handles user queries on the contents of the collection of pages,\nwith results ranked by frequency.\nIt also supports query modifiers such as AND, OR,\nand NOT.",{"title":8,"searchDepth":67,"depth":67,"links":1393},[],"content:projects:systems:50-tse.md","projects/systems/50-tse.md",{"_path":1397,"_dir":1398,"_draft":7,"_partial":7,"_locale":8,"title":1399,"description":1400,"order":1401,"month":383,"year":13,"date":1402,"cover":1403,"repo":1404,"tech":1405,"category":22,"featured":7,"navigation":7,"tag":1408,"body":1409,"_type":69,"_id":1467,"_source":71,"_file":1468,"_extension":73},"/projects/functional/wordle","functional","Wordle, Grep","Wordle and Grep replicas implemented in Haskell,\na pure functional programming language.",6,"2022-03-01T00:00:00.000Z","featured-wordle.gif","https://github.com/siavava/tau",[1071,1406,1407],"Cabal","Functional Programming","functional programming",{"type":24,"children":1410,"toc":1465},[1411,1433,1453],{"type":27,"tag":28,"props":1412,"children":1413},{},[1414,1416,1423,1425,1431],{"type":32,"value":1415},"Wordle and Grep replicas implemented in Haskell,\na ",{"type":27,"tag":35,"props":1417,"children":1420},{"href":1418,"rel":1419},"https://en.wikipedia.org/wiki/Pure_function",[39],[1421],{"type":32,"value":1422},"pure",{"type":32,"value":1424}," ",{"type":27,"tag":35,"props":1426,"children":1429},{"href":1427,"rel":1428},"https://en.wikipedia.org/wiki/Functional_programming",[39],[1430],{"type":32,"value":1408},{"type":32,"value":1432}," language.",{"type":27,"tag":28,"props":1434,"children":1435},{},[1436,1443,1445,1452],{"type":27,"tag":35,"props":1437,"children":1440},{"href":1438,"rel":1439},"https://www.nytimes.com/games/wordle/index.html",[39],[1441],{"type":32,"value":1442},"Wordle",{"type":32,"value":1444},"\nis a program picks a random five-letter word\nout of a corpus then lets the user guess the word,\nproviding feedback at every iteration.\nThe game is won when the full word is guessed,\nusually in at most 5 tries although my version allows\nplaying in infinite mode.\nThe original game was created by ",{"type":27,"tag":35,"props":1446,"children":1449},{"href":1447,"rel":1448},"https://youtu.be/X_e2IEaR4aA?si=6UD8xPwH4fsJJzO2&t=1016",[39],[1450],{"type":32,"value":1451},"Josh Wardle",{"type":32,"value":65},{"type":27,"tag":28,"props":1454,"children":1455},{},[1456,1463],{"type":27,"tag":35,"props":1457,"children":1460},{"href":1458,"rel":1459},"https://www.gnu.org/software/grep/manual/grep.html",[39],[1461],{"type":32,"value":1462},"Grep",{"type":32,"value":1464},"\nis a program that matches a string prompt to a text-stream,\ne.g. from files. Basically, it's Google search for your local file contents.",{"title":8,"searchDepth":67,"depth":67,"links":1466},[],"content:projects:functional:wordle.md","projects/functional/wordle.md",{"_path":1470,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1471,"description":1472,"order":1473,"date":1474,"cover":1475,"repo":1370,"tech":1476,"category":22,"featured":7,"navigation":7,"tag":6,"body":1478,"_type":69,"_id":1528,"_source":71,"_file":1529,"_extension":73},"/projects/systems/50-nuggets","Nuggets Game","A multiplayer command-line game of nuggets.\nPlayers join over web sockets.\nThe maze is gradually revealed to each player as they view\ndifferent sectors of it.\nThe game ends when all the nuggets are collected,\nand the player with the most nuggets wins.",7,"2021-06-02T00:00:00.000Z","featured-nuggets.gif",[1372,1373,1374,1477],"Web Sockets",{"type":24,"children":1479,"toc":1526},[1480,1503,1506],{"type":27,"tag":28,"props":1481,"children":1482},{},[1483,1485,1492,1494,1501],{"type":32,"value":1484},"A multiplayer command-line game of ",{"type":27,"tag":35,"props":1486,"children":1489},{"href":1487,"rel":1488},"https://en.wikipedia.org/wiki/Nuggets_(game)",[39],[1490],{"type":32,"value":1491},"nuggets",{"type":32,"value":1493},".\nPlayers join over ",{"type":27,"tag":35,"props":1495,"children":1498},{"href":1496,"rel":1497},"https://en.wikipedia.org/wiki/WebSocket",[39],[1499],{"type":32,"value":1500},"web sockets",{"type":32,"value":1502},".\nThe maze is gradually revealed to each player as they view\ndifferent sectors of it.\nThe game ends when all the nuggets are collected,\nand the player with the most nuggets wins.",{"type":27,"tag":443,"props":1504,"children":1505},{},[],{"type":27,"tag":28,"props":1507,"children":1508},{},[1509,1510,1517,1518,1525],{"type":32,"value":56},{"type":27,"tag":35,"props":1511,"children":1514},{"href":1512,"rel":1513},"https://www.linkedin.com/in/alphonso-bradham",[39],[1515],{"type":32,"value":1516},"Alphonso Bradham",{"type":32,"value":866},{"type":27,"tag":35,"props":1519,"children":1522},{"href":1520,"rel":1521},"https://in.linkedin.com/in/zimehr-abbasi-aa8865154",[39],[1523],{"type":32,"value":1524},"Zimehr Abbasi",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1527},[],"content:projects:systems:50-nuggets.md","projects/systems/50-nuggets.md",{"_path":1531,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1533,"description":1534,"date":1535,"url":1536,"repo":1537,"tech":1538,"featured":7,"navigation":7,"tag":1542,"body":1543,"_type":69,"_id":1551,"_source":71,"_file":1552,"_extension":73},"/projects/web/discite-web","web","Discite Website","Built a landing-page and documentation website\nfor my Computer Science senior design challenge project.","2023-11-14T00:00:00.000Z","https://discite-website.vercel.app/docs/architecture","https://github.com/siavava/discite-website",[1539,1540,1541],"Nuxt","TypeScript","Sass","design / web",{"type":24,"children":1544,"toc":1549},[1545],{"type":27,"tag":28,"props":1546,"children":1547},{},[1548],{"type":32,"value":1534},{"title":8,"searchDepth":67,"depth":67,"links":1550},[],"content:projects:web:discite-web.md","projects/web/discite-web.md",{"_path":1554,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1555,"description":1556,"date":1557,"url":1558,"repo":1559,"tech":1560,"featured":7,"navigation":7,"tag":1542,"body":1563,"_type":69,"_id":1588,"_source":71,"_file":1589,"_extension":73},"/projects/web/slides","Dev Slides","Designed my presentation platform website for my dev work and related stuff.\nBuilt with Vue and deployed on Vercel.","2023-10-22T00:00:00.000Z","https://slides.amittai.studio","https://github.com/siavava/slides",[1561,1540,1562],"design","Vue",{"type":24,"children":1564,"toc":1586},[1565],{"type":27,"tag":28,"props":1566,"children":1567},{},[1568,1570,1576,1578,1585],{"type":32,"value":1569},"Designed my presentation platform website for my dev work and related stuff.\nBuilt with ",{"type":27,"tag":35,"props":1571,"children":1574},{"href":1572,"rel":1573},"https://vuejs.org",[39],[1575],{"type":32,"value":1562},{"type":32,"value":1577}," and deployed on ",{"type":27,"tag":35,"props":1579,"children":1582},{"href":1580,"rel":1581},"https://vercel.com",[39],[1583],{"type":32,"value":1584},"Vercel",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1587},[],"content:projects:web:slides.md","projects/web/slides.md",{"_path":1591,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1592,"description":1593,"date":1594,"repo":1595,"tech":1596,"featured":7,"navigation":7,"tag":1542,"body":1599,"_type":69,"_id":1655,"_source":71,"_file":1656,"_extension":73},"/projects/web/rust-api","Rust API","It is straightforward to build a REST API in TypeScript using Express.\nAs a proof-of-concept for an upcoming project, I tried out\nbuilding a REST API in Rust using Rocket.\nRust is advantageous since it offers C-like performance\nwithout the associated memory safety issues.\nThe API has a database backend using MongoDB.","2023-10-09T00:00:00.000Z","https://github.com/entends/flux-end",[1597,1598,19],"Rust","Rocket",{"type":24,"children":1600,"toc":1653},[1601,1645],{"type":27,"tag":28,"props":1602,"children":1603},{},[1604,1606,1612,1614,1621,1623,1629,1630,1636,1638,1644],{"type":32,"value":1605},"It is straightforward to build a REST API in ",{"type":27,"tag":35,"props":1607,"children":1610},{"href":1608,"rel":1609},"https://www.typescriptlang.org",[39],[1611],{"type":32,"value":1540},{"type":32,"value":1613}," using ",{"type":27,"tag":35,"props":1615,"children":1618},{"href":1616,"rel":1617},"https://expressjs.com",[39],[1619],{"type":32,"value":1620},"Express",{"type":32,"value":1622},".\nAs a proof-of-concept for an upcoming project, I tried out\nbuilding a REST API in ",{"type":27,"tag":35,"props":1624,"children":1627},{"href":1625,"rel":1626},"https://www.rust-lang.org",[39],[1628],{"type":32,"value":1597},{"type":32,"value":1613},{"type":27,"tag":35,"props":1631,"children":1634},{"href":1632,"rel":1633},"https://rocket.rs",[39],[1635],{"type":32,"value":1598},{"type":32,"value":1637},".\nRust is advantageous since it offers C-like performance\nwithout the associated memory safety issues.\nThe API has a database backend using ",{"type":27,"tag":35,"props":1639,"children":1642},{"href":1640,"rel":1641},"https://www.mongodb.com",[39],[1643],{"type":32,"value":19},{"type":32,"value":65},{"type":27,"tag":28,"props":1646,"children":1647},{},[1648],{"type":27,"tag":544,"props":1649,"children":1650},{},[1651],{"type":32,"value":1652},"This project is part of a bigger personal project that's in the works — stay tuned!",{"title":8,"searchDepth":67,"depth":67,"links":1654},[],"content:projects:web:rust-api.md","projects/web/rust-api.md",{"_path":1658,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1659,"description":1660,"date":1661,"url":1662,"repo":1663,"tech":1664,"featured":7,"navigation":7,"tag":1542,"body":1665,"_type":69,"_id":1718,"_source":71,"_file":1719,"_extension":73},"/projects/web/blog","Blog","New blog website design and, along with it, a new domain!\nBuilt with Nuxt/Vue and SCSS.\nDeployed on Netlify.","2023-08-21T00:00:00.000Z","https://amittai.space","https://github.com/lostflux/blog",[1539,1540,1541],{"type":24,"children":1666,"toc":1716},[1667,1703],{"type":27,"tag":28,"props":1668,"children":1669},{},[1670,1672,1678,1680,1685,1686,1693,1695,1702],{"type":32,"value":1671},"New blog website design and, along with it, a new domain!\nBuilt with ",{"type":27,"tag":35,"props":1673,"children":1676},{"href":1674,"rel":1675},"https://nuxt.com",[39],[1677],{"type":32,"value":1539},{"type":32,"value":1679},"/",{"type":27,"tag":35,"props":1681,"children":1683},{"href":1572,"rel":1682},[39],[1684],{"type":32,"value":1562},{"type":32,"value":686},{"type":27,"tag":35,"props":1687,"children":1690},{"href":1688,"rel":1689},"https://sass-lang.com",[39],[1691],{"type":32,"value":1692},"SCSS",{"type":32,"value":1694},".\nDeployed on ",{"type":27,"tag":35,"props":1696,"children":1699},{"href":1697,"rel":1698},"https://netlify.com",[39],[1700],{"type":32,"value":1701},"Netlify",{"type":32,"value":65},{"type":27,"tag":28,"props":1704,"children":1705},{},[1706,1708,1715],{"type":32,"value":1707},"Design inspired by ",{"type":27,"tag":35,"props":1709,"children":1712},{"href":1710,"rel":1711},"https://minimalism.com",[39],[1713],{"type":32,"value":1714},"the ideals of minimalism",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1717},[],"content:projects:web:blog.md","projects/web/blog.md",{"_path":1721,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1722,"description":1723,"date":1661,"url":1724,"repo":1725,"tech":1726,"featured":7,"navigation":7,"tag":1542,"body":1727,"_type":69,"_id":1770,"_source":71,"_file":1771,"_extension":73},"/projects/web/resume","Portfolio","New website design and, along with it, a new domain!\nBuilt with Nuxt/Vue and SCSS.\nDeployed on Netlify.","https://amittai.studio","https://github.com/siavava/amittai.studio",[1539,1540,1692],{"type":24,"children":1728,"toc":1768},[1729,1758],{"type":27,"tag":28,"props":1730,"children":1731},{},[1732,1734,1739,1740,1745,1746,1751,1752,1757],{"type":32,"value":1733},"New website design and, along with it, a new domain!\nBuilt with ",{"type":27,"tag":35,"props":1735,"children":1737},{"href":1674,"rel":1736},[39],[1738],{"type":32,"value":1539},{"type":32,"value":1679},{"type":27,"tag":35,"props":1741,"children":1743},{"href":1572,"rel":1742},[39],[1744],{"type":32,"value":1562},{"type":32,"value":686},{"type":27,"tag":35,"props":1747,"children":1749},{"href":1688,"rel":1748},[39],[1750],{"type":32,"value":1692},{"type":32,"value":1694},{"type":27,"tag":35,"props":1753,"children":1755},{"href":1697,"rel":1754},[39],[1756],{"type":32,"value":1701},{"type":32,"value":65},{"type":27,"tag":28,"props":1759,"children":1760},{},[1761,1762,1767],{"type":32,"value":1707},{"type":27,"tag":35,"props":1763,"children":1765},{"href":1710,"rel":1764},[39],[1766],{"type":32,"value":1714},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1769},[],"content:projects:web:resume.md","projects/web/resume.md",{"_path":1773,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1774,"description":1775,"date":1776,"url":1777,"repo":1778,"tech":1779,"featured":7,"navigation":7,"tag":1542,"body":1781,"_type":69,"_id":1817,"_source":71,"_file":1818,"_extension":73},"/projects/web/dartmouth-robotics","Dartmouth Robotics Club Website","New website design for the Dartmouth Robotics Club.\nBuilt with Next/React and SCSS.\nDeployed on Vercel.","2023-08-10T00:00:00.000Z","https://dartmouthrobotics.com","https://github.com/siavava/robotics-website",[1561,1540,1780],"Next",{"type":24,"children":1782,"toc":1815},[1783],{"type":27,"tag":28,"props":1784,"children":1785},{},[1786,1788,1794,1795,1802,1803,1808,1809,1814],{"type":32,"value":1787},"New website design for the Dartmouth Robotics Club.\nBuilt with ",{"type":27,"tag":35,"props":1789,"children":1792},{"href":1790,"rel":1791},"https://nextjs.org",[39],[1793],{"type":32,"value":1780},{"type":32,"value":1679},{"type":27,"tag":35,"props":1796,"children":1799},{"href":1797,"rel":1798},"https://reactjs.org",[39],[1800],{"type":32,"value":1801},"React",{"type":32,"value":686},{"type":27,"tag":35,"props":1804,"children":1806},{"href":1688,"rel":1805},[39],[1807],{"type":32,"value":1692},{"type":32,"value":1694},{"type":27,"tag":35,"props":1810,"children":1812},{"href":1580,"rel":1811},[39],[1813],{"type":32,"value":1584},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1816},[],"content:projects:web:dartmouth-robotics.md","projects/web/dartmouth-robotics.md",{"_path":1820,"_dir":1821,"_draft":7,"_partial":7,"_locale":8,"title":1822,"description":1823,"date":1824,"url":1825,"tech":1826,"featured":7,"navigation":7,"tag":1829,"body":1830,"_type":69,"_id":1838,"_source":71,"_file":1839,"_extension":73},"/projects/algorithms/leetcode","algorithms","Leetcode Challenges","To keep my coding skills sharp, I solve a few Leetcode challenges every week.\nI also make a point to write up the solutions and explanations\nso a future, forgetful me can review them.","2023-08-01T00:00:00.000Z","https://leetcode.com/siavava",[1827,1828],"Algorithms","System Design","data structures and algorithms",{"type":24,"children":1831,"toc":1836},[1832],{"type":27,"tag":28,"props":1833,"children":1834},{},[1835],{"type":32,"value":1823},{"title":8,"searchDepth":67,"depth":67,"links":1837},[],"content:projects:algorithms:leetcode.md","projects/algorithms/leetcode.md",{"_path":1841,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1842,"description":1843,"date":1844,"url":1845,"repo":1846,"tech":1847,"featured":7,"navigation":7,"tag":1542,"body":1849,"_type":69,"_id":1919,"_source":71,"_file":1920,"_extension":73},"/projects/web/networking","Networking Platform","Networking and job applications management platform for college students.","2023-06-03T00:00:00.000Z","https://net.amittai.studio","https://github.com/siavava/networking-platform",[1801,1848,19,1541],"Redux",{"type":24,"children":1850,"toc":1917},[1851,1855,1881],{"type":27,"tag":28,"props":1852,"children":1853},{},[1854],{"type":32,"value":1843},{"type":27,"tag":28,"props":1856,"children":1857},{},[1858,1860,1865,1866,1871,1873,1880],{"type":32,"value":1859},"Built with ",{"type":27,"tag":35,"props":1861,"children":1863},{"href":1797,"rel":1862},[39],[1864],{"type":32,"value":1801},{"type":32,"value":211},{"type":27,"tag":35,"props":1867,"children":1869},{"href":1608,"rel":1868},[39],[1870],{"type":32,"value":1540},{"type":32,"value":1872},", and built with ",{"type":27,"tag":35,"props":1874,"children":1877},{"href":1875,"rel":1876},"https://vitejs.dev",[39],[1878],{"type":32,"value":1879},"Vite",{"type":32,"value":65},{"type":27,"tag":28,"props":1882,"children":1883},{},[1884,1885,1892,1893,1900,1901,1908,1909,1916],{"type":32,"value":56},{"type":27,"tag":35,"props":1886,"children":1889},{"href":1887,"rel":1888},"https://www.linkedin.com/in/bansharee-ireen-184712274/",[39],[1890],{"type":32,"value":1891},"Bansharee Ireen",{"type":32,"value":211},{"type":27,"tag":35,"props":1894,"children":1897},{"href":1895,"rel":1896},"https://www.linkedin.com/in/yizhen-zhen/",[39],[1898],{"type":32,"value":1899},"Yizhen Zhen",{"type":32,"value":211},{"type":27,"tag":35,"props":1902,"children":1905},{"href":1903,"rel":1904},"https://www.linkedin.com/in/cindylwang/",[39],[1906],{"type":32,"value":1907},"Cindy Li Wang",{"type":32,"value":261},{"type":27,"tag":35,"props":1910,"children":1913},{"href":1911,"rel":1912},"https://www.linkedin.com/in/johan-cruz-hernandez-2204b9183/",[39],[1914],{"type":32,"value":1915},"Johan Cruz Hernandez",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1918},[],"content:projects:web:networking.md","projects/web/networking.md",{"_path":1922,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1923,"description":1924,"date":1925,"url":1926,"repo":1927,"tech":1928,"featured":7,"navigation":7,"tag":1542,"body":1929,"_type":69,"_id":1970,"_source":71,"_file":1971,"_extension":73},"/projects/web/mnml-yt","Minimal Youtube Player","A minimal Youtube player that lets you watch videos without distractions.\nBuilt with React, TypeScript, Sass,\nand the Youtube Data API.","2023-05-13T00:00:00.000Z","https://mnml-yt.amittai.studio","https://github.com/siavava/mnml-yt",[1561,1801,1540,1541],{"type":24,"children":1930,"toc":1968},[1931],{"type":27,"tag":28,"props":1932,"children":1933},{},[1934,1936,1939,1941,1946,1947,1952,1953,1958,1960,1967],{"type":32,"value":1935},"A minimal Youtube player that lets you watch videos without distractions.",{"type":27,"tag":443,"props":1937,"children":1938},{},[],{"type":32,"value":1940},"\nBuilt with ",{"type":27,"tag":35,"props":1942,"children":1944},{"href":1797,"rel":1943},[39],[1945],{"type":32,"value":1801},{"type":32,"value":211},{"type":27,"tag":35,"props":1948,"children":1950},{"href":1608,"rel":1949},[39],[1951],{"type":32,"value":1540},{"type":32,"value":211},{"type":27,"tag":35,"props":1954,"children":1956},{"href":1688,"rel":1955},[39],[1957],{"type":32,"value":1541},{"type":32,"value":1959},",\nand the ",{"type":27,"tag":35,"props":1961,"children":1964},{"href":1962,"rel":1963},"https://developers.google.com/youtube/v3",[39],[1965],{"type":32,"value":1966},"Youtube Data API",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":1969},[],"content:projects:web:mnml-yt.md","projects/web/mnml-yt.md",{"_path":1973,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":1974,"description":1975,"date":1976,"url":1977,"repo":1978,"tech":1979,"featured":7,"navigation":7,"tag":1542,"body":1981,"_type":69,"_id":2012,"_source":71,"_file":2013,"_extension":73},"/projects/web/posts-platform","Posts Platform","Post-it-note style platform for organizing your thoughts and ideas.","2023-05-10T00:00:00.000Z","https://posts-platform.amittai.studio","https://github.com/siavava/posts-platform",[1561,1801,1980,1541,19],"JavaScript",{"type":24,"children":1982,"toc":2010},[1983,1987],{"type":27,"tag":28,"props":1984,"children":1985},{},[1986],{"type":32,"value":1975},{"type":27,"tag":28,"props":1988,"children":1989},{},[1990,1991,1996,1997,2003,2004,2009],{"type":32,"value":1859},{"type":27,"tag":35,"props":1992,"children":1994},{"href":1797,"rel":1993},[39],[1995],{"type":32,"value":1801},{"type":32,"value":211},{"type":27,"tag":35,"props":1998,"children":2001},{"href":1999,"rel":2000},"https://www.javascript.com",[39],[2002],{"type":32,"value":1980},{"type":32,"value":261},{"type":27,"tag":35,"props":2005,"children":2007},{"href":1688,"rel":2006},[39],[2008],{"type":32,"value":1541},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2011},[],"content:projects:web:posts-platform.md","projects/web/posts-platform.md",{"_path":2015,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2016,"description":2017,"date":2018,"url":2019,"repo":2020,"tech":2021,"featured":7,"navigation":7,"tag":1542,"body":2023,"_type":69,"_id":2061,"_source":71,"_file":2062,"_extension":73},"/projects/web/kahoots-api","Kahoots API","An API endpoint that supports the standard game of Kahoots.","2023-05-04T00:00:00.000Z","https://kahoots-api.amittai.studio","https://github.com/siavava/kahoots-api",[1540,1620,2022],"Node",{"type":24,"children":2024,"toc":2059},[2025,2029],{"type":27,"tag":28,"props":2026,"children":2027},{},[2028],{"type":32,"value":2017},{"type":27,"tag":28,"props":2030,"children":2031},{},[2032,2033,2038,2039,2044,2045,2051,2053,2058],{"type":32,"value":1859},{"type":27,"tag":35,"props":2034,"children":2036},{"href":1608,"rel":2035},[39],[2037],{"type":32,"value":1540},{"type":32,"value":211},{"type":27,"tag":35,"props":2040,"children":2042},{"href":1616,"rel":2041},[39],[2043],{"type":32,"value":1620},{"type":32,"value":686},{"type":27,"tag":35,"props":2046,"children":2049},{"href":2047,"rel":2048},"https://nodejs.org",[39],[2050],{"type":32,"value":2022},{"type":32,"value":2052},"\nData stored on ",{"type":27,"tag":35,"props":2054,"children":2056},{"href":1640,"rel":2055},[39],[2057],{"type":32,"value":19},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2060},[],"content:projects:web:kahoots-api.md","projects/web/kahoots-api.md",{"_path":2064,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2065,"description":2066,"date":2067,"url":2068,"repo":2069,"tech":2070,"featured":7,"navigation":7,"tag":1542,"body":2072,"_type":69,"_id":2102,"_source":71,"_file":2103,"_extension":73},"/projects/web/notes-platform","Notes Platform","Interactive notepad for organizing your thoughts.","2023-05-03T00:00:00.000Z","https://notes-platform.amittai.studio","https://github.com/siavava/notes-platform",[1561,1801,1980,1541,2071],"Firebase",{"type":24,"children":2073,"toc":2100},[2074,2078],{"type":27,"tag":28,"props":2075,"children":2076},{},[2077],{"type":32,"value":2066},{"type":27,"tag":28,"props":2079,"children":2080},{},[2081,2082,2087,2088,2093,2094,2099],{"type":32,"value":1859},{"type":27,"tag":35,"props":2083,"children":2085},{"href":1797,"rel":2084},[39],[2086],{"type":32,"value":1801},{"type":32,"value":211},{"type":27,"tag":35,"props":2089,"children":2091},{"href":1999,"rel":2090},[39],[2092],{"type":32,"value":1980},{"type":32,"value":261},{"type":27,"tag":35,"props":2095,"children":2097},{"href":1688,"rel":2096},[39],[2098],{"type":32,"value":1541},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2101},[],"content:projects:web:notes-platform.md","projects/web/notes-platform.md",{"_path":2105,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2106,"description":2017,"date":2067,"url":2107,"repo":2108,"tech":2109,"featured":7,"navigation":7,"tag":1542,"body":2110,"_type":69,"_id":2147,"_source":71,"_file":2148,"_extension":73},"/projects/web/platform-api","Posts Platform API","https://platform-api.amittai.studio","https://github.com/siavava/platform-api",[1540,1620,2022,19],{"type":24,"children":2111,"toc":2145},[2112,2116],{"type":27,"tag":28,"props":2113,"children":2114},{},[2115],{"type":32,"value":2017},{"type":27,"tag":28,"props":2117,"children":2118},{},[2119,2120,2125,2126,2131,2132,2137,2139,2144],{"type":32,"value":1859},{"type":27,"tag":35,"props":2121,"children":2123},{"href":1608,"rel":2122},[39],[2124],{"type":32,"value":1540},{"type":32,"value":211},{"type":27,"tag":35,"props":2127,"children":2129},{"href":1616,"rel":2128},[39],[2130],{"type":32,"value":1620},{"type":32,"value":686},{"type":27,"tag":35,"props":2133,"children":2135},{"href":2047,"rel":2134},[39],[2136],{"type":32,"value":2022},{"type":32,"value":2138},".\nData stored on ",{"type":27,"tag":35,"props":2140,"children":2142},{"href":1640,"rel":2141},[39],[2143],{"type":32,"value":19},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2146},[],"content:projects:web:platform-api.md","projects/web/platform-api.md",{"_path":2150,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2151,"description":2152,"date":2153,"url":2154,"repo":2155,"tech":2156,"featured":7,"navigation":7,"tag":1542,"body":2159,"_type":69,"_id":2210,"_source":71,"_file":2211,"_extension":73},"/projects/web/buzzquiz","BuzzQuiz","BuzzFeed-style quiz for movie recs!","2023-04-24T00:00:00.000Z","https://buzzquiz.amittai.studio","https://github.com/siavava/buzzquiz",[1561,2157,2158,1980],"HTML","CSS",{"type":24,"children":2160,"toc":2208},[2161,2173],{"type":27,"tag":28,"props":2162,"children":2163},{},[2164,2171],{"type":27,"tag":35,"props":2165,"children":2168},{"href":2166,"rel":2167},"https://www.buzzfeed.com",[39],[2169],{"type":32,"value":2170},"BuzzFeed",{"type":32,"value":2172},"-style quiz for movie recs!",{"type":27,"tag":28,"props":2174,"children":2175},{},[2176,2178,2184,2185,2191,2192,2197,2199,2206],{"type":32,"value":2177},"Built with vanilla ",{"type":27,"tag":35,"props":2179,"children":2182},{"href":2180,"rel":2181},"https://developer.mozilla.org/en-US/docs/Web/HTML",[39],[2183],{"type":32,"value":2157},{"type":32,"value":211},{"type":27,"tag":35,"props":2186,"children":2189},{"href":2187,"rel":2188},"https://developer.mozilla.org/en-US/docs/Web/CSS",[39],[2190],{"type":32,"value":2158},{"type":32,"value":261},{"type":27,"tag":35,"props":2193,"children":2195},{"href":1999,"rel":2194},[39],[2196],{"type":32,"value":1980},{"type":32,"value":2198},",\nwith a lot of ",{"type":27,"tag":35,"props":2200,"children":2203},{"href":2201,"rel":2202},"https://jquery.com",[39],[2204],{"type":32,"value":2205},"jQuery",{"type":32,"value":2207}," sprinkled in.",{"title":8,"searchDepth":67,"depth":67,"links":2209},[],"content:projects:web:buzzquiz.md","projects/web/buzzquiz.md",{"_path":2213,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2214,"description":2215,"date":2216,"url":2217,"repo":2218,"tech":2219,"featured":7,"navigation":7,"tag":1542,"body":2220,"_type":69,"_id":2267,"_source":71,"_file":2268,"_extension":73},"/projects/web/tictoc","TicToc","Apple-inspired timer that shows quotes from\nFoundation, my favorite TV show.","2023-04-23T00:00:00.000Z","https://tictoc.amittai.studio","https://github.com/siavava/tictoc",[1561,1540,1541],{"type":24,"children":2221,"toc":2265},[2222,2243],{"type":27,"tag":28,"props":2223,"children":2224},{},[2225,2232,2234,2241],{"type":27,"tag":35,"props":2226,"children":2229},{"href":2227,"rel":2228},"https://apple.com",[39],[2230],{"type":32,"value":2231},"Apple",{"type":32,"value":2233},"-inspired timer that shows quotes from\n",{"type":27,"tag":35,"props":2235,"children":2238},{"href":2236,"rel":2237},"https://en.wikipedia.org/wiki/Foundation_(TV_series)",[39],[2239],{"type":32,"value":2240},"Foundation",{"type":32,"value":2242},", my favorite TV show.",{"type":27,"tag":28,"props":2244,"children":2245},{},[2246,2247,2252,2253,2258,2259,2264],{"type":32,"value":2177},{"type":27,"tag":35,"props":2248,"children":2250},{"href":2180,"rel":2249},[39],[2251],{"type":32,"value":2157},{"type":32,"value":211},{"type":27,"tag":35,"props":2254,"children":2256},{"href":2187,"rel":2255},[39],[2257],{"type":32,"value":2158},{"type":32,"value":261},{"type":27,"tag":35,"props":2260,"children":2262},{"href":1608,"rel":2261},[39],[2263],{"type":32,"value":1540},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2266},[],"content:projects:web:tictoc.md","projects/web/tictoc.md",{"_path":2270,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2271,"description":2272,"date":2273,"url":2274,"repo":2275,"tech":2276,"featured":7,"navigation":7,"tag":1542,"body":2279,"_type":69,"_id":2318,"_source":71,"_file":2319,"_extension":73},"/projects/web/jekyll","Jekyll Blog","A minimal blog demo using Jekyll.","2023-04-13T00:00:00.000Z","https://jekyll-blog.amittai.studio","https://github.com/siavava/jekyll-blog",[1561,2277,2278,1541],"Jekyll","Ruby",{"type":24,"children":2280,"toc":2316},[2281,2293],{"type":27,"tag":28,"props":2282,"children":2283},{},[2284,2286,2292],{"type":32,"value":2285},"A minimal blog demo using ",{"type":27,"tag":35,"props":2287,"children":2290},{"href":2288,"rel":2289},"https://jekyllrb.com",[39],[2291],{"type":32,"value":2277},{"type":32,"value":65},{"type":27,"tag":28,"props":2294,"children":2295},{},[2296,2297,2302,2303,2309,2310,2315],{"type":32,"value":1859},{"type":27,"tag":35,"props":2298,"children":2300},{"href":2288,"rel":2299},[39],[2301],{"type":32,"value":2277},{"type":32,"value":211},{"type":27,"tag":35,"props":2304,"children":2307},{"href":2305,"rel":2306},"https://www.ruby-lang.org",[39],[2308],{"type":32,"value":2278},{"type":32,"value":261},{"type":27,"tag":35,"props":2311,"children":2313},{"href":1688,"rel":2312},[39],[2314],{"type":32,"value":1541},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2317},[],"content:projects:web:jekyll.md","projects/web/jekyll.md",{"_path":2321,"_dir":1532,"_draft":7,"_partial":7,"_locale":8,"title":2322,"description":2323,"date":2324,"url":2325,"repo":2326,"tech":2327,"featured":7,"navigation":7,"tag":1542,"body":2328,"_type":69,"_id":2361,"_source":71,"_file":2362,"_extension":73},"/projects/web/blog.v1","Blog v1","The first iteration of my personal blog/portfolio.\nBuilt with Nuxt/Vue and SCSS.\nDeployed on Netlify.","2023-02-11T00:00:00.000Z","https://v1.amittai.studio","https://github.com/centauri-1/blog.v1",[1561,1540,1539],{"type":24,"children":2329,"toc":2359},[2330],{"type":27,"tag":28,"props":2331,"children":2332},{},[2333,2335,2340,2341,2346,2347,2352,2353,2358],{"type":32,"value":2334},"The first iteration of my personal blog/portfolio.\nBuilt with ",{"type":27,"tag":35,"props":2336,"children":2338},{"href":1674,"rel":2337},[39],[2339],{"type":32,"value":1539},{"type":32,"value":1679},{"type":27,"tag":35,"props":2342,"children":2344},{"href":1572,"rel":2343},[39],[2345],{"type":32,"value":1562},{"type":32,"value":686},{"type":27,"tag":35,"props":2348,"children":2350},{"href":1688,"rel":2349},[39],[2351],{"type":32,"value":1692},{"type":32,"value":1694},{"type":27,"tag":35,"props":2354,"children":2356},{"href":1697,"rel":2355},[39],[2357],{"type":32,"value":1701},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":2360},[],"content:projects:web:blog.v1.md","projects/web/blog.v1.md",{"_path":2364,"_dir":2365,"_draft":7,"_partial":7,"_locale":8,"title":2366,"description":2367,"date":2368,"repo":2369,"tech":2370,"featured":7,"navigation":7,"tag":2372,"body":2373,"_type":69,"_id":2399,"_source":71,"_file":2400,"_extension":73},"/projects/ml/ml-ridge-lasso","ml","Linear Regression Classifiers","Using ridge regression and lasso regression\nmodels to find an optimal learning strategy for a given set of data.","2022-05-02T00:00:00.000Z","https://github.com/siavava/ml/blob/main/HW2/HW2.ipynb",[18,2371],"Machine Learning","machine learning",{"type":24,"children":2374,"toc":2397},[2375],{"type":27,"tag":28,"props":2376,"children":2377},{},[2378,2380,2387,2388,2395],{"type":32,"value":2379},"Using ",{"type":27,"tag":35,"props":2381,"children":2384},{"href":2382,"rel":2383},"https://en.wikipedia.org/wiki/Tikhonov_regularization",[39],[2385],{"type":32,"value":2386},"ridge regression",{"type":32,"value":686},{"type":27,"tag":35,"props":2389,"children":2392},{"href":2390,"rel":2391},"https://en.wikipedia.org/wiki/Lasso_(statistics)",[39],[2393],{"type":32,"value":2394},"lasso regression",{"type":32,"value":2396},"\nmodels to find an optimal learning strategy for a given set of data.",{"title":8,"searchDepth":67,"depth":67,"links":2398},[],"content:projects:ml:ml-ridge-lasso.md","projects/ml/ml-ridge-lasso.md",{"_path":2402,"_dir":2365,"_draft":7,"_partial":7,"_locale":8,"title":2403,"description":2404,"date":2405,"repo":2406,"tech":2407,"featured":7,"navigation":7,"tag":2372,"body":2408,"_type":69,"_id":2426,"_source":71,"_file":2427,"_extension":73},"/projects/ml/ml-gradient-descent","Gradient Descent","Using regression models to classify provided data.\nThe models are not pre-trained, se we use gradient descent\nto find the optimal parameters for the model.","2022-04-21T00:00:00.000Z","https://github.com/siavava/ml/blob/main/HW1/HW1_cosc74.ipynb",[18,2371],{"type":24,"children":2409,"toc":2424},[2410],{"type":27,"tag":28,"props":2411,"children":2412},{},[2413,2415,2422],{"type":32,"value":2414},"Using regression models to classify provided data.\nThe models are not pre-trained, se we use ",{"type":27,"tag":35,"props":2416,"children":2419},{"href":2417,"rel":2418},"https://en.wikipedia.org/wiki/Gradient_descent",[39],[2420],{"type":32,"value":2421},"gradient descent",{"type":32,"value":2423},"\nto find the optimal parameters for the model.",{"title":8,"searchDepth":67,"depth":67,"links":2425},[],"content:projects:ml:ml-gradient-descent.md","projects/ml/ml-gradient-descent.md",{"_path":2429,"_dir":2430,"_draft":7,"_partial":7,"_locale":8,"title":2431,"description":2432,"date":2433,"repo":2434,"tech":2435,"featured":7,"navigation":7,"tag":2439,"body":2440,"_type":69,"_id":2458,"_source":71,"_file":2459,"_extension":73},"/projects/visual/89-position-based-dynamics","visual","Position-Based Dynamics","Using a position-based system with constraints (instead of the more common mass-spring model)\nto simulate bodies. The method, as described in\nthis paper,\noffers several advantages over the mass-spring model\nincluding being more generalizable to other scenarios and\nrequiring less computation to simulate a body.","2022-03-14T00:00:00.000Z","https://github.com/siavava/PhysX/tree/cleaned-up-proj/proj/a1_mass_spring",[2436,2437,2438],"C++","Visual Computing","Physical Simulation","visual computing",{"type":24,"children":2441,"toc":2456},[2442],{"type":27,"tag":28,"props":2443,"children":2444},{},[2445,2447,2454],{"type":32,"value":2446},"Using a position-based system with constraints (instead of the more common mass-spring model)\nto simulate bodies. The method, as described in\n",{"type":27,"tag":35,"props":2448,"children":2451},{"href":2449,"rel":2450},"https://matthias-research.github.io/pages/publications/posBasedDyn.pdf",[39],[2452],{"type":32,"value":2453},"this paper",{"type":32,"value":2455},",\noffers several advantages over the mass-spring model\nincluding being more generalizable to other scenarios and\nrequiring less computation to simulate a body.",{"title":8,"searchDepth":67,"depth":67,"links":2457},[],"content:projects:visual:89-position-based-dynamics.md","projects/visual/89-position-based-dynamics.md",{"_path":2461,"_dir":2430,"_draft":7,"_partial":7,"_locale":8,"title":2462,"description":2463,"date":2464,"repo":2465,"tech":2466,"featured":7,"navigation":7,"tag":2439,"body":2467,"_type":69,"_id":2502,"_source":71,"_file":2503,"_extension":73},"/projects/visual/89-multicopter","Rigid Body Simulation","We use rotational dynamics to simulate a rigid-body helicopter,\nusing rotor blades to generate lift and thrust.\nWe use the Euler method to numerically integrate the equations of motion.","2022-02-14T00:00:00.000Z","https://github.com/siavava/PhysX/blob/main/proj/a4_multi_copter",[2436,2437,2438],{"type":24,"children":2468,"toc":2500},[2469],{"type":27,"tag":28,"props":2470,"children":2471},{},[2472,2474,2481,2482,2489,2491,2498],{"type":32,"value":2473},"We use rotational dynamics to simulate a ",{"type":27,"tag":35,"props":2475,"children":2478},{"href":2476,"rel":2477},"https://en.wikipedia.org/wiki/Rigid_body",[39],[2479],{"type":32,"value":2480},"rigid-body",{"type":32,"value":1424},{"type":27,"tag":35,"props":2483,"children":2486},{"href":2484,"rel":2485},"https://en.wikipedia.org/wiki/Multirotor",[39],[2487],{"type":32,"value":2488},"helicopter",{"type":32,"value":2490},",\nusing rotor blades to generate lift and thrust.\nWe use the ",{"type":27,"tag":35,"props":2492,"children":2495},{"href":2493,"rel":2494},"https://en.wikipedia.org/wiki/Euler_method",[39],[2496],{"type":32,"value":2497},"Euler method",{"type":32,"value":2499}," to numerically integrate the equations of motion.",{"title":8,"searchDepth":67,"depth":67,"links":2501},[],"content:projects:visual:89-multicopter.md","projects/visual/89-multicopter.md",{"_path":2505,"_dir":2430,"_draft":7,"_partial":7,"_locale":8,"title":2506,"description":2507,"date":2508,"repo":2509,"tech":2510,"featured":7,"navigation":7,"tag":2439,"body":2511,"_type":69,"_id":2563,"_source":71,"_file":2564,"_extension":73},"/projects/visual/89-fluid-mechanics","Smoke Simulation","Using Physics-based simulation to simulate a fluid-flow system.\nWe use the SPH method to simulate the Navier Stokes equations for smoke.\nWe also apply the Vorticity confinement method to simulate the vorticity of the fluid.\nTo reduce the computational space,we use a grid to store the fluid particles.","2022-02-13T00:00:00.000Z","https://github.com/siavava/PhysX/blob/main/proj/a3_grid_fluid",[2436,2437,2438],{"type":24,"children":2512,"toc":2561},[2513],{"type":27,"tag":28,"props":2514,"children":2515},{},[2516,2518,2525,2527,2534,2536,2543,2544,2550,2552,2559],{"type":32,"value":2517},"Using Physics-based simulation to simulate a fluid-flow system.\nWe use the ",{"type":27,"tag":35,"props":2519,"children":2522},{"href":2520,"rel":2521},"https://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics",[39],[2523],{"type":32,"value":2524},"SPH",{"type":32,"value":2526}," method to simulate the ",{"type":27,"tag":35,"props":2528,"children":2531},{"href":2529,"rel":2530},"https://en.wikipedia.org/wiki/Navier%E2%80%93Stokes_equations",[39],[2532],{"type":32,"value":2533},"Navier Stokes equations",{"type":32,"value":2535}," for smoke.\nWe also apply the ",{"type":27,"tag":35,"props":2537,"children":2540},{"href":2538,"rel":2539},"https://en.wikipedia.org/wiki/Vorticity_(fluid_dynamics)",[39],[2541],{"type":32,"value":2542},"Vorticity confinement",{"type":32,"value":2526},{"type":27,"tag":35,"props":2545,"children":2547},{"href":2538,"rel":2546},[39],[2548],{"type":32,"value":2549},"vorticity",{"type":32,"value":2551}," of the fluid.\nTo reduce the computational space,we use a ",{"type":27,"tag":35,"props":2553,"children":2556},{"href":2554,"rel":2555},"https://en.wikipedia.org/wiki/Cellular_automaton",[39],[2557],{"type":32,"value":2558},"grid",{"type":32,"value":2560}," to store the fluid particles.",{"title":8,"searchDepth":67,"depth":67,"links":2562},[],"content:projects:visual:89-fluid-mechanics.md","projects/visual/89-fluid-mechanics.md",{"_path":2566,"_dir":2430,"_draft":7,"_partial":7,"_locale":8,"title":2567,"description":2568,"date":2569,"repo":2570,"tech":2571,"featured":7,"navigation":7,"tag":2439,"body":2572,"_type":69,"_id":2605,"_source":71,"_file":2606,"_extension":73},"/projects/visual/89-particle-physics","Particle Simulation","Using Physics-based simulation to simulate fluid and particle systems.\nWe use the SPH method to simulate the\nNavier Stokes equations for fluids.\nFor particles, we use positional indexing to efficiently detect collisions and propagate\nforces between particles.","2022-01-27T00:00:00.000Z","https://github.com/siavava/PhysX/tree/main/proj/a1_mass_spring",[2436,2437,2438],{"type":24,"children":2573,"toc":2603},[2574],{"type":27,"tag":28,"props":2575,"children":2576},{},[2577,2579,2582,2584,2589,2591,2596,2598,2601],{"type":32,"value":2578},"Using Physics-based simulation to simulate fluid and particle systems.",{"type":27,"tag":443,"props":2580,"children":2581},{},[],{"type":32,"value":2583},"\nWe use the ",{"type":27,"tag":35,"props":2585,"children":2587},{"href":2520,"rel":2586},[39],[2588],{"type":32,"value":2524},{"type":32,"value":2590}," method to simulate the\n",{"type":27,"tag":35,"props":2592,"children":2594},{"href":2529,"rel":2593},[39],[2595],{"type":32,"value":2533},{"type":32,"value":2597}," for fluids.",{"type":27,"tag":443,"props":2599,"children":2600},{},[],{"type":32,"value":2602},"\nFor particles, we use positional indexing to efficiently detect collisions and propagate\nforces between particles.",{"title":8,"searchDepth":67,"depth":67,"links":2604},[],"content:projects:visual:89-particle-physics.md","projects/visual/89-particle-physics.md",{"_path":2608,"_dir":2430,"_draft":7,"_partial":7,"_locale":8,"title":2609,"description":2610,"date":2611,"repo":2570,"tech":2612,"featured":7,"navigation":7,"tag":2439,"body":2613,"_type":69,"_id":2631,"_source":71,"_file":2632,"_extension":73},"/projects/visual/89-mass-spring","Hair Strand Simulation","Using Physics-based simulation to animate a hair strand using connection\nand bending constraints. The simulation is implemented in C++ using the\nOpenGL framework.","2022-01-20T00:00:00.000Z",[2436,2437,2438],{"type":24,"children":2614,"toc":2629},[2615],{"type":27,"tag":28,"props":2616,"children":2617},{},[2618,2620,2627],{"type":32,"value":2619},"Using Physics-based simulation to animate a hair strand using connection\nand bending constraints. The simulation is implemented in C++ using the\n",{"type":27,"tag":35,"props":2621,"children":2624},{"href":2622,"rel":2623},"https://www.opengl.org/",[39],[2625],{"type":32,"value":2626},"OpenGL",{"type":32,"value":2628}," framework.",{"title":8,"searchDepth":67,"depth":67,"links":2630},[],"content:projects:visual:89-mass-spring.md","projects/visual/89-mass-spring.md",{"_path":2634,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":2635,"description":2636,"date":2637,"repo":2638,"tech":2639,"featured":7,"navigation":7,"tag":148,"body":2641,"_type":69,"_id":2711,"_source":71,"_file":2712,"_extension":73},"/projects/ai/76-logic","Logic Algorithms","Boolean satisfiability is NP-complete,\nmeaning any algorithm that solves it takes exponential time\n— in fact, any polynomial solution would prove P=NP.","2021-10-21T00:00:00.000Z","https://github.com/siavava/ai/tree/main/05-Logic",[18,2640,147],"First Order Logic",{"type":24,"children":2642,"toc":2709},[2643,2678],{"type":27,"tag":28,"props":2644,"children":2645},{},[2646,2653,2655,2662,2664,2669,2670,2677],{"type":27,"tag":35,"props":2647,"children":2650},{"href":2648,"rel":2649},"https://en.wikipedia.org/wiki/Boolean_satisfiability_problem",[39],[2651],{"type":32,"value":2652},"Boolean satisfiability",{"type":32,"value":2654}," is ",{"type":27,"tag":35,"props":2656,"children":2659},{"href":2657,"rel":2658},"https://en.wikipedia.org/wiki/NP-completeness",[39],[2660],{"type":32,"value":2661},"NP-complete",{"type":32,"value":2663},",\nmeaning any algorithm that solves it takes exponential time\n— in fact, any polynomial solution would ",{"type":27,"tag":435,"props":2665,"children":2666},{},[2667],{"type":32,"value":2668},"prove",{"type":32,"value":1424},{"type":27,"tag":35,"props":2671,"children":2674},{"href":2672,"rel":2673},"https://en.wikipedia.org/wiki/P_versus_NP_problem",[39],[2675],{"type":32,"value":2676},"P=NP",{"type":32,"value":65},{"type":27,"tag":28,"props":2679,"children":2680},{},[2681,2683,2690,2691,2698,2700,2707],{"type":32,"value":2682},"Still, there are several algorithms that attempt to cut down\nthe search space in order to find a solution in a reasonable amount of time.\nIn this project, we implement two such algorithms,\n",{"type":27,"tag":35,"props":2684,"children":2687},{"href":2685,"rel":2686},"https://en.wikipedia.org/wiki/GSAT",[39],[2688],{"type":32,"value":2689},"GSAT",{"type":32,"value":686},{"type":27,"tag":35,"props":2692,"children":2695},{"href":2693,"rel":2694},"https://en.wikipedia.org/wiki/WalkSAT",[39],[2696],{"type":32,"value":2697},"WalkSAT",{"type":32,"value":2699},",\nand use them to solve ",{"type":27,"tag":35,"props":2701,"children":2704},{"href":2702,"rel":2703},"https://en.wikipedia.org/wiki/Sudoku",[39],[2705],{"type":32,"value":2706},"sudoku",{"type":32,"value":2708}," puzzles\nmodelled as first-order logic clauses.",{"title":8,"searchDepth":67,"depth":67,"links":2710},[],"content:projects:ai:76-logic.md","projects/ai/76-logic.md",{"_path":2714,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":2715,"description":2716,"date":2717,"repo":2718,"tech":2719,"featured":7,"navigation":7,"tag":148,"body":2721,"_type":69,"_id":2746,"_source":71,"_file":2747,"_extension":73},"/projects/ai/76-constraint-satisfaction","Constraint Satisfaction","Using backtracking and forward-checking\nto solve constraint satisfaction problems such as\nmap coloring and circuit placement.\nWe use heuristics such as least-constraining value,\nmost-constraining variable and minimum remaining values\nto intelligently narrow the search space.","2021-10-13T00:00:00.000Z","https://github.com/siavava/ai/tree/main/04-ConstraintSatisfaction",[18,2720,147],"Graph Search",{"type":24,"children":2722,"toc":2744},[2723],{"type":27,"tag":28,"props":2724,"children":2725},{},[2726,2727,2734,2735,2742],{"type":32,"value":2379},{"type":27,"tag":35,"props":2728,"children":2731},{"href":2729,"rel":2730},"https://en.wikipedia.org/wiki/Backtracking",[39],[2732],{"type":32,"value":2733},"backtracking",{"type":32,"value":686},{"type":27,"tag":35,"props":2736,"children":2739},{"href":2737,"rel":2738},"https://en.wikipedia.org/wiki/Forward_checking",[39],[2740],{"type":32,"value":2741},"forward-checking",{"type":32,"value":2743},"\nto solve constraint satisfaction problems such as\nmap coloring and circuit placement.\nWe use heuristics such as least-constraining value,\nmost-constraining variable and minimum remaining values\nto intelligently narrow the search space.",{"title":8,"searchDepth":67,"depth":67,"links":2745},[],"content:projects:ai:76-constraint-satisfaction.md","projects/ai/76-constraint-satisfaction.md",{"_path":2749,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":2750,"description":2751,"date":2752,"repo":2753,"tech":2754,"featured":7,"navigation":7,"tag":148,"body":2755,"_type":69,"_id":2798,"_source":71,"_file":2799,"_extension":73},"/projects/ai/76-informed-search","Informed Search","Using informed search techniques such as A* search and Greedy search\nand heuristics such as manhattan distance and euclidean distance\nto navigate a robot through a maze with obstacles to a goal location.","2021-10-03T00:00:00.000Z","https://github.com/siavava/ai/tree/main/02-Mazeworld",[18,2720,147],{"type":24,"children":2756,"toc":2796},[2757],{"type":27,"tag":28,"props":2758,"children":2759},{},[2760,2762,2769,2770,2777,2779,2786,2787,2794],{"type":32,"value":2761},"Using informed search techniques such as ",{"type":27,"tag":35,"props":2763,"children":2766},{"href":2764,"rel":2765},"https://en.wikipedia.org/wiki/A*_search_algorithm",[39],[2767],{"type":32,"value":2768},"A* search",{"type":32,"value":686},{"type":27,"tag":35,"props":2771,"children":2774},{"href":2772,"rel":2773},"https://en.wikipedia.org/wiki/Greedy_algorithm",[39],[2775],{"type":32,"value":2776},"Greedy search",{"type":32,"value":2778},"\nand heuristics such as ",{"type":27,"tag":35,"props":2780,"children":2783},{"href":2781,"rel":2782},"https://en.wikipedia.org/wiki/Taxicab_geometry",[39],[2784],{"type":32,"value":2785},"manhattan distance",{"type":32,"value":686},{"type":27,"tag":35,"props":2788,"children":2791},{"href":2789,"rel":2790},"https://en.wikipedia.org/wiki/Euclidean_distance",[39],[2792],{"type":32,"value":2793},"euclidean distance",{"type":32,"value":2795},"\nto navigate a robot through a maze with obstacles to a goal location.",{"title":8,"searchDepth":67,"depth":67,"links":2797},[],"content:projects:ai:76-informed-search.md","projects/ai/76-informed-search.md",{"_path":2801,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":2802,"description":2803,"date":2804,"repo":2805,"tech":2806,"featured":7,"navigation":7,"tag":148,"body":2807,"_type":69,"_id":2833,"_source":71,"_file":2834,"_extension":73},"/projects/ai/76-uninformed-search","Uninformed Search","Using uninformed search algorithms\nsuch as breadth-first search and depth-first search\nto search the solution space for elementary problems such as\nthe 🐔 and 🐶 problem (we wish to get x chicken and y foxes across\na crossway with limited carriage capacity\nwithout leaving any chicken unattended with the foxes).","2021-09-25T00:00:00.000Z","https://github.com/siavava/ai/tree/main/01-SearchProblems",[18,2720,147],{"type":24,"children":2808,"toc":2831},[2809],{"type":27,"tag":28,"props":2810,"children":2811},{},[2812,2814,2821,2822,2829],{"type":32,"value":2813},"Using uninformed search algorithms\nsuch as ",{"type":27,"tag":35,"props":2815,"children":2818},{"href":2816,"rel":2817},"https://en.wikipedia.org/wiki/Breadth-first_search",[39],[2819],{"type":32,"value":2820},"breadth-first search",{"type":32,"value":686},{"type":27,"tag":35,"props":2823,"children":2826},{"href":2824,"rel":2825},"https://en.wikipedia.org/wiki/Depth-first_search",[39],[2827],{"type":32,"value":2828},"depth-first search",{"type":32,"value":2830},"\nto search the solution space for elementary problems such as\nthe 🐔 and 🐶 problem (we wish to get x chicken and y foxes across\na crossway with limited carriage capacity\nwithout leaving any chicken unattended with the foxes).",{"title":8,"searchDepth":67,"depth":67,"links":2832},[],"content:projects:ai:76-uninformed-search.md","projects/ai/76-uninformed-search.md",{"_path":2836,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":2838,"description":2839,"date":2840,"repo":2841,"tech":2842,"featured":7,"navigation":7,"tag":1829,"body":2844,"_type":69,"_id":2893,"_source":71,"_file":2894,"_extension":73},"/projects/trivial/50-modules","trivial","Data Structures","Efficient implementations of various data structures in C.","2021-05-13T00:00:00.000Z","https://github.com/siavava/CS50.3",[1373,1372,2843,2838],"Linux",{"type":24,"children":2845,"toc":2891},[2846,2850],{"type":27,"tag":28,"props":2847,"children":2848},{},[2849],{"type":32,"value":2839},{"type":27,"tag":449,"props":2851,"children":2852},{},[2853,2866,2878],{"type":27,"tag":453,"props":2854,"children":2855},{},[2856,2857,2864],{"type":32,"value":89},{"type":27,"tag":35,"props":2858,"children":2861},{"href":2859,"rel":2860},"https://en.wikipedia.org/wiki/Set_(abstract_data_type)",[39],[2862],{"type":32,"value":2863},"bag",{"type":32,"value":2865}," stores unique items without duplication.",{"type":27,"tag":453,"props":2867,"children":2868},{},[2869,2870,2876],{"type":32,"value":89},{"type":27,"tag":35,"props":2871,"children":2873},{"href":2859,"rel":2872},[39],[2874],{"type":32,"value":2875},"set",{"type":32,"value":2877}," stores unique key-value pairs without duplication.",{"type":27,"tag":453,"props":2879,"children":2880},{},[2881,2882,2889],{"type":32,"value":89},{"type":27,"tag":35,"props":2883,"children":2886},{"href":2884,"rel":2885},"https://en.wikipedia.org/wiki/Hash_table",[39],[2887],{"type":32,"value":2888},"hashtable",{"type":32,"value":2890}," mimics the set, but uses hashing with chaining\nfor improved efficiency.",{"title":8,"searchDepth":67,"depth":67,"links":2892},[],"content:projects:trivial:50-modules.md","projects/trivial/50-modules.md",{"_path":2896,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":2897,"description":2898,"date":2899,"repo":2900,"tech":2901,"featured":7,"navigation":7,"tag":6,"body":2902,"_type":69,"_id":2943,"_source":71,"_file":2944,"_extension":73},"/projects/trivial/50-chill","Command-Line Utilities","Three different command-line utilities written in C:","2021-04-25T00:00:00.000Z","https://github.com/siavava/CS50.2",[1373,1372,2843],{"type":24,"children":2903,"toc":2941},[2904,2908],{"type":27,"tag":28,"props":2905,"children":2906},{},[2907],{"type":32,"value":2898},{"type":27,"tag":449,"props":2909,"children":2910},{},[2911,2921,2931],{"type":27,"tag":453,"props":2912,"children":2913},{},[2914,2919],{"type":27,"tag":544,"props":2915,"children":2916},{},[2917],{"type":32,"value":2918},"chill",{"type":32,"value":2920}," calculates the chill factor of a given temperature and wind speed.",{"type":27,"tag":453,"props":2922,"children":2923},{},[2924,2929],{"type":27,"tag":544,"props":2925,"children":2926},{},[2927],{"type":32,"value":2928},"words",{"type":32,"value":2930}," efficiently prints out the words in a file.",{"type":27,"tag":453,"props":2932,"children":2933},{},[2934,2939],{"type":27,"tag":544,"props":2935,"children":2936},{},[2937],{"type":32,"value":2938},"histo",{"type":32,"value":2940}," prints a histogram for a stream of numbers.",{"title":8,"searchDepth":67,"depth":67,"links":2942},[],"content:projects:trivial:50-chill.md","projects/trivial/50-chill.md",{"_path":2946,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":2947,"description":2948,"date":2949,"repo":2950,"tech":2951,"featured":7,"navigation":7,"tag":6,"body":2953,"_type":69,"_id":3012,"_source":71,"_file":3013,"_extension":73},"/projects/trivial/50-bash","Bash Scripting","Hacking our way out of various scenarios with bash scripting.","2021-04-05T00:00:00.000Z","https://github.com/siavava/bash",[1373,2952],"Regex",{"type":24,"children":2954,"toc":3010},[2955,2959],{"type":27,"tag":28,"props":2956,"children":2957},{},[2958],{"type":32,"value":2948},{"type":27,"tag":28,"props":2960,"children":2961},{},[2962,2964,2969,2971,2976,2978,2983,2985,2990,2991,2996,2997,3002,3003,3008],{"type":32,"value":2963},"Includes processing streams of data using ",{"type":27,"tag":544,"props":2965,"children":2966},{},[2967],{"type":32,"value":2968},"sed",{"type":32,"value":2970},",\nmatching string patters in files using ",{"type":27,"tag":544,"props":2972,"children":2973},{},[2974],{"type":32,"value":2975},"grep",{"type":32,"value":2977},",\nextracting bits of data from files using ",{"type":27,"tag":544,"props":2979,"children":2980},{},[2981],{"type":32,"value":2982},"head",{"type":32,"value":2984}," / ",{"type":27,"tag":544,"props":2986,"children":2987},{},[2988],{"type":32,"value":2989},"tail",{"type":32,"value":2984},{"type":27,"tag":544,"props":2992,"children":2993},{},[2994],{"type":32,"value":2995},"cut",{"type":32,"value":2984},{"type":27,"tag":544,"props":2998,"children":2999},{},[3000],{"type":32,"value":3001},"sort",{"type":32,"value":2984},{"type":27,"tag":544,"props":3004,"children":3005},{},[3006],{"type":32,"value":3007},"uniq",{"type":32,"value":3009},",\nand more.",{"title":8,"searchDepth":67,"depth":67,"links":3011},[],"content:projects:trivial:50-bash.md","projects/trivial/50-bash.md",{"_path":3015,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3016,"description":3017,"date":3018,"repo":3019,"tech":3020,"featured":7,"navigation":7,"tag":6,"body":3023,"_type":69,"_id":3063,"_source":71,"_file":3064,"_extension":73},"/projects/trivial/10-collaborative-editor","Collaborative Editor","A collaborative editor on shared canvas.\nMultiple users can connect, and each sees changes in real-time as they are made.\nWe use mutexes and locks to enable concurrent access whilst\navoiding data races and deadlock pitfalls\nsuch as mutual exclusion, hold-and-wait,\ncircular wait, and no preemption.","2021-03-07T00:00:00.000Z","https://github.com/siavava/java/tree/main/Problem%20Sets/PS-6",[387,3021,3022,1477],"Threads","Mutexes",{"type":24,"children":3024,"toc":3061},[3025],{"type":27,"tag":28,"props":3026,"children":3027},{},[3028,3030,3035,3037,3042,3043,3048,3049,3054,3055,3060],{"type":32,"value":3029},"A collaborative editor on shared canvas.\nMultiple users can connect, and each sees changes in real-time as they are made.\nWe use mutexes and locks to enable concurrent access whilst\navoiding ",{"type":27,"tag":544,"props":3031,"children":3032},{},[3033],{"type":32,"value":3034},"data races",{"type":32,"value":3036}," and deadlock pitfalls\nsuch as ",{"type":27,"tag":544,"props":3038,"children":3039},{},[3040],{"type":32,"value":3041},"mutual exclusion",{"type":32,"value":211},{"type":27,"tag":544,"props":3044,"children":3045},{},[3046],{"type":32,"value":3047},"hold-and-wait",{"type":32,"value":220},{"type":27,"tag":544,"props":3050,"children":3051},{},[3052],{"type":32,"value":3053},"circular wait",{"type":32,"value":261},{"type":27,"tag":544,"props":3056,"children":3057},{},[3058],{"type":32,"value":3059},"no preemption",{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":3062},[],"content:projects:trivial:10-collaborative-editor.md","projects/trivial/10-collaborative-editor.md",{"_path":3066,"_dir":3067,"_draft":7,"_partial":7,"_locale":8,"title":3068,"description":3069,"date":3070,"cover":1403,"repo":1404,"tech":3071,"featured":7,"navigation":7,"tag":3073,"body":3074,"_type":69,"_id":3092,"_source":71,"_file":3093,"_extension":73},"/projects/information-theory/10-huffman-encoding","information-theory","Huffman Coding","A program that encodes text using a lossless compression algorithm.\nA frequency tree is built from the text. Thereafter,\nbinary codes are assigned to each character\nhaving the most frequent characters\nget shortest codes.","2021-03-01T00:00:00.000Z",[387,3072],"Information Theory","information theory",{"type":24,"children":3075,"toc":3090},[3076],{"type":27,"tag":28,"props":3077,"children":3078},{},[3079,3081,3088],{"type":32,"value":3080},"A program that encodes text using a lossless compression algorithm.\nA ",{"type":27,"tag":35,"props":3082,"children":3085},{"href":3083,"rel":3084},"https://en.wikipedia.org/wiki/Huffman_coding#Compression",[39],[3086],{"type":32,"value":3087},"frequency tree",{"type":32,"value":3089}," is built from the text. Thereafter,\nbinary codes are assigned to each character\nhaving the most frequent characters\nget shortest codes.",{"title":8,"searchDepth":67,"depth":67,"links":3091},[],"content:projects:information-theory:10-huffman-encoding.md","projects/information-theory/10-huffman-encoding.md",{"_path":3095,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3096,"description":3097,"date":3098,"repo":3099,"tech":3100,"category":22,"featured":7,"navigation":7,"tag":1829,"body":3103,"_type":69,"_id":3128,"_source":71,"_file":3129,"_extension":73},"/projects/trivial/10-bacon","Actor Network Semantics","The infamous Kevin Bacon game;\ngiven any two actors, find the shortest social connection path between them.\nWe use breadth-first search the strategy\nto find the shortest path in the graph of connections.","2021-02-05T00:00:00.000Z","https://github.com/siavava/java/tree/main/Problem%20Sets/PS-4",[387,3101,3102],"Graph Algorithms","Social Graphs",{"type":24,"children":3104,"toc":3126},[3105],{"type":27,"tag":28,"props":3106,"children":3107},{},[3108,3110,3115,3117,3124],{"type":32,"value":3109},"The infamous Kevin Bacon game;\ngiven any two actors, find the shortest social connection path between them.\nWe use ",{"type":27,"tag":35,"props":3111,"children":3113},{"href":2816,"rel":3112},[39],[3114],{"type":32,"value":2820},{"type":32,"value":3116}," the strategy\nto find the shortest path in the ",{"type":27,"tag":35,"props":3118,"children":3121},{"href":3119,"rel":3120},"https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)",[39],[3122],{"type":32,"value":3123},"graph",{"type":32,"value":3125}," of connections.",{"title":8,"searchDepth":67,"depth":67,"links":3127},[],"content:projects:trivial:10-bacon.md","projects/trivial/10-bacon.md",{"_path":3131,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3132,"description":3133,"date":3134,"repo":3135,"tech":3136,"category":22,"featured":7,"navigation":7,"tag":1829,"body":3138,"_type":69,"_id":3156,"_source":71,"_file":3157,"_extension":73},"/projects/trivial/10-collision-gui","Efficient Spatial Collision Detection","Program to efficiently detect collisions between blobs in 2D space by using\nquad-trees to partition the space into smaller regions\nand index which blobs are in which region.","2021-01-29T00:00:00.000Z","https://github.com/siavava/java/tree/main/Problem%20Sets/PS-1",[387,3137],"Spatial Search",{"type":24,"children":3139,"toc":3154},[3140],{"type":27,"tag":28,"props":3141,"children":3142},{},[3143,3145,3152],{"type":32,"value":3144},"Program to efficiently detect collisions between blobs in 2D space by using\n",{"type":27,"tag":35,"props":3146,"children":3149},{"href":3147,"rel":3148},"https://en.wikipedia.org/wiki/Quadtree",[39],[3150],{"type":32,"value":3151},"quad-trees",{"type":32,"value":3153}," to partition the space into smaller regions\nand index which blobs are in which region.",{"title":8,"searchDepth":67,"depth":67,"links":3155},[],"content:projects:trivial:10-collision-gui.md","projects/trivial/10-collision-gui.md",{"_path":3159,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3160,"description":3161,"date":3162,"repo":3135,"tech":3163,"category":22,"featured":7,"navigation":7,"tag":1829,"body":3165,"_type":69,"_id":3173,"_source":71,"_file":3174,"_extension":73},"/projects/trivial/10-campaint","Cam Paint","Interactive program that allows the user to draw on a canvas\nusing their webcam. The program detects the color of the paintbrush\nand draws the path of the brush on the canvas.","2021-01-17T00:00:00.000Z",[387,3164],"Image Recognition",{"type":24,"children":3166,"toc":3171},[3167],{"type":27,"tag":28,"props":3168,"children":3169},{},[3170],{"type":32,"value":3161},{"title":8,"searchDepth":67,"depth":67,"links":3172},[],"content:projects:trivial:10-campaint.md","projects/trivial/10-campaint.md",{"_path":3176,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3177,"description":3178,"date":3179,"repo":3180,"tech":3181,"featured":7,"navigation":7,"tag":1829,"body":3182,"_type":69,"_id":3198,"_source":71,"_file":3199,"_extension":73},"/projects/trivial/01-dartmouth-pathfinder","Pathfinder","An interactive program that renders locations on a campus map\nand highlights the shortest path between any two points the user clicks on.\nWe use breadth-first search to find the shortest path.","2020-11-02T00:00:00.000Z","https://github.com/siavava/python/tree/main/CS1/LAB/LAB%204/XC",[18,3101],{"type":24,"children":3183,"toc":3196},[3184],{"type":27,"tag":28,"props":3185,"children":3186},{},[3187,3189,3194],{"type":32,"value":3188},"An interactive program that renders locations on a campus map\nand highlights the shortest path between any two points the user clicks on.\nWe use ",{"type":27,"tag":35,"props":3190,"children":3192},{"href":2816,"rel":3191},[39],[3193],{"type":32,"value":2820},{"type":32,"value":3195}," to find the shortest path.",{"title":8,"searchDepth":67,"depth":67,"links":3197},[],"content:projects:trivial:01-dartmouth-pathfinder.md","projects/trivial/01-dartmouth-pathfinder.md",{"_path":3201,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3202,"description":3203,"date":3204,"repo":3205,"tech":3206,"featured":7,"navigation":7,"tag":3208,"body":3209,"_type":69,"_id":3217,"_source":71,"_file":3218,"_extension":73},"/projects/trivial/01-city-info","City Demographics","An interactive program that processes provided raw data about world city populations\nand other important metrics and renders the cities on a map highlighting standout locations\nor other interesting data-points.","2020-10-04T00:00:00.000Z","https://github.com/siavava/python/tree/main/CS1/LAB/LAB%203/XC",[18,3207],"Data Processing","data insights",{"type":24,"children":3210,"toc":3215},[3211],{"type":27,"tag":28,"props":3212,"children":3213},{},[3214],{"type":32,"value":3203},{"title":8,"searchDepth":67,"depth":67,"links":3216},[],"content:projects:trivial:01-city-info.md","projects/trivial/01-city-info.md",{"_path":3220,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3221,"description":3222,"date":3223,"repo":3224,"tech":3225,"category":22,"featured":7,"navigation":7,"tag":2439,"body":3227,"_type":69,"_id":3245,"_source":71,"_file":3246,"_extension":73},"/projects/trivial/01-solar","Astronomy Simulations","A Physics-accurate simulation of mass bodies (stars, planets, etc.) in a 2D space. The program uses the PyQt5 library to display graphics and\nallows the user to arbitrarily add more bodies to the simulation by clicking,\nadding bigger bodies by holding for longer, etc.","2020-10-02T00:00:00.000Z","https://github.com/siavava/python/tree/main/CS1/LAB/LAB%202/xc",[18,3226],"Physics Simulation",{"type":24,"children":3228,"toc":3243},[3229],{"type":27,"tag":28,"props":3230,"children":3231},{},[3232,3234,3241],{"type":32,"value":3233},"A Physics-accurate simulation of mass bodies (stars, planets, etc.) in a 2D space. The program uses the ",{"type":27,"tag":35,"props":3235,"children":3238},{"href":3236,"rel":3237},"https://pypi.org/project/PyQt5/",[39],[3239],{"type":32,"value":3240},"PyQt5",{"type":32,"value":3242}," library to display graphics and\nallows the user to arbitrarily add more bodies to the simulation by clicking,\nadding bigger bodies by holding for longer, etc.",{"title":8,"searchDepth":67,"depth":67,"links":3244},[],"content:projects:trivial:01-solar.md","projects/trivial/01-solar.md",{"_path":3248,"_dir":2837,"_draft":7,"_partial":7,"_locale":8,"title":3249,"description":3250,"date":3251,"repo":3252,"tech":3253,"featured":7,"navigation":7,"tag":2439,"body":3255,"_type":69,"_id":3271,"_source":71,"_file":3272,"_extension":73},"/projects/trivial/01-pong","Pong Game","An interactive GUI game of pong that uses the PyQt5\nlibrary to display graphics and handles user inputs, detects collisions (for the game),\nand tracks scores as well as the high score in the current streak of games.","2020-09-23T00:00:00.000Z","https://github.com/siavava/python/tree/main/CS1/LAB/LAB%201",[18,3254],"Graphics Simulation",{"type":24,"children":3256,"toc":3269},[3257],{"type":27,"tag":28,"props":3258,"children":3259},{},[3260,3262,3267],{"type":32,"value":3261},"An interactive GUI game of pong that uses the ",{"type":27,"tag":35,"props":3263,"children":3265},{"href":3236,"rel":3264},[39],[3266],{"type":32,"value":3240},{"type":32,"value":3268},"\nlibrary to display graphics and handles user inputs, detects collisions (for the game),\nand tracks scores as well as the high score in the current streak of games.",{"title":8,"searchDepth":67,"depth":67,"links":3270},[],"content:projects:trivial:01-pong.md","projects/trivial/01-pong.md",[3274,3333,3394,3432,3503,3568,3614,3658,3728,3786],{"_path":415,"_dir":416,"_draft":7,"_partial":7,"_locale":8,"title":417,"description":418,"order":419,"month":11,"year":420,"date":421,"repo":422,"tech":3275,"featured":82,"navigation":7,"tag":426,"body":3276,"_type":69,"_id":503,"_source":71,"_file":504,"_extension":73},[18,424,425],{"type":24,"children":3277,"toc":3331},[3278,3291,3321],{"type":27,"tag":28,"props":3279,"children":3280},{},[3281,3282,3286,3287,3290],{"type":32,"value":433},{"type":27,"tag":435,"props":3283,"children":3284},{},[3285],{"type":32,"value":439},{"type":32,"value":441},{"type":27,"tag":443,"props":3288,"children":3289},{},[],{"type":32,"value":447},{"type":27,"tag":449,"props":3292,"children":3293},{},[3294,3303,3312],{"type":27,"tag":453,"props":3295,"children":3296},{},[3297,3302],{"type":27,"tag":35,"props":3298,"children":3300},{"href":458,"rel":3299},[39],[3301],{"type":32,"value":462},{"type":32,"value":464},{"type":27,"tag":453,"props":3304,"children":3305},{},[3306,3311],{"type":27,"tag":35,"props":3307,"children":3309},{"href":470,"rel":3308},[39],[3310],{"type":32,"value":474},{"type":32,"value":476},{"type":27,"tag":453,"props":3313,"children":3314},{},[3315,3320],{"type":27,"tag":35,"props":3316,"children":3318},{"href":470,"rel":3317},[39],[3319],{"type":32,"value":485},{"type":32,"value":487},{"type":27,"tag":28,"props":3322,"children":3323},{},[3324,3325,3330],{"type":32,"value":492},{"type":27,"tag":35,"props":3326,"children":3328},{"href":495,"rel":3327},[39],[3329],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":3332},[],{"_path":762,"_dir":416,"_draft":7,"_partial":7,"_locale":8,"title":763,"description":764,"order":419,"month":11,"year":420,"date":765,"repo":574,"tech":3334,"featured":82,"navigation":7,"tag":426,"body":3335,"_type":69,"_id":840,"_source":71,"_file":841,"_extension":73},[18,424,425],{"type":24,"children":3336,"toc":3392},[3337,3345,3382],{"type":27,"tag":28,"props":3338,"children":3339},{},[3340,3341,3344],{"type":32,"value":773},{"type":27,"tag":443,"props":3342,"children":3343},{},[],{"type":32,"value":447},{"type":27,"tag":449,"props":3346,"children":3347},{},[3348,3364,3373],{"type":27,"tag":453,"props":3349,"children":3350},{},[3351,3352,3357,3358,3363],{"type":32,"value":785},{"type":27,"tag":35,"props":3353,"children":3355},{"href":788,"rel":3354},[39],[3356],{"type":32,"value":792},{"type":32,"value":686},{"type":27,"tag":35,"props":3359,"children":3361},{"href":796,"rel":3360},[39],[3362],{"type":32,"value":800},{"type":32,"value":802},{"type":27,"tag":453,"props":3365,"children":3366},{},[3367,3372],{"type":27,"tag":35,"props":3368,"children":3370},{"href":808,"rel":3369},[39],[3371],{"type":32,"value":812},{"type":32,"value":814},{"type":27,"tag":453,"props":3374,"children":3375},{},[3376,3381],{"type":27,"tag":35,"props":3377,"children":3379},{"href":820,"rel":3378},[39],[3380],{"type":32,"value":824},{"type":32,"value":826},{"type":27,"tag":28,"props":3383,"children":3384},{},[3385,3386,3391],{"type":32,"value":492},{"type":27,"tag":35,"props":3387,"children":3389},{"href":833,"rel":3388},[39],[3390],{"type":32,"value":499},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":3393},[],{"_path":1005,"_dir":1006,"_draft":7,"_partial":7,"_locale":8,"title":1007,"description":1008,"order":419,"month":11,"year":1009,"date":1010,"url":1011,"repo":1012,"tech":3395,"featured":82,"navigation":7,"tag":1016,"body":3396,"_type":69,"_id":1062,"_source":71,"_file":1063,"_extension":73},[18,1014,1015],{"type":24,"children":3397,"toc":3430},[3398,3414],{"type":27,"tag":28,"props":3399,"children":3400},{},[3401,3402,3407,3408,3413],{"type":32,"value":1023},{"type":27,"tag":35,"props":3403,"children":3405},{"href":1026,"rel":3404},[39],[3406],{"type":32,"value":1030},{"type":32,"value":1032},{"type":27,"tag":35,"props":3409,"children":3411},{"href":1011,"rel":3410},[39],[3412],{"type":32,"value":1038},{"type":32,"value":65},{"type":27,"tag":28,"props":3415,"children":3416},{},[3417,3418,3423,3424,3429],{"type":32,"value":56},{"type":27,"tag":35,"props":3419,"children":3421},{"href":1046,"rel":3420},[39],[3422],{"type":32,"value":1050},{"type":32,"value":686},{"type":27,"tag":35,"props":3425,"children":3427},{"href":1054,"rel":3426},[39],[3428],{"type":32,"value":1058},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":3431},[],{"_path":1065,"_dir":1006,"_draft":7,"_partial":7,"_locale":8,"title":1066,"description":1067,"order":419,"month":11,"year":1009,"date":1068,"url":1026,"repo":1069,"tech":3433,"featured":82,"navigation":7,"tag":1016,"body":3434,"_type":69,"_id":1159,"_source":71,"_file":1160,"_extension":73},[1071,18,1072],{"type":24,"children":3435,"toc":3501},[3436,3469,3485],{"type":27,"tag":28,"props":3437,"children":3438},{},[3439,3440,3445,3446,3451,3452,3457,3458,3463,3464],{"type":32,"value":1079},{"type":27,"tag":35,"props":3441,"children":3443},{"href":1082,"rel":3442},[39],[3444],{"type":32,"value":1086},{"type":32,"value":220},{"type":27,"tag":35,"props":3447,"children":3449},{"href":1090,"rel":3448},[39],[3450],{"type":32,"value":1094},{"type":32,"value":220},{"type":27,"tag":35,"props":3453,"children":3455},{"href":1098,"rel":3454},[39],[3456],{"type":32,"value":1102},{"type":32,"value":220},{"type":27,"tag":35,"props":3459,"children":3461},{"href":1106,"rel":3460},[39],[3462],{"type":32,"value":1110},{"type":32,"value":1112},{"type":27,"tag":35,"props":3465,"children":3467},{"href":1115,"rel":3466},[39],[3468],{"type":32,"value":1119},{"type":27,"tag":28,"props":3470,"children":3471},{},[3472,3473,3478,3479,3484],{"type":32,"value":1124},{"type":27,"tag":35,"props":3474,"children":3476},{"href":1127,"rel":3475},[39],[3477],{"type":32,"value":1131},{"type":32,"value":1133},{"type":27,"tag":35,"props":3480,"children":3482},{"href":1026,"rel":3481},[39],[3483],{"type":32,"value":1139},{"type":32,"value":65},{"type":27,"tag":28,"props":3486,"children":3487},{},[3488,3489,3494,3495,3500],{"type":32,"value":56},{"type":27,"tag":35,"props":3490,"children":3492},{"href":1046,"rel":3491},[39],[3493],{"type":32,"value":1050},{"type":32,"value":686},{"type":27,"tag":35,"props":3496,"children":3498},{"href":1054,"rel":3497},[39],[3499],{"type":32,"value":1058},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":3502},[],{"_path":1162,"_dir":1163,"_draft":7,"_partial":7,"_locale":8,"title":1164,"description":1165,"order":419,"month":11,"year":1009,"date":1166,"repo":1167,"tech":3504,"category":22,"featured":82,"navigation":7,"tag":1170,"body":3505,"_type":69,"_id":1251,"_source":71,"_file":1252,"_extension":73},[18,675,1169],{"type":24,"children":3506,"toc":3566},[3507,3523,3527],{"type":27,"tag":28,"props":3508,"children":3509},{},[3510,3511,3516,3517,3522],{"type":32,"value":1177},{"type":27,"tag":35,"props":3512,"children":3514},{"href":1180,"rel":3513},[39],[3515],{"type":32,"value":1164},{"type":32,"value":1185},{"type":27,"tag":35,"props":3518,"children":3520},{"href":1188,"rel":3519},[39],[3521],{"type":32,"value":1192},{"type":32,"value":1194},{"type":27,"tag":28,"props":3524,"children":3525},{},[3526],{"type":32,"value":1199},{"type":27,"tag":449,"props":3528,"children":3529},{},[3530,3539,3548,3557],{"type":27,"tag":453,"props":3531,"children":3532},{},[3533,3538],{"type":27,"tag":35,"props":3534,"children":3536},{"href":1208,"rel":3535},[39],[3537],{"type":32,"value":1212},{"type":32,"value":1214},{"type":27,"tag":453,"props":3540,"children":3541},{},[3542,3547],{"type":27,"tag":35,"props":3543,"children":3545},{"href":1220,"rel":3544},[39],[3546],{"type":32,"value":1224},{"type":32,"value":1226},{"type":27,"tag":453,"props":3549,"children":3550},{},[3551,3556],{"type":27,"tag":35,"props":3552,"children":3554},{"href":1208,"rel":3553},[39],[3555],{"type":32,"value":1235},{"type":32,"value":1237},{"type":27,"tag":453,"props":3558,"children":3559},{},[3560,3565],{"type":27,"tag":35,"props":3561,"children":3563},{"href":1208,"rel":3562},[39],[3564],{"type":32,"value":1246},{"type":32,"value":1248},{"title":8,"searchDepth":67,"depth":67,"links":3567},[],{"_path":1254,"_dir":1163,"_draft":7,"_partial":7,"_locale":8,"title":1255,"description":1256,"order":419,"month":11,"year":1009,"date":1257,"repo":1258,"tech":3569,"featured":82,"navigation":7,"tag":1170,"body":3570,"_type":69,"_id":1316,"_source":71,"_file":1317,"_extension":73},[18,675,1169],{"type":24,"children":3571,"toc":3612},[3572,3576],{"type":27,"tag":28,"props":3573,"children":3574},{},[3575],{"type":32,"value":1256},{"type":27,"tag":449,"props":3577,"children":3578},{},[3579,3594,3603],{"type":27,"tag":453,"props":3580,"children":3581},{},[3582,3587,3588,3593],{"type":27,"tag":35,"props":3583,"children":3585},{"href":1274,"rel":3584},[39],[3586],{"type":32,"value":1278},{"type":32,"value":1280},{"type":27,"tag":35,"props":3589,"children":3591},{"href":1283,"rel":3590},[39],[3592],{"type":32,"value":1287},{"type":32,"value":1289},{"type":27,"tag":453,"props":3595,"children":3596},{},[3597,3602],{"type":27,"tag":35,"props":3598,"children":3600},{"href":1295,"rel":3599},[39],[3601],{"type":32,"value":1299},{"type":32,"value":1301},{"type":27,"tag":453,"props":3604,"children":3605},{},[3606,3611],{"type":27,"tag":35,"props":3607,"children":3609},{"href":1307,"rel":3608},[39],[3610],{"type":32,"value":1311},{"type":32,"value":1313},{"title":8,"searchDepth":67,"depth":67,"links":3613},[],{"_path":75,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":76,"description":77,"order":11,"month":12,"year":13,"date":78,"cover":15,"repo":79,"tech":3615,"category":22,"featured":82,"navigation":7,"tag":6,"body":3616,"_type":69,"_id":134,"_source":71,"_file":135,"_extension":73},[18,81,21],{"type":24,"children":3617,"toc":3656},[3618,3646],{"type":27,"tag":28,"props":3619,"children":3620},{},[3621,3622,3627,3628,3633,3634,3639,3640,3645],{"type":32,"value":89},{"type":27,"tag":35,"props":3623,"children":3625},{"href":92,"rel":3624},[39],[3626],{"type":32,"value":96},{"type":32,"value":98},{"type":27,"tag":35,"props":3629,"children":3631},{"href":37,"rel":3630},[39],[3632],{"type":32,"value":18},{"type":32,"value":43},{"type":27,"tag":35,"props":3635,"children":3637},{"href":107,"rel":3636},[39],[3638],{"type":32,"value":81},{"type":32,"value":112},{"type":27,"tag":35,"props":3641,"children":3643},{"href":115,"rel":3642},[39],[3644],{"type":32,"value":119},{"type":32,"value":121},{"type":27,"tag":28,"props":3647,"children":3648},{},[3649,3650,3655],{"type":32,"value":56},{"type":27,"tag":35,"props":3651,"children":3653},{"href":59,"rel":3652},[39],[3654],{"type":32,"value":63},{"type":32,"value":65},{"title":8,"searchDepth":67,"depth":67,"links":3657},[],{"_path":276,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":277,"description":278,"order":67,"date":279,"cover":280,"repo":281,"tech":3659,"category":22,"featured":82,"navigation":7,"tag":6,"body":3660,"_type":69,"_id":377,"_source":71,"_file":378,"_extension":73},[283,284],{"type":24,"children":3661,"toc":3726},[3662],{"type":27,"tag":28,"props":3663,"children":3664},{},[3665,3666,3671,3672,3677,3678,3683,3684,3689,3690,3695,3696,3701,3702,3707,3708,3713,3714,3719,3720,3725],{"type":32,"value":291},{"type":27,"tag":35,"props":3667,"children":3669},{"href":294,"rel":3668},[39],[3670],{"type":32,"value":298},{"type":32,"value":300},{"type":27,"tag":35,"props":3673,"children":3675},{"href":303,"rel":3674},[39],[3676],{"type":32,"value":307},{"type":32,"value":309},{"type":27,"tag":35,"props":3679,"children":3681},{"href":312,"rel":3680},[39],[3682],{"type":32,"value":316},{"type":32,"value":211},{"type":27,"tag":35,"props":3685,"children":3687},{"href":320,"rel":3686},[39],[3688],{"type":32,"value":324},{"type":32,"value":220},{"type":27,"tag":35,"props":3691,"children":3693},{"href":328,"rel":3692},[39],[3694],{"type":32,"value":332},{"type":32,"value":211},{"type":27,"tag":35,"props":3697,"children":3699},{"href":336,"rel":3698},[39],[3700],{"type":32,"value":340},{"type":32,"value":220},{"type":27,"tag":35,"props":3703,"children":3705},{"href":344,"rel":3704},[39],[3706],{"type":32,"value":348},{"type":32,"value":211},{"type":27,"tag":35,"props":3709,"children":3711},{"href":352,"rel":3710},[39],[3712],{"type":32,"value":356},{"type":32,"value":220},{"type":27,"tag":35,"props":3715,"children":3717},{"href":360,"rel":3716},[39],[3718],{"type":32,"value":364},{"type":32,"value":261},{"type":27,"tag":35,"props":3721,"children":3723},{"href":368,"rel":3722},[39],[3724],{"type":32,"value":372},{"type":32,"value":374},{"title":8,"searchDepth":67,"depth":67,"links":3727},[],{"_path":187,"_dir":138,"_draft":7,"_partial":7,"_locale":8,"title":188,"description":189,"order":11,"month":12,"year":190,"date":191,"cover":192,"repo":193,"tech":3729,"category":22,"featured":82,"navigation":7,"tag":148,"body":3730,"_type":69,"_id":273,"_source":71,"_file":274,"_extension":73},[18,195,147],{"type":24,"children":3731,"toc":3784},[3732],{"type":27,"tag":28,"props":3733,"children":3734},{},[3735,3736,3741,3742,3747,3748,3753,3754,3759,3760,3765,3766,3771,3772,3777,3778,3783],{"type":32,"value":202},{"type":27,"tag":35,"props":3737,"children":3739},{"href":205,"rel":3738},[39],[3740],{"type":32,"value":209},{"type":32,"value":211},{"type":27,"tag":35,"props":3743,"children":3745},{"href":214,"rel":3744},[39],[3746],{"type":32,"value":218},{"type":32,"value":220},{"type":27,"tag":35,"props":3749,"children":3751},{"href":223,"rel":3750},[39],[3752],{"type":32,"value":227},{"type":32,"value":220},{"type":27,"tag":35,"props":3755,"children":3757},{"href":231,"rel":3756},[39],[3758],{"type":32,"value":235},{"type":32,"value":211},{"type":27,"tag":35,"props":3761,"children":3763},{"href":239,"rel":3762},[39],[3764],{"type":32,"value":243},{"type":32,"value":220},{"type":27,"tag":35,"props":3767,"children":3769},{"href":247,"rel":3768},[39],[3770],{"type":32,"value":251},{"type":32,"value":220},{"type":27,"tag":35,"props":3773,"children":3775},{"href":255,"rel":3774},[39],[3776],{"type":32,"value":259},{"type":32,"value":261},{"type":27,"tag":35,"props":3779,"children":3781},{"href":264,"rel":3780},[39],[3782],{"type":32,"value":268},{"type":32,"value":270},{"title":8,"searchDepth":67,"depth":67,"links":3785},[],{"_path":1364,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1365,"description":1366,"order":1367,"date":1368,"cover":1369,"repo":1370,"tech":3787,"category":22,"featured":82,"navigation":7,"tag":6,"body":3788,"_type":69,"_id":1394,"_source":71,"_file":1395,"_extension":73},[1372,1373,1374,1375],{"type":24,"children":3789,"toc":3800},[3790],{"type":27,"tag":28,"props":3791,"children":3792},{},[3793,3794,3799],{"type":32,"value":1382},{"type":27,"tag":35,"props":3795,"children":3797},{"href":1385,"rel":3796},[39],[3798],{"type":32,"value":1389},{"type":32,"value":1391},{"title":8,"searchDepth":67,"depth":67,"links":3801},[],{"_path":3803,"_dir":8,"_draft":7,"_partial":7,"_locale":8,"title":3804,"description":3805,"navigation":3806,"layout":3808,"body":3809,"_type":69,"_id":3817,"_source":71,"_file":3818,"_extension":73},"/archive","archive | alt.","Archive of all projects, past and present.",{"title":3807},"archive","default",{"type":24,"children":3810,"toc":3815},[3811],{"type":27,"tag":3812,"props":3813,"children":3814},"projects",{},[],{"title":8,"searchDepth":67,"depth":67,"links":3816},[],"content:archive.md","archive.md",1784615575065]