<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for ClimbNorth</title>
    <link>http://www.advogato.org/person/ClimbNorth/</link>
    <description>Advogato blog for ClimbNorth</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Wed, 19 Jun 2013 02:46:52 GMT</pubDate>
    <item>
      <pubDate>Mon, 17 Mar 2008 04:54:36 GMT</pubDate>
      <title>17 Mar 2008</title>
      <link>http://www.advogato.org/person/ClimbNorth/diary.html?start=5</link>
      <guid>http://www.advogato.org/person/ClimbNorth/diary.html?start=5</guid>
      <description>It's been.. about 4 years now since my last post.  I have &#xD;
since graduated school, taken a few jobs, and now I'm &#xD;
freelance developer.  I have worked with a handfull of &#xD;
technologies and learned a lot about the real world of &#xD;
software development.  In the past few years I have worked &#xD;
on great projects- so many I can't list them all.  The most &#xD;
rewarding ones were the ones that seemed so impossible from &#xD;
before I start working on them.  Here are some of my 'speed &#xD;
coding' projects that I completed under the gun that worked &#xD;
flawlessly on first implementation- and are still in &#xD;
production today without change (well, last I heard): &#xD;
&lt;br&gt;&#xD;
&lt;i&gt;Grid App&lt;/i&gt;: I was tasked by the CEO of a former &#xD;
company at about 7pm to create a windowing application that &#xD;
manages a set of fields and places them into an area for &#xD;
the web designers to be able to visualize theme easier &#xD;
(they worked exclusively with CSV so the application would &#xD;
write direct to CSV to save the area dimensions).  I had &#xD;
not worked with MFC in over a year at that point and had &#xD;
never really worked with many of the controls to the point &#xD;
where I was comfortable.  I designed and built the software &#xD;
exactly to the specifications and was completed by the next &#xD;
morning flawlessly.  Unfortunately the end of that story &#xD;
was not so fun- the person who tasked me the project was &#xD;
not satisfied (with his own design- because I would have &#xD;
made it differently if I were instructed) and the project &#xD;
was canned (that same day- go figure).&#xD;
&lt;br&gt;&#xD;
&lt;i&gt;Siteminder Proxy:&lt;/i&gt;&#xD;
I created an ISAPI extension that acted as a proxy server &#xD;
for Siteminder authentication- again in record time.  From &#xD;
concept to implementation it took about a day and a half.  &#xD;
I had heard of and used siteminder before but there are no &#xD;
specs out there for doing what I did- so it was sort of all &#xD;
guess work to get it to work properly.  I can't take &#xD;
complete credit for this one because there was some &#xD;
troubleshooting/debugging I had help with.  &#xD;
&lt;br&gt;&#xD;
&lt;i&gt;Mini Language Interpreter:&lt;/i&gt;&#xD;
Another project I felt particularly proud of was the &#xD;
implementation of a very silly scripting language used to &#xD;
calculate dimensions of areas in a grid- but in a clever &#xD;
way by creating relations between the other area &#xD;
dimensions.  It was not my design, but I made it work- and &#xD;
had implemented it as a drop in replacement DLL for another &#xD;
one that had been in &#xD;
development for weeks.  My version was completed in about 2 &#xD;
days- and worked flawlessly where as the original had many &#xD;
bugs and did not correctly implement the logic.&#xD;
&lt;br&gt;&#xD;
&lt;i&gt;Huge improvements to DirectShow transform filter:&lt;/i&gt;&#xD;
This one wasn't speed coding- although it only took a day, &#xD;
it was extremely rewarding to see huge performance gains by &#xD;
doing optimization.  The company I was working for had a &#xD;
simple transcoding software built on DirectShow that was &#xD;
grossly shoehorned into their custom programming &#xD;
environment.  I took a look around and saw that there was a &#xD;
transform filter that was performing a very simple overlay &#xD;
on frames of video.  I decided to take a stab at making it &#xD;
run fast- using intrinsics for simd extension calls, &#xD;
reducing the complexity of the operation that was used, and &#xD;
trimming the area that actually required calculation to the &#xD;
occluded area there were tremendous speed improvements.  &#xD;
The first improvement was to measure the affect of &#xD;
rewriting teh application so that it uses optimized &#xD;
structure of the function calls and used faster operators &#xD;
(ex: shift) instead of slow ones (ex: multiply).  After &#xD;
this first improvement we saw about 30-40% speed increase!  &#xD;
Using pixel packing (pushing all RGBA bytes into register &#xD;
to do single op on all instead of 4 separate ops) using &#xD;
SIMD extensions using intrinsics (intrinsics are C++ &#xD;
functions that do SIMD operations) an additional 70% &#xD;
increase!  I then stopped- but after running tests of &#xD;
writing assembly instead of intrinsics- I noticed I &#xD;
probably would have saw another 30% speed increase!  The &#xD;
last operation of segmenting the video to only use the &#xD;
filter on the affected areas I did not implement.  This &#xD;
part was done by another individual so I am not sure if it &#xD;
was done properly.  We did see a small improvement- for an &#xD;
image in the scene that was 1/4 the size of the scene we &#xD;
saw about 20% speed increase.  I noticed there are other &#xD;
transcoders that already do this operation much faster but &#xD;
I was very happy with my results from spending some time &#xD;
learning about intrinsics and applying that to a real world &#xD;
problem- speeding up the operations by a huge factor.  So &#xD;
the final numbers: Original- 60 seconds, First enhancement- &#xD;
42 seconds, Second enhancement- 12.6 seconds, Third &#xD;
enhancement- 10.08 seconds.  If I had done the assembly &#xD;
version I would have seen 7.06 seconds.</description>
    </item>
    <item>
      <pubDate>Sun, 18 Apr 2004 08:03:02 GMT</pubDate>
      <title>18 Apr 2004</title>
      <link>http://www.advogato.org/person/ClimbNorth/diary.html?start=4</link>
      <guid>http://www.advogato.org/person/ClimbNorth/diary.html?start=4</guid>
      <description>It's been.. almost 2 years since I last posted.  I have learned a lot and done a lot since then.  Most of which have been projects for school.  Currently working on a distributed proxy server of sorts.  Short explanation: Make requests to the proxy server.  If the requested file can be broken into parts, make sub requests to different number of proxy servers.  This project is a part of a study on wireless networks I am doing at New Paltz.  By the end of the semester (or possibly this week) I'll have a proof-of-concept command line only version that only requests files one at a time entered manually.  By the end of the summer, full GUI proxy server.  I was thinking after I have the proof of concept done, might try looking at other open source proxy servers and building on whats already been done.  A lot of what I'm doing right now seems to be reinventing the wheel.  This whole thing is in C, so I can get a better feel for the machine- memory management, etc.  I am taking Computer Architecture right now, thats what inspired me to do this to myself.  Thats all for now, hopefully I will post more often, definetely more often than every 2 years.</description>
    </item>
    <item>
      <pubDate>Wed, 17 Jul 2002 07:09:05 GMT</pubDate>
      <title>17 Jul 2002</title>
      <link>http://www.advogato.org/person/ClimbNorth/diary.html?start=3</link>
      <guid>http://www.advogato.org/person/ClimbNorth/diary.html?start=3</guid>
      <description>Just an update because I been ignoring my other projects.
