tag:blogger.com,1999:blog-197969532008-07-10T18:29:14.104-07:00Follow Your PassionThe internet, computers, startups... and other random stuff I come up with.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comBlogger30125tag:blogger.com,1999:blog-19796953.post-47383113574391881292008-01-14T04:04:00.000-08:002008-01-16T07:23:24.969-08:00RFacebook on Bebo PluginBebo has gone live! If you've been developing on Facebook you'll realize that the API's are very similar. So similar in fact that with a few tweaks you can get your RFacebook application running on Bebo. I've created a little plugin to help with that. Note: I've only tested this with RFacebook version 0.97 and Rails 1.2.5. If you have a different setup then... things might be interesting.<br /><br />Here's how to get it installed:<br />1. First make sure RFacebook is installed. You'll also need to generate the whole facebook.yml but fill it in with your Bebo application's values instead.<br />2. Install the plugin like so:<br /><div class="commandlineWrapper"><pre class="commandline">script/plugin install http://svn.tierrabyte.net/plugins/rfacebook_on_bebo</div></pre><br />3. That should do it. Everything else should pretty much work like Facebook. But take note that FBJS is not yet implemented in the Bebo API.<br /><br /><br />And like I said, this was only tested on RFacebook 0.97 and Rails 1.2.5 but it should be a good starting point if you're still trying to figure things out. Also, this will not allow you to run both a Facebook and a Bebo application within the same Rails project. But that shouldn't be too hard to implement.<br /><br />One last thing. If you find this code useful, a donation of any amount to our Donate Rice Facebook Campaign (<a href="http://apps.facebook.com/donaterice">http://apps.facebook.com/donaterice</a>) would be very much appreciated. We donated over $300 to the World Food Program in December alone. You can donate by clicking here:<br /><center><br /><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_xclick"><input type="hidden" name="business" value="donate@vocabularydonate.com"><input type="hidden" name="item_name" value="Donate Rice Campaign (http://apps.facebook.com/donaterice)"><input type="hidden" name="no_shipping" value="1"><input type="hidden" name="no_note" value="1"><input type="hidden" name="currency_code" value="USD"><input type="hidden" name="tax" value="0"><input type="hidden" name="lc" value="US"><input type="hidden" name="bn" value="PP-DonationsBF"><input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"><img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"></form></center>Thanks! And feel free to leave any questions or comments below.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-12627581709016561432007-10-15T08:36:00.000-07:002007-10-15T08:42:00.642-07:00They Hasn't Learned GrammarIf we keep outsourcing our tech jobs, we'll be seeing more of this:<br /><center><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.tierrabyte.net/uploaded_images/untitled-714285.JPG"><img style="cursor:pointer; cursor:hand;" src="http://blog.tierrabyte.net/uploaded_images/untitled-714280.JPG" border="0" alt="" /></a><br />[Click on image to englarge]<br /></center>Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-32155384512155500082007-10-05T03:51:00.000-07:002007-10-05T04:56:40.868-07:00Maximizing Server ResourcesSo currently I have two of my apps hosted by RimuHosting. They're on the MiroVPS2 plans which give us 160MB of RAM. I already have a DreamHost account, so instead of running MySQL servers on each VPS, I make them connect to databases hosted by DH. This frees up a good amount of memory and doesn't seem to affect the speed much.<br /><br />With the freed RAM, I'm able to run three Mongrel instances behind an Apache load balancer. All in all, this provides pretty good throughput.<br /><br />But I want more! In reality, we're not running into any problems with the current setup. But we're about to release a Facebook app, and if it goes viral I want to keep up with demand. I haven't really made any more modifications, but I've been looking into ways to squeeze the most performance out of our little VPS'. And I came across <a href="http://swiftiply.swiftcore.org/index.html">Swifttiply</a>. It's a clustering proxy server whose main selling point is that it maintains a persistent connection with the backend processes. This cuts down on the socket setup and teardown costs. According to the benchmarks on the website, it seems to really speed things up if you have many concurrent connections.<br /><br />But I won't convert. Not yet, however. Whenever something new like this comes out, I like to let things settle and see which setup comes out on top. HAProxy is another alternative. Which is better? What combination maximizes throughput? I'm not quite sure. Luckily I'm not pressured to decide at the moment. But I'll keep my ear to the ground to see how best to maximize my server's resources.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-51648923474732405872007-10-03T21:55:00.000-07:002007-10-03T22:26:21.544-07:00Check Out My New CribI moved my Blogger site over to my DreamHost account. It was dead easy. I really recommend it to anyone who already uses Blogger and has a personal website. It just makes it easier to consolidate it under one domain. <a href="http://help.blogger.com/bin/answer.py?hl=en&answer=41438">Here's the howto.</a><br />Now this should motivate me to get working on my personal site...Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-83173877297682282472007-08-30T05:56:00.000-07:002007-08-30T07:28:38.202-07:00A Typical Software ProjectI came across this great comic. It sums up a typical software project quite well.<br /><center><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_xmQReL8lthY/RtbTkV1fc5I/AAAAAAAAAPY/w-E_Cm1Skho/s1600-h/software-project.jpg"><img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_xmQReL8lthY/RtbTkV1fc5I/AAAAAAAAAPY/w-E_Cm1Skho/s400/software-project.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5104499848961291154" /></a><br />Click on image to enlarge.<br /></center>Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-82531718830173135672007-06-12T15:03:00.000-07:002007-06-12T15:09:12.050-07:00Domestic World NewsAmericans are generally viewed as not caring about other countries. It doesn't help when you go to the front page of Yahoo! and see this:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_xmQReL8lthY/Rm8Yb6RnYDI/AAAAAAAAAOU/NP1DqN1R_94/s1600-h/world_news.JPG"><img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_xmQReL8lthY/Rm8Yb6RnYDI/AAAAAAAAAOU/NP1DqN1R_94/s400/world_news.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5075302172848513074" /></a><br /><br />I mean, seriously, does "US" have to be in 4 out of 7 of the World News headlines? Sometimes I feel like we live in our own little bubble.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-36613999920826644132007-05-13T02:12:00.000-07:002007-05-13T08:49:05.500-07:00Wild Wild WebThese past couple of weeks I've been working on two Rails projects and during this whole process I've been reading blog posts, articles, watching videos; all this to gain more knowledge on developing websites.<br /><br />Then it started to hit me that there is a huge industry dedicated to servicing techies. And this leads to the conclusion that there are <i>a lot</i> of people developing on the Internet. Everyone seems to talk about this Dot.com Bubble 2.0 that's emerging. Now, I'm too young to even have been a part of Bubble 1.0 but from the looks of it, I think people are right; it's looking like the Wild West out here.<br /><br />Everyone is out to cash in on the next big idea. So now there seems to be a whole new segment of the industry that's dedicated to serving this "entrepreneur" population. Just like during the Gold Rush days where dozens of businesses popped up to service the crazy gold diggers. And guess who ended up making most of the money? That's right, it was the pickax, boot, and gold pan makers. Now history is repeating itself.<br /><br />Take Rails for example. There's <a href="http://peepcode.com">videos</a>, <a href="http://www.flexiblerails.com/">ebooks</a>, <a href="http://www.amazon.com/s/ref=nb_ss_gw/103-4995260-0227038?url=search-alias%3Daps&field-keywords=rails&Go.x=0&Go.y=0&Go=Go">textbooks</a>. All these people are cashing in on the Ruby Rush. Interested in writing a social application with Rails? Well there are <a href="http://www.amazon.com/s/ref=nb_ss_gw/102-9401897-5584162?url=search-alias%3Daps&field-keywords=%22ruby+on+rails%22+social+networking&Go.x=0&Go.y=0&Go=Go"> two books</a> coming out tailored just to that. I remember when the only option for Rails shared hosting was TextDrive. Now you can find <a href="http://webdeveloper.econsultant.com/ruby-rails-hosts/">over 200</a> Rails hosts. <br /><br />And just take a look around the Internet. Rails, Digg, Slashdot, Techcrunch: all these rest on the shoulders of techies looking for the next big idea. Microsoft's been servicing businesses for years. Even Amazon is getting into it with their <a href="http://www.amazon.com/gp/browse.html?node=16427261">S3</a> and <a href="http://www.amazon.com/b/ref=sc_fe_l_2/102-9401897-5584162?ie=UTF8&node=201590011&no=3435361&me=A36L942TSJ2AJA">EC2</a>. And the new "in" thing is to release an API for developers. Once again, they're just equipping these hungry gold diggers with their pickaxes and boots, but it's them who make most of the profit in the end.<br /><br />But lets not forget, the king of kings: Google. They make most of their billions by giving the gold diggers a way to advertise on their websites. Genius!<br /><br />Making the next YouTube or MySpace might seem like a glamorous dream. But to really rake in the cash in this Wild Wild Web, we better start learning how to make boots.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-21189151210326874672007-05-02T04:34:00.000-07:002007-05-03T23:35:37.344-07:00Improved Date Validation in Ruby on RailsIf you want to input a date or datetime in Rails, you might use the handy-dandy <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#M000577">date_select helper</a>. It prints out nice form fields for you, like so:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_xmQReL8lthY/Rjh4v3CnDiI/AAAAAAAAANs/AXDlcIwCLy4/s1600-h/date_select_good.JPG"><img style="cursor: pointer;" src="http://bp0.blogger.com/_xmQReL8lthY/Rjh4v3CnDiI/AAAAAAAAANs/AXDlcIwCLy4/s400/date_select_good.JPG" alt="" id="BLOGGER_PHOTO_ID_5059926944974835234" border="0" /></a><br /><br />But what happens if you input an invalid date? Such as:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_xmQReL8lthY/Rjh5tXCnDjI/AAAAAAAAAN0/gXiRp6SfEZw/s1600-h/date_select_bad.JPG"><img style="cursor: pointer;" src="http://bp2.blogger.com/_xmQReL8lthY/Rjh5tXCnDjI/AAAAAAAAAN0/gXiRp6SfEZw/s400/date_select_bad.JPG" alt="" id="BLOGGER_PHOTO_ID_5059928001536790066" border="0" /></a><br /><br />(If you don't know why that's an invalid date then you got bigger problems, my friend.) If you submit your form with that, you expect the user to be informed of the invalid date, but instead you get this monstrosity:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_xmQReL8lthY/Rjh6nXCnDkI/AAAAAAAAAN8/Grm986gyywU/s1600-h/date_error.JPG"><img style="cursor: pointer;" src="http://bp2.blogger.com/_xmQReL8lthY/Rjh6nXCnDkI/AAAAAAAAAN8/Grm986gyywU/s400/date_error.JPG" alt="" id="BLOGGER_PHOTO_ID_5059928997969202754" border="0" /></a><br /><br />MultiparameterAssignmentErrors? What the heck is that?! And how is it related to my invalid date?!<br /><br />Okay, okay, calm down. Luckily there's this neat plugin: <a href="http://www.kbmj.com/users/shinya/rails/validates_multiparameter_assignments-1.0.zip"><br />validates_multiparameter_assignments</a><br /><br />Put that folder in your plugins directory, and add this line to the appropriate model:<br /><pre>validates_multiparameter_assignments :message => " is not entered correctly."</pre><br />Now lets retry our invalid submission:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_xmQReL8lthY/Rjh9NnCnDlI/AAAAAAAAAOE/1LqhxdjaOc0/s1600-h/better_error.JPG"><img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_xmQReL8lthY/Rjh9NnCnDlI/AAAAAAAAAOE/1LqhxdjaOc0/s400/better_error.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5059931854122454610" /></a><br /><br />Ah, there we go. Much better. A clear error message with the appropriate field highlighted. Gotta love it.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-77368984681899487372007-04-26T02:27:00.000-07:002007-04-26T05:10:38.692-07:00Flexing Your Internet MuscleFlex is Adobe's version of <a href="http://followingmypassion.com/2007/04/so-close-yet-so-far-away.html">Laszlo</a>. With it, you can make rich, flash-based, Internet applications. The SDK is free, but the editor is a bit pricey.<br /><br />The reason I love this new technology is because it makes it dead simple to make web application. Much in the same way OpenLaszlo works, developing an Internet application is very similar to making a desktop application. And with Flex Builder, you can just drag and drop all the elements you want. For someone like me who always struggles with design, it's a life-savor.<br /><br />Combining it with Rails as a backend is pretty simple too. The Flex on Rails combination is gaining a lot of popularity. There's even an <a href="http://www.flexiblerails.com/">ebook</a> being written on it. And with <a href="http://www.themidnightcoders.com/weborb/rubyonrails/">WebOrb</a>, you can gain a lot more control over the Rails framework. When I saw all this support for Flex on Rails, it made me more at ease, I don't have time to try to reinvent the wheel.<br /><br />Having a large company like Adobe is also comforting, because you know they have a vested interest in the future of the technology. The only drawback was that the SDK was propriety. That is, until yesterday. Adobe <a href="http://labs.adobe.com/wiki/index.php/Flex:Open_Source">recently announced</a> that they're opening the source to Flex. This'll speed the development, decrease bugs, and allow for much greater control. It's a very smart move for Adobe, especially since they're now <a href="http://www.microsoft.com/silverlight/asp/default.aspx">competing with Microsoft</a>.<br /><br />All things point to Flex being the next big thing. There seem to be a slew of companies popping up based on this technology. Even <a href="http://www.mosoto.com/">Facebook</a> is getting in on the action. It'll be really interesting to see how this affects the future of rich internet applications.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-78762735683358229582007-04-23T21:13:00.000-07:002007-04-23T22:08:35.881-07:00Site ChecklistWell, after a little shoehorning, I got my site up and running on DreamHost.<br /><br />Now I'm just about ready to release it to the world. But first, there's a few things on my mind that I gotta get settled.<br /><br /><center><h3>Things to Take Into Account Before Releasing Your (Rails) App</h3></center><br /><ul><li><b>Security:</b> Watch out for stuff like accidentally exposing methods in your controller, trusting the client too much (always validate params[:id]), and allowing the update methods modify any aspect of an object (a client could easily use hidden fields to update more than you expect).</li><br /><li><b>Setting Up a Blog:</b> A blog is the best way to communicate to your users. And their ability to leave comments is always good feedback. So it's important to have a blog up and running. But consider having the blog hosted on a server other than your own. So in case your server is down, your users can still read your blog to get updates on the status of your site.</li><br /><li><b>Privacy Statement:</b> Even if you don't collect personal data, it's a good idea to put up a privacy statement so your users feel at ease. And if you're too lazy to write one, this <a href="http://www2.oecd.org/pwv3/">Privacy Statement Generator</a> should help you out.</li><br /><li><b>Terms of Service:</b> This one is similar to the Privacy Statement but more important, in my opinion. It protects you against lawsuits should your server be unavailable or your accidentally loose data. It'll let you sleep at night, so don't skimp on it.</li><br /><li><b>Error Pages:</b> This usually gets overlooked but it's a good idea to make custom error pages (404, 500). Having your logo and a friendly message looks more professional than just a bland, generic statement. And this goes for incompatibility issues as well. If a browser is incompatible with your site, let them know, don't just leave them in the dark.</li><br /><li><b>Deployment Setup:</b> Having a good update strategy is important. If it's a simple website just uploading all the files should be fine. But for a web app you have to plan things out a bit more. What will visitors see during the upgrade? What'll happen to the visitors that were currently using the app? Those are all good questions to ask yourself.</li><br /></ul><br />Once all that is done and polished, the next step is to start opening up your site to beta users. But for now, I got my work cut out for me.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-72478132148132865222007-04-22T20:48:00.000-07:002007-04-22T21:41:53.148-07:00Hosting for RailsAs I wrote in a <a href="/2006/02/baby-steps.html">previous post</a>, I've been using TextDrive as my host. I got it over a year ago and back then Rails hosts were hard to come by (wow, that makes me sound so old).<br /><br />It was a bit of a struggle setting up my site (it felt a bit hack-ish actually). But it's been happily running for over a year.<br /><br />But now that I'm thinking of making a new site, I've looked around for a better host. After looking at some reviews, I chose to go with <a href="http://dreamhost.com/hosting.html">DreamHost</a>. It's pretty insane how much they provide as far as space, bandwidth, and other features. And it's pretty cheap too just $8 a month with no setup fees if you use the promo code FMP50 (Discliamer: I get a commision if you use that code, but it's really a great deal). <br /><br />Any time a host gives so many features, you have to be weary because you'll be sharing the server with tons of other users with the same restrictions. So DreamHost seems really good as a server to host your beta apps. They let you host unlimited number of domains. So anytime you got an idea, you can just code it up and throw it on the server to see if it's a hit. And then if you need more resources, you can always move to another host.<br /><br />So far I've been with them for two days, so I can't speak too much regarding the reliability and such. But so far I have no complaints. Transferring my code to the server has been a little bumpy, but that's to be expected. The support is responsive, so they're always there to help too.<br /><br />Once I got my app up and running I'll write a more in-depth review. But so far, for the services they provide, DreamHost seems to be a great value.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-34131530171352816952007-04-21T15:34:00.000-07:002007-04-21T15:48:24.835-07:00SQL on RailsWhile trying to find a Ruby on Rails search engine I came across this: <a href="http://www2.sqlonrails.org/">SQL on Rails</a>. It gave me a good laugh, especially their <a href="http://www2.sqlonrails.org/screencast">screencast.</a> But I couldn't stop thinking that these guys have way too much time on their hands. Then again, I also have way too much time on my hands these days. How's the saying go? "Idle hand are the devil's tool." But in my case it goes toward something more productive... I hope.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-50334304244390288292007-04-17T00:26:00.000-07:002007-04-17T01:35:54.530-07:00So Close Yet So Far AwayLast year I attended the <a href="http://startupschool.com">Startup School</a> held at Stanfurd(sp). I had a good time, heard from a lot of inspirational people, met the founders of some great companies (Reddit, Flickr, Kiko [RIP]). But the information I received wasn't <i>that</i> much different from what I've already heard. Mainly, release early, release often.<br /><br />The most productive part of the event for me was the lunch. In the lunch line I was able to chat it up with some interesting people. They weren't the big name stars, they were the little guys trying to get their projects off the ground, just like me. And what I find is that those people are the ones who are most on the bleeding edge of technology (see: <a href="http://followingmypassion.com/2006/01/whats-python.html">What's Python?</a>). And in that lunch line I first heard about Laszlo.<br /><br />Open Laszlo is "used to create web-delivered applications that combine the rich user interface capabilities of desktop client software with the universally accessible, no-download features of web-delivered applications." Basically, it helps you create an interactive Flash UI for your websites. It has common controls like windows, forms, buttons, all in flash. And it's all fairly simple to learn. Within a short amount of time I was able to write a nice little app. And that's with me having no real XML experience beforehand. I was very pleased with it's capabilities.<br /><br />But what was the problem? One thing I didn't like was the fact that it relies on a server to interact with the client. The idea behind this is that the server creates bytecode that can be interpreted by any type of client. Currently the most popular client is a Flash client, but an AJAX client is also in development. But I don't care about AJAX now. Flash has been doing the same thing AJAX just now is starting to accomplish. And that's coming from someone who doesn't even know Flash and has worked mainly with AJAX.<br /><br />I wanted the backend of my application to use Rails since ActiveRecord makes database management a piece of cake. But I couldn't just put Rails on the server, and have the Flash frontend on the client. The Laszlo client would have to communicate to the Laszlo server <i>and</i> to the Rails framework. And that's not so simple.<br /><br />There was a plugin created to integrate Laszlo with Rails. Laszlo on Rails it was called. But I'm always weary of using other people's code. If I run into a problem, its not so trivial to stare at pages of foreign code and discover the bug. Especially for open source projects that contain sparse documentation, if any. And I'm also at mercy of the developers (which, at this point, seem to have given up on the project.)<br /><br />If only there was a Flash-based UI that could create Rich Internet Applications and reside solely in the client so I could easily use Rails as a backend...<br /><br />Enter Adobe Flex.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-7393179823571846942007-04-13T00:24:00.000-07:002007-04-13T01:09:42.201-07:00Blaze of GloryApollo is a new product being released by Adobe. In their words it's a "cross-OS runtime that allows developers to leverage their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop RIA’s."<br /><br />The idea is pretty interesting. Basically, we've been hacking web browsers to run Rich Internet Applications. Adobe has decided to create a stand-alone client that'll natively run RIA's. As of now, the alpha was released just a month ago, so it's all pretty new, and it seems to be gaining a lot of attention (e.g. <a href="http://www.techcrunch.com/2007/03/18/adobe-apollo-launches-so-go-build-something/">TechCrunch</a>).<br /><br />For some time now I've been thinking we needed a "super browser" that was built to run all these Internet apps. So I was really excited about this news. Apollo will grant Internet apps much of the same functionality of a regular desktop application, such as the ability to directly access the user's file system.<br /><br />But then it occurred to me... if Apollo will make these Internet applications run just like a desktop application... why not make it a desktop application in the first place? The beauty of current RIA's is that you can quickly and easily open up a browser window and immediately have access to the application. With Apollo, you'd have to open a separate program, just like a desktop app.<br /><br />"But you can use Internet technologies (Flash, Flex, HTML, Ajax) to build the apps". Maybe it's just me but I <i>prefer</i> using current desktop technologies (Java, C#, C++) to develop applications. Actually, the main reason I like Ruby on Rails is because it makes web programming more akin to desktop programming (with methods, data objects, etc).<br /><br />"It'll allow data to live both locally and 'in the cloud'". First off, what's with this whole "in the cloud" business? Just say "in a server somewhere" instead. It'll save people confusion. But back to my point, current apps also have the ability to take advantage of external data, so I don't see anything special here.<br /><br />I don't think Apollo will be very useful until a web browser is actually built on top of Apollo. That'll be the day! If they're smart, the browser will be able to directly run Apollo apps; no having to install or open different programs. Just type the address and <b>boom</b>: you got a full blown app running right in the browser.<br /><br />But until then, if all Apollo does is desktopify my Internet apps, it doesn't seem very useful.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-9808795090906018952007-04-12T16:54:00.000-07:002007-04-12T17:17:50.181-07:00Interactive WebFrom what I've seen, the web is moving towards a more interactive form. There is tremendous potential for instantaneous connectivity. But if you go to your average site, it's really a one-way transmission. I go to ESPN.com and I'm bombarded with data but what if I want to talk back? What if I have questions? Comments? Well, you can leave a comment or post on a message board. But I don't feel that's good enough. It's like talking to your family by leaving notes on your fridge.<br /><br /> Meebo came out with a little chat widget for websites. It allows visitors to your site to chat with each other. This is a step toward my goal for interactivity, but there has to be more. I recently decided to check out the game Second Life. I heard a talk given by the CEO and it piqued my interest. (It's totally free, by the way). It's basically a 3D, user-generated world. You can walk around with your little avatar and interact with people around the world.<br /><br /> In the middle of playing this game (although CEO Philip Rosedale doesn't consider it a game) I realized that this could be the future of the internet. A highly interactive user interface that allows you to gain information while at the same time connecting you with the people of the same interests.<br /><br /> I have a friend in Korea. I haven't seen her for a long time but we still keep in tough. I got her into the game and it was quite surreal. She's thousands of miles away from me yet here in this virtual world we are talking as if she's right next to me. This kind of "shrinking the world" is what I think the web was originally created to do.<br /><br />I feel we've only seen the tip of the iceberg here. It's going to be very exciting what the near future brings.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-36120760204599481562007-04-11T14:31:00.000-07:002007-04-12T16:54:43.525-07:00Back AgainIt's been a while since I posted in this blog, and a lot has happened since then.<br /><br />I interned for the Microsoft Office Live team this past Summer, which put my website temporarily on hold. Then I moved into a new apartment that couldn't house my server.<br /><br />But I'm back and as strong as ever. Still keeping my finger on the pulse of the startup world. I'm ready to get back to coding.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1146221973009585792006-04-28T03:45:00.000-07:002007-04-18T21:54:20.925-07:00Targeted AdvertisingI heard about how Google changes the home page (adds the Google Scholar link) if the page is being viewed from a university. So I thought I'd check out Google from one of my school's computers and not only did I see the Scholar link, but check this out:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/153/1967/1600/Screenshot.0.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/153/1967/400/Screenshot.png" border="0" alt="" /></a><br /><br />Right above the copyright there's a link saying "Graduating? Come work with us." and it points to Google's recruitment page. Wow. Talk about targeted advertising.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1145842361074863142006-04-23T17:53:00.000-07:002007-10-10T23:29:22.462-07:00Ooga ChakaA while back I attended an info session presented by James Currier, the founder of Tickle.com which ended up being sold for $100 million. His main focus was to convince us to join a startup and, specifically, his own new startup.<br /><br />First of all I'd like to say that James Currier is an awesome speaker. For me, it confirms the notion that great companies require great people, not necesarily great ideas. I've been to many talks given by CEOs or founders of companies, and all of them have that common denominator: they seem to just understand people. Why is that important? Well, the internet itself is the interaction of millions of people. If you understand how people work, it goes downhill from there.<br /><br />But back to the talk. James mentioned how he felt that working at a big company might not be the best option. That, in fact, it could be a hinderance. He mentioned how if you work for a large company you don't really grow much as a software engineer. You're given your little sections of code to write, and then you move on to the next block. Contrast that to a startup where the application is changing every hour, and new challenges arise that you must adapt to and conquer. That's the type of environment that breeds ingenuity and experience. And those are the qualities that lead to success.<br /><br />But there are drawbacks to startups. Mainly the fact that they are volatile. Volatile in the sense that they are at the mercy of either not making it big, or being obliterated by some other company taking the same idea (i.e. Google). The best way to survive in this environment is to adapt quickly. There's the rub: venture capitalists discourage adaptation. They are investing in your idea, and your idea alone. They want you to go through with it until the very end. Then they'll be satisfied with knowing that the idea didn't work, and they can move on to another company, while your startup is applying for bankruptcy. Also, by allowing adaptation, VCs risk there being competition between the ideas they're funding. So, in the end, you're stuck with your original business plan.<br /><br />This is where James comes in. His new startup, <a href="http://www.ooga.com/" target="_new" rel="tag">Ooga Labs</a>, combines the startup with the venture capitalist. What an awesome idea! Within Ooga Labs, they have a bunch of developers working on about five different ideas. They are all funded by Ooga Labs itself (well, more like, they're funded by James himself). Now, an idea within Ooga Labs is allowed to evolve and change all it wants since they are their own VCs. This allows for the developers to be riskier and venture into areas that most VCs would stay away from. And if the idea fails, no biggie, the developers can either move on to another of the projects being developed in Ooga Labs, or use their experience to come up with a whole new idea.<br /><br />It's a very tempting concept. It made me second guess my decision to intern for Microsoft this summer. But I believe I need to get a good foundation in the techniques for developing software. Nonetheless, I'll be sure to send my resume over to James once I'm ready for a full-time position.<br /><br />Quick note: I'll be attending the <a href="http://startupschool.org/" target="_new" rel="tag" >Startup School</a> happening this Saturday at Stanford. I'll make sure to report on how it went.<br /><br /><b>[Update: September 25, 2007]</b><br />I got the job at Ooga! Woohoo! I'll be starting in January. Man I'm excited.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1145774529953074782006-04-22T23:38:00.001-07:002006-04-22T23:42:46.696-07:00I'ts AliveLast week I opened up my website to a few new users. These are mainly friends and family, but it's still a big step for me. I am learning a lot as to what it takes to deploy a web app and iterate in the wild.<br /><br />Little by little I will incorporate suggestions and improve the site. And when I think it's ready, I'll release it to the world. But for now, I've got a bit of work left to do.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1142468402485840732006-03-15T12:36:00.000-08:002006-03-15T16:41:17.330-08:00It took a Microsoft internship interview...This past month I flew up to Microsoft to interview for an internship position. In case this whole little start up thing doesn't work out, I'm still working on my backup plan of just entering the work force as a run-of-the-mill programmer.<br /><br />I finally got a sense of what my true worth is, as a programmer. Being a student here, sometimes I feel lost among the thousands of other students around me. I'm just expected to do my work, turn it in, and then take the tests. It's like I'm coralled around like a cow. So I kinda forget what my true worth is. But not when I went to go interview for Microsoft. Just the fact that I got flown up to Seattle is enough to make me realize how much I'm valued. And that's without them even hiring me yet. Then I got put in this nice hotel room with a kitchen, living room, walk-in closet. It was almost too much for me (almost). They paid for a taxi to drive me around anywhere I wanted to go. And what was all this for? Because they thought I was a good programmer. They thought that what I could produce with my skills will increase their revenue enough that it's worth the investment in me. And that's a good feeling.<br /><br />They ended up offering me the internship position. I'll be working on something closely related to what I've been doing on my own, actually. So it should be a pretty fun summer.<br /><br />Tags: <a href="http://technorati.com/tag/microsoft" rel="tag">Microsoft</a>, <a href="http://technorati.com/tag/internship" rel="tag">internship</a>, <a href="http://technorati.com/tag/interview" rel="tag">interview</a>Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1141182518414194092006-02-28T19:02:00.000-08:002006-02-28T20:38:34.250-08:00StreamliningI've been squeezing in time to program on my website for the past few days. I mainly use it as a procrastination tool to distract me from my classes. So far it's been pretty effective.<br /><br />Today I'll talk about how I've set up my programming environment. It's probably not the most optimal, but I'm happy with it.<br /><br />First off, my test server. I have <a href="/2005/12/journey-of-thousand-miles.html" target="_new" rel="tag">Fedora Core</a> installed on an old desktop I got from my dad's work. I found this <a href="http://www.digitalmediaminute.com/howto/fc4rails/" target="_new" rel="tag">Ruby on Rails</a> tutorial that was really helpful during the installation. Once I got that up and running, and after I played around with Rails to see how awesome it is, I starting thinking about editors. <br /><br />I use Emacs. I know, I know, a lot of people don't like Emacs, but it's what we're forced to use at school so I might as well become an expert at it. Originally, I was using Bluefish, and it was pretty nice. But the only problem I had was that sometimes I like to SSH into my desktop, and work from my laptop, but Bluefish is just way too graphics intensive to use over SSH. I was able to find some good configuration files that syntax-highlight the Ruby code and even the RHTML files. Sweet! And recently there seems to be some improvements with <a href="http://wiki.rubyonrails.org/rails/pages/HowToUseEmacsWithRails" target="_new" rel="tag">Emacs</a> integration so it only gets better.<br /><br />As far as actually testing and coding, I've got Webrick running as the server. Since this is my test environment, it's good enough. If I am doing deep-level coding, I just use Firefox to check any changes I've made. But if I'm modifying the look of my site (with CSS or something like that) I have my laptop next to me and use IE to check how it looks. If it looks alright in IE then I'm happy. I don't have enough time to make it perfect across all platforms. I'll leave that to my future team of web developers (yeah right...).<br /><br />An now...Deployment. I haven't actually officially released my application since I'm still working on it, but I like to practice deploying it so that when the time comes, I'll easily be able to iterate in the wild. I've got an account with <a href="http://textdrive.com/" target="_new" rel="tag">TextDrive</a>. So far they've been pretty helpful whenever I have a problem. By default, the ActionMailer already works on the TextDrive servers, and setting up Rails on them is a breeze. I went through a whole long tutorial to get Ruby on Rails and Lighttpd working, but now there is a <a href="http://nubyonrails.com/pages/shovel" target="_new" rel="tag">deployment</a> file for Switchtower that does it all for you. How awesome is that? <br /><br />That leads me to my next item: <a href="http://manuals.rubyonrails.com/read/book/17" target="_new" rel="tag">Switchtower</a>. Originally I just had a script that would SSH into TextDrive and copy my Rails root folder into the one on TextDrive. But some configuration files were different, so I had to manually modifiy those. Eventually I just decided to give in to Switchtower and let it handle it. It also forced me to use SVN. I kinda didn't want to go through the hassle of committing all the time, especially since I'm the only one working on the code, but it's probably a good habit to learn. So now, to deploy, I just give the "rake deploy" command. That's so awesome.<br /><br />Some things I should work on are using the console and breakpoints. Well, so far I haven't gotten into the nitty gritty of the code, just more superficial stuff. So it's not too necessary right now. But eventually, I should get used to poking around within the Rails console.<br /><br />So that's my setup. I'm always looking at ways to improve it, so soon, it might all be different. But it's sufficient for what I'm doing for now.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1140348741312242372006-02-19T03:00:00.000-08:002006-02-19T03:32:21.346-08:00Baby StepsNow that I have some experience with Ruby on Rails (by experience I think I know enough that I can do the things I want to do) I decided to actually register a domain name and get me a little site host. Hopefully this will give me a little kick in the butt.<br /><br />I've been pondering over the name for my site for some time. When I was in class and bored, I'd pull out one of my notebooks and jot down as many names and variations I could find. The main obstacle I faced was the fact that I had to chose a name that wasn't taken, because I was not going to pay hundreds of dollars to buy a domain off some kid. To solve this I thought the best bet would be to combine two words to create a new name. My second obstacle was creating a name that can be remembered easily. I noticed that most popular sites have two-syllable names: Google, Yahoo, MySpace, Slashdot, it goes on and on. So my best bet would be to pick a name with two syllables.<br /><br />After some soul searching, I came up with a good name in my opinion. Then, I officially started the funding of my start up by paying GoDaddy for the domain registration fee. It's the first domain I've ever bought, so I savored the moment. After chosing the name, I came across <a href="http://onstartups.com/Home/tabid/3339/ctl/ArticleView/mid/4112/articleId/234/The-Startup-Name-Game.aspx">this article on picking a name</a> and was pretty happy that the name I chose followed some of the guidelines outlined.<br /><br />And now for a host... In hindsight, I probably should have done more research for this. I ended up choosing TextDrive, but this was mainly because I knew how closely tied they were to the Ruby on Rails movement. The setup to run Ruby on Rails on their servers was definitely tougher than what I expected considering how RoR friendly they appear. But no biggee, I was up and running in no time.<br /><br />The initial release should be coming soon. It's just these pesky classes that are int the way.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1136973126060419122006-01-11T01:37:00.000-08:002006-01-11T01:52:06.070-08:00What's Python?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/153/1967/1600/python.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/153/1967/320/python.jpg" border="0" alt="" /></a><br />This past week I attended the National Technical & Career Conference held in Orlando, FL. It was the first big conference I've ever been to, so I was pretty amazed at all the cool things being offered. I attended workshops on creating an N-tier web application, being an entrepreneur, and even a workshop on the new mobile phones being offered by Microsoft. All pretty cool stuff. But the best part of the whole conference was attending the career fair. When I saw the list of attendees, it was like seeing the Pro Bowl roster of the computer companies: Google, Microsoft, Yahoo, IBM, Amazon, Intel, Apple.<br /><br />But something struck me as odd. On my resume, I have Python as one of the languages I am proficient in, since it is what I programmed in for my previous internship. But a few times, I was asked "What is Python?". I knew I couldn't put Ruby, or Ruby on Rails on my resume, since those were fairly new technologies, but Python? Google has been doing extensive work with Python, Apple has had a close relationship with Python, yet I guess it still hasn't hit mainstream. This made me realize the I'm always worried that I'm not able to find all the new technologies that are popping up, but apparently, I'm already pretty in front of the curve.<br /><br />But aside from that, I think I did well at the fair. I received some interest from a few companies, and we'll see how it all turns out. And if it all doesn't work out, I can always fall on my backup plan: this website I'm trying to start up.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1135833708972402192005-12-28T21:01:00.000-08:002005-12-28T21:26:28.420-08:00Bye Bye Crutches<a href="http://photos1.blogger.com/blogger/153/1967/1600/crutches.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/153/1967/320/crutches.jpg" border="0" alt="" /></a><br />Now that school is on a hiatus, I decided to move on from the bookstore example and begin to develop my own application. At the moment, my idea is to have an online site to organize your information, but we'll see how that evolves as time goes by.<br /><br />One of the things I was afraid about when I first got the book <a href="http://www.pragmaticprogrammer.com/titles/rails/index.html">"Agile Web Development with Rails"</a> was that it would be out of date by the time I really wanted to start programming. But luckily, it wasn't too bad. Actually, the only big thing I've come across that wasn't in the book was the whole migration thing: where you're able to create tables and columns in Ruby instead of the SQL language of the specific database installation. But the only way I found out about that was by watching the new <a href="http://rubyonrails.com/screencasts">screencast</a>. So come to think of it, there are probably many other new things added that I have not come across. Time to check out the change log...<br /><br />The most satisfying aspect of developing my site has got to be when I integrated Ajax. Don't worry, I realize that unnecessary use of flashy things on a site does more harm than good. Ajax was definitely a plus, honest. But anyways, when I saw the page update asynchronously, it was a big accomplishment. I felt like I had finally caught up to the forefront of internet technology. I was doing things that only "cutting edge" websites are now starting to do. And Ruby on Rails made it just too easy to do. Especially with the <a href="http://prototype.conio.net/">Prototype</a> framework, soon everybody and their mom will start taking advantage of Ajax. But by then, I'll move on to the next cool thing :-).<br /><br />But for now, I'm focusing on finishing a prototype of my application, so I can put it up online. Then we'll take it from there.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.comtag:blogger.com,1999:blog-19796953.post-1135671005309539852005-12-27T12:55:00.000-08:002005-12-28T23:01:12.736-08:00Aardvark'd Shmardvark'd<a href="http://photos1.blogger.com/blogger/153/1967/1600/aardvark.jpg"><img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/153/1967/320/aardvark.jpg" border="0" /></a><br />So I got this DVD called <a href="http://www.projectaardvark.com/movie/">"Aardvark'd: 12 Weeks with Geeks"</a>. It's a DVD about the summer internship of four guys at the Fog Creek Software company. What makes their internship cool I guess is the fact that they got to develop a product from start to finish. I bought the DVD since I thought it would get me a prospective into the inner workings of a start-up like atmosphere. But in the end, I was disappointed. Maybe the aim of the movie was to make people realize that geeks do more than just program, that geeks can be funny, and that geeks are real people. I guess it does a good job of that, but it doesn't make for entertaining content.<br /><br />Probably one of the main reasons I decided to get the DVD is because I saw that Paul Graham was in it. And I love that guy as I've <a href="http://followingmypassion.blogspot.com/2005/12/in-beginning.html">said before</a>. But he ends up just talking for a few seconds. Damn... So after the movie, I decided to get Graham's book "Hackers and Painters". We'll see how that turns out.<br /><br />So back to the movie. Out of five pocket protectors I give it... two pocket protectors. I slightly regret buying it, but in the end, I'll probably end up watching it one more time... with the director's commentary... when I'm really bored...and it's raining outside.Anthonyhttp://www.blogger.com/profile/10884024016216448786noreply@blogger.com