<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:media="http://search.yahoo.com/mrss/"
	
	>

<channel>
	<title>emil balian</title>
	<link>https://emil-balian.com</link>
	<description>emil balian</description>
	<pubDate>Thu, 21 Jan 2021 21:13:09 +0000</pubDate>
	<generator>https://emil-balian.com</generator>
	<language>en</language>
	
		
	<item>
		<title>Desktop</title>
				
		<link>https://emil-balian.com/Desktop</link>

		<pubDate>Sat, 11 Apr 2020 01:12:07 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/Desktop</guid>

		<description>
&#60;img width="1024" height="1024" width_o="1024" height_o="1024" data-src="https://freight.cargo.site/t/original/i/86b7ee949cfcbb8b5ccc31babbbd49a9b26ec9b73b9f74c957da80aa582ddc9e/mail.png" data-mid="66517541" border="0" alt="Contact" data-caption="Contact" src="https://freight.cargo.site/w/1000/i/86b7ee949cfcbb8b5ccc31babbbd49a9b26ec9b73b9f74c957da80aa582ddc9e/mail.png" /&#62;
&#60;img width="770" height="728" width_o="770" height_o="728" data-src="https://freight.cargo.site/t/original/i/029e76ef99fb2d184027b7ddec2ad7f982d108418074bca5fe58e6e39d82c0ea/v2.png" data-mid="67223656" border="0" alt="About Me.txt" data-caption="About Me.txt" src="https://freight.cargo.site/w/770/i/029e76ef99fb2d184027b7ddec2ad7f982d108418074bca5fe58e6e39d82c0ea/v2.png" /&#62;
&#60;img width="1024" height="1024" width_o="1024" height_o="1024" data-src="https://freight.cargo.site/t/original/i/3699d2b7284bb007d2ab15541ab20668a07fc39482db403c5942d6c8b7e6d7c2/pdf.png" data-mid="66517544" border="0" alt="RESUME_2021" data-caption="RESUME_2021" src="https://freight.cargo.site/w/1000/i/3699d2b7284bb007d2ab15541ab20668a07fc39482db403c5942d6c8b7e6d7c2/pdf.png" /&#62;
&#60;img width="800" height="648" width_o="800" height_o="648" data-src="https://freight.cargo.site/t/original/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" data-mid="66517534" border="0" alt="My Work" data-caption="My Work" src="https://freight.cargo.site/w/800/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" /&#62;
</description>
		
	</item>
		
		
	<item>
		<title>MY WORK</title>
				
		<link>https://emil-balian.com/MY-WORK</link>

		<pubDate>Sat, 11 Apr 2020 01:12:08 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/MY-WORK</guid>

		<description>Game Stuff: Anything to do with Game Development. &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp;

Software and Physics Work: Other programming and research work.

Art: well, it’s art.&#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp;&#38;nbsp;

&#60;img width="800" height="648" width_o="800" height_o="648" data-src="https://freight.cargo.site/t/original/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" data-mid="84151161" border="0" alt="Game Stuff" data-caption="Game Stuff" src="https://freight.cargo.site/w/800/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" /&#62;
&#60;img width="800" height="648" width_o="800" height_o="648" data-src="https://freight.cargo.site/t/original/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" data-mid="84151161" border="0" alt="Software and Physics Work" data-caption="Software and Physics Work" src="https://freight.cargo.site/w/800/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" /&#62;
&#60;img width="800" height="648" width_o="800" height_o="648" data-src="https://freight.cargo.site/t/original/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" data-mid="84151161" border="0" alt="Art" data-caption="Art" src="https://freight.cargo.site/w/800/i/98dbb9064f4684fbc3feac6b8a5204d0f7396641a5b715e85d53ce3a8989e0db/folder.png" /&#62;
</description>
		
	</item>
		
		
	<item>
		<title>WIP</title>
				
		<link>https://emil-balian.com/WIP</link>

		<pubDate>Sat, 03 Oct 2020 21:36:45 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/WIP</guid>

		<description>

	WORK IN PROGRESS &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp;&#38;nbsp; WORK IN PROGRESS



	WORK IN PROGRESS &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp; &#38;nbsp;&#38;nbsp; WORK IN PROGRESS

