tag:blogger.com,1999:blog-2488125973344526652024-03-19T18:51:02.576-04:00TalkLittle WriteLittleUnknownnoreply@blogger.comBlogger22125tag:blogger.com,1999:blog-248812597334452665.post-15276702349551812562012-10-19T10:28:00.000-04:002012-10-19T10:28:00.583-04:00Back dat platter up"Time to install Windows 8 on this old laptop. Oh crap what will I do with my old docs?"<br />
<br />
I finally came across a backup service that was cheap and from a company I can be sure will be around for awhile. I'm talking about <a href="http://aws.amazon.com/glacier" target="_blank">Amazon Glacier</a>. You may or may not have heard of it, since it was released just two months ago, and it's heavily developer focused. Meaning there's an API but no official GUI or console.<br />
<br />
Thankfully there's <a href="http://fastglacier.com/" target="_blank">FastGlacier</a> which is a free-for-home-use Windows program to make uploading and downloading easy. I should mention Amazon puts a fee on <i>downloads </i>that surpass 5% of what you've stored there; the service is meant for long-term infrequently-accessed archival storage, completely unlike Dropbox.<br />
<br />
There are a few command-line programs for Linux. Look on github or <a href="https://www.quora.com/Amazon-Glacier/Are-there-any-command-line-tools-for-Amazon-Glacier-yet" target="_blank">this Quora thread</a>. I tried one of them, <a href="https://github.com/uskudnik/amazon-glacier-cmd-interface" target="_blank">glacier-cmd</a>, but couldn't figure out how to do directory uploads other than "find | xargs glacier-cmd upload". Maybe I just answered my own question. Oh well. I ended up copying my files to Windows first and then using FastGlacier's nice and intelligent GUI.<br />
<br />
The service is extremely cheap for typical home backup. Uploading 1000 files costs 5 cents, with a recurring cost of 1 cent per GB per month. For me, I stored about 20 GB of files, many of them tiny metadata and random small text files. It came out to an<b> upfront cost of $4.08</b>, and I'll pay <b>$2.40 a year(!)</b> to keep those files there. That's literally pocket change. I can do pickup at the Thai restaurant instead of delivery and make that money back and then some.<br />
<br />
Compare with another well regarded backup service, <a href="http://www.backblaze.com/" target="_blank">Backblaze</a>, which costs a flat $3.96/month for unlimited storage. I haven't used them but I hear good things. I'm sure they include a nice GUI too. But to justify the cost I'd have to store nearly 400 GB first. I'm sure a lot of people do store that much data. Someday when I have Ultra-HD family videos that I want to back up, I can shop around for new options. But by then who knows what companies will still be around; maybe computers will be obsolete and we'll encode all our data in DNA converted to dark matter.<br />
<br />Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-248812597334452665.post-7082861746467169692012-09-21T09:25:00.000-04:002012-09-21T09:25:07.512-04:00Day 12I've been working on a new project lately. Since I believe it'll demotivate me to give away any details or raise any expectations about it, I'm just going to say I'm on Day 12 of it.<br />
<br />
Actually, looking back on the past 12 days, I am pretty disappointed in the progress I've made. The first 5 days or so were great, then I fell into the trap of moving very slowly. Probably because I have no accountability for this project. That's why I'm writing this blog post. I hope to make blogging a regular occurrence and eventually show some real progress on the blog, once I have something cool to show.<br />
<br />
Maybe I'll even keep a gigantic private post, and only make it public after the project is finished.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-13221602644874209952012-06-25T21:37:00.000-04:002012-07-07T02:16:20.893-04:00lolcommitsToday I started to use this great little program called <a href="https://github.com/mroth/lolcommits" target="_blank">lolcommits</a>, which takes a webcam picture as a hook for every git commit. It's nice to have a record of my face while programming!<br />
<br />
Initially I wanted something to help with accountability, so each week I could show people my progress. I'm not sure if lolcommits is that "something," but it's sure fun to have the photos!<br />
<br />
A couple of my favorites from today:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg4HbDl8WYwClSSIR4r00_7MzVnLQnODpkfaYN54LZIGIrLZLuYW18PROyGLC6sp54VTMsZyvm1dH08TKDCLZtQsg6PbHKOpp6_fcgyG0pHiXzAbnKXhfEpcLP6ifMWTsv8vhLLP1VbK-0/s1600/ea0d241cff5.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg4HbDl8WYwClSSIR4r00_7MzVnLQnODpkfaYN54LZIGIrLZLuYW18PROyGLC6sp54VTMsZyvm1dH08TKDCLZtQsg6PbHKOpp6_fcgyG0pHiXzAbnKXhfEpcLP6ifMWTsv8vhLLP1VbK-0/s320/ea0d241cff5.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Looks a bit mischievous. "untested" indeed</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7JhoyLftsWyQF2U5vttBHZ57lBGTZl83DPCeP7WlP9NZUcqsxJosXWhyphenhyphenxYaP4uARXGin16FpnW-GpXoPkABMafNlACGafBRfnPLkqylcpE4KRHtln51hMdtbbqTMx50vhTTxR05xPyT-Z/s1600/a39c4d742fb.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7JhoyLftsWyQF2U5vttBHZ57lBGTZl83DPCeP7WlP9NZUcqsxJosXWhyphenhyphenxYaP4uARXGin16FpnW-GpXoPkABMafNlACGafBRfnPLkqylcpE4KRHtln51hMdtbbqTMx50vhTTxR05xPyT-Z/s320/a39c4d742fb.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Facial expression seems to match "do not bother"</td></tr>
</tbody></table>
<br />
<b>UPDATE July 7</b>: After 12 days of using lolcommits, I uninstalled it. The photos mostly looked the same, and the 5-10 second delay after every commit was finally getting on my nerves.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-57622180784777144512011-11-27T23:53:00.001-05:002012-06-05T18:12:02.755-04:00Setting up GNUstep in Windows<span class="Apple-style-span" style="font-family: inherit;"><a href="http://www.gnustep.org/">GNUstep</a> is a wonderful project that aims to replicate Cocoa APIs for a variety of Unix-like OSes and Windows. In effect this lets you get started playing with Objective C and a coding environment similar to Xcode, without owning a Mac or resorting to illegally running OSX on non-Apple hardware.</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">I've only just begun, but the whole GNUstep project seems more solid than I expected (although about as ugly as I'd expect from a GNU project).</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">It wasn't completely clear where to begin, since there are several different pages talking about GNUstep, <a href="http://www.gnustep.org/experience/ProjectCenter.html">ProjectCenter</a> (the visual project builder), and Windows. So here is what I ended up doing to get started. I'm on Windows 7 64-bit.</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br /></span><br />
<br />
<ol>
<li><span class="Apple-style-span" style="font-family: inherit;"><a href="http://www.gnustep.org/experience/Windows.html">http://www.gnustep.org/experience/Windows.html</a> has good instructions on getting started on Windows. (Unfortunately to use ProjectCenter, you can't use the latest GNUstep versions since they're incompatible. As of this writing, GNUstep 0.29.0 stable was released very recently in Nov 2011, while ProjectCenter 0.60 was released December 2010. Since I mainly cared about using ProjectCenter, I chose the GNUstep versions that were released prior to ProjectCenter 0.60.)</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Download from <a href="http://ftp.gnustep.org/pub/gnustep/binaries/windows/">http://ftp.gnustep.org/pub/gnustep/binaries/windows/</a></span></li>
<ol>
<li><span class="Apple-style-span" style="font-family: inherit;">gnustep-msys-system-0.25.1-setup.exe (July 15, 2010)</span></li>
<li><span class="Apple-style-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: inherit;">gnustep-core-0.25.0-setup.exe (May 15, 2010)</span></span><pre></pre>
</li>
<li><span class="Apple-style-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: inherit;">gnustep-devel-1.1.1-setup.exe (July 15, 2010)</span></span></li>
<li><span class="Apple-style-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: inherit;">SystemPreferences-1.1.0-1-setup.exe</span></span></li>
<li><span class="Apple-style-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: inherit;">gorm-1.2.12-setup.exe</span></span></li>
</ol>
<li><span class="Apple-style-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: inherit;">Install the exes in the order downloaded, shown above. I used the default C:\GNUstep target.</span></span></li>
<li><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="white-space: pre;">Download ProjectCenter 0.6.0 tar.gz from </span><a href="http://ftp.gnustep.org/pub/gnustep/dev-apps/">http://ftp.gnustep.org/pub/gnustep/dev-apps/</a> into e.g. C:\GNUstep\home\Andrew</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">In your Start menu, run "Shell" under GNUstep. (I renamed this to "GNUstep Shell" to be more sensible for Windows 7 start menu autocomplete.)<br /><b>Note: </b>Non-administrator users must right-click and choose Run as Administrator (thanks Winston Lee).</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Install ProjectCenter</span></li>
<ol>
<li><span class="Apple-style-span" style="font-family: inherit;">Untar ProjectCenter--from the shell: tar xzvf ProjectCenter-0.6.0.tar.gz</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">cd ProjectCenter-0.6.0</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">make</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">make install</span></li>
</ol>
<li><span class="Apple-style-span" style="font-family: inherit;">Run ProjectCenter from the shell (just type ProjectCenter)</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Run gorm from start menu.</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Follow tutorial at <a href="http://www.gnustep.org/experience/PierresDevTutorial/index.html">http://www.gnustep.org/experience/PierresDevTutorial/index.html</a></span></li>
<ol>
<li><span class="Apple-style-span" style="font-family: inherit;">ProjectCenter doesn't recognize gorm for some reason, which is why I have to run gorm separately.</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Also, builds don't work from within ProjectCenter, but thankfully GNUstep generates makefiles for everything, so from the GNUstep shell you can just type "make" inside your project, and it'll generate a ProjectName.app directory for you. Inside that directory, you'll find Windows binaries to run the app.</span></li>
</ol>
</ol>
<div>
<span class="Apple-style-span" style="font-family: inherit;">I'm really excited about this, because although I do intend to do a bit of development, and of course builds, for iOS apps using a Mac, GNUstep gives me a bit more choice where I want to do development from.</span></div>
<div>
<span class="Apple-style-span" style="font-family: inherit;"><br /></span></div>
<div>
<span class="Apple-style-span" style="font-family: inherit;">One more thing: there are other projects that go along with GNUstep. See <a href="https://github.com/ANindie/cocos2d-GNUstep">https://github.com/ANindie/cocos2d-GNUstep</a> for a work-in-progress cocos2d port. Given that cocos2d-GNUstep is written and tested on Ubuntu, maybe I'll want to use Ubuntu instead of Windows for this stuff.</span></div>Unknownnoreply@blogger.com8tag:blogger.com,1999:blog-248812597334452665.post-43849199151169248702011-11-20T00:01:00.001-05:002016-12-05T09:21:55.191-05:00backbone.js nice new logoI just noticed the new <a href="http://backbonejs.org/">backbone.js</a> logo (<b>edit 2016-12-05:</b> old link was <a href="http://documentcloud.github.com/backbone/">http://documentcloud.github.com/backbone/</a>). Very professional looking!<br />
<br />
<div style="text-align: center;">
Old logo:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL5zDhWApgFYu2lbwvTXBuafQ9RgoxewZxp4eRjRTUuPtQBy2kNezvdgybDsR8QbGDE6A_p7KblsAYrk1yQaeSRteYkQuQ7Nd8Z5mpxlUs07r9ruu32lQ1S5J2hIvNF7JUN2ILtuSXQCrB/s1600/backbone-js-old-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL5zDhWApgFYu2lbwvTXBuafQ9RgoxewZxp4eRjRTUuPtQBy2kNezvdgybDsR8QbGDE6A_p7KblsAYrk1yQaeSRteYkQuQ7Nd8Z5mpxlUs07r9ruu32lQ1S5J2hIvNF7JUN2ILtuSXQCrB/s320/backbone-js-old-logo.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
New logo:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDo1dSX2Ze5Fy-ofeAroFEJiO8GY5s4u7FVxRlxk3sWKddYi1MFv7fB-Xsk0GVTVp5dkDwtOWoVthvv47mC99isIS1t0mksmqBNzv4BNmc-0nsAXfRuU4SmPfIbBGUZKSyTNoU-gLjnhgW/s1600/backbone-js-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="56" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDo1dSX2Ze5Fy-ofeAroFEJiO8GY5s4u7FVxRlxk3sWKddYi1MFv7fB-Xsk0GVTVp5dkDwtOWoVthvv47mC99isIS1t0mksmqBNzv4BNmc-0nsAXfRuU4SmPfIbBGUZKSyTNoU-gLjnhgW/s320/backbone-js-logo.png" width="320" /></a></div>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-42692222493051333022011-10-26T09:20:00.000-04:002011-10-26T09:21:00.090-04:00Brainstorming AestheticsYesterday I posted[1] about "writing it down" as an obvious and simple methodology that should not be skipped. Well, looking through my EverNote notes I realize I did start writing things down at the beginning. One problem with those notes, though, was that they're just stream-of-consciousness, mixing different levels of detail in too many words. Reading the notes from start to finish makes them understandable, but they did not serve to add structure to my thoughts. Instead they only served the purpose of leaving a record.<br />
<br />
A better, structured brainstorming approach does the following things:<br />
<br />
<ol>
<li>Uses concise wording.</li>
<li>Uses symbols and pictures, avoiding prose, when appropriate.</li>
<li>Breaks out levels of detail into separate groups. Programmers should be adept at this.</li>
<li>Lays out ideas to facilitate reorganization. One reason electronic brainstorming is very powerful.</li>
<li>Gives multiple "entry points" for re-examination. If your brainstorm requires reading from top to bottom to make sense, then it's not as good as it can be. More entry points mean more opportunities for additions and updates in the future.</li>
</ol>
<div>
As an example of #3, breaking out levels of detail into separate groups: if a server needs to generate a token and send it to the client as part of some process, that's all I need to say for the top level. <i>How</i> the token is generated may belong to a different level of detail. Writing both together muddles the intent, and makes the notes difficult to read.</div>
<div>
<br /></div>
<div>
That's all I can think of now. If you have more suggestions, let me know.</div>
<div>
<br /></div>
<div>
[1]: <a href="http://blog.andrewshu.com/2011/10/write-it-down.html">http://blog.andrewshu.com/2011/10/write-it-down.html</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-90003068213317542132011-10-25T14:47:00.000-04:002011-10-26T09:20:50.164-04:00Write it downRecently I was thinking through a programming problem in my free time, for several days. (Authorization of purchases and content delivery.) After a week passed, I knew I had considered all the different cases, but couldn't get the whole flow pictured in my head. At each step of the authorization process, different issues come up where either a legit customer may lose data, or a pirate gains unauthorized access to content.<br />
<br />
I was reluctant to write things down on paper (or electronically), since I felt I needed many changes to get it right. Writing it down would only add more overhead as I changed the design around. Unsurprisingly, I have a similar sentiment towards test-driven development, where in many cases the project being built out is too uncertain in requirements, and new features may be desirable later on, such that writing tests up front only adds overhead later on. Unit testing in general, though, is highly desirable.<br />
<br />
After the week passed, I was at the point where I wanted to write down the design, so I could pick at it without spinning my wheels thinking about the same scenarios over and over. As you've probably guessed, writing it down helped me immediately see a couple problem spots and get the design down from start to finish. It also helped to have visual separation between the components of the process. In my head I would jump back and forth between components, like initial purchase versus restoring purchase history, trying to think "where can I reuse this security token and when do I need to generate a new one?" and things like that. Writing it down, even in just simple numbered lists, helped me split up concerns and stop wasting mental energy juggling different pieces.<br />
<br />
The message of this post is hopefully obvious to most people, and even for me it is something I've learned and relearned many times over the years. It's just times like these, when my pride creeps up on me and makes me believe I can handle thinking all the way through moderately complex designs in my head, that I disregard an obviously useful methodology.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-248812597334452665.post-54701807373624891122011-10-06T09:29:00.001-04:002011-10-08T11:15:26.817-04:00backbone.js: Model.initialize() is called at the endWhen is Model.initialize() called in backbone.js?<br />
<br />
Just a quick post to indicate that in backbone.js, Model.initialize(attrs) is called after everything else is done, like setting the attributes if you passed them into the constructor. I'm only writing this down because it took me a few minutes to find the answer. I had to look at the <a href="http://documentcloud.github.com/backbone/docs/backbone.html">annotated source</a>.<br />
<br />
The docs, and some blog posts, only say things to the effect of "you can provide an initialize function, which will be called at the time of construction" which is ambiguous--is it before or after the attributes are set on the object?<br />
<br />
But now that I know the answer, I realize it doesn't matter--I don't want to be designing initialization code that is so fine-grained that it matters whether I set the attributes once or twice.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-49553141348832636432011-06-08T08:55:00.002-04:002011-08-01T12:06:06.977-04:00Ubuntu 10.04: Failed to compile rebar files! (redefining macro "DEPRECATED")<span class="Apple-style-span" style="font-size: x-large;">Update July 2011:</span><br />
<span class="Apple-style-span" style="font-size: large;">Install Erlang R14B03 and use the latest rebar from github. It now works.</span><br />
<span class="Apple-style-span" style="font-size: large;">(Thanks enri for commenting.)</span><br />
<span class="Apple-style-span" style="font-size: x-large;"><br />
</span><br />
<span class="Apple-style-span" style="font-size: x-large;">Ignore old stuff below:</span><br />
<br />
I was getting this error trying to compile rebar for Erlang project management:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Recompile: src/rebar</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">include/rebar.hrl:17: redefining macro ''DEPRECATED''</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Failed to compile rebar files!</span><br />
<div><br />
</div><div>The only google result was <a href="http://www.zelfendo.tk/blog/?p=433">http://www.zelfendo.tk/blog/?p=433</a> in Chinese.</div><div><br />
</div><div>The summary of how to fix:</div><div><ol><li style="text-align: left;">Don't use <a href="https://github.com/basho/rebar">https://github.com/basho/rebar</a>; do use:<span class="Apple-style-span" style="line-height: 15px;"> </span><span class="Apple-style-span" style="border-collapse: collapse; line-height: 15px; white-space: pre;"><code class="shell plain" style="background-attachment: initial !important; background-clip: initial !important; background-color: initial !important; background-image: none !important; background-origin: initial !important; border-bottom-left-radius: 0px 0px !important; border-bottom-right-radius: 0px 0px !important; border-bottom-width: 0px !important; border-color: initial !important; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-top-left-radius: 0px 0px !important; border-top-right-radius: 0px 0px !important; border-top-width: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-style: normal !important; font-weight: normal !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; min-height: inherit !important; outline-color: initial !important; outline-style: initial !important; outline-width: 0px !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: static !important; right: auto !important; text-align: left !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">hg clone https:</code></span><code class="shell plain" style="background-attachment: initial !important; background-clip: initial !important; background-color: initial !important; background-image: none !important; background-origin: initial !important; border-bottom-left-radius: 0px 0px !important; border-bottom-right-radius: 0px 0px !important; border-bottom-width: 0px !important; border-color: initial !important; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-top-left-radius: 0px 0px !important; border-top-right-radius: 0px 0px !important; border-top-width: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-style: normal !important; font-weight: normal !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; min-height: inherit !important; outline-color: initial !important; outline-style: initial !important; outline-width: 0px !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: static !important; right: auto !important; text-align: left !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">//bitbucket</code><code class="shell plain" style="background-attachment: initial !important; background-clip: initial !important; background-color: initial !important; background-image: none !important; background-origin: initial !important; border-bottom-left-radius: 0px 0px !important; border-bottom-right-radius: 0px 0px !important; border-bottom-width: 0px !important; border-color: initial !important; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-top-left-radius: 0px 0px !important; border-top-right-radius: 0px 0px !important; border-top-width: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-style: normal !important; font-weight: normal !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; min-height: inherit !important; outline-color: initial !important; outline-style: initial !important; outline-width: 0px !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: static !important; right: auto !important; text-align: left !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">.org/basho/rebar</code></li>
<li style="text-align: left;"><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 15px; white-space: pre;"><code class="shell plain" style="background-attachment: initial !important; background-clip: initial !important; background-color: initial !important; background-image: none !important; background-origin: initial !important; border-bottom-left-radius: 0px 0px !important; border-bottom-right-radius: 0px 0px !important; border-bottom-width: 0px !important; border-color: initial !important; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-top-left-radius: 0px 0px !important; border-top-right-radius: 0px 0px !important; border-top-width: 0px !important; bottom: auto !important; box-sizing: content-box !important; float: none !important; font-style: normal !important; font-weight: normal !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; min-height: inherit !important; outline-color: initial !important; outline-style: initial !important; outline-width: 0px !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: static !important; right: auto !important; text-align: left !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">sudo apt-get install erlang </code></span></span><span class="Apple-style-span" style="border-collapse: collapse; font-family: monospace; line-height: 14px; white-space: pre;">m4 fop xsltproc unixodbc libssl-dev </span><span class="Apple-style-span" style="border-collapse: collapse; font-family: monospace; line-height: 14px; white-space: pre;">unixodbc-dev openjdk-6-jdk freeglut3-dev libwxgtk2.8-dev </span><span class="Apple-style-span" style="border-collapse: collapse; font-family: monospace; line-height: 14px; white-space: pre;">libncurses5-dev build-essential</span></li>
</ol></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-248812597334452665.post-31561810075296057142011-05-15T09:09:00.004-04:002011-05-15T09:34:58.389-04:00Encounter with a House CentipedeIt was almost pitch black, with a faint light streaming through the makeshift curtain--a white sheet hanging from the gated window. I awoke to the loud sounds of the toilet flushing. <i>Oh my god who's in my apartment?</i> <i>It's still going.... Oh, they must be working on the building plumbing again. What the hell, it's like 3 or 4 am!</i><br />
<div><i><br />
</i></div><div>I drifted back to sleep. Dreams about shady businessmen out to rob me, and puppies.</div><div><br />
</div><div>I was slowly brought back to the waking world again when I felt an itch. It grew stronger, until I was finally pulled into consciousness. I felt its dozens of tiny legs tickling my neck. I rolled away and quickly jumped up from my mattress pad on the floor. There was an inch-long <b>thing</b> scurrying about where I was just laying. It was making figure eights and not seeming to be headed anywhere. Of course I wanted to get a better look at whatever it was that was just having relations with my neck, so I turned on the light. It quickly scampered into a hole in the wooden floor beside the heater. <i>I should tell the super about that bug and that hole. Maybe I should buy some pesticide myself at the hardware store, and pour it into the hole. Argh, the store opens at 10am. Hmm, may as well look up what kind of bug it was.</i></div><div><i><br />
</i></div><div>And so I turned to <s>trusty</s> all-knowing Google and searched for various terms, "identify insects nyc", "black and white striped legs insects" (since it seemed to leave a leg behind which I picked from my neck). <a href="http://www.knockoutpest.com/identify.html">A pretty useful exterminator site was the first hit.</a> After not being satisfied with the results, though, I figured I'd give up and leave it for another day. Since it came from a hole in the wood, maybe it was a carpenter ant?</div><div><br />
</div><div>I mindlessly threw the insect leg onto the floor, figuring I'd sweep it up later. After a minute or so, I saw the <b>thing</b> crawl back out of the hole and come towards me again! Did it detect its leg? It stopped at the edge of the mattress pad, in the shadow. And it just sat there. Now was my chance--I grabbed some paper towel and SMASH! Deaded it.</div><div><br />
</div><div>I picked up the carcass and examined it closely--looked like it had a lot of legs, most of which were detached. And a cucumber-shaped body. Reminded me of a centipede, so I searched Google Images. And yep, that was exactly right. After more searching I determined that these house centipedes actually hunt other insects and are not harmful to humans. Dammit!</div><div><br />
</div><div>Worth reading if you want to know more about house centipedes: <a href="http://work.colum.edu/~cshaw/scutigera.php">This guy's page was also a Google search result.</a> He seems to have had a long history with these house centipedes during his residence in NYC.<br />
<br />
</div><div>Oh yeah, and before lying down again, I noticed about 6 more legs just lying there in the middle of my mattress pad.</div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-248812597334452665.post-21715478144418954932011-05-07T10:44:00.000-04:002011-05-07T10:44:35.753-04:00Opening Electric/Gas account with ConEdisonSince I'm moving to my own place for the first time, I'll write a series of posts about dealing with the various companies involved.<br />
First thing was of course dealing with brokers and the apartment management, but I'll save the post about that for a bit later. (I have had a good experience with both so far.)<br />
<br />
Dealing with ConEdison was extremely easy. <span class="Apple-style-span" style="font-family: inherit;">Just called 1 800-75-CONED (1-800-752-6633) at which point I was directed to call 212-243-1900 since my cell phone area code is outside NYC.</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;">So I called the second number, tried using the Express self-service phone option, but when I pressed 2 to open an account and 1 to say I was not a current account holder, I was redirected to the waiting queue again, and was put on hold for about 15-20 minutes (probably reasonable for 10am Saturday in early May). Then the guy answered, didn't catch his name though. I told him I wanted to open a gas/electric account.</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;">He took down my address, borough (Manhattan), phone number, and social security number. Asked about things like if I needed special consideration for always-on electrical equipment for health purposes. Asked if the electricity was already on, which it was. Asked for move-in date, which was May 3 this year. Asked if I wanted a 7% discount on this thing where I select a particular electric company; I didn't know what it was, even after asking him I was unclear, so I declined. Didn't provide my email address, since I asked about it and he said there would be some promotions sent along with regular notifications. He asked about direct billing, which I declined, since I will probably enroll in e-billing instead.</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;">And that was that. Extremely simple, hassle-free setup of standard utilities with a large company.</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-30484897966001120322011-04-18T20:51:00.002-04:002011-04-18T21:00:30.378-04:00Glasses from zennioptical.comI just received my new glasses from <a href="http://zennioptical.com/">zennioptical.com</a>. It was $32.95 for one pair. It's a decent-looking frameless style, without any special add-ons like extra-thin lenses or anti-reflective coating. I got the standard Single Vision lens (as opposed to bifocals or progressive lenses), and the 1.57 Mid-Index lenses which were a free upgrade from the default 1.50. (The 1.57 lenses are a bit thinner and lighter.) The "extra strength" charge for astigmatism came out to $9. Shipping & Handling was $4.95.<br />
<br />
So far they are great. When I first put them on I felt some dizziness as expected. The lenses were smaller than I am used to, so I seem to keep peeking past the lenses. But I'm quickly getting used to them, and for the first hour I have been extremely pleased with the value. Basically for a 2 week wait for the shipping, I got a 90% discount for a decent pair of glasses (that luckily fit me very well too).<br />
<br />
Measuring the pupil distance (PD) was simple: get a friend to measure the distance between your pupils using a millimeter ruler, while you stare straight into the distance. My PD was 60 mm, which is pretty average.<br />
<br />
Anyway, it feels great to finally get a new pair of glasses after years with my old pair. My left eye feels so good getting the boost it needs. I'm looking forward to not having headaches from having one weak lens.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-248812597334452665.post-77759269285179105112010-05-13T08:25:00.001-04:002010-05-13T08:27:30.601-04:00FlattrI'm really excited for the new micropayments service Flattr which I just registered for. It basically works on a voting system where you set a monthly allocation to pay, and your allocated money gets divided among the people you vote for. Anyone can sign up to get a Flattr button letting you vote for them. The catch is that in order to receive money via Flattr you must also have an account, which carries with it a monthly minimum contribution of 2 Euro (and currently a maximum of 20 Euro).<br />
<br />
They're currently in beta, but I see this becoming a huge thing. It'll also be profitable for them--they currently take 10% of the revenues, and there are more than 5000 users already in the early public beta (judging based on my user ID). Once they go version 1.0 I see them growing exponentially.<br />
<br />
Check it out at <a href="http://www.flattr.com/">www.flattr.com</a>!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-22859273059436656312009-12-12T16:57:00.009-05:002009-12-12T21:45:12.634-05:00Out with UDK, in with OGREAfter dicking around with the <a href="http://www.udk.com/">Unreal Development Kit</a>, which was released for free a month ago, I've come to the conclusion that it's not what I want. There are a bunch of reasons for this. I'll list some pros first. In no particular order:<br />
<br />
Unreal Pros:<br />
<ul><li>UnrealScript is pretty similar to C++ and Java. Not hard to pick up.</li>
<li>Lots of nitty gritty stuff is handled for you. Things like rendering a level and letting you use the built-in UT character models is trivial.</li>
<li>OK documentation for getting your project up and running initially.</li>
<li>Powerful tools for doing animation and stuff inside the editor.</li>
<li>Kismet (graphical flowchart programming tool) is awesome.</li>
<li>Network support.<br />
</li>
</ul><br />
Unreal Cons: <br />
<ul><li>Unintuitive directory structures for projects. You need to put your code beside the Unreal Tournament code? Huh?</li>
<li>Compiler for UnrealScript often crashes instead of giving a meaningful error, usually caused by malformed statements.</li>
<li>It's really aimed toward FPS and other shooters, with network support. Other gametypes are certainly possible, but you have to rewrite a lot of the framework in unintuitive ways. For example, detecting a click still uses the "StartFire()" function even when your game has nothing to do with guns and firing.</li>
<li>Poor API documentation. You're forced to dig through the code, and search on forums for help.</li>
<li>No official support for a lot of popular 3d modeling programs. They support 3dsMax and Maya, but not Blender. A cool dude made <a href="http://gearsforums.epicgames.com/showthread.php?t=602953&highlight=blender+psk">a Blender exporter plugin</a> in his spare time, but it's far from complete.</li>
<li>If you make money from your game above $5k, you need to pay 25% royalties to Epic Games.<br />
</li>
</ul><b>Summary: </b> It boils down to lack of support for modern free tools, and having a bunch of unintuitive API humps. I assume most users of UDK before Epic Games released it for free lurked the forums all the time to learn tricks to use Unreal Engine. That or they worked alongside Epic Games developers and so got special support while writing. Not to mention that they get the full Unreal Engine written in C++ if they can afford the license.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioI10_uncG8zncK_-pQBoivHatrQNFyMj0IthHpMfbCC2GN22d-0kmhZoJkPNwmSj_zd2ZyC6OTsUhIPCI5BmlittAYUNm6ZYeDn4U3gub3HYp1oLeNzsrMeFc4kJyLXLsCw-jnMxUZbEz/s1600-h/ogrelogo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioI10_uncG8zncK_-pQBoivHatrQNFyMj0IthHpMfbCC2GN22d-0kmhZoJkPNwmSj_zd2ZyC6OTsUhIPCI5BmlittAYUNm6ZYeDn4U3gub3HYp1oLeNzsrMeFc4kJyLXLsCw-jnMxUZbEz/s320/ogrelogo.gif" /></a><br />
</div><br />
<br />
<b>Now, why <a href="http://www.ogre3d.org/">OGRE</a>?</b><br />
<ul><li>Very intuitive if you know C++, have a basic understanding of graphics systems like OpenGL, and have worked with any sort of game engine before, like <a href="http://www.pygame.org/">pygame</a>.</li>
<li>Great <a href="http://www.ogre3d.org/">documentation</a> and <a href="http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials">tutorials</a>.</li>
<li><a href="http://www.ogre3d.org/wiki/index.php/Blender_Exporter">Support for Blender</a>.</li>
<li>Use C++ directly. Meaning you can use Visual Studio or whatever full-featured IDE.<br />
</li>
<li>Plugin system to integrate with other great tools, like <a href="http://www.cegui.org.uk/">CEGUI, a GUI manager</a>.</li>
<li>Just as easy as UDK to get your first project running, thanks to the <a href="http://sourceforge.net/projects/ogreconglo/">Ogre AppWizard</a> for Visual Studio. It does all the standard boilerplate for you for new projects.</li>
<li><a href="http://www.ogre3d.org/licensing">Open-source under LGPL</a> with some (good for developer) exceptions. So I can look at the engine code and change it if necessary, as long as I provide the source code of changes along with my product. Starting version 1.7 which isn't out yet, it will be licensed under MIT license which is even less restrictive than LGPL. (<a href="http://www.stevestreeting.com/2009/09/15/my-evolving-view-of-open-source-licenses/">Steve Streeting explains why he made the shift to MIT license.</a>)</li>
<li>Recently ported to iPhone and iTouch. Although, a tad late considering Android has been stepping up the competition considerably.<br />
</li>
</ul>Also in a previous post I mentioned wanting to use <a href="http://irrlicht.sourceforge.net/">Irrlicht</a>. But I moved away from Irrlicht before even starting using it, so I can't compare OGRE and Irrlicht. However judging by Internet people's comments, OGRE is more powerful with higher learning curve, which I don't mind at all. Also it's been proven successful commercially with <a href="http://www.torchlightgame.com/">Torchlight</a>, which is hugely motivational.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-71206907762726073362009-11-17T15:12:00.000-05:002009-11-17T15:12:27.469-05:00Set up SVN on hostmonster<a href="http://www.sharpstep.com/Articles/HostMonster-svn">Here's a very simple guide</a> to getting SVN up and running on hostmonster.com.<br />
<br />
<br />
Basically just run a script and it's all set up. Also comes with a script to quickly add new user accounts to SVN.<br />
<br />
One thing you shouldn't do--don't change the versions from those in the script. I tried grabbing the latest SVN (1.6.6) and APR (1.3.9 or something) but they turned out to have broken dependencies. So just stick with what's there in the script, and it works great.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-20796297776789045392009-09-06T00:07:00.001-04:002009-09-06T00:08:44.169-04:00Gave away my baby<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi03ev3LvZBW_TNh0pibcLS9w4i6JGrr-02sKLaqSUsChZAPl9VqrGSTcDtbW1orqdIMOunXdijxi78CxYMLraBOFUWlXfi9rCiepmTuKYgEtG0WT_xX94w3p8K0ZSGBAi2xXloRDfJG00X/s1600-h/icon.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi03ev3LvZBW_TNh0pibcLS9w4i6JGrr-02sKLaqSUsChZAPl9VqrGSTcDtbW1orqdIMOunXdijxi78CxYMLraBOFUWlXfi9rCiepmTuKYgEtG0WT_xX94w3p8K0ZSGBAi2xXloRDfJG00X/s320/icon.png" /></a></div><br />
<br />
I just open sourced my past month's project, an Android app called "reddit is fun". The license is GPLv3. It's up on github now: <a href="http://github.com/talklittle/reddit-is-fun/tree">http://github.com/talklittle/reddit-is-fun/tree</a><br />
<br />
A month doesn't sound like a long time for a software project, but I spent quite a bit of time on it and it definitely felt like more than a month. Oh well. Now I gave it away, and I'm coming out of the project with much improved Android programming skills and a better understanding of the different open source licenses (<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache</a>, <a href="http://www.gnu.org/licenses/gpl-howto.html">GPL</a>, MIT, BSD).<br />
<br />
Now, time for school! And on the side, hopefully more fun programming projects for Android, PC, and whatever. Oh yeah, I'm signed up for a game development class this semester. Let's see if that helps me with any side projects.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-248812597334452665.post-52015874729349123862009-07-26T21:14:00.004-04:002009-07-26T21:54:29.403-04:00Blender and Irrlicht<a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0K4o6WGoipuK3cshU8Fljfg9fTiXZPFdHTQXZT1MhD3tIHSQlh3v-7eqLiHNxf1WVWEOR0TVksXEnlT-DD7AE4nWqd5rjWY6R2drgP305AulAhDe9RkKrdrdr17elZWdfO_dl4wEceMf9/s1600-h/person_yo.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0K4o6WGoipuK3cshU8Fljfg9fTiXZPFdHTQXZT1MhD3tIHSQlh3v-7eqLiHNxf1WVWEOR0TVksXEnlT-DD7AE4nWqd5rjWY6R2drgP305AulAhDe9RkKrdrdr17elZWdfO_dl4wEceMf9/s320/person_yo.png" alt="" id="BLOGGER_PHOTO_ID_5362942261761785106" border="0" /></a>After finishing going through The Red Book and trying to start writing a small interactive scene, I immediately knew that raw OpenGL would take way too long to use in a game. I'd need an engine instead. For one thing, trying to create detailed models and scenes in a graphics API like OpenGL is probably impossible, not to mention really stupid, what with all the powerful tools out there. It'd probably take a month to perfect a single model that way. And no, I never seriously considered doing so.<br /><br />So I knew I either had to use an engine made by someone else, or make my own. From looking at some game engines that other people have spent some time on, and discussions on the Internet among game designers, I know that as a graphics and game design noob, creating my own engine would be purely educational. Meaning it would inevitably suck. Now I'm glad I learned the basics of OpenGL, since it taught me a bunch of important 3d graphics concepts. But it's one thing to learn basic concepts and another to spend months of my life trying to piece together a decent 3d game engine. Since my goal is to be creative rather than travel these much trodden roads, it wasn't a hard decision to use someone else's engine.<br /><br />I'd heard of the 3d engine <a href="http://irrlicht.sourceforge.net/">Irrlicht</a> before, and it seems very simple to use. So I'm gonna do that. Another one is <a href="http://www.ogre3d.org/">OGRE</a>, which sounds more powerful but with a higher learning curve.<br /><br />More important is the ability to import 3d models into the engine, definitely one of my favorite features. The free 3d design program <a href="http://www.blender.org/">Blender</a> is quite popular. It falls under the category of apps like Maya and 3d studio max but is free. And there's a really nifty tool called <a href="http://code.google.com/p/tubras/wiki/irrb">irrb</a> which converts blender scenes and data to Irrlicht format. Perfect! (I used Blender to make the crappy "yo man" pic at the top of this post, following the <a href="http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro">"Blender 3d: Noob to Pro"</a> tutorial. It didn't take very long at all. I have to say, though, learning Blender requires patience, as the interface is loaded with options and hotkeys and it's important to memorize these things.)<br /><br />Furthermore, there's an effort to port Irrlicht to the Wii -- <a href="http://sourceforge.net/projects/wiirrlicht/">Wiirrlicht</a>. Sweet.<br /><br />Unfortunately on platforms like Android, it's gonna be a little harder to find a free engine to use, so I'll probably have to end up hacking together a simple one when I get serious about coding for that. I think iPhone has a few 3d engines to choose from though. Hopefully following the release of the <a href="http://developer.android.com/sdk/ndk/1.5_r1/index.html">Android 1.5 NDK</a>, we'll see more useful engines ported over.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-10052886443845074082009-07-10T19:55:00.006-04:002009-07-10T20:20:30.985-04:00Light exercise while doing other thingsThe past few weeks I've been noticing myself fall into the same sort of pattern I seem to follow every summer. That means getting used to a lack of daily activity aside from commuting to and from work. You may know the feeling of descending into slothfulness, where each day you have less and less energy and you can practically feel your muscles atrophy. You also lose mental capacity in the areas of concentration and creativity, and of course get fatigued more quickly.<br /><br />I began to wonder why, even when I controlled my diet somewhat well and went to the gym 2 or 3 times a week (for mostly weightlifting), I could still be affected by this malady after as little as a week of my sedentary behavior. People say you have to work out just a few times a week to stay healthy, right? However, I suspect the issue is that my downtime is generally less active than most people's. I won't go into detail here....<br /><br />So this past week, on a whim, I started making small changes to work some light exercise into my daily routine. That means that at work, where I'm protected from prying eyes by my cubicle, I use the computer standing up half the time and do some frequent small motions like hopping and squatting and balancing. And a lot of stretching. I think I got a lot of the movements from the Tai Qi or Qi Gong classes I took before. Oh yeah, in case you're wondering, I have a laptop stand, so I don't have to lean over while standing.<br /><br />At home, while reading an ebook, I walk around and do the same thing. When I feel a little sleepy at night sitting in front of the computer, I exercise a bit and can stay awake longer. In the morning, I roll out of bed and do some push ups and other random things to stress my muscles a bit and raise my pulse. I've also started having breakfast. A fruit and a waffle usually. Ah, and I've also cut soda (free cans at work) from my daily diet.<br /><br />The result? I can concentrate so much better at work that I really can't believe it. Programming a set of functions that might have taken me a week to write before, I did in a day and a half. Ideas are so much clearer in my mind, and I no longer feel like falling asleep after lunch. When I come home I no longer feel a need to rest my brain by just sitting and watching videos and reading humorous Internet articles. I have enough energy to do creative things, like programming and drawing. When I breathe, I can feel the beauty of summer and life and the universe with every inhalation. I feel more positive and relaxed the whole day. I even feel a bit more sociable and have been more conversational with coworkers and my family the past few days since I've started on this regimen. (Well, that's also because of the weather, but whatever.)<br /><br />Diet and exercise, Banzai!Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-248812597334452665.post-13905736422463049802009-06-30T19:17:00.008-04:002009-06-30T22:01:32.855-04:00OpenGL<a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvR_Gy5La-yl8KAXz_sMPqOFYldAbD-wpw6JFLZV7nqnVR-x6ln2BKmEe6yE2aPzCvaLIL66LHU2OCEpxPN6adxvXdf544IlLqGoU3tOhewTJd0uR538aUppu0wGyKR1y0AOL0UqGGeZEu/s1600-h/rotcube.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 250px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvR_Gy5La-yl8KAXz_sMPqOFYldAbD-wpw6JFLZV7nqnVR-x6ln2BKmEe6yE2aPzCvaLIL66LHU2OCEpxPN6adxvXdf544IlLqGoU3tOhewTJd0uR538aUppu0wGyKR1y0AOL0UqGGeZEu/s320/rotcube.gif" alt="Rotating cube" title="Click me for animation" id="BLOGGER_PHOTO_ID_5353288366445990514" border="0" /></a><br />I finally got around to learning OpenGL in earnest. My two resources are The Red Book (<a href="http://fly.srk.fer.hr/%7Eunreal/theredbook/">old online version</a>) and <a href="http://nehe.gamedev.net/">NeHe's OpenGL Tutorials</a>. I started looking at OpenGL stuff several months ago but got caught up in school and things.<br /><br />If you take a look at NeHe's guide, don't be scared away by the first tutorial, which is more of a Windows lesson than an OpenGL lesson. The subsequent lessons are shorter and more pertinent to OpenGL.<br /><br />I'm reading through The Red Book right now. Since it seems more organized than NeHe, I want to use it to get the concepts down before doing NeHe's tutorials. I'm on chapter 3, dealing with the modelview and projection matrices. I decided to take a diversion halfway through the chapter and write some small functions involving changing the view based on polar coordinates. It took awhile to get it right, despite the book itself being written well enough to grasp the concepts fairly quickly. Here I remind myself of the first rule of a CS degree: Never stop coding. And going through these tutorials I recognize the importance of thinking on my own and writing code aside from what's given in the tutorial. Otherwise a lot of time would be wasted later, when I'd have to go back and reread things more closely.<br /><br />Probably what made me go back to learning OpenGL was knowing that I could do some OpenGL stuff on Android. Android uses a special version of the OpenGL API called OpenGL ES, catered toward embedded systems. I also know that the Wii and Nintendo DS homebrew libraries have OpenGL-like graphics APIs. In fact tons of platforms use similar APIs, so it's definitely worth learning.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-248812597334452665.post-71174543523352305212009-06-27T13:11:00.002-04:002009-06-27T18:12:42.492-04:00Internet AddictionWhen I take a step back from all my distractions, the effects of computer addiction become clear.<br />I think that sometimes, simply knowing that I'm plugged into the Internet is enough to distract me from what I'm doing. That ethernet cable gives me the feeling that I'm missing something going on in the world, even without any little notifications reminding me so. It's much worse when I install programs and Firefox extensions designed to alert me with every little update -- things like Gmail Notifier, TwitterFox, and such make the problem several times worse. Of course, when I first installed those programs, I thought they were really cool and would help me keep on top of things, but I've gradually come to the realization that they just pull me further into a lifestyle that I don't want.<br /><br />Which brings me to the problems of being distracted all the time. Is there anything inherently wrong with multitasking all the time? <a href="http://www.apa.org/releases/multitasking.html">Some psychologists think so</a>. They say that the idea of multitasking is an illusion, since the brain expends cycles "context switching" (to borrow a computer science term) between one topic and another. It's very taxing on your brain to do this sort of thing. However, having gone to school with many brilliant minds for a few years, I know that some people are very gifted and can handle this multitasking apparently very gracefully.<br /><br />I'm not that gifted. Sure, I can handle doing several easy things at once, like browsing the internet, reading and responding to emails, coding a little, watching videos, whatever. It's the standard these days for people to always have at least a dozen tabs open. When collecting information, this is pretty effective. So I feel that the "news blogger" personality is very suited to this form of multitasking which involves a large volume of information retrieval, organization, and dissemination in a new and hopefully more digestible form for others.<br /><br />But say I don't want to do that. I've done enough information regurgitation the past 17 years of school. When I want to be creative, I need to focus. Well, maybe not focus to the degree of zoning in on what I'm working on and completely blocking everything else out, but I need some space for my mind to work. It may just be my personality type, though. I'll admit that when in large groups of people where everyone's talking about their own thing, I have trouble keeping up and participating in conversations. I like to keep it to fewer threads, so talking to a few people or having organized discussions isn't a problem. I have a feeling this issue is very common among engineers. Anyway, in order to design something, including more thoughtful writing, I need space. Maybe move to a new locations. Right now as I write this, I'm disconnected and sitting over on my comfy couch away from my usual computer spot. I feel so calm!<br /><br />A big problem nowadays seems to be kids substituting computer time for social time and outside time. Of course, when the weather's nice (which seems rarer these days, but that's a different story) the outdoors is more inviting. But there's so much to do on the Internet, and it requires absolutely no effort, so lazy kids with busy or lazy parents flock to it. On the Internet, the ratio of people needing to provide content versus people who consume it is very, very low. The Internet makes it mind-bogglingly easy for the same piece of information to be reused over and over (information being videos, articles, jokes, what have you). Laziness never lived in a better era.<br /><br />I'm not writing to say the Internet is necessarily inherently bad. It has enabled more positive events than I can believe. It helps people build relationships, believe it or not; it helps connect people looking for specific skills and interests; it helps promote many worthwhile causes; it helps keep people informed of things like large political movements (Iran), scams and corrupt practices in our own country (certain "religious groups", big banks--Goldman's name has been brought up a lot recently, and of course, too many government officials).<br /><br />But let's get real. There is way too much distracting material out there. Too much fun. Too many videos of cute animals, which I won't link to. So many horror stories of people who don't leave their rooms, who don't shower, who die in front of their computers. On the other hand, most of my current coworkers, all of whom are more experienced programmers, are great reminders that it is possible to achieve balance in your life. They show me that it's possible to evade this mental black hole. Maybe living around Massachusetts or New Hampshire makes it easier.<br /><br />I need to interject here, though. Something that I am unsure about but have been suspecting for a long time, is that people's inclinations will automatically change with age. That is, for instance, as they get older, individuals will necessarily desire an outlet for self-expression, and hence a need to get away from distractions like the Internet, without anyone having to tell them that they should feel this way. So, many of the things we like as kids may naturally change, because we're programmed that way. We want and likely need some distractions when we're young, when we're still forming our opinions and knowledge of the world around us. Will adults regulate their own behavior when they see something's wrong? Will they identify the source of the problem as being the Internet? I very much believe that kids should be disciplined enough so they don't become fatties by sitting in front of the computer all day, but beyond that, is there that much wrong with the Internet in its current form? If humans are naturally able to help themselves--and find the valuable examples that other Internet addicts post on the Internet--then maybe we're OK. We just need to ensure that people actually have something besides the Internet in their lives.<br /><br />Hmm, but then again, look at how many drug addicts know they are addicts and still cannot be helped. Welp, there goes that theory. (Nah, I actually believe that most people are able to pull themselves out of a rut when necessary. Unfortunately among certain groups, the prevailing attitude seems to dictate otherwise.)Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-248812597334452665.post-18062230807408449652009-06-21T18:53:00.005-04:002009-06-21T20:06:17.304-04:00GraphicsGale, Awesome free sprite editor<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOOhzZa23QpwbihEKhKz3cMHReOmwn9lZ2oMAByfihjSndiiAIQipyoVLthNAdxnYhzdtuQ-qmbIbMhHim-iDVso0-vAaPI0W-ZgQttKO497TVNkK5Jj9ww3NUSatFarZKu9EjFZsN3pQ/s1600-h/graphicsgale.png"><img style="cursor: pointer; width: 320px; height: 190px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOOhzZa23QpwbihEKhKz3cMHReOmwn9lZ2oMAByfihjSndiiAIQipyoVLthNAdxnYhzdtuQ-qmbIbMhHim-iDVso0-vAaPI0W-ZgQttKO497TVNkK5Jj9ww3NUSatFarZKu9EjFZsN3pQ/s320/graphicsgale.png" alt="" id="BLOGGER_PHOTO_ID_5349935206041996930" border="0" /></a><br /><br /><br />The Internet has once again shown me a cool free software product. <a href="http://www.humanbalance.net/gale/us/">GraphicsGale</a> is a really nice piece of software to let you edit pixels easily, very useful for DS homebrew, Android, etc.<br /><br />It's got all the basics: a palette editor, a pen tool for drawing individual pixels, a bucket fill, selections, cut/paste, rectangles and ellipses, and text input. It also has layers, frames, and such for making more involved images. Animated gifs and icon files are only available for the paid version (1995 yen = about $21). But the free version has all the features I need at least. It's much quicker and simpler than using GIMP or Photoshop for such tasks.<br /><br />I still gotta get used to using layers for everything though. Since I've been an MS Paint user for a long time, remembering to use layers takes some getting used to.Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-248812597334452665.post-43636115978723097562009-06-14T10:30:00.005-04:002009-06-14T10:52:20.691-04:00Personal site versus fun siteRight now I'm waiting for my hosting with hostmonster to expire. I'm sharing an account with my friend Dokyun (<a href="http://leedokyun.com/">leedokyun.com</a>). I want a separate plan for <a href="http://cocosoco.com/">cocosoco.com</a> to make things a bit more convenient. Hostmonster is a pretty good host, I haven't had trouble with them and their rates are pretty good, so I'll most likely stick with them.<br /><br />Anyway, I decided to register <a href="http://andrewshu.com">andrewshu.com</a> and put it on Google Sites for now. I somehow feel I don't even need anything beyond that for my personal site. Google Sites is really fast for just making pages, having a decent default look-and-feel, and linking pages together with a consistent template. And this blog is also hosted on blogger and accessible via <a href="http://blog.andrewshu.com/">blog.andrewshu.com</a>.<br /><br />Maybe once I get more content I can worry about where to host everything. For now my plan is to have the more boring personal info and rambling type of blog associated with andrewshu.com, and to put the fun stuff on cocosoco.com. Fun stuff includes programs, stories and shared content from other authors, and whatever else. Yeah... best to come up with content before spending too much time deciding how to split the content up between a personal site and a fun site.<br /><br />In the end, I'm thinking that from the visitor's perspective, a site called "cocosoco" is simply catchier than a personal site named after its owner. That's one thing that becomes obvious to web users, that when content has your real name all over it, it's got to be sober and digestible so real life acquaintances won't be scared shitless and whatnot.Unknownnoreply@blogger.com0