ISAIAS SIFUENTES
Digital Media Technologist


LINUX    GRAPHICS    CODE    WEB
LINUX
Content Management System CONTENT MANAGEMENT SYSTEM

Around the year 2006, just as I was receiving my Bachelor's degree, I could see that Content Management Systems were becoming "the next big thing", so I learned as much as I could about them. I set out to install the LAMP Stack (Linux-Apache-MySQL-PHP) since I was already fairly familiar with Linux and thought it would be a good learning experience.

When I finished setting up the stack, I proceeded to put it to use by building a CMS on top of it. Serving as a personal repository of links and their descriptions, the database eventually grew to the point where I needed an easier way to manage it, so I also built a front-end administration page, fundamentally similar to many other systems such as WordPress and Drupal.

Source: PHP Script



System Administration SYSTEM ADMINISTRATION

Shell scripting is widely used by many systems administrators and developers to automate tasks of all kinds. Some fairly common utilities employed in Linux system administration scripts are tar and rsync. These tools are priceless in automating pipelines and workflows in many environments.

The more software development and server administration you do, the more valuable these tools become. That is why I've decided to write some of my own and freely distribute them to the public. They are purposefully bare- bones because I find it more convenient to start from there than to repurpose a specific implementation.

Two rsync scripts, one that "pushes" or "pulls" depending on desired functionality, and a tar script that backs up a few of what I consider to be some of the most important files and directories on Gentoo Linux.

Source: rpull_website rpush_website igbu



Makefile Demo MAKEFILE DEMO

The GNU toolchain is an integral part of Linux's success. In fact, that some argue that Linux's proper name is "GNU/Linux". One of the tools in the toolchain is known as 'make', and does what many other C/C++ IDEs do.

Learning to write makefiles is a good way of better understanding the linking and compiling process. It is also indispensable when working on large projects in Linux.

In this example, a proof-of-concept computer graphics engine prototype can easily allow for changes at it's core level, while illustrating the power of the GNU toolchain.

Source: makefile_demo.tar.bz2
GRAPHICS
ThreeJS Boilerplate THREEJS BOILERPLATE

Used to generate and demonstrate ThreeJS code and visual samples of a basic scene with geometry, lighting, and shading.

Source: bpgen-threejs.html



Differential Solid Angles BIDIRECTIONAL REFLECTANCE DISTRIBUTION FUNCTIONS

A short paper about the BRDF, a mathematical function that originated from optics research and is now used in computer graphics by software developers to write shaders. Common illumination models such as the Lambertian, Phong, Blinn, and Oren-Nayar models are based on the BRDF. Understanding the BRDF is integral to the development of more complex illumination models, such as Subsurface Scattering.

Source: Introduction to Bi-Directional Reflectance Distribution Functions



Mental Ray Shaders MENTAL RAY SHADERS

A recreation of the Lambertian and Phong illumination models for Mental Ray in C. These are compiled into .dll files to be used by Mental Ray from inside of 3DS Max. Also included is a how-to for setting up Visual Studio to do this. Lastly, a .mi file is needed to allow 3DS Max to interface with the Mental Ray shader inputs.

Note: The .dll file should be placed in "C:\Program Files\Autodesk\3ds Max 2014\NVIDIA\shaders_autoload\mentalray\shaders\", while the .mi file should be placed in "C:\Program Files\Autodesk\3ds Max 2014\NVIDIA\shaders_autoload\mentalray\include\".

Source: MentalRay/VisualStudio Setup lambertianExample.c lambertianExample.mi phongExample.c phongExample.mi



Matrix Theory MATRIX THEORY

Matrices play a large role in computer graphics systems. Here is a piece I wrote about understanding matrix notation and how to multiply two Column-Major Order matrices. I also made a small C++ program that calculates the product of two Column-Major Order matrices.

Source: MatrixTheory.docx MatrixTheory.pdf ColumnMajor-MatrixMult.cpp



Emergent Behavior EMERGENT BEHAVIOR

A version of Craig Reynolds' "Boids" Algorithm that creates motion paths that follow an average heading for a flock of animals. Emergent behavior can be difficult or otherwise impossible to animate by hand so we allow code to do it for us.