</description>
		
	</item>
		
		
	<item>
		<title>BUGGYALLSTARS</title>
				
		<link>https://emil-balian.com/BUGGYALLSTARS</link>

		<pubDate>Wed, 30 Sep 2020 03:58:35 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/BUGGYALLSTARS</guid>

		<description>
BUGGY ALLSTARS


	&#60;img width="1534" height="703" width_o="1534" height_o="703" data-src="https://freight.cargo.site/t/original/i/a50169b80ec797eac2d920b3d70f22121c220bfaf1193fdf8790ba7c982abaff/Week08_Buggies.jpg" data-mid="84459328" border="0" data-scale="100" src="https://freight.cargo.site/w/1000/i/a50169b80ec797eac2d920b3d70f22121c220bfaf1193fdf8790ba7c982abaff/Week08_Buggies.jpg" /&#62;
	


Buggy Allstars was a project funded by the Carnegie Mellon Alumni Association to build a VR Buggy game in celebration of Carnegie Mellon University’s 100 year history. However, due to COVID-19, we had to put our VR experience temporarily to create a web-based game until work can resume on the full VR experience in time for next Carnival Spring 2020. Play and find the dev blog of the project ︎︎︎&#38;nbsp;here&#38;nbsp;︎︎︎ Keep an eye out when we continue Spring 2020!


	Buggy AllStars


#VR Experience #WebGL 



Duration


14 weeks, Spring 2020













Team
24-person studio comprised of undergraduate and graduate students, staff, and faculty. Read about the team here

Future Plans


Continue VR Experience Spring 2021



Platform


Unity, HTC Vive




My contribution


Gameplay programming, Game Physics, UI programming


&#60;img width="600" height="338" width_o="600" height_o="338" data-src="https://freight.cargo.site/t/original/i/6fbe87ccb54c74bd44144d911cfdff7663c689b07b043ac9476524fd61cdbd3c/ezgif-3-f9548ad00b6c.gif" data-mid="84462178" border="0" data-scale="96" src="https://freight.cargo.site/w/600/i/6fbe87ccb54c74bd44144d911cfdff7663c689b07b043ac9476524fd61cdbd3c/ezgif-3-f9548ad00b6c.gif" /&#62;




	&#60;img width="650" height="768" width_o="650" height_o="768" data-src="https://freight.cargo.site/t/original/i/d93abf4b805233816f316baaddb461690a044232653e3f3d8ec36e0b99e48127/20200207_145950-1-1024x768.jpg" data-mid="84461563" border="0"  src="https://freight.cargo.site/w/650/i/d93abf4b805233816f316baaddb461690a044232653e3f3d8ec36e0b99e48127/20200207_145950-1-1024x768.jpg" /&#62;

&#60;img width="520" height="261" width_o="520" height_o="261" data-src="https://freight.cargo.site/t/original/i/24823a408fd72bced0aff176d06bb6a8b62663c82067d47b8891de4882fba8a6/RunPushAnim-1.gif" data-mid="84462547" border="0" data-scale="100" src="https://freight.cargo.site/w/520/i/24823a408fd72bced0aff176d06bb6a8b62663c82067d47b8891de4882fba8a6/RunPushAnim-1.gif" /&#62;



	The 4 months spent on this project was a mix of gameplay, physics, and UI programming work. The game also exists in 2 completely different versions. We began work in December on the VR version of the experience, with plans of showcasing our work in April during CMU’s spring carnival. When it was certain that spring carnival would be canceled due to the pandemic, we had to switch focus to a WebGL version of the game. Especially in retrospect, the whole team handled the abrupt change in direction, format, workflow, and expectations extremely well. On the programming and art side, a lot of our work on control schemes and VR specific features were put on hold till next year as we shifted to trimming and optimizing the core game and assets to run on a browser. 
	&#60;img width="952" height="589" width_o="952" height_o="589" data-src="https://freight.cargo.site/t/original/i/4712c9c2c89f996a0cd0c7ae94c33e2c63b1804d239991793ff83afea50ba239/Screen-Shot-2020-10-02-at-7.11.04-PM.png" data-mid="84462680" border="0" data-scale="100" src="https://freight.cargo.site/w/952/i/4712c9c2c89f996a0cd0c7ae94c33e2c63b1804d239991793ff83afea50ba239/Screen-Shot-2020-10-02-at-7.11.04-PM.png" /&#62;



	Prior to our switch to WebGL, part of my time was spent working with the design team to prototype some VR UI for the main menu, pause screens, and the HUD as they needed it. This was mixed with some work with implementing Inverse Kinematics. However, most was spent on constructing a system to make our core gameplay easy enough for all to experience from start to finish while maintaining significant competitive aspects. I go over both Inverse Kinematics and core gameplay problems in great detail on entries in my ‘coding bits’ page, but you can navigate to them directly by clicking the icons:For the WebGL version, I continued work on UI, but mostly to do with linking large parts of team member’s scripts together for the desired functionality and bug fixing. Additionally, I did some work on triggers for the sound team. 


	&#60;img width="1000" height="1000" width_o="1000" height_o="1000" data-src="https://freight.cargo.site/t/original/i/53cdbdb6441ffc7ea44269cb65c7e4502dbfe8c93584f620929cd47c459871a7/ik_logo.png" data-mid="94892682" border="0" data-scale="40" src="https://freight.cargo.site/w/1000/i/53cdbdb6441ffc7ea44269cb65c7e4502dbfe8c93584f620929cd47c459871a7/ik_logo.png" /&#62;Inverse Kinematics