I have been porting this water demo to linux that I got from
lonerunner (do a google search and you will find his stuff).
it's really cool and I hope I can get it to work 100% and 
then start messing with it.  I found that if I wanted to learn
opengl, this is a cool way... to look at code that is supposed 
to be working, and does on another operating system and try 
to make it work on another.  First time I'm trying something
like this and I'm finding it very interesting.  I feel most 
times that I am not skilled enough to write my own code that 
is any good so this is a way to learn more about opengl.  
Gonna keep this short, just a breif update :-D!</description>
    </item>
    <item>
      <pubDate>Mon, 1 Jul 2002 02:08:47 GMT</pubDate>
      <title>1 Jul 2002</title>
      <link>http://www.advogato.org/person/ClimbNorth/diary.html?start=2</link>
      <guid>http://www.advogato.org/person/ClimbNorth/diary.html?start=2</guid>
      <description>Hmm... Well I have been codin some simple stuff like I said.  Very simple... too little time to have too much fun.  Update: I haven't really been working on my friends demo and neither has he really (well he is working on XML parser for the map file which is cool).  I have been looking more into OpenGl and made a few simple things like a spinning cube (goal is SHINING spinning cube).  I have been messing around with some open source php scripts I found interesting.  Webfroot.co.nz made Shoutbox which I put in my friends web page, and modded for my fun.  Also played with (forgot the url) b2 blogging scripts also written in php.  News blogger that I am gonna start messing with to make my own homepage, which will also have a shoutbox.  I spend my time 96% reading, 3% messing around with other peoples stuff, and 1% coding.  I notice I was (I think) promoted to apprentice, but I don't feel that I have earned it.  Not yet.  Another thing I was reading and playing with: Qt.  I haven't really decided on Qt yet but I am leaning toward it cuz I want a zaurus, and I would probably want to port my shining spinning cube to that when it's done (I like shining spinning cubes).  After I have the shining spinning cube, I am gonna start working on a project my friend gave me and a few people to work on.  Well, goals are:    
