[{"data":1,"prerenderedAt":2660},["ShallowReactive",2],{"all-projects":3},[4,85,134,195,239,263,321,360,421,446,577,624,644,713,745,795,863,910,946,982,1003,1062,1112,1150,1182,1217,1248,1280,1328,1370,1388,1426,1458,1500,1545,1577,1602,1631,1688,1724,1771,1804,1828,1903,1944,2003,2033,2074,2137,2167,2218,2245,2289,2327,2374,2400,2438,2466,2492,2523,2549,2567,2590,2610,2636],{"id":5,"title":6,"body":7,"date":65,"description":66,"extension":67,"featured":68,"meta":69,"navigation":72,"order":73,"path":74,"repo":75,"seo":76,"stem":77,"tag":78,"tech":79,"url":83,"__hash__":84},"projects\u002Fprojects\u002Fcomputer-vision\u002F4.optical-flow.md","Optical Flow",{"type":8,"value":9,"toc":61},"minimark",[10,23,52],[11,12,13,14,18,19,22],"p",{},"Experimentation with different techniques for tracking ",[15,16,17],"strong",{},"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.",[20,21],"br",{},"\nTechiniques implemented include:",[24,25,26,37,45],"ul",{},[27,28,29,36],"li",{},[30,31,35],"a",{"href":32,"rel":33},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLucas%E2%80%93Kanade_method",[34],"nofollow","Lucas-Kanade method"," for estimating optical flow by\nassuming that the flow is constant in a local neighborhood.",[27,38,39,44],{},[30,40,43],{"href":41,"rel":42},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLucas%E2%80%93Kanade_method#Inverse_compositional_algorithm",[34],"Lucas-Kanade inverse-compositional method"," for estimating\noptical flow by assuming that the flow is constant in a local\nneighborhood and that the flow is smooth across the image.",[27,46,47,51],{},[30,48,50],{"href":41,"rel":49},[34],"Matthews-Baker inverse-compositional method"," for estimating optical flow by\nassuming that the flow is constant in a local neighborhood and\nthat the flow is smooth across the image.",[11,53,54,55,60],{},"You can view the report ",[30,56,59],{"href":57,"rel":58},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Fblob\u002Fmain\u002Fpsets\u002F04\u002Fwriteup\u002Fmain.pdf",[34],"here",".",{"title":62,"searchDepth":63,"depth":63,"links":64},"",2,[],"2024-03-03","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:","md",true,{"month":70,"year":71},1,2024,false,4,"\u002Fprojects\u002Fcomputer-vision\u002Foptical-flow","https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Ftree\u002Fmain\u002Fpsets\u002F04",{"title":6,"description":66},"projects\u002Fcomputer-vision\u002F4.optical-flow","computer vision",[80,81,82],"Python","OpenCV","Computer Vision",null,"4sXNlRM2JJU7hzyOUULze3uNbh208QmWB3zuDISqy9o",{"id":86,"title":87,"body":88,"date":123,"description":124,"extension":67,"featured":72,"meta":125,"navigation":72,"order":73,"path":126,"repo":127,"seo":128,"stem":129,"tag":130,"tech":131,"url":83,"__hash__":133},"projects\u002Fprojects\u002Flinguistics\u002F7.audio-emotions.md","Emotion Detection in Audio",{"type":8,"value":89,"toc":121},[90,105],[11,91,92,93,98,99,104],{},"Exxperimented with using transformers to classify emotions\nin audio data, using ",[30,94,97],{"href":95,"rel":96},"https:\u002F\u002Fhuggingface.co\u002Ftransformers\u002Fmodel_doc\u002Fwav2vec2.html",[34],"Wav2Vec2"," and\n",[30,100,103],{"href":101,"rel":102},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMel-frequency_cepstrum",[34],"MFCC (Mel-Frequency Cepstral Coefficients)"," features\nto train a model to classify emotions in audio data.",[11,106,107],{},[108,109,110,111,98,116,60],"em",{},"Collaborative project with\n",[30,112,115],{"href":113,"rel":114},"https:\u002F\u002Fgithub.com\u002Ftheivyzhang",[34],"Ivy (Aiwei) Zhang",[30,117,120],{"href":118,"rel":119},"https:\u002F\u002Fgithub.com\u002Fcarlosguealv",[34],"Carlos Guerrero Alvarez",{"title":62,"searchDepth":63,"depth":63,"links":122},[],"2024-03-02","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.",{"month":70,"year":71},"\u002Fprojects\u002Flinguistics\u002Faudio-emotions","https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics-project",{"title":87,"description":124},"projects\u002Flinguistics\u002F7.audio-emotions","Natural Language Processing",[80,132],"Transformers","aF9iYcaGmF9cg-2nmoUY-5BIFsx7wuEq9m5ZIImvVC4",{"id":135,"title":136,"body":137,"date":186,"description":187,"extension":67,"featured":72,"meta":188,"navigation":72,"order":73,"path":189,"repo":190,"seo":191,"stem":192,"tag":78,"tech":193,"url":83,"__hash__":194},"projects\u002Fprojects\u002Fcomputer-vision\u002F2.reconstruction.md","3D Reconstruction",{"type":8,"value":138,"toc":184},[139,144,178],[11,140,141,142,22],{},"Experimentation with different techniques for 3D reconstruction of a\nscene using multiple images taken at slightly different angles.",[20,143],{},[24,145,146,154,162,170],{},[27,147,148,153],{},[30,149,152],{"href":150,"rel":151},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSparse_3D_reconstruction",[34],"Sparse reconstruction"," to estimate the 3D structure\nof a scene from a set of 2D images.",[27,155,156,161],{},[30,157,160],{"href":158,"rel":159},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEpipolar_geometry",[34],"Epipolar geometry"," to identify corresponding points\nin different images.",[27,163,164,169],{},[30,165,168],{"href":166,"rel":167},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTriangulation_(computer_vision)",[34],"Triangulation"," to estimate the 3D position of\na point in space given its position in multiple images.",[27,171,172,177],{},[30,173,176],{"href":174,"rel":175},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBundle_adjustment",[34],"Bundle adjustment"," to refine the 3D reconstruction by\nminimizing the reprojection error.",[11,179,54,180,60],{},[30,181,59],{"href":182,"rel":183},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Fblob\u002Fmain\u002Fpsets\u002F03\u002Fwriteup\u002Fmain.pdf",[34],{"title":62,"searchDepth":63,"depth":63,"links":185},[],"2024-02-18","Experimentation with different techniques for 3D reconstruction of a\nscene using multiple images taken at slightly different angles.\nTechiniques implemented include:",{"month":70,"year":71},"\u002Fprojects\u002Fcomputer-vision\u002Freconstruction","https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Ftree\u002Fmain\u002Fpsets\u002F02",{"title":136,"description":187},"projects\u002Fcomputer-vision\u002F2.reconstruction",[80,81,82],"Fcl737SK49rqYdUWMnoKKcJzyRbf1WHdgT8ks2LicMg",{"id":196,"title":197,"body":198,"date":228,"description":229,"extension":67,"featured":72,"meta":230,"navigation":72,"order":73,"path":231,"repo":232,"seo":233,"stem":234,"tag":130,"tech":235,"url":83,"__hash__":238},"projects\u002Fprojects\u002Flinguistics\u002F4.neural-net-embeds.md","Neural Networks & Word Embeddings",{"type":8,"value":199,"toc":226},[200,220],[11,201,202,203,208,209,214,215,60],{},"Implemented neural networks (using ",[30,204,207],{"href":205,"rel":206},"https:\u002F\u002Fpytorch.org\u002F",[34],"PyTorch",")\nto learn multi-class classification.\nAlso experimented with similarities in word\nembeddings using ",[30,210,213],{"href":211,"rel":212},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCosine_similarity",[34],"cosine similarity"," and ",[30,216,219],{"href":217,"rel":218},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FT-distributed_stochastic_neighbor_embedding",[34],"t-SNE",[11,221,54,222,60],{},[30,223,59],{"href":224,"rel":225},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Fblob\u002Fmain\u002FP4\u002Freport\u002F00.report.pdf",[34],{"title":62,"searchDepth":63,"depth":63,"links":227},[],"2024-02-09","Implemented neural networks (using PyTorch)\nto learn multi-class classification.\nAlso experimented with similarities in word\nembeddings using cosine similarity and t-SNE.",{"month":70,"year":71},"\u002Fprojects\u002Flinguistics\u002Fneural-net-embeds","https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Ftree\u002Fmain\u002FP4",{"title":197,"description":229},"projects\u002Flinguistics\u002F4.neural-net-embeds",[80,236,237],"Neural Networks","Word Embeddings","4OleuqGr-VZwYgfn1tFQRFhiALVQ53tzDI0dbDdt4lg",{"id":240,"title":241,"body":242,"date":254,"description":246,"extension":67,"featured":72,"meta":255,"navigation":72,"order":73,"path":256,"repo":257,"seo":258,"stem":259,"tag":130,"tech":260,"url":83,"__hash__":262},"projects\u002Fprojects\u002Flinguistics\u002F5.attention.md","Attention-Based Machine Translation",{"type":8,"value":243,"toc":252},[244,247],[11,245,246],{},"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.",[11,248,54,249,60],{},[30,250,59],{"href":224,"rel":251},[34],{"title":62,"searchDepth":63,"depth":63,"links":253},[],"2024-02-06",{"month":70,"year":71},"\u002Fprojects\u002Flinguistics\u002Fattention","https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Ftree\u002Fmain\u002FP5",{"title":241,"description":246},"projects\u002Flinguistics\u002F5.attention",[80,261,207],"Attention Mechanism","D6E3Lh-bFINsrWujNOe3-gQK3jL7dsdycgc8YE2OpfA",{"id":264,"title":265,"body":266,"date":313,"description":314,"extension":67,"featured":68,"meta":315,"navigation":72,"order":73,"path":316,"repo":190,"seo":317,"stem":318,"tag":78,"tech":319,"url":83,"__hash__":320},"projects\u002Fprojects\u002Fcomputer-vision\u002F3.augmented-reality.md","Augmented Reality with Planar Homographies",{"type":8,"value":267,"toc":311},[268,273,305],[11,269,270,271,22],{},"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.",[20,272],{},[24,274,275,289,297],{},[27,276,277,278,214,283,288],{},"Image feature descriptors, such as ",[30,279,282],{"href":280,"rel":281},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBinary_Robust_Independent_Elementary_Features",[34],"BRIEF",[30,284,287],{"href":285,"rel":286},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FORBSLAM",[34],"ORB",", for\ndetecting and describing keypoints in images.",[27,290,291,296],{},[30,292,295],{"href":293,"rel":294},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRandom_sample_consensus",[34],"RANSAC algorithm"," for estimating the homography\nbetween two images.",[27,298,299,304],{},[30,300,303],{"href":301,"rel":302},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002F3D_projection#Perspective_projection",[34],"Perspective Transform"," for transforming the perspective of\nan image to match the perspective of another image.",[11,306,54,307,60],{},[30,308,59],{"href":309,"rel":310},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Fblob\u002Fmain\u002Fpsets\u002F02\u002Fwriteup\u002Fmain.pdf",[34],{"title":62,"searchDepth":63,"depth":63,"links":312},[],"2024-02-05","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:",{"month":70,"year":71},"\u002Fprojects\u002Fcomputer-vision\u002Faugmented-reality",{"title":265,"description":314},"projects\u002Fcomputer-vision\u002F3.augmented-reality",[80,81,82],"-ub-bndKZcOOPSVmqoUzcxyCGGQoutaujxgYgZBRdUY",{"id":322,"title":323,"body":324,"date":349,"description":350,"extension":67,"featured":72,"meta":351,"navigation":72,"order":73,"path":352,"repo":353,"seo":354,"stem":355,"tag":130,"tech":356,"url":83,"__hash__":359},"projects\u002Fprojects\u002Flinguistics\u002F2.naive-bayes copy.md","Naive Bayes & N-Grams",{"type":8,"value":325,"toc":347},[326,341],[11,327,328,329,334,335,340],{},"Implemented text classifiers using ",[30,330,333],{"href":331,"rel":332},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNaive_Bayes_classifier",[34],"naive bayes","\nand ",[30,336,339],{"href":337,"rel":338},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FN-gram",[34],"n-grams",",\nboth implemented from scratch, to learn word probabilities in a\ncorpus and classify text documents based on those probabilities.",[11,342,54,343,60],{},[30,344,59],{"href":345,"rel":346},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Fblob\u002Fmain\u002FP2\u002Freport\u002Freport.pdf",[34],{"title":62,"searchDepth":63,"depth":63,"links":348},[],"2024-01-26","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.",{"month":70,"year":71},"\u002Fprojects\u002Flinguistics\u002Fnaive-bayes-copy","https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Ftree\u002Fmain\u002FP2",{"title":323,"description":350},"projects\u002Flinguistics\u002F2.naive-bayes copy",[80,357,358],"Naive Bayes","N-Grams","oCP1yKRvFmhhy_mCWdU4aE2Pvt9RN5x9V3iAn12s2Z4",{"id":361,"title":362,"body":363,"date":412,"description":413,"extension":67,"featured":72,"meta":414,"navigation":72,"order":73,"path":415,"repo":416,"seo":417,"stem":418,"tag":78,"tech":419,"url":83,"__hash__":420},"projects\u002Fprojects\u002Fcomputer-vision\u002F1.hough-filters.md","Image Filtering with Hough Transforms",{"type":8,"value":364,"toc":410},[365,370,404],[11,366,367,368,22],{},"Experimentation with using convolutions and hough transforms\nto detect lines and corners in images.",[20,369],{},[24,371,372,380,388,396],{},[27,373,374,379],{},[30,375,378],{"href":376,"rel":377},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHarris_Corner_Detector",[34],"Harris Corner Detection",", a method for detecting corners in images\nby identifying regions with high variation in intensity in both the x and y\ndirections.",[27,381,382,387],{},[30,383,386],{"href":384,"rel":385},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHough_transform",[34],"Hough Line Transform",", 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.",[27,389,390,395],{},[30,391,394],{"href":392,"rel":393},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGaussian_blur",[34],"Gaussian Smoothing",", a method for reducing noise in images by\napplying a gaussian filter to the image.",[27,397,398,403],{},[30,399,402],{"href":400,"rel":401},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSobel_operator",[34],"Sobel Operator",", a method for calculating the gradient of an image\nby convolving the image with a pair of 3x3 kernels.",[11,405,54,406,60],{},[30,407,59],{"href":408,"rel":409},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Fblob\u002Fmain\u002Fpsets\u002F01\u002Fwriteup\u002Fmain.pdf",[34],{"title":62,"searchDepth":63,"depth":63,"links":411},[],"2024-01-23","Experimentation with using convolutions and hough transforms\nto detect lines and corners in images.\nTechiniques implemented include:",{"month":70,"year":71},"\u002Fprojects\u002Fcomputer-vision\u002Fhough-filters","https:\u002F\u002Fgithub.com\u002Flostflux\u002Fcomputer-vision\u002Ftree\u002Fmain\u002Fpsets\u002F01",{"title":362,"description":413},"projects\u002Fcomputer-vision\u002F1.hough-filters",[80,81,82],"__M77ioPQSpBDv6kaY6E2yFrUrK-jSVO_jIapYqI_6o",{"id":422,"title":423,"body":424,"date":437,"description":428,"extension":67,"featured":72,"meta":438,"navigation":72,"order":73,"path":439,"repo":440,"seo":441,"stem":442,"tag":130,"tech":443,"url":83,"__hash__":445},"projects\u002Fprojects\u002Flinguistics\u002F1.chatbot.md","Swahili Chatbot with RegEx",{"type":8,"value":425,"toc":435},[426,429],[11,427,428],{},"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.",[11,430,54,431,60],{},[30,432,59],{"href":433,"rel":434},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Fblob\u002Fmain\u002FP1\u002Freport\u002Freport.pdf",[34],{"title":62,"searchDepth":63,"depth":63,"links":436},[],"2024-01-12",{"month":70,"year":71},"\u002Fprojects\u002Flinguistics\u002Fchatbot","https:\u002F\u002Fgithub.com\u002Flostflux\u002Flinguistics\u002Ftree\u002Fmain\u002FP1",{"title":423,"description":428},"projects\u002Flinguistics\u002F1.chatbot",[80,444],"RegEx","QTIcbEZQt3-pVdW4sVuGueq2Z4n3rYZPsS-23I4Jd_M",{"id":447,"title":448,"body":449,"date":563,"description":564,"extension":67,"featured":68,"meta":565,"navigation":72,"order":83,"path":566,"repo":468,"seo":567,"stem":568,"tag":569,"tech":570,"url":575,"__hash__":576},"projects\u002Fprojects\u002Fweb\u002Fdiscite.md","Discite",{"type":8,"value":450,"toc":561},[451,489,516,530,548],[11,452,453,455,456,459,460,465,466,471,472,477,478,483,484,60],{},[15,454,448],{}," turns idle screen time into learning — a short-form video app that\nteaches computer science fundamentals through bite-sized, swipeable clips.\n",[108,457,458],{},"Discite optimizes learning for the modern attention span."," Built as my\nDartmouth ",[30,461,464],{"href":462,"rel":463},"https:\u002F\u002Fmedium.com\u002Fdartmouth-cs98\u002Fupgrade-your-screen-time-learn-cs-fundamentals-with-discite-14c3337cb074",[34],"CS98 senior capstone",", it is a full platform: a SwiftUI\n",[30,467,470],{"href":468,"rel":469},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fdiscite-frontend",[34],"iOS app",", a TypeScript \u002F Express ",[30,473,476],{"href":474,"rel":475},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fdiscite-backend",[34],"backend"," on MongoDB, a\nPython ",[30,479,482],{"href":480,"rel":481},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fdiscite-ml",[34],"machine-learning service",", and a vector-search\n",[30,485,488],{"href":486,"rel":487},"https:\u002F\u002Fgithub.com\u002Flostflux\u002Fdiscite-recs",[34],"recommendation engine",[11,490,491,494,495,499,500,503,504,507,508,511,512,515],{},[15,492,493],{},"How the frontend and backend connect."," The iOS app is a pure client of a\nstateless REST API — every call is an HTTPS request to a JSON route under\n",[496,497,498],"code",{},"\u002Fapi\u002F",", and every endpoint is guarded by a ",[15,501,502],{},"JWT"," the app obtains from\n",[496,505,506],{},"POST \u002Fauth\u002Fsignup"," or ",[496,509,510],{},"POST \u002Fauth\u002Fsignin"," and then attaches to subsequent\nrequests. The API splits into three concerns: auth and users (profiles,\nfriends), video engagement (",[496,513,514],{},"GET \u002Fvideos\u002Fqueue",", likes, dislikes, comments,\nshares), and affinity scoring. The backend follows Express's\nmodel–controller layout and is covered by 50+ Cypress integration tests.",[11,517,518,521,522,525,526,529],{},[15,519,520],{},"Streaming the video."," Rather than serving bytes straight from the database,\nclips live on Amazon S3 and are delivered over HLS through CloudFront. When the\napp wants a clip it asks the API for a signed ",[496,523,524],{},".m3u8"," manifest; a Lambda fetches\nand caches the CloudFront private key, authorizes the request, and signs the URL\n— appending signed params to each ",[496,527,528],{},".ts"," segment — so video loads progressively\nas the user watches.",[11,531,532,535,536,539,540,543,544,547],{},[15,533,534],{},"Choosing what to play."," A machine-learning pipeline extracts atomic concepts\nfrom long-form YouTube lectures, and a change-detection algorithm over the\nresulting topic time-series finds clip boundaries automatically. The\nrecommendation engine then ranks clips by ",[15,537,538],{},"affinity"," (interest),\n",[15,541,542],{},"complexity"," (difficulty), and ",[15,545,546],{},"relationship"," (topic similarity), nudging\nthose scores from every watch, like, and dislike so the feed adapts as you\nlearn.",[11,549,550,551,555,556,60],{},"Read more in the ",[30,552,554],{"href":462,"rel":553},[34],"Medium write-up"," and the project's\n",[30,557,560],{"href":558,"rel":559},"https:\u002F\u002Fdiscite-website.vercel.app\u002Fdocs\u002Farchitecture",[34],"architecture docs",{"title":62,"searchDepth":63,"depth":63,"links":562},[],"2023-12-04","Discite turns idle screen time into learning — a short-form video app that\nteaches computer science fundamentals through bite-sized, swipeable clips.\nDiscite optimizes learning for the modern attention span. Built as my\nDartmouth CS98 senior capstone, it is a full platform: a SwiftUI\niOS app, a TypeScript \u002F Express backend on MongoDB, a\nPython machine-learning service, and a vector-search\nrecommendation engine.",{},"\u002Fprojects\u002Fweb\u002Fdiscite",{"title":448,"description":564},"projects\u002Fweb\u002Fdiscite","design \u002F web",[571,572,573,574,80],"Swift","TypeScript","Node","MongoDB","https:\u002F\u002Fdiscite-website.vercel.app\u002F","wt-VARvCwHouCUcpnnpQyxnq-BKuZ67j9lch6mi6Wng",{"id":578,"title":579,"body":580,"date":611,"description":612,"extension":67,"featured":68,"meta":613,"navigation":72,"order":73,"path":615,"repo":616,"seo":617,"stem":618,"tag":619,"tech":620,"url":593,"__hash__":623},"projects\u002Fprojects\u002Fdata-mining\u002Fai-transitions-study.md","Societal Attitudes Toward AI",{"type":8,"value":581,"toc":609},[582,596],[11,583,584,585,590,591,60],{},"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 ",[30,586,589],{"href":587,"rel":588},"https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fsiavava\u002Fai-tech-articles",[34],"studied dataset"," and the ",[30,592,595],{"href":593,"rel":594},"https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fdata-mining-project\u002Fblob\u002Fmain\u002Freport.pdf",[34],"project report",[11,597,598,599,214,604,60],{},"Collaborative project with ",[30,600,603],{"href":601,"rel":602},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Faimen-abdulaziz\u002F",[34],"Aimen Abdulaziz",[30,605,608],{"href":606,"rel":607},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fangelic-mcpherson\u002F",[34],"Angelic McPherson",{"title":62,"searchDepth":63,"depth":63,"links":610},[],"2023-11-20","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.",{"month":70,"year":614},2023,"\u002Fprojects\u002Fdata-mining\u002Fai-transitions-study","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fdata-mining-project",{"title":579,"description":612},"projects\u002Fdata-mining\u002Fai-transitions-study","data mining",[80,621,622],"LaTeX","NLP","SM1zEUpBE-F7HIjP4Uy2qltUFniIQEhJJicAKCAFUF8",{"id":625,"title":626,"body":627,"date":634,"description":631,"extension":67,"featured":72,"meta":635,"navigation":72,"order":83,"path":636,"repo":637,"seo":638,"stem":639,"tag":569,"tech":640,"url":558,"__hash__":643},"projects\u002Fprojects\u002Fweb\u002Fdiscite-web.md","Discite Website",{"type":8,"value":628,"toc":632},[629],[11,630,631],{},"Built a landing-page and documentation website\nfor my Computer Science senior design challenge project.",{"title":62,"searchDepth":63,"depth":63,"links":633},[],"2023-11-14",{},"\u002Fprojects\u002Fweb\u002Fdiscite-web","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fdiscite-website",{"title":626,"description":631},"projects\u002Fweb\u002Fdiscite-web",[641,572,642],"Nuxt","Sass","ycidsTEGRMkK7ZClEDT4qH6uZLD4PIhAJKfHyvVl8iE",{"id":645,"title":646,"body":647,"date":702,"description":703,"extension":67,"featured":68,"meta":704,"navigation":72,"order":73,"path":705,"repo":706,"seo":707,"stem":708,"tag":619,"tech":709,"url":587,"__hash__":712},"projects\u002Fprojects\u002Fdata-mining\u002Fai-tech-dataset.md","AI \u002F Tech Dataset",{"type":8,"value":648,"toc":700},[649,679,692],[11,650,651,652,657,658,657,663,657,668,673,674],{},"I wrote a high-performant web scraper\nin Haskell to scrape 17000+ articles from\nonline technology websites such as\n",[30,653,656],{"href":654,"rel":655},"https:\u002F\u002Fdeepmind.com\u002F",[34],"DeepMind",",\n",[30,659,662],{"href":660,"rel":661},"https:\u002F\u002Fwww.technologyreview.com\u002F",[34],"MIT Tech Review",[30,664,667],{"href":665,"rel":666},"https:\u002F\u002Fopenai.com\u002F",[34],"OpenAI",[30,669,672],{"href":670,"rel":671},"https:\u002F\u002Fsingularityhub.com\u002F",[34],"Singularity Hub",", and\n",[30,675,678],{"href":676,"rel":677},"https:\u002F\u002Ftechcrunch.com\u002F",[34],"TechCrunch",[11,680,681,682,687,688,60],{},"The scraper uses ",[30,683,686],{"href":684,"rel":685},"https:\u002F\u002Fwww.cse.chalmers.se\u002F~rjmh\u002Fafp-arrows.pdf",[34],"Arrows"," and other functional programming\npatterns to ensure concurrency and efficiency.\nThe dataset is open-source and available on ",[30,689,691],{"href":587,"rel":690},[34],"HuggingFace",[11,693,598,694,214,697,60],{},[30,695,603],{"href":601,"rel":696},[34],[30,698,608],{"href":606,"rel":699},[34],{"title":62,"searchDepth":63,"depth":63,"links":701},[],"2023-11-04","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",{"month":70,"year":614},"\u002Fprojects\u002Fdata-mining\u002Fai-tech-dataset","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Ffunctional-scraper",{"title":646,"description":703},"projects\u002Fdata-mining\u002Fai-tech-dataset",[710,80,711],"Haskell","Data Mining","2EkImjaD2u0p-6aJnPnMsy7jCvzpI-q9ui7R8kJj5TE",{"id":714,"title":715,"body":716,"date":734,"description":735,"extension":67,"featured":72,"meta":736,"navigation":72,"order":83,"path":737,"repo":738,"seo":739,"stem":740,"tag":569,"tech":741,"url":743,"__hash__":744},"projects\u002Fprojects\u002Fweb\u002Fslides.md","Dev Slides",{"type":8,"value":717,"toc":732},[718],[11,719,720,721,726,727,60],{},"Designed my presentation platform website for my dev work and related stuff.\nBuilt with ",[30,722,725],{"href":723,"rel":724},"https:\u002F\u002Fvuejs.org",[34],"Vue"," and deployed on ",[30,728,731],{"href":729,"rel":730},"https:\u002F\u002Fvercel.com",[34],"Vercel",{"title":62,"searchDepth":63,"depth":63,"links":733},[],"2023-10-22","Designed my presentation platform website for my dev work and related stuff.\nBuilt with Vue and deployed on Vercel.",{},"\u002Fprojects\u002Fweb\u002Fslides","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fslides",{"title":715,"description":735},"projects\u002Fweb\u002Fslides",[742,572,725],"design","https:\u002F\u002Fslides.amittai.studio","NPbH2vVVo5TE7IprNVX84Xw9c66_m5phm1K5HzGrBQM",{"id":746,"title":747,"body":748,"date":786,"description":787,"extension":67,"featured":72,"meta":788,"navigation":72,"order":83,"path":789,"repo":790,"seo":791,"stem":792,"tag":569,"tech":793,"url":83,"__hash__":794},"projects\u002Fprojects\u002Fweb\u002Frust-api.md","Rust API",{"type":8,"value":749,"toc":784},[750,779],[11,751,752,753,757,758,763,764,757,769,774,775,60],{},"It is straightforward to build a REST API in ",[30,754,572],{"href":755,"rel":756},"https:\u002F\u002Fwww.typescriptlang.org",[34]," using ",[30,759,762],{"href":760,"rel":761},"https:\u002F\u002Fexpressjs.com",[34],"Express",".\nAs a proof-of-concept for an upcoming project, I tried out\nbuilding a REST API in ",[30,765,768],{"href":766,"rel":767},"https:\u002F\u002Fwww.rust-lang.org",[34],"Rust",[30,770,773],{"href":771,"rel":772},"https:\u002F\u002Frocket.rs",[34],"Rocket",".\nRust is advantageous since it offers C-like performance\nwithout the associated memory safety issues.\nThe API has a database backend using ",[30,776,574],{"href":777,"rel":778},"https:\u002F\u002Fwww.mongodb.com",[34],[11,780,781],{},[108,782,783],{},"This project is part of a bigger personal project that's in the works — stay tuned!",{"title":62,"searchDepth":63,"depth":63,"links":785},[],"2023-10-09","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.",{},"\u002Fprojects\u002Fweb\u002Frust-api","https:\u002F\u002Fgithub.com\u002Fentends\u002Fflux-end",{"title":747,"description":787},"projects\u002Fweb\u002Frust-api",[768,773,574],"id79RYEF1PjrADUBbodkDCTggHQ4u8Yuhr6pSBhVfJ4",{"id":796,"title":797,"body":798,"date":851,"description":852,"extension":67,"featured":68,"meta":853,"navigation":72,"order":73,"path":855,"repo":856,"seo":857,"stem":858,"tag":859,"tech":860,"url":83,"__hash__":862},"projects\u002Fprojects\u002Fdeep-learning\u002Ftransfusion.md","Generative Pre-trained Transformer",{"type":8,"value":799,"toc":849},[800,814,817],[11,801,802,803,807,808,813],{},"For fun, I implemented the ",[30,804,797],{"href":805,"rel":806},"https:\u002F\u002Fopenai.com\u002Fresearch\u002Fgpt-4",[34]," (GPT) architecture\nin PyTorch. GPT is a language model that uses a transformer architecture\nto generate text. I trained the model on the ",[30,809,812],{"href":810,"rel":811},"https:\u002F\u002Fwww.tensorflow.org\u002Fdatasets\u002Fcatalog\u002Ftiny_shakespeare",[34],"tiny Shakespeare dataset","\nand used it to generate text in the style of Shakespeare.",[11,815,816],{},"Transformers are a type of neural network architecture that employes techniques such as:",[24,818,819,827,835,842],{},[27,820,821,826],{},[30,822,825],{"href":823,"rel":824},"https:\u002F\u002Ftowardsdatascience.com\u002Fillustrated-self-attention-2d627e33b20a",[34],"Self-attention",", which allows the model to learn the relationships\nbetween different parts of the input data.",[27,828,829,834],{},[30,830,833],{"href":831,"rel":832},"https:\u002F\u002Fkazemnejad.com\u002Fblog\u002Ftransformer_architecture_positional_encoding\u002F",[34],"Positional encoding",", which allows the model to learn the\nrelative positions of the input data.",[27,836,837,841],{},[30,838,840],{"href":823,"rel":839},[34],"Multi-head attention",", which allows the model to learn\ndifferent relationships between different parts of the input data.",[27,843,844,848],{},[30,845,847],{"href":823,"rel":846},[34],"Residual connections",", which allows the model to learn\nthe difference between the input data and the output data.",{"title":62,"searchDepth":63,"depth":63,"links":850},[],"2023-09-17","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.",{"month":70,"year":614,"category":854},"featured-project","\u002Fprojects\u002Fdeep-learning\u002Ftransfusion","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Ftransfusion",{"title":797,"description":852},"projects\u002Fdeep-learning\u002Ftransfusion","deep learning",[80,207,861],"Deep Learning","mdOSMApUuBR23GObYAtVSU9SaVID3Aa5b8DjtDjnbiU",{"id":864,"title":865,"body":866,"date":900,"description":901,"extension":67,"featured":72,"meta":902,"navigation":72,"order":83,"path":903,"repo":904,"seo":905,"stem":906,"tag":569,"tech":907,"url":908,"__hash__":909},"projects\u002Fprojects\u002Fweb\u002Fblog.md","Blog",{"type":8,"value":867,"toc":898},[868,890],[11,869,870,871,875,876,214,879,884,885,60],{},"New blog website design and, along with it, a new domain!\nBuilt with ",[30,872,641],{"href":873,"rel":874},"https:\u002F\u002Fnuxt.com",[34],"\u002F",[30,877,725],{"href":723,"rel":878},[34],[30,880,883],{"href":881,"rel":882},"https:\u002F\u002Fsass-lang.com",[34],"SCSS",".\nDeployed on ",[30,886,889],{"href":887,"rel":888},"https:\u002F\u002Fnetlify.com",[34],"Netlify",[11,891,892,893,60],{},"Design inspired by ",[30,894,897],{"href":895,"rel":896},"https:\u002F\u002Fminimalism.com",[34],"the ideals of minimalism",{"title":62,"searchDepth":63,"depth":63,"links":899},[],"2023-08-21","New blog website design and, along with it, a new domain!\nBuilt with Nuxt\u002FVue and SCSS.\nDeployed on Netlify.",{},"\u002Fprojects\u002Fweb\u002Fblog","https:\u002F\u002Fgithub.com\u002Flostflux\u002Fblog",{"title":865,"description":901},"projects\u002Fweb\u002Fblog",[641,572,642],"https:\u002F\u002Famittai.space","jJPYhT-dhar2gaSQf_rzjYIzjqTYDWnDN20ITSC71a0",{"id":911,"title":912,"body":913,"date":900,"description":937,"extension":67,"featured":72,"meta":938,"navigation":72,"order":83,"path":939,"repo":940,"seo":941,"stem":942,"tag":569,"tech":943,"url":944,"__hash__":945},"projects\u002Fprojects\u002Fweb\u002Fresume.md","Portfolio",{"type":8,"value":914,"toc":935},[915,930],[11,916,917,918,875,921,214,924,884,927,60],{},"New website design and, along with it, a new domain!\nBuilt with ",[30,919,641],{"href":873,"rel":920},[34],[30,922,725],{"href":723,"rel":923},[34],[30,925,883],{"href":881,"rel":926},[34],[30,928,889],{"href":887,"rel":929},[34],[11,931,892,932,60],{},[30,933,897],{"href":895,"rel":934},[34],{"title":62,"searchDepth":63,"depth":63,"links":936},[],"New website design and, along with it, a new domain!\nBuilt with Nuxt\u002FVue and SCSS.\nDeployed on Netlify.",{},"\u002Fprojects\u002Fweb\u002Fresume","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Famittai.studio",{"title":912,"description":937},"projects\u002Fweb\u002Fresume",[641,572,883],"https:\u002F\u002Famittai.studio","Im_K2B7MnfYk_nYkx1UwtfzFFkLmKpwXmo5aIfFI9nA",{"id":947,"title":948,"body":949,"date":972,"description":973,"extension":67,"featured":72,"meta":974,"navigation":72,"order":83,"path":975,"repo":976,"seo":977,"stem":978,"tag":569,"tech":979,"url":980,"__hash__":981},"projects\u002Fprojects\u002Fweb\u002Fdartmouth-robotics.md","Dartmouth Robotics Club Website",{"type":8,"value":950,"toc":970},[951],[11,952,953,954,875,959,214,964,884,967,60],{},"New website design for the Dartmouth Robotics Club.\nBuilt with ",[30,955,958],{"href":956,"rel":957},"https:\u002F\u002Fnextjs.org",[34],"Next",[30,960,963],{"href":961,"rel":962},"https:\u002F\u002Freactjs.org",[34],"React",[30,965,883],{"href":881,"rel":966},[34],[30,968,731],{"href":729,"rel":969},[34],{"title":62,"searchDepth":63,"depth":63,"links":971},[],"2023-08-10","New website design for the Dartmouth Robotics Club.\nBuilt with Next\u002FReact and SCSS.\nDeployed on Vercel.",{},"\u002Fprojects\u002Fweb\u002Fdartmouth-robotics","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Frobotics-website",{"title":948,"description":973},"projects\u002Fweb\u002Fdartmouth-robotics",[742,572,958],"https:\u002F\u002Fdartmouthrobotics.com","HEHb-yX99yJ579KWlEJczmnGuQ6B_YNyMDhZS0-6JlE",{"id":983,"title":984,"body":985,"date":992,"description":989,"extension":67,"featured":72,"meta":993,"navigation":72,"order":83,"path":994,"repo":83,"seo":995,"stem":996,"tag":997,"tech":998,"url":1001,"__hash__":1002},"projects\u002Fprojects\u002Falgorithms\u002Fleetcode.md","Leetcode Challenges",{"type":8,"value":986,"toc":990},[987],[11,988,989],{},"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.",{"title":62,"searchDepth":63,"depth":63,"links":991},[],"2023-08-01",{},"\u002Fprojects\u002Falgorithms\u002Fleetcode",{"title":984,"description":989},"projects\u002Falgorithms\u002Fleetcode","data structures and algorithms",[999,1000],"Algorithms","System Design","https:\u002F\u002Fleetcode.com\u002Fsiavava","fuVZMuuuNrAZSu7d64X-gx16IbkcjvrkAyh99cuByMQ",{"id":1004,"title":1005,"body":1006,"date":1052,"description":1010,"extension":67,"featured":72,"meta":1053,"navigation":72,"order":83,"path":1054,"repo":1055,"seo":1056,"stem":1057,"tag":569,"tech":1058,"url":1060,"__hash__":1061},"projects\u002Fprojects\u002Fweb\u002Fnetworking.md","Networking Platform",{"type":8,"value":1007,"toc":1050},[1008,1011,1027],[11,1009,1010],{},"Networking and job applications management platform for college students.",[11,1012,1013,1014,1017,1018,1021,1022,60],{},"Built with ",[30,1015,963],{"href":961,"rel":1016},[34],", ",[30,1019,572],{"href":755,"rel":1020},[34],", and built with ",[30,1023,1026],{"href":1024,"rel":1025},"https:\u002F\u002Fvitejs.dev",[34],"Vite",[11,1028,598,1029,1017,1034,1017,1039,1044,1045,60],{},[30,1030,1033],{"href":1031,"rel":1032},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fbansharee-ireen-184712274\u002F",[34],"Bansharee Ireen",[30,1035,1038],{"href":1036,"rel":1037},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fyizhen-zhen\u002F",[34],"Yizhen Zhen",[30,1040,1043],{"href":1041,"rel":1042},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcindylwang\u002F",[34],"Cindy Li Wang",", and ",[30,1046,1049],{"href":1047,"rel":1048},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjohan-cruz-hernandez-2204b9183\u002F",[34],"Johan Cruz Hernandez",{"title":62,"searchDepth":63,"depth":63,"links":1051},[],"2023-06-03",{},"\u002Fprojects\u002Fweb\u002Fnetworking","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fnetworking-platform",{"title":1005,"description":1010},"projects\u002Fweb\u002Fnetworking",[963,1059,574,642],"Redux","https:\u002F\u002Fnet.amittai.studio","2WRw3zR2tbACi6NAxsqxIKIYEwWVKILIPmzuu4Iottg",{"id":1063,"title":1064,"body":1065,"date":1104,"description":1069,"extension":67,"featured":68,"meta":1105,"navigation":72,"order":73,"path":1106,"repo":1107,"seo":1108,"stem":1109,"tag":859,"tech":1110,"url":83,"__hash__":1111},"projects\u002Fprojects\u002Fdeep-learning\u002Fadversarial.md","Adversarial Training for Neural Networks",{"type":8,"value":1066,"toc":1102},[1067,1070],[11,1068,1069],{},"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:",[24,1071,1072,1086,1094],{},[27,1073,1074,1079,1080,1085],{},[30,1075,1078],{"href":1076,"rel":1077},"https:\u002F\u002Fwww.datacamp.com\u002Ftutorial\u002Fcomplete-guide-data-augmentation",[34],"Data augmentation",", which helps the model have more data to learn from.\nNew samples are generated by randomly cropping and\u002For flipping some images.\nWe also add ",[30,1081,1084],{"href":1082,"rel":1083},"https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0167865521002440",[34],"pertubations",", to a random subset of images,\nwhich helps the model learn to be robust to noise.",[27,1087,1088,1093],{},[30,1089,1092],{"href":1090,"rel":1091},"https:\u002F\u002Fpaperswithcode.com\u002Fmethod\u002Fdropout",[34],"Dropout",", 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.",[27,1095,1096,1101],{},[30,1097,1100],{"href":1098,"rel":1099},"https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS1319157823000228",[34],"Ensemble learning",", 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":62,"searchDepth":63,"depth":63,"links":1103},[],"2023-05-17",{"month":70,"year":614},"\u002Fprojects\u002Fdeep-learning\u002Fadversarial","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fdeep-learning\u002Ftree\u002Fmain\u002Fhomeworks\u002F02",{"title":1064,"description":1069},"projects\u002Fdeep-learning\u002Fadversarial",[80,207,861],"Q6_NqxSS_QreuU7S8XS8y8BDxrJO2q9xYxij9_n8Cko",{"id":1113,"title":1114,"body":1115,"date":1140,"description":1141,"extension":67,"featured":72,"meta":1142,"navigation":72,"order":83,"path":1143,"repo":1144,"seo":1145,"stem":1146,"tag":569,"tech":1147,"url":1148,"__hash__":1149},"projects\u002Fprojects\u002Fweb\u002Fmnml-yt.md","Minimal Youtube Player",{"type":8,"value":1116,"toc":1138},[1117],[11,1118,1119,1120,1122,1123,1017,1126,1017,1129,1132,1133,60],{},"A minimal Youtube player that lets you watch videos without distractions.",[20,1121],{},"\nBuilt with ",[30,1124,963],{"href":961,"rel":1125},[34],[30,1127,572],{"href":755,"rel":1128},[34],[30,1130,642],{"href":881,"rel":1131},[34],",\nand the ",[30,1134,1137],{"href":1135,"rel":1136},"https:\u002F\u002Fdevelopers.google.com\u002Fyoutube\u002Fv3",[34],"Youtube Data API",{"title":62,"searchDepth":63,"depth":63,"links":1139},[],"2023-05-13","A minimal Youtube player that lets you watch videos without distractions.\nBuilt with React, TypeScript, Sass,\nand the Youtube Data API.",{},"\u002Fprojects\u002Fweb\u002Fmnml-yt","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fmnml-yt",{"title":1114,"description":1141},"projects\u002Fweb\u002Fmnml-yt",[742,963,572,642],"https:\u002F\u002Fmnml-yt.amittai.studio","itr4Oj_6BA1bQV58p5fnaQeeMBjp7zubrbOpphbtl7s",{"id":1151,"title":1152,"body":1153,"date":1173,"description":1157,"extension":67,"featured":72,"meta":1174,"navigation":72,"order":83,"path":1175,"repo":1176,"seo":1177,"stem":1178,"tag":569,"tech":1179,"url":1180,"__hash__":1181},"projects\u002Fprojects\u002Fweb\u002Fposts-platform.md","Posts Platform",{"type":8,"value":1154,"toc":1171},[1155,1158],[11,1156,1157],{},"Post-it-note style platform for organizing your thoughts and ideas.",[11,1159,1013,1160,1017,1163,1044,1168,60],{},[30,1161,963],{"href":961,"rel":1162},[34],[30,1164,1167],{"href":1165,"rel":1166},"https:\u002F\u002Fwww.javascript.com",[34],"JavaScript",[30,1169,642],{"href":881,"rel":1170},[34],{"title":62,"searchDepth":63,"depth":63,"links":1172},[],"2023-05-10",{},"\u002Fprojects\u002Fweb\u002Fposts-platform","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fposts-platform",{"title":1152,"description":1157},"projects\u002Fweb\u002Fposts-platform",[742,963,1167,642,574],"https:\u002F\u002Fposts-platform.amittai.studio","lMEdHKKLT9gBfuELKGgZckchSC3uV506U9OKF-8vxiM",{"id":1183,"title":1184,"body":1185,"date":1208,"description":1189,"extension":67,"featured":72,"meta":1209,"navigation":72,"order":83,"path":1210,"repo":1211,"seo":1212,"stem":1213,"tag":569,"tech":1214,"url":1215,"__hash__":1216},"projects\u002Fprojects\u002Fweb\u002Fkahoots-api.md","Kahoots API",{"type":8,"value":1186,"toc":1206},[1187,1190],[11,1188,1189],{},"An API endpoint that supports the standard game of Kahoots.",[11,1191,1013,1192,1017,1195,214,1198,1202,1203,60],{},[30,1193,572],{"href":755,"rel":1194},[34],[30,1196,762],{"href":760,"rel":1197},[34],[30,1199,573],{"href":1200,"rel":1201},"https:\u002F\u002Fnodejs.org",[34],"\nData stored on ",[30,1204,574],{"href":777,"rel":1205},[34],{"title":62,"searchDepth":63,"depth":63,"links":1207},[],"2023-05-04",{},"\u002Fprojects\u002Fweb\u002Fkahoots-api","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fkahoots-api",{"title":1184,"description":1189},"projects\u002Fweb\u002Fkahoots-api",[572,762,573],"https:\u002F\u002Fkahoots-api.amittai.studio","YM3auQUvsP5IDH9muZ9uTr20YCNeE3n6wWGNv2C9FHU",{"id":1218,"title":1219,"body":1220,"date":1238,"description":1224,"extension":67,"featured":72,"meta":1239,"navigation":72,"order":83,"path":1240,"repo":1241,"seo":1242,"stem":1243,"tag":569,"tech":1244,"url":1246,"__hash__":1247},"projects\u002Fprojects\u002Fweb\u002Fnotes-platform.md","Notes Platform",{"type":8,"value":1221,"toc":1236},[1222,1225],[11,1223,1224],{},"Interactive notepad for organizing your thoughts.",[11,1226,1013,1227,1017,1230,1044,1233,60],{},[30,1228,963],{"href":961,"rel":1229},[34],[30,1231,1167],{"href":1165,"rel":1232},[34],[30,1234,642],{"href":881,"rel":1235},[34],{"title":62,"searchDepth":63,"depth":63,"links":1237},[],"2023-05-03",{},"\u002Fprojects\u002Fweb\u002Fnotes-platform","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fnotes-platform",{"title":1219,"description":1224},"projects\u002Fweb\u002Fnotes-platform",[742,963,1167,642,1245],"Firebase","https:\u002F\u002Fnotes-platform.amittai.studio","ZjV3rvLoZlr05G9zvuiSoXMQ79-PIlWNP7JsrxyinBc",{"id":1249,"title":1250,"body":1251,"date":1238,"description":1189,"extension":67,"featured":72,"meta":1272,"navigation":72,"order":83,"path":1273,"repo":1274,"seo":1275,"stem":1276,"tag":569,"tech":1277,"url":1278,"__hash__":1279},"projects\u002Fprojects\u002Fweb\u002Fplatform-api.md","Posts Platform API",{"type":8,"value":1252,"toc":1270},[1253,1255],[11,1254,1189],{},[11,1256,1013,1257,1017,1260,214,1263,1266,1267,60],{},[30,1258,572],{"href":755,"rel":1259},[34],[30,1261,762],{"href":760,"rel":1262},[34],[30,1264,573],{"href":1200,"rel":1265},[34],".\nData stored on ",[30,1268,574],{"href":777,"rel":1269},[34],{"title":62,"searchDepth":63,"depth":63,"links":1271},[],{},"\u002Fprojects\u002Fweb\u002Fplatform-api","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fplatform-api",{"title":1250,"description":1189},"projects\u002Fweb\u002Fplatform-api",[572,762,573,574],"https:\u002F\u002Fplatform-api.amittai.studio","Kh85G--vkJGRqftCuFDCHMDrzHmbbQummDSe0jdEUDo",{"id":1281,"title":1282,"body":1283,"date":1318,"description":1319,"extension":67,"featured":72,"meta":1320,"navigation":72,"order":83,"path":1321,"repo":1322,"seo":1323,"stem":1324,"tag":569,"tech":1325,"url":1326,"__hash__":1327},"projects\u002Fprojects\u002Fweb\u002Fbuzzquiz.md","BuzzQuiz",{"type":8,"value":1284,"toc":1316},[1285,1293],[11,1286,1287,1292],{},[30,1288,1291],{"href":1289,"rel":1290},"https:\u002F\u002Fwww.buzzfeed.com",[34],"BuzzFeed","-style quiz for movie recs!",[11,1294,1295,1296,1017,1301,1044,1306,1309,1310,1315],{},"Built with vanilla ",[30,1297,1300],{"href":1298,"rel":1299},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTML",[34],"HTML",[30,1302,1305],{"href":1303,"rel":1304},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS",[34],"CSS",[30,1307,1167],{"href":1165,"rel":1308},[34],",\nwith a lot of ",[30,1311,1314],{"href":1312,"rel":1313},"https:\u002F\u002Fjquery.com",[34],"jQuery"," sprinkled in.",{"title":62,"searchDepth":63,"depth":63,"links":1317},[],"2023-04-24","BuzzFeed-style quiz for movie recs!",{},"\u002Fprojects\u002Fweb\u002Fbuzzquiz","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fbuzzquiz",{"title":1282,"description":1319},"projects\u002Fweb\u002Fbuzzquiz",[742,1300,1305,1167],"https:\u002F\u002Fbuzzquiz.amittai.studio","VCnFORUWnmuHz1PX-f7hstFV1K5Za6j1vAwUyqcLugA",{"id":1329,"title":1330,"body":1331,"date":1360,"description":1361,"extension":67,"featured":72,"meta":1362,"navigation":72,"order":83,"path":1363,"repo":1364,"seo":1365,"stem":1366,"tag":569,"tech":1367,"url":1368,"__hash__":1369},"projects\u002Fprojects\u002Fweb\u002Ftictoc.md","TicToc",{"type":8,"value":1332,"toc":1358},[1333,1347],[11,1334,1335,1340,1341,1346],{},[30,1336,1339],{"href":1337,"rel":1338},"https:\u002F\u002Fapple.com",[34],"Apple","-inspired timer that shows quotes from\n",[30,1342,1345],{"href":1343,"rel":1344},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFoundation_(TV_series)",[34],"Foundation",", my favorite TV show.",[11,1348,1295,1349,1017,1352,1044,1355,60],{},[30,1350,1300],{"href":1298,"rel":1351},[34],[30,1353,1305],{"href":1303,"rel":1354},[34],[30,1356,572],{"href":755,"rel":1357},[34],{"title":62,"searchDepth":63,"depth":63,"links":1359},[],"2023-04-23","Apple-inspired timer that shows quotes from\nFoundation, my favorite TV show.",{},"\u002Fprojects\u002Fweb\u002Ftictoc","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Ftictoc",{"title":1330,"description":1361},"projects\u002Fweb\u002Ftictoc",[742,572,642],"https:\u002F\u002Ftictoc.amittai.studio","pljM0YL6dhoHKQmr8s1qG3jDF5cKrV-HgIvE_MuVM4g",{"id":1371,"title":1372,"body":1373,"date":1380,"description":1377,"extension":67,"featured":72,"meta":1381,"navigation":72,"order":73,"path":1382,"repo":1383,"seo":1384,"stem":1385,"tag":859,"tech":1386,"url":83,"__hash__":1387},"projects\u002Fprojects\u002Fdeep-learning\u002Fhyperparameter-tuning.md","Hyperparameter Tuning for Neural Networks",{"type":8,"value":1374,"toc":1378},[1375],[11,1376,1377],{},"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.",{"title":62,"searchDepth":63,"depth":63,"links":1379},[],"2023-04-14",{"month":70,"year":614,"category":854},"\u002Fprojects\u002Fdeep-learning\u002Fhyperparameter-tuning","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fdeep-learning\u002Ftree\u002Fmain\u002Fhomeworks\u002F01",{"title":1372,"description":1377},"projects\u002Fdeep-learning\u002Fhyperparameter-tuning",[80,207,861],"3krqorIcyT3Dh-S_h_Fr-FElgdetk0bD1u5v3stfuOA",{"id":1389,"title":1390,"body":1391,"date":1416,"description":1417,"extension":67,"featured":72,"meta":1418,"navigation":72,"order":83,"path":1419,"repo":1420,"seo":1421,"stem":1422,"tag":569,"tech":1423,"url":1424,"__hash__":1425},"projects\u002Fprojects\u002Fweb\u002Fjekyll.md","Jekyll Blog",{"type":8,"value":1392,"toc":1414},[1393,1401],[11,1394,1395,1396,60],{},"A minimal blog demo using ",[30,1397,1400],{"href":1398,"rel":1399},"https:\u002F\u002Fjekyllrb.com",[34],"Jekyll",[11,1402,1013,1403,1017,1406,1044,1411,60],{},[30,1404,1400],{"href":1398,"rel":1405},[34],[30,1407,1410],{"href":1408,"rel":1409},"https:\u002F\u002Fwww.ruby-lang.org",[34],"Ruby",[30,1412,642],{"href":881,"rel":1413},[34],{"title":62,"searchDepth":63,"depth":63,"links":1415},[],"2023-04-13","A minimal blog demo using Jekyll.",{},"\u002Fprojects\u002Fweb\u002Fjekyll","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fjekyll-blog",{"title":1390,"description":1417},"projects\u002Fweb\u002Fjekyll",[742,1400,1410,642],"https:\u002F\u002Fjekyll-blog.amittai.studio","A5JDa8qvM3suRJbKorfJRwC_v6K9X4olS5wUMfrmqGo",{"id":1427,"title":1428,"body":1429,"date":1448,"description":1449,"extension":67,"featured":72,"meta":1450,"navigation":72,"order":83,"path":1451,"repo":1452,"seo":1453,"stem":1454,"tag":569,"tech":1455,"url":1456,"__hash__":1457},"projects\u002Fprojects\u002Fweb\u002Fblog.v1.md","Blog v1",{"type":8,"value":1430,"toc":1446},[1431],[11,1432,1433,1434,875,1437,214,1440,884,1443,60],{},"The first iteration of my personal blog\u002Fportfolio.\nBuilt with ",[30,1435,641],{"href":873,"rel":1436},[34],[30,1438,725],{"href":723,"rel":1439},[34],[30,1441,883],{"href":881,"rel":1442},[34],[30,1444,889],{"href":887,"rel":1445},[34],{"title":62,"searchDepth":63,"depth":63,"links":1447},[],"2023-02-11","The first iteration of my personal blog\u002Fportfolio.\nBuilt with Nuxt\u002FVue and SCSS.\nDeployed on Netlify.",{},"\u002Fprojects\u002Fweb\u002Fblog.v1","https:\u002F\u002Fgithub.com\u002Fcentauri-1\u002Fblog.v1",{"title":1428,"description":1449},"projects\u002Fweb\u002Fblog.v1",[742,572,641],"https:\u002F\u002Fv1.amittai.studio","QYit6tEl2S0NLinm9P-ogDX5Hx-J_vqGJTwCtUqg0Ps",{"id":1459,"title":1460,"body":1461,"date":1485,"description":1486,"extension":67,"featured":72,"meta":1487,"navigation":72,"order":70,"path":1491,"repo":1492,"seo":1493,"stem":1494,"tag":1495,"tech":1496,"url":83,"__hash__":1499},"projects\u002Fprojects\u002Fsystems\u002F61-nosql-app.md","NoSQL App",{"type":8,"value":1462,"toc":1483},[1463,1476],[11,1464,1465,1466,1470,1471,1475],{},"A blog server built with a ",[30,1467,80],{"href":1468,"rel":1469},"https:\u002F\u002Fwww.python.org\u002F",[34]," frontend\nand a ",[30,1472,574],{"href":1473,"rel":1474},"https:\u002F\u002Fwww.mongodb.com\u002F",[34]," backend.\nIt supports registered users posting updates and comments, querying for posts\nand comments, and deleting posts and comments.",[11,1477,598,1478,60],{},[30,1479,1482],{"href":1480,"rel":1481},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fke-lou-898301133",[34],"Ke Lou",{"title":62,"searchDepth":63,"depth":63,"links":1484},[],"2022-11-03","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.",{"month":1488,"year":1489,"cover":1490,"category":854},10,2022,"featured-relational-db.gif","\u002Fprojects\u002Fsystems\u002F61-nosql-app","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fnosql",{"title":1460,"description":1486},"projects\u002Fsystems\u002F61-nosql-app","systems",[80,574,1497,1498],"NoSQL","Database Systems","LNfm00KY8W4OS-2Um7AAUk4r1oSgt_L1ipQZJgzGSIg",{"id":1501,"title":1502,"body":1503,"date":1536,"description":1537,"extension":67,"featured":68,"meta":1538,"navigation":72,"order":70,"path":1539,"repo":1540,"seo":1541,"stem":1542,"tag":1495,"tech":1543,"url":83,"__hash__":1544},"projects\u002Fprojects\u002Fsystems\u002F61-relational-app.md","Relational Database App",{"type":8,"value":1504,"toc":1534},[1505,1529],[11,1506,1507,1508,1513,1514,1470,1517,1522,1523,1528],{},"A ",[30,1509,1512],{"href":1510,"rel":1511},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRelational_database",[34],"relational database"," with a\n",[30,1515,80],{"href":1468,"rel":1516},[34],[30,1518,1521],{"href":1519,"rel":1520},"https:\u002F\u002Fwww.mysql.com\u002F",[34],"MySQL"," backend,\nincluding various triggers and ",[30,1524,1527],{"href":1525,"rel":1526},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSQL",[34],"SQL"," automations.",[11,1530,598,1531,60],{},[30,1532,1482],{"href":1480,"rel":1533},[34],{"title":62,"searchDepth":63,"depth":63,"links":1535},[],"2022-10-20","A relational database with a\nPython frontend\nand a MySQL backend,\nincluding various triggers and SQL automations.",{"month":1488,"year":1489,"cover":1490,"category":854},"\u002Fprojects\u002Fsystems\u002F61-relational-app","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Frelational",{"title":1502,"description":1537},"projects\u002Fsystems\u002F61-relational-app",[80,1521,1498],"XQ-F6akeUpPnfzVmBuOQGBpu15o0N96SU1pPQuD4Uo4",{"id":1546,"title":1547,"body":1548,"date":1566,"description":1567,"extension":67,"featured":72,"meta":1568,"navigation":72,"order":83,"path":1569,"repo":1570,"seo":1571,"stem":1572,"tag":1573,"tech":1574,"url":83,"__hash__":1576},"projects\u002Fprojects\u002Fml\u002Fml-ridge-lasso.md","Linear Regression Classifiers",{"type":8,"value":1549,"toc":1564},[1550],[11,1551,1552,1553,214,1558,1563],{},"Using ",[30,1554,1557],{"href":1555,"rel":1556},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTikhonov_regularization",[34],"ridge regression",[30,1559,1562],{"href":1560,"rel":1561},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLasso_(statistics)",[34],"lasso regression","\nmodels to find an optimal learning strategy for a given set of data.",{"title":62,"searchDepth":63,"depth":63,"links":1565},[],"2022-05-02","Using ridge regression and lasso regression\nmodels to find an optimal learning strategy for a given set of data.",{},"\u002Fprojects\u002Fml\u002Fml-ridge-lasso","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fml\u002Fblob\u002Fmain\u002FHW2\u002FHW2.ipynb",{"title":1547,"description":1567},"projects\u002Fml\u002Fml-ridge-lasso","machine learning",[80,1575],"Machine Learning","cCyJWsu7VqZpYE1hCeGPgABweIvZprU0M-BKcLut9-M",{"id":1578,"title":1579,"body":1580,"date":1593,"description":1594,"extension":67,"featured":72,"meta":1595,"navigation":72,"order":83,"path":1596,"repo":1597,"seo":1598,"stem":1599,"tag":1573,"tech":1600,"url":83,"__hash__":1601},"projects\u002Fprojects\u002Fml\u002Fml-gradient-descent.md","Gradient Descent",{"type":8,"value":1581,"toc":1591},[1582],[11,1583,1584,1585,1590],{},"Using regression models to classify provided data.\nThe models are not pre-trained, se we use ",[30,1586,1589],{"href":1587,"rel":1588},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGradient_descent",[34],"gradient descent","\nto find the optimal parameters for the model.",{"title":62,"searchDepth":63,"depth":63,"links":1592},[],"2022-04-21","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.",{},"\u002Fprojects\u002Fml\u002Fml-gradient-descent","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fml\u002Fblob\u002Fmain\u002FHW1\u002FHW1_cosc74.ipynb",{"title":1579,"description":1594},"projects\u002Fml\u002Fml-gradient-descent",[80,1575],"aaA1Gi6Kg0QLR4DDdgUbX6JLQvZdccLuEB7CSSFMBjs",{"id":1603,"title":1604,"body":1605,"date":1618,"description":1619,"extension":67,"featured":72,"meta":1620,"navigation":72,"order":83,"path":1621,"repo":1622,"seo":1623,"stem":1624,"tag":1625,"tech":1626,"url":83,"__hash__":1630},"projects\u002Fprojects\u002Fvisual\u002F89-position-based-dynamics.md","Position-Based Dynamics",{"type":8,"value":1606,"toc":1616},[1607],[11,1608,1609,1610,1615],{},"Using a position-based system with constraints (instead of the more common mass-spring model)\nto simulate bodies. The method, as described in\n",[30,1611,1614],{"href":1612,"rel":1613},"https:\u002F\u002Fmatthias-research.github.io\u002Fpages\u002Fpublications\u002FposBasedDyn.pdf",[34],"this paper",",\noffers several advantages over the mass-spring model\nincluding being more generalizable to other scenarios and\nrequiring less computation to simulate a body.",{"title":62,"searchDepth":63,"depth":63,"links":1617},[],"2022-03-14","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.",{},"\u002Fprojects\u002Fvisual\u002F89-position-based-dynamics","https:\u002F\u002Fgithub.com\u002Fsiavava\u002FPhysX\u002Ftree\u002Fcleaned-up-proj\u002Fproj\u002Fa1_mass_spring",{"title":1604,"description":1619},"projects\u002Fvisual\u002F89-position-based-dynamics","visual computing",[1627,1628,1629],"C++","Visual Computing","Physical Simulation","CqKmQ5H9_TZeF5Ia8dI8kY2owHV-y5JJwJgWNdTS1WE",{"id":1632,"title":1633,"body":1634,"date":1674,"description":1675,"extension":67,"featured":72,"meta":1676,"navigation":72,"order":1679,"path":1680,"repo":1681,"seo":1682,"stem":1683,"tag":1649,"tech":1684,"url":83,"__hash__":1687},"projects\u002Fprojects\u002Ffunctional\u002Fwordle.md","Wordle, Grep",{"type":8,"value":1635,"toc":1672},[1636,1651,1664],[11,1637,1638,1639,1644,1645,1650],{},"Wordle and Grep replicas implemented in Haskell,\na ",[30,1640,1643],{"href":1641,"rel":1642},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPure_function",[34],"pure"," ",[30,1646,1649],{"href":1647,"rel":1648},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFunctional_programming",[34],"functional programming"," language.",[11,1652,1653,1658,1659,60],{},[30,1654,1657],{"href":1655,"rel":1656},"https:\u002F\u002Fwww.nytimes.com\u002Fgames\u002Fwordle\u002Findex.html",[34],"Wordle","\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 ",[30,1660,1663],{"href":1661,"rel":1662},"https:\u002F\u002Fyoutu.be\u002FX_e2IEaR4aA?si=6UD8xPwH4fsJJzO2&t=1016",[34],"Josh Wardle",[11,1665,1666,1671],{},[30,1667,1670],{"href":1668,"rel":1669},"https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fgrep\u002Fmanual\u002Fgrep.html",[34],"Grep","\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":62,"searchDepth":63,"depth":63,"links":1673},[],"2022-03-01","Wordle and Grep replicas implemented in Haskell,\na pure functional programming language.",{"month":1677,"year":1489,"cover":1678,"category":854},3,"featured-wordle.gif",6,"\u002Fprojects\u002Ffunctional\u002Fwordle","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Ftau",{"title":1633,"description":1675},"projects\u002Ffunctional\u002Fwordle",[710,1685,1686],"Cabal","Functional Programming","IfXrj2GMtKmdBeY237XvqZ597EBHtOxvn4MYp6EBlCc",{"id":1689,"title":1690,"body":1691,"date":1715,"description":1716,"extension":67,"featured":72,"meta":1717,"navigation":72,"order":83,"path":1718,"repo":1719,"seo":1720,"stem":1721,"tag":1625,"tech":1722,"url":83,"__hash__":1723},"projects\u002Fprojects\u002Fvisual\u002F89-multicopter.md","Rigid Body Simulation",{"type":8,"value":1692,"toc":1713},[1693],[11,1694,1695,1696,1644,1701,1706,1707,1712],{},"We use rotational dynamics to simulate a ",[30,1697,1700],{"href":1698,"rel":1699},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRigid_body",[34],"rigid-body",[30,1702,1705],{"href":1703,"rel":1704},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultirotor",[34],"helicopter",",\nusing rotor blades to generate lift and thrust.\nWe use the ",[30,1708,1711],{"href":1709,"rel":1710},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEuler_method",[34],"Euler method"," to numerically integrate the equations of motion.",{"title":62,"searchDepth":63,"depth":63,"links":1714},[],"2022-02-14","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.",{},"\u002Fprojects\u002Fvisual\u002F89-multicopter","https:\u002F\u002Fgithub.com\u002Fsiavava\u002FPhysX\u002Fblob\u002Fmain\u002Fproj\u002Fa4_multi_copter",{"title":1690,"description":1716},"projects\u002Fvisual\u002F89-multicopter",[1627,1628,1629],"7azz17P_wdGdlC38r4c-dyBJzaeZUPkdZiELeT_gLyM",{"id":1725,"title":1726,"body":1727,"date":1762,"description":1763,"extension":67,"featured":72,"meta":1764,"navigation":72,"order":83,"path":1765,"repo":1766,"seo":1767,"stem":1768,"tag":1625,"tech":1769,"url":83,"__hash__":1770},"projects\u002Fprojects\u002Fvisual\u002F89-fluid-mechanics.md","Smoke Simulation",{"type":8,"value":1728,"toc":1760},[1729],[11,1730,1731,1732,1737,1738,1743,1744,1737,1749,1753,1754,1759],{},"Using Physics-based simulation to simulate a fluid-flow system.\nWe use the ",[30,1733,1736],{"href":1734,"rel":1735},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSmoothed-particle_hydrodynamics",[34],"SPH"," method to simulate the ",[30,1739,1742],{"href":1740,"rel":1741},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNavier%E2%80%93Stokes_equations",[34],"Navier Stokes equations"," for smoke.\nWe also apply the ",[30,1745,1748],{"href":1746,"rel":1747},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVorticity_(fluid_dynamics)",[34],"Vorticity confinement",[30,1750,1752],{"href":1746,"rel":1751},[34],"vorticity"," of the fluid.\nTo reduce the computational space,we use a ",[30,1755,1758],{"href":1756,"rel":1757},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCellular_automaton",[34],"grid"," to store the fluid particles.",{"title":62,"searchDepth":63,"depth":63,"links":1761},[],"2022-02-13","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.",{},"\u002Fprojects\u002Fvisual\u002F89-fluid-mechanics","https:\u002F\u002Fgithub.com\u002Fsiavava\u002FPhysX\u002Fblob\u002Fmain\u002Fproj\u002Fa3_grid_fluid",{"title":1726,"description":1763},"projects\u002Fvisual\u002F89-fluid-mechanics",[1627,1628,1629],"LUzZLRDxWOrZ8uVgQfTdDFfjaDt8ShCosAnMiyUbWZk",{"id":1772,"title":1773,"body":1774,"date":1795,"description":1796,"extension":67,"featured":72,"meta":1797,"navigation":72,"order":83,"path":1798,"repo":1799,"seo":1800,"stem":1801,"tag":1625,"tech":1802,"url":83,"__hash__":1803},"projects\u002Fprojects\u002Fvisual\u002F89-particle-physics.md","Particle Simulation",{"type":8,"value":1775,"toc":1793},[1776],[11,1777,1778,1779,1781,1782,1785,1786,1789,1790,1792],{},"Using Physics-based simulation to simulate fluid and particle systems.",[20,1780],{},"\nWe use the ",[30,1783,1736],{"href":1734,"rel":1784},[34]," method to simulate the\n",[30,1787,1742],{"href":1740,"rel":1788},[34]," for fluids.",[20,1791],{},"\nFor particles, we use positional indexing to efficiently detect collisions and propagate\nforces between particles.",{"title":62,"searchDepth":63,"depth":63,"links":1794},[],"2022-01-27","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.",{},"\u002Fprojects\u002Fvisual\u002F89-particle-physics","https:\u002F\u002Fgithub.com\u002Fsiavava\u002FPhysX\u002Ftree\u002Fmain\u002Fproj\u002Fa1_mass_spring",{"title":1773,"description":1796},"projects\u002Fvisual\u002F89-particle-physics",[1627,1628,1629],"GofVuRi9hBdinrmoVQ_lM0wVuITUghQ4eZI2Z9us82g",{"id":1805,"title":1806,"body":1807,"date":1820,"description":1821,"extension":67,"featured":72,"meta":1822,"navigation":72,"order":83,"path":1823,"repo":1799,"seo":1824,"stem":1825,"tag":1625,"tech":1826,"url":83,"__hash__":1827},"projects\u002Fprojects\u002Fvisual\u002F89-mass-spring.md","Hair Strand Simulation",{"type":8,"value":1808,"toc":1818},[1809],[11,1810,1811,1812,1817],{},"Using Physics-based simulation to animate a hair strand using connection\nand bending constraints. The simulation is implemented in C++ using the\n",[30,1813,1816],{"href":1814,"rel":1815},"https:\u002F\u002Fwww.opengl.org\u002F",[34],"OpenGL"," framework.",{"title":62,"searchDepth":63,"depth":63,"links":1819},[],"2022-01-20","Using Physics-based simulation to animate a hair strand using connection\nand bending constraints. The simulation is implemented in C++ using the\nOpenGL framework.",{},"\u002Fprojects\u002Fvisual\u002F89-mass-spring",{"title":1806,"description":1821},"projects\u002Fvisual\u002F89-mass-spring",[1627,1628,1629],"_gRdOlsnWll7x8bAFh-qBx6jx_4QxZt5Qn2xosQoxuI",{"id":1829,"title":1830,"body":1831,"date":1891,"description":1892,"extension":67,"featured":68,"meta":1893,"navigation":72,"order":63,"path":1895,"repo":1896,"seo":1897,"stem":1898,"tag":1495,"tech":1899,"url":83,"__hash__":1902},"projects\u002Fprojects\u002Fsystems\u002F51-logisim-cpu.md","Logisim Processor",{"type":8,"value":1832,"toc":1889},[1833],[11,1834,1835,1836,1841,1842,1847,1848,1017,1853,657,1858,1017,1863,657,1868,1017,1873,657,1878,1044,1883,1888],{},"A fully functional 16-bit ",[30,1837,1840],{"href":1838,"rel":1839},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCentral_processing_unit",[34],"CPU"," implemented in ",[30,1843,1846],{"href":1844,"rel":1845},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLogisim",[34],"Logisim",".\nAll CPU components including the ",[30,1849,1852],{"href":1850,"rel":1851},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FArithmetic_logic_unit",[34],"ALU",[30,1854,1857],{"href":1855,"rel":1856},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProcessor_register",[34],"registers",[30,1859,1862],{"href":1860,"rel":1861},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FControl_unit",[34],"control unit",[30,1864,1867],{"href":1865,"rel":1866},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProgram_counter",[34],"program counter",[30,1869,1872],{"href":1870,"rel":1871},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRandom-access_memory",[34],"RAM",[30,1874,1877],{"href":1875,"rel":1876},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMicrosequencer",[34],"micro-sequencer",[30,1879,1882],{"href":1880,"rel":1881},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFinite-state_machine",[34],"finite-state machine",[30,1884,1887],{"href":1885,"rel":1886},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInput\u002Foutput",[34],"IO"," are implemented from basic gates.",{"title":62,"searchDepth":63,"depth":63,"links":1890},[],"2021-11-05","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.",{"cover":1894,"category":854},"featured-logisim-cpu.gif","\u002Fprojects\u002Fsystems\u002F51-logisim-cpu","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fassembly\u002Ftree\u002Fmain\u002Fcs51\u002Fpractice\u002Fhw8",{"title":1830,"description":1892},"projects\u002Fsystems\u002F51-logisim-cpu",[1900,1901],"Assembly","Computer Architecture","nDYYE0vv3OfOiDehu2hRkNuR3_5zrpBIEUbvdyTUS9E",{"id":1904,"title":1905,"body":1906,"date":1930,"description":1931,"extension":67,"featured":72,"meta":1932,"navigation":72,"order":70,"path":1934,"repo":1935,"seo":1936,"stem":1937,"tag":1938,"tech":1939,"url":83,"__hash__":1943},"projects\u002Fprojects\u002Fai\u002F76-markov-maze.md","Robot Colocation",{"type":8,"value":1907,"toc":1928},[1908],[11,1909,1910,1911,1916,1917,1916,1922,1927],{},"A common problem in robotics is localizing a robot in a novel environment\ngiven sensor readings. This project uses ",[30,1912,1915],{"href":1913,"rel":1914},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHidden_Markov_model",[34],"hidden markov models","\nand the ",[30,1918,1921],{"href":1919,"rel":1920},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FForward%E2%80%93backward_algorithm",[34],"forward-backward algorithm",[30,1923,1926],{"href":1924,"rel":1925},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FViterbi_algorithm",[34],"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.",{"title":62,"searchDepth":63,"depth":63,"links":1929},[],"2021-11-02","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.",{"cover":1933,"category":854},"featured-robot-colocation.gif","\u002Fprojects\u002Fai\u002F76-markov-maze","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fai\u002Ftree\u002Fmain\u002F06-HiddenMarkovModels",{"title":1905,"description":1931},"projects\u002Fai\u002F76-markov-maze","artificial intelligence",[80,1940,1941,1942],"MDP","Robotics","AI","1dotFt_ODlhElqfRglS6knvvBtzBrDE3SBTJqN0GSsc",{"id":1945,"title":1946,"body":1947,"date":1993,"description":1994,"extension":67,"featured":72,"meta":1995,"navigation":72,"order":83,"path":1996,"repo":1997,"seo":1998,"stem":1999,"tag":1938,"tech":2000,"url":83,"__hash__":2002},"projects\u002Fprojects\u002Fai\u002F76-logic.md","Logic Algorithms",{"type":8,"value":1948,"toc":1991},[1949,1971],[11,1950,1951,1956,1957,1962,1963,1644,1966,60],{},[30,1952,1955],{"href":1953,"rel":1954},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBoolean_satisfiability_problem",[34],"Boolean satisfiability"," is ",[30,1958,1961],{"href":1959,"rel":1960},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNP-completeness",[34],"NP-complete",",\nmeaning any algorithm that solves it takes exponential time\n— in fact, any polynomial solution would ",[15,1964,1965],{},"prove",[30,1967,1970],{"href":1968,"rel":1969},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FP_versus_NP_problem",[34],"P=NP",[11,1972,1973,1974,214,1979,1984,1985,1990],{},"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",[30,1975,1978],{"href":1976,"rel":1977},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGSAT",[34],"GSAT",[30,1980,1983],{"href":1981,"rel":1982},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWalkSAT",[34],"WalkSAT",",\nand use them to solve ",[30,1986,1989],{"href":1987,"rel":1988},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSudoku",[34],"sudoku"," puzzles\nmodelled as first-order logic clauses.",{"title":62,"searchDepth":63,"depth":63,"links":1992},[],"2021-10-21","Boolean satisfiability is NP-complete,\nmeaning any algorithm that solves it takes exponential time\n— in fact, any polynomial solution would prove P=NP.",{},"\u002Fprojects\u002Fai\u002F76-logic","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fai\u002Ftree\u002Fmain\u002F05-Logic",{"title":1946,"description":1994},"projects\u002Fai\u002F76-logic",[80,2001,1942],"First Order Logic","slNuoYaeWqvjn2_6tra7WEftS47lSZqmq3k38C91TK4",{"id":2004,"title":2005,"body":2006,"date":2023,"description":2024,"extension":67,"featured":72,"meta":2025,"navigation":72,"order":83,"path":2026,"repo":2027,"seo":2028,"stem":2029,"tag":1938,"tech":2030,"url":83,"__hash__":2032},"projects\u002Fprojects\u002Fai\u002F76-constraint-satisfaction.md","Constraint Satisfaction",{"type":8,"value":2007,"toc":2021},[2008],[11,2009,1552,2010,214,2015,2020],{},[30,2011,2014],{"href":2012,"rel":2013},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBacktracking",[34],"backtracking",[30,2016,2019],{"href":2017,"rel":2018},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FForward_checking",[34],"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.",{"title":62,"searchDepth":63,"depth":63,"links":2022},[],"2021-10-13","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.",{},"\u002Fprojects\u002Fai\u002F76-constraint-satisfaction","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fai\u002Ftree\u002Fmain\u002F04-ConstraintSatisfaction",{"title":2005,"description":2024},"projects\u002Fai\u002F76-constraint-satisfaction",[80,2031,1942],"Graph Search","54fMvosMeFQtc7d3I_fTlJKtZgNAGMtk49VYxMyDYbk",{"id":2034,"title":2035,"body":2036,"date":2065,"description":2066,"extension":67,"featured":72,"meta":2067,"navigation":72,"order":83,"path":2068,"repo":2069,"seo":2070,"stem":2071,"tag":1938,"tech":2072,"url":83,"__hash__":2073},"projects\u002Fprojects\u002Fai\u002F76-informed-search.md","Informed Search",{"type":8,"value":2037,"toc":2063},[2038],[11,2039,2040,2041,214,2046,2051,2052,214,2057,2062],{},"Using informed search techniques such as ",[30,2042,2045],{"href":2043,"rel":2044},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FA*_search_algorithm",[34],"A* search",[30,2047,2050],{"href":2048,"rel":2049},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGreedy_algorithm",[34],"Greedy search","\nand heuristics such as ",[30,2053,2056],{"href":2054,"rel":2055},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTaxicab_geometry",[34],"manhattan distance",[30,2058,2061],{"href":2059,"rel":2060},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEuclidean_distance",[34],"euclidean distance","\nto navigate a robot through a maze with obstacles to a goal location.",{"title":62,"searchDepth":63,"depth":63,"links":2064},[],"2021-10-03","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.",{},"\u002Fprojects\u002Fai\u002F76-informed-search","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fai\u002Ftree\u002Fmain\u002F02-Mazeworld",{"title":2035,"description":2066},"projects\u002Fai\u002F76-informed-search",[80,2031,1942],"on499mvKYuXYi86CTE1xA9dQrNW_6ovfP28c6t-qEmA",{"id":2075,"title":2076,"body":2077,"date":2125,"description":2126,"extension":67,"featured":68,"meta":2127,"navigation":72,"order":70,"path":2130,"repo":2131,"seo":2132,"stem":2133,"tag":1938,"tech":2134,"url":83,"__hash__":2136},"projects\u002Fprojects\u002Fai\u002F76-chess.md","Intelligent Chess bot",{"type":8,"value":2078,"toc":2123},[2079],[11,2080,2081,2082,1017,2087,657,2092,657,2097,1017,2102,657,2107,657,2112,1044,2117,2122],{},"A chess bot that uses various strategies including\n",[30,2083,2086],{"href":2084,"rel":2085},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimax",[34],"minimax",[30,2088,2091],{"href":2089,"rel":2090},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAlpha%E2%80%93beta_pruning",[34],"alpha-beta pruning",[30,2093,2096],{"href":2094,"rel":2095},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIterative_deepening_depth-first_search",[34],"iterative deepening",[30,2098,2101],{"href":2099,"rel":2100},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransposition_table",[34],"transposition tables",[30,2103,2106],{"href":2104,"rel":2105},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMove_ordering",[34],"move ordering",[30,2108,2111],{"href":2109,"rel":2110},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNull-move_heuristic",[34],"null-move pruning",[30,2113,2116],{"href":2114,"rel":2115},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAspiration_window",[34],"aspiration windows",[30,2118,2121],{"href":2119,"rel":2120},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FQuiescence_search",[34],"quiescence search"," to maximize outcome against an opponent\nin chess.",{"title":62,"searchDepth":63,"depth":63,"links":2124},[],"2021-10-01","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.",{"month":1488,"year":2128,"cover":2129,"category":854},2021,"featured-chess-ai.jpeg","\u002Fprojects\u002Fai\u002F76-chess","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fai\u002Ftree\u002Fmain\u002F03-ChessAI",{"title":2076,"description":2126},"projects\u002Fai\u002F76-chess",[80,2135,1942],"adversarial search","goIzuiqytqC4VagLv2bGsVJeFCtu6Dkb9x4yY3xa9pI",{"id":2138,"title":2139,"body":2140,"date":2158,"description":2159,"extension":67,"featured":72,"meta":2160,"navigation":72,"order":83,"path":2161,"repo":2162,"seo":2163,"stem":2164,"tag":1938,"tech":2165,"url":83,"__hash__":2166},"projects\u002Fprojects\u002Fai\u002F76-uninformed-search.md","Uninformed Search",{"type":8,"value":2141,"toc":2156},[2142],[11,2143,2144,2145,214,2150,2155],{},"Using uninformed search algorithms\nsuch as ",[30,2146,2149],{"href":2147,"rel":2148},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBreadth-first_search",[34],"breadth-first search",[30,2151,2154],{"href":2152,"rel":2153},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDepth-first_search",[34],"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).",{"title":62,"searchDepth":63,"depth":63,"links":2157},[],"2021-09-25","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).",{},"\u002Fprojects\u002Fai\u002F76-uninformed-search","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fai\u002Ftree\u002Fmain\u002F01-SearchProblems",{"title":2139,"description":2159},"projects\u002Fai\u002F76-uninformed-search",[80,2031,1942],"w-d7UpIAg0kbDj6AaUANZT03KIlSwBC1z78wldU1pMM",{"id":2168,"title":2169,"body":2170,"date":2203,"description":2204,"extension":67,"featured":72,"meta":2205,"navigation":72,"order":2207,"path":2208,"repo":2209,"seo":2210,"stem":2211,"tag":1495,"tech":2212,"url":83,"__hash__":2217},"projects\u002Fprojects\u002Fsystems\u002F50-nuggets.md","Nuggets Game",{"type":8,"value":2171,"toc":2201},[2172,2187,2189],[11,2173,2174,2175,2180,2181,2186],{},"A multiplayer command-line game of ",[30,2176,2179],{"href":2177,"rel":2178},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNuggets_(game)",[34],"nuggets",".\nPlayers join over ",[30,2182,2185],{"href":2183,"rel":2184},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[34],"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.",[20,2188],{},[11,2190,598,2191,334,2196,60],{},[30,2192,2195],{"href":2193,"rel":2194},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falphonso-bradham",[34],"Alphonso Bradham",[30,2197,2200],{"href":2198,"rel":2199},"https:\u002F\u002Fin.linkedin.com\u002Fin\u002Fzimehr-abbasi-aa8865154",[34],"Zimehr Abbasi",{"title":62,"searchDepth":63,"depth":63,"links":2202},[],"2021-06-02","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.",{"cover":2206,"category":854},"featured-nuggets.gif",7,"\u002Fprojects\u002Fsystems\u002F50-nuggets","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Ftse",{"title":2169,"description":2204},"projects\u002Fsystems\u002F50-nuggets",[2213,2214,2215,2216],"C","Bash","Make","Web Sockets","KAdt50BEwvP9gbyiuo7oeVVNAqy7enAKZgWZBXb5HGc",{"id":2219,"title":2220,"body":2221,"date":2234,"description":2235,"extension":67,"featured":68,"meta":2236,"navigation":72,"order":2238,"path":2239,"repo":2209,"seo":2240,"stem":2241,"tag":1495,"tech":2242,"url":83,"__hash__":2244},"projects\u002Fprojects\u002Fsystems\u002F50-tse.md","Tiny Search Engine",{"type":8,"value":2222,"toc":2232},[2223],[11,2224,2225,2226,2231],{},"A hyper-efficient ",[30,2227,2230],{"href":2228,"rel":2229},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWeb_search_engine",[34],"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.",{"title":62,"searchDepth":63,"depth":63,"links":2233},[],"2021-05-22","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.",{"cover":2237,"category":854},"featured-search-engine.gif",5,"\u002Fprojects\u002Fsystems\u002F50-tse",{"title":2220,"description":2235},"projects\u002Fsystems\u002F50-tse",[2213,2214,2215,2243],"Web Crawling","IEPSW_Z_f7MshE4FVmUX3NmUlbc90tEvc9PWMQ4nmCA",{"id":2246,"title":2247,"body":2248,"date":2280,"description":2252,"extension":67,"featured":72,"meta":2281,"navigation":72,"order":83,"path":2282,"repo":2283,"seo":2284,"stem":2285,"tag":997,"tech":2286,"url":83,"__hash__":2288},"projects\u002Fprojects\u002Ftrivial\u002F50-modules.md","Data Structures",{"type":8,"value":2249,"toc":2278},[2250,2253],[11,2251,2252],{},"Efficient implementations of various data structures in C.",[24,2254,2255,2263,2270],{},[27,2256,1507,2257,2262],{},[30,2258,2261],{"href":2259,"rel":2260},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSet_(abstract_data_type)",[34],"bag"," stores unique items without duplication.",[27,2264,1507,2265,2269],{},[30,2266,2268],{"href":2259,"rel":2267},[34],"set"," stores unique key-value pairs without duplication.",[27,2271,1507,2272,2277],{},[30,2273,2276],{"href":2274,"rel":2275},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHash_table",[34],"hashtable"," mimics the set, but uses hashing with chaining\nfor improved efficiency.",{"title":62,"searchDepth":63,"depth":63,"links":2279},[],"2021-05-13",{},"\u002Fprojects\u002Ftrivial\u002F50-modules","https:\u002F\u002Fgithub.com\u002Fsiavava\u002FCS50.3",{"title":2247,"description":2252},"projects\u002Ftrivial\u002F50-modules",[2214,2213,2287,2247],"Linux","ELDkQWyduEVrZZqBM9vwUVdkxv5UgO1quwzDz9EFYAY",{"id":2290,"title":2291,"body":2292,"date":2319,"description":2296,"extension":67,"featured":72,"meta":2320,"navigation":72,"order":83,"path":2321,"repo":2322,"seo":2323,"stem":2324,"tag":1495,"tech":2325,"url":83,"__hash__":2326},"projects\u002Fprojects\u002Ftrivial\u002F50-chill.md","Command-Line Utilities",{"type":8,"value":2293,"toc":2317},[2294,2297],[11,2295,2296],{},"Three different command-line utilities written in C:",[24,2298,2299,2305,2311],{},[27,2300,2301,2304],{},[108,2302,2303],{},"chill"," calculates the chill factor of a given temperature and wind speed.",[27,2306,2307,2310],{},[108,2308,2309],{},"words"," efficiently prints out the words in a file.",[27,2312,2313,2316],{},[108,2314,2315],{},"histo"," prints a histogram for a stream of numbers.",{"title":62,"searchDepth":63,"depth":63,"links":2318},[],"2021-04-25",{},"\u002Fprojects\u002Ftrivial\u002F50-chill","https:\u002F\u002Fgithub.com\u002Fsiavava\u002FCS50.2",{"title":2291,"description":2296},"projects\u002Ftrivial\u002F50-chill",[2214,2213,2287],"XS1jixa6KTrj3APfzPo0MD9-VwAHbOrku__kvBWv5f4",{"id":2328,"title":2329,"body":2330,"date":2365,"description":2334,"extension":67,"featured":72,"meta":2366,"navigation":72,"order":83,"path":2367,"repo":2368,"seo":2369,"stem":2370,"tag":1495,"tech":2371,"url":83,"__hash__":2373},"projects\u002Fprojects\u002Ftrivial\u002F50-bash.md","Bash Scripting",{"type":8,"value":2331,"toc":2363},[2332,2335],[11,2333,2334],{},"Hacking our way out of various scenarios with bash scripting.",[11,2336,2337,2338,2341,2342,2345,2346,2349,2350,2349,2353,2349,2356,2349,2359,2362],{},"Includes processing streams of data using ",[108,2339,2340],{},"sed",",\nmatching string patters in files using ",[108,2343,2344],{},"grep",",\nextracting bits of data from files using ",[108,2347,2348],{},"head"," \u002F ",[108,2351,2352],{},"tail",[108,2354,2355],{},"cut",[108,2357,2358],{},"sort",[108,2360,2361],{},"uniq",",\nand more.",{"title":62,"searchDepth":63,"depth":63,"links":2364},[],"2021-04-05",{},"\u002Fprojects\u002Ftrivial\u002F50-bash","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fbash",{"title":2329,"description":2334},"projects\u002Ftrivial\u002F50-bash",[2214,2372],"Regex","-Yy-HYSmeKbD3W3Rc2FcpeE_kO8ic8xxTBgtb4K_Uac",{"id":2375,"title":236,"body":2376,"date":2389,"description":2390,"extension":67,"featured":72,"meta":2391,"navigation":72,"order":73,"path":2393,"repo":2394,"seo":2395,"stem":2396,"tag":859,"tech":2397,"url":2383,"__hash__":2399},"projects\u002Fprojects\u002Fdeep-learning\u002Fneural-jl.md",{"type":8,"value":2377,"toc":2387},[2378],[11,2379,2380,2381,2386],{},"As part of a\n",[30,2382,2385],{"href":2383,"rel":2384},"https:\u002F\u002Famittai.space\u002Fcomputing\u002Fneural-networks\u002Fdata-driven-behavior-change",[34],"publication 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.",{"title":62,"searchDepth":63,"depth":63,"links":2388},[],"2021-03-15","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.",{"month":70,"year":2128,"cover":2392,"category":854},"featured-neural-networks.gif","\u002Fprojects\u002Fdeep-learning\u002Fneural-jl","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fneural",{"title":236,"description":2390},"projects\u002Fdeep-learning\u002Fneural-jl",[2398,861],"Julia","UqbM0ixWI0mMi94-R3hHmRqMXCKzBqDTChuGlfNYrPg",{"id":2401,"title":2402,"body":2403,"date":2426,"description":2427,"extension":67,"featured":72,"meta":2428,"navigation":72,"order":83,"path":2429,"repo":2430,"seo":2431,"stem":2432,"tag":1495,"tech":2433,"url":83,"__hash__":2437},"projects\u002Fprojects\u002Ftrivial\u002F10-collaborative-editor.md","Collaborative Editor",{"type":8,"value":2404,"toc":2424},[2405],[11,2406,2407,2408,2411,2412,1017,2415,657,2418,1044,2421,60],{},"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 ",[108,2409,2410],{},"data races"," and deadlock pitfalls\nsuch as ",[108,2413,2414],{},"mutual exclusion",[108,2416,2417],{},"hold-and-wait",[108,2419,2420],{},"circular wait",[108,2422,2423],{},"no preemption",{"title":62,"searchDepth":63,"depth":63,"links":2425},[],"2021-03-07","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.",{},"\u002Fprojects\u002Ftrivial\u002F10-collaborative-editor","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fjava\u002Ftree\u002Fmain\u002FProblem%20Sets\u002FPS-6",{"title":2402,"description":2427},"projects\u002Ftrivial\u002F10-collaborative-editor",[2434,2435,2436,2216],"Java","Threads","Mutexes","SaYGp1pa0l06XjM86xEQ5WfZp47QP5zNgKpm7th7mME",{"id":2439,"title":2440,"body":2441,"date":2456,"description":2457,"extension":67,"featured":72,"meta":2458,"navigation":72,"order":1677,"path":2459,"repo":2460,"seo":2461,"stem":2462,"tag":1938,"tech":2463,"url":83,"__hash__":2465},"projects\u002Fprojects\u002Fai\u002F10-pos-tagging.md","Parts-Of-Speech Tagging",{"type":8,"value":2442,"toc":2454},[2443],[11,2444,2445,2446,2449,2450,2453],{},"A bot that uses ",[30,2447,1915],{"href":1913,"rel":2448},[34]," to tag parts of speech in a sentence.\nWe use the ",[30,2451,1926],{"href":1924,"rel":2452},[34]," 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":62,"searchDepth":63,"depth":63,"links":2455},[],"2021-03-02","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.",{"category":854},"\u002Fprojects\u002Fai\u002F10-pos-tagging","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fjava\u002Ftree\u002Fmain\u002FProblem%20Sets\u002FPS-5",{"title":2440,"description":2457},"projects\u002Fai\u002F10-pos-tagging",[2434,2464],"Markov Decision Processes","o8z3_fMkgVjnNgFI40-_-jhzYhhUcHJUHT5vwSE3gVU",{"id":2467,"title":2468,"body":2469,"date":2482,"description":2483,"extension":67,"featured":72,"meta":2484,"navigation":72,"order":83,"path":2485,"repo":1681,"seo":2486,"stem":2487,"tag":2488,"tech":2489,"url":83,"__hash__":2491},"projects\u002Fprojects\u002Finformation-theory\u002F10-huffman-encoding.md","Huffman Coding",{"type":8,"value":2470,"toc":2480},[2471],[11,2472,2473,2474,2479],{},"A program that encodes text using a lossless compression algorithm.\nA ",[30,2475,2478],{"href":2476,"rel":2477},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHuffman_coding#Compression",[34],"frequency tree"," is built from the text. Thereafter,\nbinary codes are assigned to each character\nhaving the most frequent characters\nget shortest codes.",{"title":62,"searchDepth":63,"depth":63,"links":2481},[],"2021-03-01","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.",{"cover":1678},"\u002Fprojects\u002Finformation-theory\u002F10-huffman-encoding",{"title":2468,"description":2483},"projects\u002Finformation-theory\u002F10-huffman-encoding","information theory",[2434,2490],"Information Theory","7FPq0zShxxZ_9zkx9XEqtkyAsPvwRsEdfhXzimrmVA4",{"id":2493,"title":2494,"body":2495,"date":2512,"description":2513,"extension":67,"featured":72,"meta":2514,"navigation":72,"order":83,"path":2515,"repo":2516,"seo":2517,"stem":2518,"tag":997,"tech":2519,"url":83,"__hash__":2522},"projects\u002Fprojects\u002Ftrivial\u002F10-bacon.md","Actor Network Semantics",{"type":8,"value":2496,"toc":2510},[2497],[11,2498,2499,2500,2503,2504,2509],{},"The infamous Kevin Bacon game;\ngiven any two actors, find the shortest social connection path between them.\nWe use ",[30,2501,2149],{"href":2147,"rel":2502},[34]," the strategy\nto find the shortest path in the ",[30,2505,2508],{"href":2506,"rel":2507},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraph_(discrete_mathematics)",[34],"graph"," of connections.",{"title":62,"searchDepth":63,"depth":63,"links":2511},[],"2021-02-05","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.",{"category":854},"\u002Fprojects\u002Ftrivial\u002F10-bacon","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fjava\u002Ftree\u002Fmain\u002FProblem%20Sets\u002FPS-4",{"title":2494,"description":2513},"projects\u002Ftrivial\u002F10-bacon",[2434,2520,2521],"Graph Algorithms","Social Graphs","p4o9Z6tWN_XGbl1PVDTZ-ME5yTKZM9ZNSsA_4kRo8-k",{"id":2524,"title":2525,"body":2526,"date":2539,"description":2540,"extension":67,"featured":72,"meta":2541,"navigation":72,"order":83,"path":2542,"repo":2543,"seo":2544,"stem":2545,"tag":997,"tech":2546,"url":83,"__hash__":2548},"projects\u002Fprojects\u002Ftrivial\u002F10-collision-gui.md","Efficient Spatial Collision Detection",{"type":8,"value":2527,"toc":2537},[2528],[11,2529,2530,2531,2536],{},"Program to efficiently detect collisions between blobs in 2D space by using\n",[30,2532,2535],{"href":2533,"rel":2534},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FQuadtree",[34],"quad-trees"," to partition the space into smaller regions\nand index which blobs are in which region.",{"title":62,"searchDepth":63,"depth":63,"links":2538},[],"2021-01-29","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.",{"category":854},"\u002Fprojects\u002Ftrivial\u002F10-collision-gui","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fjava\u002Ftree\u002Fmain\u002FProblem%20Sets\u002FPS-1",{"title":2525,"description":2540},"projects\u002Ftrivial\u002F10-collision-gui",[2434,2547],"Spatial Search","Mt0TCUjNiIAc1YP_RNNRAsSA9asN9Q6ch2dlayk-n0w",{"id":2550,"title":2551,"body":2552,"date":2559,"description":2556,"extension":67,"featured":72,"meta":2560,"navigation":72,"order":83,"path":2561,"repo":2543,"seo":2562,"stem":2563,"tag":997,"tech":2564,"url":83,"__hash__":2566},"projects\u002Fprojects\u002Ftrivial\u002F10-campaint.md","Cam Paint",{"type":8,"value":2553,"toc":2557},[2554],[11,2555,2556],{},"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.",{"title":62,"searchDepth":63,"depth":63,"links":2558},[],"2021-01-17",{"category":854},"\u002Fprojects\u002Ftrivial\u002F10-campaint",{"title":2551,"description":2556},"projects\u002Ftrivial\u002F10-campaint",[2434,2565],"Image Recognition","PuCHAZmLicTWr8xFrrnniT8tBkMU30PNerY-iKwTi-0",{"id":2568,"title":2569,"body":2570,"date":2581,"description":2582,"extension":67,"featured":72,"meta":2583,"navigation":72,"order":83,"path":2584,"repo":2585,"seo":2586,"stem":2587,"tag":997,"tech":2588,"url":83,"__hash__":2589},"projects\u002Fprojects\u002Ftrivial\u002F01-dartmouth-pathfinder.md","Pathfinder",{"type":8,"value":2571,"toc":2579},[2572],[11,2573,2574,2575,2578],{},"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 ",[30,2576,2149],{"href":2147,"rel":2577},[34]," to find the shortest path.",{"title":62,"searchDepth":63,"depth":63,"links":2580},[],"2020-11-02","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.",{},"\u002Fprojects\u002Ftrivial\u002F01-dartmouth-pathfinder","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fpython\u002Ftree\u002Fmain\u002FCS1\u002FLAB\u002FLAB%204\u002FXC",{"title":2569,"description":2582},"projects\u002Ftrivial\u002F01-dartmouth-pathfinder",[80,2520],"bTZbtFJIv8_kztkaCa87GFeUhl088WhWZ4FkBApyX_o",{"id":2591,"title":2592,"body":2593,"date":2600,"description":2597,"extension":67,"featured":72,"meta":2601,"navigation":72,"order":83,"path":2602,"repo":2603,"seo":2604,"stem":2605,"tag":2606,"tech":2607,"url":83,"__hash__":2609},"projects\u002Fprojects\u002Ftrivial\u002F01-city-info.md","City Demographics",{"type":8,"value":2594,"toc":2598},[2595],[11,2596,2597],{},"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.",{"title":62,"searchDepth":63,"depth":63,"links":2599},[],"2020-10-04",{},"\u002Fprojects\u002Ftrivial\u002F01-city-info","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fpython\u002Ftree\u002Fmain\u002FCS1\u002FLAB\u002FLAB%203\u002FXC",{"title":2592,"description":2597},"projects\u002Ftrivial\u002F01-city-info","data insights",[80,2608],"Data Processing","181JM1m0DduNOk4FLGRNHkf58MilIwoo9feFL7G0IA8",{"id":2611,"title":2612,"body":2613,"date":2626,"description":2627,"extension":67,"featured":72,"meta":2628,"navigation":72,"order":83,"path":2629,"repo":2630,"seo":2631,"stem":2632,"tag":1625,"tech":2633,"url":83,"__hash__":2635},"projects\u002Fprojects\u002Ftrivial\u002F01-solar.md","Astronomy Simulations",{"type":8,"value":2614,"toc":2624},[2615],[11,2616,2617,2618,2623],{},"A Physics-accurate simulation of mass bodies (stars, planets, etc.) in a 2D space. The program uses the ",[30,2619,2622],{"href":2620,"rel":2621},"https:\u002F\u002Fpypi.org\u002Fproject\u002FPyQt5\u002F",[34],"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.",{"title":62,"searchDepth":63,"depth":63,"links":2625},[],"2020-10-02","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.",{"category":854},"\u002Fprojects\u002Ftrivial\u002F01-solar","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fpython\u002Ftree\u002Fmain\u002FCS1\u002FLAB\u002FLAB%202\u002Fxc",{"title":2612,"description":2627},"projects\u002Ftrivial\u002F01-solar",[80,2634],"Physics Simulation","KdsCPWDR8Ike7UOiY9T1vbVitEWqB_qwsSdON707dv0",{"id":2637,"title":2638,"body":2639,"date":2650,"description":2651,"extension":67,"featured":72,"meta":2652,"navigation":72,"order":83,"path":2653,"repo":2654,"seo":2655,"stem":2656,"tag":1625,"tech":2657,"url":83,"__hash__":2659},"projects\u002Fprojects\u002Ftrivial\u002F01-pong.md","Pong Game",{"type":8,"value":2640,"toc":2648},[2641],[11,2642,2643,2644,2647],{},"An interactive GUI game of pong that uses the ",[30,2645,2622],{"href":2620,"rel":2646},[34],"\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":62,"searchDepth":63,"depth":63,"links":2649},[],"2020-09-23","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.",{},"\u002Fprojects\u002Ftrivial\u002F01-pong","https:\u002F\u002Fgithub.com\u002Fsiavava\u002Fpython\u002Ftree\u002Fmain\u002FCS1\u002FLAB\u002FLAB%201",{"title":2638,"description":2651},"projects\u002Ftrivial\u002F01-pong",[80,2658],"Graphics Simulation","ruof455OzhQDD6e7HOatvIibdD2Tl-_kNRuQdDazkJo",1781786041919]