&#60;img width="1000" height="1000" width_o="1000" height_o="1000" data-src="https://freight.cargo.site/t/original/i/9998fed771b4b5c1244793ce685ca413ac6ff5637b272c9547037d9c472c7231/cscheme.png" data-mid="94892683" border="0" data-scale="47" src="https://freight.cargo.site/w/1000/i/9998fed771b4b5c1244793ce685ca413ac6ff5637b272c9547037d9c472c7231/cscheme.png" /&#62;
VR Control Schemes and Gameplay
</description>
		
	</item>
		
		
	<item>
		<title>Inverse Kinematics</title>
				
		<link>https://emil-balian.com/Inverse-Kinematics</link>

		<pubDate>Wed, 13 Jan 2021 23:01:30 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/Inverse-Kinematics</guid>

		<description>
	INVERSE KINEMATICS

	&#38;nbsp; &#38;nbsp; When doing the inverse kinematics for an arm reaching for a phone on a desk, we solve how to move and rotate your joints such that your hand ends up on the phone. Perhaps the most common use of IK is for walking animations on uneven surfaces, as we can raycast down to find the correct position a character’s foot must land and solve the displacement and angles for our leg’s joints and bones. Towards the start of the VR version of Buggy Allstars, this is what I was working on for a bit. I've always found techniques like Inverse Kinematics particularly interesting as it allows for a more visually consistent and immersive experience in animations and game kinematics without much code (and a little bit of trigonometry). Despite that, I still want to give artists and designers flexibility within this system to tweak certain parameters whenever possible.




	


To create our GLaDOS-like robot arm we can make a hierarchy of joint game objects such that the Origin Joint has child Joint 1, Joint 1 has child Joint 2, and Joint 2 has the child Hand. The implementation so far…



&#60;img width="1352" height="1314" width_o="1352" height_o="1314" data-src="https://freight.cargo.site/t/original/i/b192361c1c653c51044996d60b9a7d8ce26bcfc23cc651506e9775824c41e810/c1.png" data-mid="95009525" border="0" data-scale="87" src="https://freight.cargo.site/w/1000/i/b192361c1c653c51044996d60b9a7d8ce26bcfc23cc651506e9775824c41e810/c1.png" /&#62;
	&#60;img width="1475" height="977" width_o="1475" height_o="977" data-src="https://freight.cargo.site/t/original/i/6e61848a808e0ebf9e2d1a6278a5820868f730a8920763405d5024ba331e26b3/IMG_0022.jpg" data-mid="95009645" border="0" data-scale="90" src="https://freight.cargo.site/w/1000/i/6e61848a808e0ebf9e2d1a6278a5820868f730a8920763405d5024ba331e26b3/IMG_0022.jpg" /&#62;