Source: flocking.ms



3D Color Space 3D COLOR SPACE

This script translates the RGB Color Space into a 3D object. This is my color space. There are many like it, but this one is mine.

Source: ColorCube.ms



Depth of Field Wallpaper DEPTH-OF-FIELD WALLPAPER

Here is a wallpaper I made in 3DS Max using the Depth-of-Field effect. Note the boke in the foreground and background. Only available in 1920x1080 resolution.

Source: NewWallpaper_Final.jpg
CODE
CSS Boilerplate CSS BOILERPLATE

Used to generate and demonstrate CSS code and visual samples of well supported and commonly used CSS mechanisms.

Source: bpgen-css.html



JS Boilerplate JAVASCRIPT BOILERPLATE

Used to generate and demonstrate JavaScript code and visual samples of well supported and commonly used JavaScript mechanisms. Intended for mobile-first designs, best viewed in Mozilla Firefox's "Responsive Design View" (Ctrl+Shift+M) or similar environments.

Source: bpgen-js.html



ThreeJS Boilerplate THREEJS BOILERPLATE

Used to generate and demonstrate ThreeJS code and visual samples of a basic scene with geometry, lighting, and shading.

Source: bpgen-threejs.html



Linked List LINKED LISTS

Linked Lists are common data structures used for many different purposes. So common, in fact, that they're often produced as a C++ template. Coding them from scratch will give you a good understanding of how Object-Oriented Programming and Pointers work. They can be singly- or doubly-linked, meaning each "node" has either one or two links to the other, with the exceptions being the first and last nodes.

Source: DLList.zip



Mental Ray Shaders MENTAL RAY SHADERS

A recreation of the Lambertian and Phong illumination models for Mental Ray in C. These are compiled into .dll files to be used by Mental Ray from inside of 3DS Max. Also included is a how-to for setting up Visual Studio to do this. Lastly, a .mi file is needed to allow 3DS Max to interface with the Mental Ray shader inputs.

Note: The .dll file should be placed in "C:\Program Files\Autodesk\3ds Max 2014\NVIDIA\shaders_autoload\mentalray\shaders\", while the .mi file should be placed in "C:\Program Files\Autodesk\3ds Max 2014\NVIDIA\shaders_autoload\mentalray\include\".

Source: MentalRay/VisualStudio Setup lambertianExample.c lambertianExample.mi phongExample.c phongExample.mi



Matrix Theory MATRIX THEORY

Matrices play a large role in computer graphics systems. Here is a piece I wrote about understanding matrix notation and how to multiply two Column-Major Order matrices. I also made a small C++ program that calculates the product of two Column-Major Order matrices.

Source: MatrixTheory.docx MatrixTheory.pdf ColumnMajor-MatrixMult.cpp



Emergent Behavior EMERGENT BEHAVIOR

A version of Craig Reynolds' "Boids" Algorithm that creates motion paths that follow an average heading for a flock of animals. Emergent behavior can be difficult or otherwise impossible to animate by hand so we allow code to do it for us.

Source: flocking.ms



3D Color Space 3D COLOR SPACE

This script translates the RGB Color Space into a 3D object. This is my color space. There are many like it, but this one is mine.

Source: ColorCube.ms



System Administration SYSTEM ADMINISTRATION

Shell scripting is widely used by many systems administrators and developers to automate tasks of all kinds. Some fairly common utilities employed in Linux system administration scripts are tar and rsync. These tools are priceless in automating pipelines and workflows in many environments.

The more software development and server administration you do, the more valuable these tools become. That is why I've decided to write some of my own and freely distribute them to the public. They are purposefully bare- bones because I find it more convenient to start from there than to repurpose a specific implementation.

Two rsync scripts, one that "pushes" or "pulls" depending on desired functionality, and a tar script that backs up a few of what I consider to be some of the most important files and directories on Gentoo Linux.

Source: rpull_website rpush_website igbu



Makefile Demo MAKEFILE DEMO

