Are you over 18 and want to see adult content?
More Annotations
A complete backup of modernoceans.com.sa
Are you over 18 and want to see adult content?
A complete backup of sistersoflife.org
Are you over 18 and want to see adult content?
A complete backup of bernd-leitenberger.de
Are you over 18 and want to see adult content?
A complete backup of haus-des-meeres.at
Are you over 18 and want to see adult content?
A complete backup of shrineofapple.com
Are you over 18 and want to see adult content?
A complete backup of jualalatkeamanan.com
Are you over 18 and want to see adult content?
Favourite Annotations
A complete backup of ciaonlinebuyntx.com
Are you over 18 and want to see adult content?
A complete backup of xn--d1atfldd.xn--p1ai
Are you over 18 and want to see adult content?
A complete backup of short-edition.com
Are you over 18 and want to see adult content?
A complete backup of yellowpages.com.eg
Are you over 18 and want to see adult content?
A complete backup of intersport-rent.fr
Are you over 18 and want to see adult content?
A complete backup of 365dagensuccesvol.nl
Are you over 18 and want to see adult content?
Text
MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
MODERN OPENGL 02
CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginx HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
MODERN OPENGL 02
CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginxRECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 01
The first line #version 150 tells OpenGL that this shader is written in GLSL version 1.50.. The second line in vec3 vert; says that this shader takes a single vertex as input, into a variable named vert.. The third line defines a function called main, which is where the shader will begin running.This is the same as in C, except in GLSL main does not take any arguments and returns void. HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Making a bare git repository. Using your new git server. Step 1. Give the server a static IP address on the local network. The server needs a static IP address on the local network for the next step (port forwarding) to work. This can be set in the following location: System Preferences » Network » Advanced » TCP/IP.MODERN OPENGL 02
Modern OpenGL 02 - Textures. 02 Dec, 2012 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be adding a texture to the triangle. This will involve adding new variables to the vertex and fragment shaders, creating and using texture objects, and learning a bit about texture units and texturecoordinates.
CATEGORY: MODERN OPENGL SERIES 21 Sep, 2014 — Category: Modern OpenGL Series. Valve is investing in OpenGL to hedge themselves against Microsoft. Some well-known developers have written about the deficiencies in the API. A few competing, proprietary APIs have popped up. In an effort to remain competitive, Khronos announces glnext: a ground-up rethinking of theOpenGL and
MODERN OPENGL 05
Modern OpenGL 05 – Model Assets & Instances. 08 Feb, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be refactoring the code to be more like a 3D engine/framework. Specifically, we will be replacing some of the globals with structs that represent “assets” and “instances.”. WHAT IS THE PURPOSE OF PRIVATE? Private Communicates Stability. Categorising code as either public or private is an attempt to reduce the costs of change by communicating stability. Designating something as private communicates to other developers that this thing might change so don’t rely upon it. Conversely, designating something as public says that this thing isfairly
SOLID CLASS DESIGN: THE SINGLE RESPONSIBILITY PRINCIPLE The SOLID principles focus on achieving code that is maintainable, robust, and reusable. In this post, I will discuss the Single Responsibility Principle. The Single Responsibility Principle (SRP): A class should have one, and only one, reason to change. The SRP is RESOURCE ACQUISITION IS INITIALISATION (RAII) EXPLAINED The resource is aquired in the constructor (e.g. opening a file). This part is optional, but common. RAII stands for “Resource Acquisition is Initialisation.”. The “resource acquisition” part of RAII is where you begin something that must be ended later, such as: Allocating some memory (and deallocating itOPENGL IN 2014
ToGL is a Direct3D to OpenGL translation layer, including a HLSL to GLSL converter. Vogl provides some sorely-needed debugging facilities. These two projects were dumped onto github in a somewhat hasty manner. Nevertheless, these are welcome additions, considering the historical lack of tooling in the OpenGL ecosystem. HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Programming for Beginners Learn to Code by Making Little Games A short book that teaches programming fundamentals, for people who have zero programming experience, covering basics such as variables, conditionals, iteration, functions, arrays, etc.MODERN OPENGL 06
Matrix Transformation Of Normals. Normals are usually provided in model space, which means they are relative to the vertices of the asset before any transformations have been applied.However, when we calculate the vector from the surface to the light, that is done in world space.World space is where all the 3D objects have been positioned/scaled/rotated into their placesMODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero.MODERN OPENGL 04
In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camera to keyboard and mouse input, so we can move within the 3D scene and look around.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize. MODEL VIEW CONTROLLER EXPLAINED As you can see, the model code is starting to turn nasty. If the project manager then says “we’re porting the app to a platform with a different GUI toolkit” the delightfulness is even more prominent. With MVC, the Person class can be displayed by different GUI toolkits without any modification. Just make a controller and a view with the new toolkit, just as you would with the old EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Log out of the git user, and log back into your administrator account.. Step 5. Setting up ssh securely on the client computers. Even with a non-standard ssh port, your computer is open to automated password guessing attacks from the internet. CODING TIP: HAVE A SINGLE EXIT POINT The main reason multiple exit points are bad is that they complicate control flow. The more complicated the control flow is, the harder the code is to understand.TOMDALLING.COM
301 Moved Permanently. nginx HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Programming for Beginners Learn to Code by Making Little Games A short book that teaches programming fundamentals, for people who have zero programming experience, covering basics such as variables, conditionals, iteration, functions, arrays, etc.MODERN OPENGL 06
Matrix Transformation Of Normals. Normals are usually provided in model space, which means they are relative to the vertices of the asset before any transformations have been applied.However, when we calculate the vector from the surface to the light, that is done in world space.World space is where all the 3D objects have been positioned/scaled/rotated into their placesMODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero.MODERN OPENGL 04
In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camera to keyboard and mouse input, so we can move within the 3D scene and look around.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize. MODEL VIEW CONTROLLER EXPLAINED As you can see, the model code is starting to turn nasty. If the project manager then says “we’re porting the app to a platform with a different GUI toolkit” the delightfulness is even more prominent. With MVC, the Person class can be displayed by different GUI toolkits without any modification. Just make a controller and a view with the new toolkit, just as you would with the old EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Log out of the git user, and log back into your administrator account.. Step 5. Setting up ssh securely on the client computers. Even with a non-standard ssh port, your computer is open to automated password guessing attacks from the internet. CODING TIP: HAVE A SINGLE EXIT POINT The main reason multiple exit points are bad is that they complicate control flow. The more complicated the control flow is, the harder the code is to understand.TOMDALLING.COM
301 Moved Permanently. nginxRECENT POSTS
As a member of the software industry, I want user stories to focus more on the problem definition, so that we can make better choices around how to implement a solution.2021 ARCHIVES
Rule Of Thumb. Start with high-level tests, and step down to lower levels when the implementation is stable.MODERN OPENGL 02
The uniform keyword indications that tex is a uniform variable. The texture is a uniform because all the vertices of the triangle will have the same texture. sampler2D is the variable type, indicating that it holds a 2D texture.. The fragTexCoord is an attribute variable, because each vertex of the triangle will have a different texture coordinate.. The texture function finds the color of the MODEL VIEW CONTROLLER EXPLAINED As you can see, the model code is starting to turn nasty. If the project manager then says “we’re porting the app to a platform with a different GUI toolkit” the delightfulness is even more prominent. With MVC, the Person class can be displayed by different GUI toolkits without any modification. Just make a controller and a view with the new toolkit, just as you would with the old CATEGORY: MODERN OPENGL SERIES In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camera to keyboard and mouse input, so we can move within the 3D scene and look around. WRITE DETAILED RSPEC EXAMPLE DESCRIPTIONS Rule Of Thumb. RSpec examples should have enough detail in the descriptions to rewrite them from scratch. Background. In the early days of automated testing there was some test code, which would exercise the implementation code, and make assertions about the results — something like:MODERN OPENGL 01
The first line #version 150 tells OpenGL that this shader is written in GLSL version 1.50.. The second line in vec3 vert; says that this shader takes a single vertex as input, into a variable named vert.. The third line defines a function called main, which is where the shader will begin running.This is the same as in C, except in GLSL main does not take any arguments and returns void. SOLID CLASS DESIGN: THE SINGLE RESPONSIBILITY PRINCIPLE N.B. The above code demonstrates the SRP only, and actually violates some of the other four SOLID class design principles.. By extracting the XMLConverter class from XMLExporter, the two reasons for change are separated from each other.Note that separating the GUI from the converter has resulted in a model-view-controller type of structure. WHAT IS THE PURPOSE OF PRIVATE? Also, perhaps we’re not 100% happy with user_info_from, and can see it being refactored later.It is new, after all, and new things tend to change and grow for a while before they become stable. These are all good reasons to keep the method private. RESOURCE ACQUISITION IS INITIALISATION (RAII) EXPLAINED This is a very naive solution with a couple of problems, so don’t copy it, but it does give you an idea of what we are trying to achieve. One problem with this is that we might forget to make a FileCloser, in the same way that we might forget to close the file.It would be much better if the File class could just close itself. Let’s make a new class called MyFile that closes itself: HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
MODERN OPENGL 02
CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginx HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
MODERN OPENGL 02
CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginxRECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 01
The first line #version 150 tells OpenGL that this shader is written in GLSL version 1.50.. The second line in vec3 vert; says that this shader takes a single vertex as input, into a variable named vert.. The third line defines a function called main, which is where the shader will begin running.This is the same as in C, except in GLSL main does not take any arguments and returns void. HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Making a bare git repository. Using your new git server. Step 1. Give the server a static IP address on the local network. The server needs a static IP address on the local network for the next step (port forwarding) to work. This can be set in the following location: System Preferences » Network » Advanced » TCP/IP.MODERN OPENGL 02
Modern OpenGL 02 - Textures. 02 Dec, 2012 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be adding a texture to the triangle. This will involve adding new variables to the vertex and fragment shaders, creating and using texture objects, and learning a bit about texture units and texturecoordinates.
RESOURCE ACQUISITION IS INITIALISATION (RAII) EXPLAINED This is a very naive solution with a couple of problems, so don’t copy it, but it does give you an idea of what we are trying to achieve. One problem with this is that we might forget to make a FileCloser, in the same way that we might forget to close the file.It would be much better if the File class could just close itself. Let’s make a new class called MyFile that closes itself: WHAT IS THE PURPOSE OF PRIVATE? Private Communicates Stability. Categorising code as either public or private is an attempt to reduce the costs of change by communicating stability. Designating something as private communicates to other developers that this thing might change so don’t rely upon it. Conversely, designating something as public says that this thing isfairly
CATEGORY: MODERN OPENGL SERIES 21 Sep, 2014 — Category: Modern OpenGL Series. Valve is investing in OpenGL to hedge themselves against Microsoft. Some well-known developers have written about the deficiencies in the API. A few competing, proprietary APIs have popped up. In an effort to remain competitive, Khronos announces glnext: a ground-up rethinking of theOpenGL and
MODERN OPENGL 05
Modern OpenGL 05 – Model Assets & Instances. 08 Feb, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be refactoring the code to be more like a 3D engine/framework. Specifically, we will be replacing some of the globals with structs that represent “assets” and “instances.”. SOLID CLASS DESIGN: THE SINGLE RESPONSIBILITY PRINCIPLE The SOLID principles focus on achieving code that is maintainable, robust, and reusable. In this post, I will discuss the Single Responsibility Principle. The Single Responsibility Principle (SRP): A class should have one, and only one, reason to change. The SRP isOPENGL IN 2014
ToGL is a Direct3D to OpenGL translation layer, including a HLSL to GLSL converter. Vogl provides some sorely-needed debugging facilities. These two projects were dumped onto github in a somewhat hasty manner. Nevertheless, these are welcome additions, considering the historical lack of tooling in the OpenGL ecosystem. HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.RECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 02
FIZZBUZZ IN TOO MUCH DETAIL FizzBuzz is a very simple programming task, used in software developer job interviews, to determine whether the job candidate can actually write code. It was invented by Imran Ghory, and popularized by Jeff Atwood. Here is a description of the task: Write a CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginx HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.RECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 02
FIZZBUZZ IN TOO MUCH DETAIL FizzBuzz is a very simple programming task, used in software developer job interviews, to determine whether the job candidate can actually write code. It was invented by Imran Ghory, and popularized by Jeff Atwood. Here is a description of the task: Write a CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginxRECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize.MODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
CATEGORY: TESTING
Why did Apple not test what happens when a user supplies “True” as their last name? Is it incompetence? https://twitter.com/JPaulGibson/status/1368182852668583948 RESOURCE ACQUISITION IS INITIALISATION (RAII) EXPLAINED This is a very naive solution with a couple of problems, so don’t copy it, but it does give you an idea of what we are trying to achieve. One problem with this is that we might forget to make a FileCloser, in the same way that we might forget to close the file.It would be much better if the File class could just close itself. Let’s make a new class called MyFile that closes itself: WHAT IS THE PURPOSE OF PRIVATE? Private Communicates Stability. Categorising code as either public or private is an attempt to reduce the costs of change by communicating stability. Designating something as private communicates to other developers that this thing might change so don’t rely upon it. Conversely, designating something as public says that this thing isfairly
HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Making a bare git repository. Using your new git server. Step 1. Give the server a static IP address on the local network. The server needs a static IP address on the local network for the next step (port forwarding) to work. This can be set in the following location: System Preferences » Network » Advanced » TCP/IP. CATEGORY: MODERN OPENGL SERIES 21 Sep, 2014 — Category: Modern OpenGL Series. Valve is investing in OpenGL to hedge themselves against Microsoft. Some well-known developers have written about the deficiencies in the API. A few competing, proprietary APIs have popped up. In an effort to remain competitive, Khronos announces glnext: a ground-up rethinking of theOpenGL and
THE TIP OF THE INPUTBERG Why did Apple not test what happens when a user supplies “True” as their last name? Is it incompetence? https://twitter.com/JPaulGibson/status/1368182852668583948 SOLID CLASS DESIGN: THE SINGLE RESPONSIBILITY PRINCIPLE The SOLID principles focus on achieving code that is maintainable, robust, and reusable. In this post, I will discuss the Single Responsibility Principle. The Single Responsibility Principle (SRP): A class should have one, and only one, reason to change. The SRP is HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.RECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 02
FIZZBUZZ IN TOO MUCH DETAIL FizzBuzz is a very simple programming task, used in software developer job interviews, to determine whether the job candidate can actually write code. It was invented by Imran Ghory, and popularized by Jeff Atwood. Here is a description of the task: Write a CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginx HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.RECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 02
FIZZBUZZ IN TOO MUCH DETAIL FizzBuzz is a very simple programming task, used in software developer job interviews, to determine whether the job candidate can actually write code. It was invented by Imran Ghory, and popularized by Jeff Atwood. Here is a description of the task: Write a CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginxRECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize.MODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
CATEGORY: TESTING
Why did Apple not test what happens when a user supplies “True” as their last name? Is it incompetence? https://twitter.com/JPaulGibson/status/1368182852668583948 RESOURCE ACQUISITION IS INITIALISATION (RAII) EXPLAINED This is a very naive solution with a couple of problems, so don’t copy it, but it does give you an idea of what we are trying to achieve. One problem with this is that we might forget to make a FileCloser, in the same way that we might forget to close the file.It would be much better if the File class could just close itself. Let’s make a new class called MyFile that closes itself: WHAT IS THE PURPOSE OF PRIVATE? Private Communicates Stability. Categorising code as either public or private is an attempt to reduce the costs of change by communicating stability. Designating something as private communicates to other developers that this thing might change so don’t rely upon it. Conversely, designating something as public says that this thing isfairly
HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Making a bare git repository. Using your new git server. Step 1. Give the server a static IP address on the local network. The server needs a static IP address on the local network for the next step (port forwarding) to work. This can be set in the following location: System Preferences » Network » Advanced » TCP/IP. CATEGORY: MODERN OPENGL SERIES 21 Sep, 2014 — Category: Modern OpenGL Series. Valve is investing in OpenGL to hedge themselves against Microsoft. Some well-known developers have written about the deficiencies in the API. A few competing, proprietary APIs have popped up. In an effort to remain competitive, Khronos announces glnext: a ground-up rethinking of theOpenGL and
THE TIP OF THE INPUTBERG Why did Apple not test what happens when a user supplies “True” as their last name? Is it incompetence? https://twitter.com/JPaulGibson/status/1368182852668583948 SOLID CLASS DESIGN: THE SINGLE RESPONSIBILITY PRINCIPLE The SOLID principles focus on achieving code that is maintainable, robust, and reusable. In this post, I will discuss the Single Responsibility Principle. The Single Responsibility Principle (SRP): A class should have one, and only one, reason to change. The SRP is HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.RECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 02
FIZZBUZZ IN TOO MUCH DETAIL FizzBuzz is a very simple programming task, used in software developer job interviews, to determine whether the job candidate can actually write code. It was invented by Imran Ghory, and popularized by Jeff Atwood. Here is a description of the task: Write a CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginx HOME — TOM DALLINGMODERN OPENGL SERIESRUBYSOFTWARE DESIGNBLOGSOFTWARE PROCESSESCOCOA Tom Dalling. About Me. Hi there, I'm Tom. I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter ( @tom_dalling) Tom's Data Onion. A programming puzzle in a text file.RECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 06
The Phong reflection model has three components: ambient, diffuse, and specular. The diffuse component is the most important one, as you can see from the image above. The ambient component is used to stop the unlit, back sides of objects from being pure black, because pure black looks artificial in most 3D scenes. EXPLAINING HOMOGENEOUS COORDINATES & PROJECTIVE GEOMETRYSEE MORE ONTOMDALLING.COM
MODERN OPENGL 08
There are two new variables that were added in order to implement spotlights: coneAngle and coneDirection.The coneDirection variable is the direction from the point of the cone, through the center of the cone. The coneAngle variable is the angle between the center and the side of the cone, in degrees.. If the pixel is outside of the cone, then we set the attenuation factor to zero. MODEL VIEW CONTROLLER EXPLAINED The model is a list of Person objects, the view is a GUI window that displays the list of people, and the controller handles actions such as “Delete person”, “Add person”, “Email person”, etc. The following example does not use MVC because the model depends on the view. //Example 1: void Person::setPicture(Picture pict) { m_pictureMODERN OPENGL 02
FIZZBUZZ IN TOO MUCH DETAIL FizzBuzz is a very simple programming task, used in software developer job interviews, to determine whether the job candidate can actually write code. It was invented by Imran Ghory, and popularized by Jeff Atwood. Here is a description of the task: Write a CODING TIP: HAVE A SINGLE EXIT POINT Coding Tip: Have A Single Exit Point. 30 Jun, 2009 — Category: Coding Tips — Suggest changes on GitHub. Having one exit point (return) from a function is a good thing. Here is an example of a single exit point: int MyArray::indexOfElement(int elementToFind) { int foundIndex = ELEMENT_NOT_FOUND; for(int i = 0; i < m_numberOfElements; ++iTOMDALLING.COM
301 Moved Permanently. nginxRECENT POSTS
Modern OpenGL 08 – Even More Lighting: Directional Lights, Spotlights, & Multiple Lights. 01 Nov, 2014 — Category: Modern OpenGL Series. In this article, we will be adding directional lights, spotlights, and allowing for multiple lights instead of just one.MODERN OPENGL 07
The incidenceVector is pointing from the light to the surface, which is the opposite direction of surfaceToLight.There is a GLSL function called reflect which calculates the reflection vector based on the surface normal and the incidence vector, using the AoI = AoR rule. We calculate surfaceToCamera using vector subtraction, and make it a unit vector with normalize.MODERN OPENGL 01
The first line #version 150 tells OpenGL that this shader is written in GLSL version 1.50.. The second line in vec3 vert; says that this shader takes a single vertex as input, into a variable named vert.. The third line defines a function called main, which is where the shader will begin running.This is the same as in C, except in GLSL main does not take any arguments and returns void.MODERN OPENGL 04
Modern OpenGL 04 - Cameras, Vectors & Input. 21 Jan, 2013 — Category: Modern OpenGL Series — Suggest changes on GitHub. In this article, we will be consolidating the matrix and camera knowledge from the previous article into the new tdogl::Camera class, which will be a first-person shooter type of camera. Then, we will connect the camerato
RESOURCE ACQUISITION IS INITIALISATION (RAII) EXPLAINED This is a very naive solution with a couple of problems, so don’t copy it, but it does give you an idea of what we are trying to achieve. One problem with this is that we might forget to make a FileCloser, in the same way that we might forget to close the file.It would be much better if the File class could just close itself. Let’s make a new class called MyFile that closes itself:CATEGORY: TESTING
Why did Apple not test what happens when a user supplies “True” as their last name? Is it incompetence? https://twitter.com/JPaulGibson/status/1368182852668583948 WHAT IS THE PURPOSE OF PRIVATE? Private Communicates Stability. Categorising code as either public or private is an attempt to reduce the costs of change by communicating stability. Designating something as private communicates to other developers that this thing might change so don’t rely upon it. Conversely, designating something as public says that this thing isfairly
HOW TO SET UP A SECURE GIT SERVER AT HOME (OSX) Making a bare git repository. Using your new git server. Step 1. Give the server a static IP address on the local network. The server needs a static IP address on the local network for the next step (port forwarding) to work. This can be set in the following location: System Preferences » Network » Advanced » TCP/IP. THE TIP OF THE INPUTBERG Why did Apple not test what happens when a user supplies “True” as their last name? Is it incompetence? https://twitter.com/JPaulGibson/status/1368182852668583948 SOLID CLASS DESIGN: THE SINGLE RESPONSIBILITY PRINCIPLE The SOLID principles focus on achieving code that is maintainable, robust, and reusable. In this post, I will discuss the Single Responsibility Principle. The Single Responsibility Principle (SRP): A class should have one, and only one, reason to change. The SRP isTom Dalling Blog
TOM DALLING
About Me
__ __
__
__
Hi there, I'm Tom.
I'm a software developer, currently living in Melbourne, Australia. Professionally, I do and full-stack web, iOS, and OS X development. I also dabble in game dev, OpenGL, German, linguistics, and writing. Twitter (@tom_dalling ) No javascript? Are you browsing this website on a toaster, or what?Tom's Data Onion
A programming puzzle in a text file. Tom's Data Onion →Ruby Pigeon
Articles for Ruby developers. This is where I'm doing most of mywriting these days.
RubyPigeon.com →
Programming for Beginners Learn to Code by Making Little Games A short book that teaches programming fundamentals, for people who have zero programming experience, covering basics such as variables, conditionals, iteration, functions, arrays, etc. Each chapter prompts the reader to implement a small text-based game in Ruby, using the concepts learned up until that point.Book Website →
Subscribe
* __ RSS
* __ Twitter
Recent Posts
* Monologue On End-To-End Testing * Write Detailed RSpec Example Descriptions * Start With High-Level Tests * The Tip Of The Inputberg * Better User StoriesCategories
* Cocoa (5 __ )
* Coding Style/Conventions (3 __)
* Coding Tips (4 __ ) * Mentoring Notes (2 __ ) * Miscellaneous (3 __)
* Modern OpenGL Series (10 __)
* Ruby (2 __ )
* Software Design (11 __)
* Software Processes (2 __)
* Testing (2 __ )
* Web (1 __ )
Archives
* 2021 (4)
* 2020 (5)
* 2016 (1)
* 2015 (2)
* 2014 (3)
* 2013 (5)
* 2012 (10)
* 2011 (1)
* 2010 (5)
* 2009 (9)
2009 – 2021 Tom Dalling__ __
__
__
Details
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0