&#60;img width="1328" height="1388" width_o="1328" height_o="1388" data-src="https://freight.cargo.site/t/original/i/03a54527b3facce8e909a9959936a8ff6966c113be406af3243780df39628ecc/Screen-Shot-2021-01-13-at-3.31.28-PM.png" data-mid="95009575" border="0" data-scale="89" src="https://freight.cargo.site/w/1000/i/03a54527b3facce8e909a9959936a8ff6966c113be406af3243780df39628ecc/Screen-Shot-2021-01-13-at-3.31.28-PM.png" /&#62;


	The new update function with smoothing prevents undesirable jagged movements. I initially tried to detect fast changes in the angle to try and create such a smoothing effect, but this is already done within the ‘speed’ parameter in SmoothDampAngle. This makes our robot arms look like skillful artists if we give it something to draw.
&#60;img width="484" height="334" width_o="484" height_o="334" data-src="https://freight.cargo.site/t/original/i/38c2be035d22b8e508ea7d43901c684f65b892271eb4578c3070ad138d0275a4/ezgif-6-215f802474f5.gif" data-mid="95015019" border="0" data-scale="51" src="https://freight.cargo.site/w/484/i/38c2be035d22b8e508ea7d43901c684f65b892271eb4578c3070ad138d0275a4/ezgif-6-215f802474f5.gif" /&#62;


	&#60;img width="1340" height="884" width_o="1340" height_o="884" data-src="https://freight.cargo.site/t/original/i/761dac500b3030298b3728ffee364f86026a7cfa7b18b8bbc5233e34552d97b2/c3.png" data-mid="95009888" border="0" data-scale="91" src="https://freight.cargo.site/w/1000/i/761dac500b3030298b3728ffee364f86026a7cfa7b18b8bbc5233e34552d97b2/c3.png" /&#62;

	The 3D implementation extended pretty naturally, with the problem now having three degrees of freedom. While we did come to a place with the implementation that yielded minimal hiccups, we eventually switched to a much more sophisticated IK package that worked out of the box for VR. I would eventually come back during quarantine to take a closer look, especially in regards to the complexity an extra degree of freedom adds. There are infinitely many solutions that result in a hand or leg reaching the target position, as we can rotate about the axis to the target without changing the final position. This can result in arbitrary solutions looking anywhere from funny to terrifying and physically impossible.

	

We can find an arbitrary solution that is close to a desired pose that would be made by the artists. We would do this by minimizing the angle between an arbitrary solution found and the artist’s pose around this axis. Analytically, we can do this using quaternions. 


	&#60;img width="1023" height="716" width_o="1023" height_o="716" data-src="https://freight.cargo.site/t/original/i/745ed2a0835ea08172b90aedd7401792b6aabc9074088e9e7c00d10f92f68d6c/IMG_0023.jpg" data-mid="95012297" border="0"  src="https://freight.cargo.site/w/1000/i/745ed2a0835ea08172b90aedd7401792b6aabc9074088e9e7c00d10f92f68d6c/IMG_0023.jpg" /&#62;

	Currently, most methods of modelling IK problems rely on numerical solutions, a lot of which I have covered in my Computational Physics courses. Probably the most flexible numerical approaches rely on iterative optimizations as there is always the possibility of an empty solution space from inverting forward kinematics equations. The most interesting one I came across was a ganja.js example that uses relaxation steps that minimizes the differences on all the remaining degrees of freedom. This heuristic method has comparatively very low computational cost, and is used extensively in FABRIK. When time allows, I’ll take a look at using the Newton-Raphson method with the jacobian inverse technique for a different numerical approach.
	REFERENCE:

&#38;nbsp;https://os.mbed.com/users/ms523/notebook/3d-inverse-kinematics/
&#38;nbsp;http://www.3dkingdoms.com/ik.htm
&#38;nbsp;https://www.gamasutra.com/view/news/129168/Inverse_Kinematics_two_joints_for_foot_placement.phphttps://www.alanzucconi.com/2020/09/14/inverse-kinematics-in-3d/


</description>
		
	</item>
		
		
	<item>
		<title>AD - Cache</title>
				
		<link>https://emil-balian.com/AD-Cache</link>

		<pubDate>Wed, 20 Jan 2021 21:48:09 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/AD-Cache</guid>

		<description>
	Cache Simulator












The following is a cache simulator that replicates the behavior of caches in x86 machines. You can input parameters based off the number of sets, lines per set, and block size. The output reports the number of hits, misses, and evictions using the LRU replacement policy. The simulator can take in text files, called ‘trace files’, or take in keyboard input for instructions. For more detail, you can run the program in verbose mode which additionally outputs the attempted loads and stores. The approach I decided to take was essentially through arrays that consist of sets. Within the set structures contains an array of blocks. This is for organization purposes and makes the most sense to me instead of doing a 2D-array. I have included my basic function skeletons and structs along with some outputs from the traces.