1) have a canvas 
2) the canvas must be adjustable in size 
3) the canvas is white in color 
3) be able to create squares, circles, and triangles on the canvas. 
4) these shapes have a black border 
5) be able to move the squares, circles, and triangles around the canvas by clicking and dragging. 
6) collision detection for all the shapes on the edge of the canvas 
7) if a collision is detected, the border of the shape turns red 
After the cube is done I should be able to do up to step 3 (maybe 4)</description>
    </item>
    <item>
      <pubDate>Thu, 9 May 2002 08:49:14 GMT</pubDate>
      <title>9 May 2002</title>
      <link>http://www.advogato.org/person/ClimbNorth/diary.html?start=1</link>
      <guid>http://www.advogato.org/person/ClimbNorth/diary.html?start=1</guid>
      <description>hmm.. it's been a while since i last posted here, and I 
have learned a lot.  Lets see, what have I done since! Well 
not much sad to say.  The truth does hurt, but 
unfortunately school work was the only programming I have 
accomplished since last post.  I have all but abandoned my 
last projects that are not well coded and were not object 
oriented, although I am going to cut some of the code out 
for future projects, because what can I say, I'm lazy.  I 
have been looking curiously at an SDL demo my friend made 
and when this semester is over (next week) I plan to 
contribute my own 2 or 3 cents towards a working game 
demo.  Our project (he doesn't like me to say OUR, as I 
haven't contributed yet) will be a simple role-playing 
game.  His plans of the game are for monsters to be walking 
around and come attack you.  My idea for a first game is 
more of a Final Fantsy, Dragon Warrior, traditional style 
of RPG.  Easy comparison: he wants Crystalis, I want Final 
Fantasy 1.  I have been having some trouble codeing my 
homework, but I have a very good understanding of what I 
want to do.  The only problem occurs when I have to write 
the code.  All else I that I have been doing was getting an 
old DEC Multia to run and toy around with that.  I am also 
interested in creating databases, just because I took a 
database course this semester.  Primary goals for the 
summer: SDL game demo, play with php, play with DB's.</description>
    </item>
    <item>
      <pubDate>Thu, 7 Feb 2002 04:22:13 GMT</pubDate>
      <title>7 Feb 2002</title>
      <link>http://www.advogato.org/person/ClimbNorth/diary.html?start=0</link>
      <guid>http://www.advogato.org/person/ClimbNorth/diary.html?start=0</guid>
      <description>Today I signed up for this.  I figure it will be a good way
to learn and get involved.  Thanks to my friend (booyaka) I
was directed here.  I am very very new to programming.  All
I know is alittle bit of C++, and some bash shell scripting.
 to get to the good stuff... I started programming a few
games to get some practice.  One is a game that you try to
guess a number that is generated at random.  It was a bit
tricky to get the random number but luckily I use Linux and
I have man pages and apropos to look up funcions and get a
description.  Other program (actually bundled with the first
one in the same file) is a text adventure.  There is no
"adventure" part to it yet, but there is a help menu and the
ability to walk forward backward turn left, right, and
attack.  I am gonna just try to emulate other RPG's I've
played (exp, rand attack damage, etc.)  Well and there is
one more lil project that I am gonna "not try" with.  In
other words, if I don't know how to do it a good way, I'll
do it to get it done even if it means writeing 1000 lines of
extra code for simple stuff.  As I learn more, I won't adapt
that program and eventually it will be like a timeline of
when I started and how I progressed.  That program is gonna
be an RPG as well but graphical.  Characters representing
walls, what you can't see, monsters etc.  Move thru.  Kinda
like the old old version of dungeons of dragons I played on
Commodore 64 when I was very young and I MISS IT SO DEARLY!
 Gotta a "new" version. :p</description>
    </item>
  </channel>
</rss>