The GNU toolchain is an integral part of Linux's success. In fact, that some argue that Linux's proper name is "GNU/Linux". One of the tools in the toolchain is known as 'make', and does what many other C/C++ IDEs do.

Learning to write makefiles is a good way of better understanding the linking and compiling process. It is also indispensable when working on large projects in Linux.

In this example, a proof-of-concept computer graphics engine prototype can easily allow for changes at it's core level, while illustrating the power of the GNU toolchain.

Source: makefile_demo.tar.bz2



Content Management System CONTENT MANAGEMENT SYSTEM

Around the year 2006, just as I was receiving my Bachelor's degree, I could see that Content Management Systems were becoming "the next big thing", so I learned as much as I could about them. I set out to install the LAMP Stack (Linux-Apache-MySQL-PHP) since I was already fairly familiar with Linux and thought it would be a good learning experience.

When I finished setting up the stack, I proceeded to put it to use by building a CMS on top of it. Serving as a personal repository of links and their descriptions, the database eventually grew to the point where I needed an easier way to manage it, so I also built a front-end administration page, fundamentally similar to many other systems such as WordPress and Drupal.

Source: PHP Script
WEB
CSS Boilerplate CSS BOILERPLATE

Used to generate and demonstrate CSS code and visual samples of well supported and commonly used CSS mechanisms.

Source: bpgen-css.html



JS Boilerplate JAVASCRIPT BOILERPLATE

Used to generate and demonstrate JavaScript code and visual samples of well supported and commonly used JavaScript mechanisms. Intended for mobile-first designs, best viewed in Mozilla Firefox's "Responsive Design View" (Ctrl+Shift+M) or similar environments.

Source: bpgen-js.html



ThreeJS Boilerplate THREEJS BOILERPLATE

Used to generate and demonstrate ThreeJS code and visual samples of a basic scene with geometry, lighting, and shading.

Source: bpgen-threejs.html



Content Management System CONTENT MANAGEMENT SYSTEM

Around the year 2006, just as I was receiving my Bachelor's degree, I could see that Content Management Systems were becoming "the next big thing", so I learned as much as I could about them. I set out to install the LAMP Stack (Linux-Apache-MySQL-PHP) since I was already fairly familiar with Linux and thought it would be a good learning experience.

When I finished setting up the stack, I proceeded to put it to use by building a CMS on top of it. Serving as a personal repository of links and their descriptions, the database eventually grew to the point where I needed an easier way to manage it, so I also built a front-end administration page, fundamentally similar to many other systems such as WordPress and Drupal.

Source: PHP Script



System Administration SYSTEM ADMINISTRATION

Shell scripting is widely used by many systems administrators and developers to automate tasks of all kinds. Some fairly common utilities employed in Linux system administration scripts are tar and rsync. These tools are priceless in automating pipelines and workflows in many environments.

The more software development and server administration you do, the more valuable these tools become. That is why I've decided to write some of my own and freely distribute them to the public. They are purposefully bare- bones because I find it more convenient to start from there than to repurpose a specific implementation.

Two rsync scripts, one that "pushes" or "pulls" depending on desired functionality, and a tar script that backs up a few of what I consider to be some of the most important files and directories on Gentoo Linux.

Source: rpull_website rpush_website igbu
ABOUT
I was born and raised in Chicago, Illinois. I grew up playing online computer games and riding my bike a lot. After I realized I loved technology, I decided to follow my dreams and turn my passion into reality. I graduated from Columbia College Chicago in 2007 with a B.A. in Digital Media Technology and an M.S. in Computer Graphics & Motion Technology from DePaul University was soon to follow. In my spare time, I learned a lot about Open Source Software and Linux, while my schooling allowed me to express myself creatively. And I still ride my bike a lot.

This matured into a major appreciation for art, technology, and their intersections. My graduate research resulted in deep knowledge of Optics, Software Engineering, Technical Animation, and Photorealism. One of the biggest lessons I've taken from it all is how idiosyncratic and nuanced the every-day human experience is. We simply do not experience reality as we think we do.

CONTACT
Email: isaias.sifuentes@gmail.com
LinkedIn: linkedin.com/in/isifuentes