Please contact me in the case that you would like to see the full implementation and please do not share this private page. This is due to CMU’s academic integrity policy.
	
Duration:1.5 Weeks
Language and Tools:
Written in C, Valgrind


	&#60;img width="1566" height="750" width_o="1566" height_o="750" data-src="https://freight.cargo.site/t/original/i/32cc1005705e62d3454ec57f2f32d01818fb5c960813413b51eb814cea454708/IMG_0025-2.jpg" data-mid="95872887" border="0" data-scale="98" src="https://freight.cargo.site/w/1000/i/32cc1005705e62d3454ec57f2f32d01818fb5c960813413b51eb814cea454708/IMG_0025-2.jpg" /&#62;

	
&#60;img width="1416" height="1330" width_o="1416" height_o="1330" data-src="https://freight.cargo.site/t/original/i/65445e516f5c9ba6d23968dff0bd8deed6013e70e3517d57adcd9f5451e5a612/Screen-Shot-2021-01-20-at-3.47.04-PM.png" data-mid="95872003" border="0" data-scale="98" src="https://freight.cargo.site/w/1000/i/65445e516f5c9ba6d23968dff0bd8deed6013e70e3517d57adcd9f5451e5a612/Screen-Shot-2021-01-20-at-3.47.04-PM.png" /&#62;

	
&#60;img width="848" height="462" width_o="848" height_o="462" data-src="https://freight.cargo.site/t/original/i/cefc5fe1fecf777d841c80cdb89428e11a0e70a2822d2a002b797d398b76cb3b/Screen-Shot-2021-01-20-at-3.39.18-PM.png" data-mid="95871466" border="0" data-scale="90" src="https://freight.cargo.site/w/848/i/cefc5fe1fecf777d841c80cdb89428e11a0e70a2822d2a002b797d398b76cb3b/Screen-Shot-2021-01-20-at-3.39.18-PM.png" /&#62;


</description>
		
	</item>
		
		
	<item>
		<title>AD - Malloc</title>
				
		<link>https://emil-balian.com/AD-Malloc</link>

		<pubDate>Wed, 20 Jan 2021 23:56:24 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/AD-Malloc</guid>

		<description>
	Custom Malloc























This is a 64-bit struct-based segregated list memory allocator and is robust enough to replace C’s built in malloc. This implementation makes use of explicit lists (with footerless blocks), mini blocks, and a custom 'closeEnoughFit' free block search algorithm that is a mix of first fit and best fit. The segregated list have size bounds, and is each an explicit list for a given size range. We can traverse the free segregated lists using next and prev pointers within our free blocks. For our mini blocks, we only have room for a next pointer so we make do with a singly linked list in the mini block case. I found this to be a good balance to achieve good throughput while minimizing both internal and external fragmentation.






Please contact me in the case that you would like to see the full implementation and please do not share this private page. This is due to CMU’s academic integrity policy.
	Duration:2.5 Weeks
Language and Tools:
Written in C, GDB, cGDB, Valgrind, a lot of Redbull&#38;nbsp;
Standard free blocks contain a header + next and prev pointers to traverse our free segregated lists&#38;nbsp;
Mini free blocks contain a header + next pointer to traverse our singly linked mini block list&#38;nbsp;
Our allocated blocks (of both varieties) contain a header and payload&#38;nbsp;
Our headers contain the size of our block, an allocated flag bit, a prevBlockAllocated flag bit, and a prevBlockMini flag bit. Anytime a block is changed or written, we update these bits and tell the next block of our allocation or ministatus.







	
&#60;img width="1468" height="1160" width_o="1468" height_o="1160" data-src="https://freight.cargo.site/t/original/i/e799a4df0c77bac405c5b4938691dcb1a45d604d371e4eaabc531a983bfb291c/Screen-Shot-2021-01-20-at-4.01.15-PM.png" data-mid="95874352" border="0"  src="https://freight.cargo.site/w/1000/i/e799a4df0c77bac405c5b4938691dcb1a45d604d371e4eaabc531a983bfb291c/Screen-Shot-2021-01-20-at-4.01.15-PM.png" /&#62;





	


	



</description>
		
	</item>
		
		
	<item>
		<title>AD - Proxy</title>
				
		<link>https://emil-balian.com/AD-Proxy</link>

		<pubDate>Thu, 21 Jan 2021 00:23:31 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/AD-Proxy</guid>

		<description>
	HTTP Web Proxy












This proxy contains operations that deal with connecting to servers, servicing requests, and caching them if needed. A proxy is an intermediary to a client and a server. A client sends a server request to a proxy, the proxy parses and formats the request properly in the form of a header, and sends the request to the server. When the server sends a response back to the proxy, the proxy sends the data back to the client, and attempts to cache it if it is of the appropriate size. A proxy is useful in the real word for reasons such as caching files (as described) for multiple users at a time, increasing bandwidth and performance. This also makes use of threading to handle concurrent requests.


The cache used in our proxy is not like a traditional cache, and acts more like a key-value storage system. The key being the URL, and the value being the text or bytes received from the server. The cache used is an array cache, which blocks are stored in an array and can be accessed by indexing into an array. Alternative methods include the usage of a linked list structure.


Please contact me in the case that you would like to see the full implementation and please do not share this private page. This is due to CMU’s academic integrity policy.




	
Duration:2 Weeks

Language and Tools:
Written in C, GDB, HTTP, Curl, Netcat




	
&#60;img width="1872" height="838" width_o="1872" height_o="838" data-src="https://freight.cargo.site/t/original/i/65f6901a57827925db79a675f8ac68b178df0f2d8cbf19ca47f8a22b5f6484e5/Screen-Shot-2021-01-20-at-4.44.22-PM.png" data-mid="95877328" border="0" data-scale="93" src="https://freight.cargo.site/w/1000/i/65f6901a57827925db79a675f8ac68b178df0f2d8cbf19ca47f8a22b5f6484e5/Screen-Shot-2021-01-20-at-4.44.22-PM.png" /&#62;





	


	



</description>
		
	</item>
		
		
	<item>
		<title>AD - Shell</title>
				
		<link>https://emil-balian.com/AD-Shell</link>

		<pubDate>Thu, 21 Jan 2021 00:47:21 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/AD-Shell</guid>

		<description>
	Custom Shell
























This shell was implemented based off of a skeleton of a simple Linux shell. It acts very much the same way as Terminal on Mac if you are not familiar. It has support for simple job control (such as foreground and background jobs) along with some simple I/O redirection. We make great use of signals and signal handlers to make sure our parent and child processes work in sync to avoid any race conditions or bugs WITHOUT using busy loops or sleep (this includes user input such as Ctrl-C or Ctrl-Z).








Please contact me in the case that you would like to see the full implementation and please do not share this private page. This is due to CMU’s academic integrity policy.




	
Duration:1.5 Weeks

Language and Tools:
Written in C, GDB, Valgrind




	
&#60;img width="600" height="349" width_o="600" height_o="349" data-src="https://freight.cargo.site/t/original/i/65cc8e0a1d95a3ff281d4579384355c7845b0a61c35e173f771bc1bfcba6a95c/ezgif-6-741d18322f43.gif" data-mid="95879046" border="0"  src="https://freight.cargo.site/w/600/i/65cc8e0a1d95a3ff281d4579384355c7845b0a61c35e173f771bc1bfcba6a95c/ezgif-6-741d18322f43.gif" /&#62;






	


	



</description>
		
	</item>
		
		
	<item>
		<title>AD - VM</title>
				
		<link>https://emil-balian.com/AD-VM</link>

		<pubDate>Thu, 21 Jan 2021 21:13:09 +0000</pubDate>

		<dc:creator>emil balian</dc:creator>

		<guid isPermaLink="true">https://emil-balian.com/AD-VM</guid>

		<description>
	Virtual Machine in C




































This is a relatively simple virtual machine written in C for C0, a language CMU uses for specific courses and is a subset of C. It is a stack machine which supports local variables, function calls, conditionals, strings, with heap management for structs and other large types.












Please contact me in the case that you would like to see the implementation. This was an assignment from CMU’s 15-122 course.




	
Duration:3 Weeks

Language and Tools:
Written in C, Valgrind




	







	


	



</description>
		
	</item>
		
	</channel>
</rss>