Posted by Tejus Parikh on January 13, 2008
Occasionally, I find myself wonder just how many lines of code I’ve written. Most of the time, I just run some combination of find
and wc
. But that situation is far from ideal. It doesn’t account for comments, blank-lines, etc. Sometimes, I write a half-assed script to strip out some of the comments in the language I’m most interested in. Again, that has a some drawbacks, especially when I’m working on a multi-language project.
Read the full post »
Posted by Tejus Parikh on January 16, 2008
Since my computer is hosed because I’m stuck installing Visual Studio (don’t ask), I figured I might as well add to the noise about Steve Jobs Keynote.
Read the full post »
Posted by Tejus Parikh on January 23, 2008
Companies have been attaching the word “beta” without regard for the meaning of the word. Google is quite possibly the largest offender, affixing the “Beta” tag on software that works, is feature-full, and more production ready than many of their competitors final release offerings.
Read the full post »
Posted by Tejus Parikh on February 04, 2008
Last week, I found that I had run out of space on the partitions I use for our virtual machines. This was entirely my fault. When allocated space, it never occurred to me that there might be large log files and I shaved the margin too close. I’ve gotten into the habit of setting up all machines with LVM after the intractable situation I got into with vijedi.net. Which meant that all I had to do to give my VM’s more space was:
Read the full post »
Posted by Tejus Parikh on February 04, 2008
It may seem counter-intuitive, but the source code is the least important aspect of an Open Source project. What matters most is the eco-system of users, support vendors, and corporate backers. The importance of this comes starkly into view when one of the corporate backers for a project you use gets gobbled up by the competitor you migrated away from.
Read the full post »
Posted by Tejus Parikh on February 11, 2008
Flash (and it’s associated development environment Flex) as a cross-platform savior a sentiment in the internet application community, that’s held by more than a few mis-guided souls. It’s easy to understand the feeling, cross-browser development is difficult, especially when broken legacy browsers still account for the vast majority of internet traffic. With the Internet growing as a software deployment model, the idea of using a run-time, such as Flash, and it’s associated languages, such as Flex, have become more popular. After all, if the code runs on the run-time, then it has to work the same everywhere, right? Wrong.
Read the full post »
Posted by Tejus Parikh on February 14, 2008
It’s impossible to get a database model right the first time. Often, you end up with a db with a half-finished, garbage schema. Hibernate makes this more tolerable, if you set the hibernate.hbm2ddl.auto
flag to create
it will just wipe the DB when your container restarts.
Read the full post »
Posted by Tejus Parikh on February 27, 2008
I’ve got a few complaints about the image gallery so I spent some time tonight cleaning things up a bit. The the most visible change is replacing the action icons from the Ice Gallery theme with the newly released Ty-cons. They’re a little bigger, a lot cleaner, and make a whole lot more sense than what was there before. They do a great job sprucing the place up. Thanks Tyrus.
Read the full post »
Posted by Tejus Parikh on February 29, 2008
Before the Wisconsin primaries, Hillary Clinton accused Senator Obama of plagiarism. Obama’s response was that the words were used with permission and encouragement from the original source, Massachusetts Governor Deval Patrick. In other words, Obama had a license to use the words as he saw fit. Then I realized that that simply cleared Obama of copyright infringement, not plagiarism. Hillary Clinton was right after all.
Read the full post »
Posted by Tejus Parikh on March 06, 2008
I used to buy a decent amount of music. But then the RIAA cracked down on internet radio, Clear Channel bought up all the radio stations, and I stopped being exposed to new music. In the past few years, any time I heard anything new, I already had the full cd, which means I had no reason to go buy anything. Plus, cd’s started to cost around $15. Barely worth it for an hour of entertainment, definitely not if there’s only a few good songs.
However, Nine Inch Nails released their new album and made the first quarter available for free. They even put it up on bit-torrent. I listened to the first set, decided I liked it. Normally it would go no further than that. But this time I decided to buy it. The clincher was the text they attached to the bittorrent upload:
Read the full post »
Posted by Tejus Parikh on March 07, 2008
Last night I blogged about why I bought the Nine Inch Nail’s new album Ghosts. Which means it’s time for my first album review. I finished listening to it and the word that was at the top of my mind when it finished was “moody.” This makes a lot of sense, Trent Renzor states that one of his goals was to create a soundtrack for day-dreams. However, it appears that his day dreams aren’t as happy as mine.
Read the full post »
Posted by Tejus Parikh on March 17, 2008
Most of the information about this is outdated and not very useful. Collaboa’s site suggests that you need to build the bindings from source. If you attempt this and use Macports for dependencies, you’ll get un-resolvable errors regarding time.h
.
Installing subversion-rubybindings
from Macports itself doesn’t work either. This approached failed since it was unable to find the dependency db44
.
Thankfully, there is a solution if you want to do this. First install Ruby and whatever from Macports. Then grab the OSX one-click installer. Once that’s installed, you need to make Ruby aware of the bindings. Do this by copying the bindings files into your Ruby:
$ sudo cp -r /opt/subversion/lib/svn-ruby/universal-darwin8.0/svn /opt/local/lib/ruby/site_ruby/1.8/i686-darwin9.1.0
$ sudo cp -r /opt/subversion/lib/svn-ruby/svn /opt/local/lib/ruby/site_ruby/1.8
Do
not use symbolic links. I tried this at first and it didn’t work.
You can then test to make sure it works with:
irb
>> require 'svn/core'
=> true
>>
Read the full post »
Posted by Tejus Parikh on March 24, 2008
Last week I ended up having to fend for myself during dinner. Being male, and have a strong dislike of cleaning up by myself, I opted to head to Publix for a sub. For those of you that don’t live year a Publix, your’e probably going to think it’s rather strange that someone would go to a grocery store specifically to get a sandwich. Those that do, know that Publix beats any other chain sandwich store by a mile.
Read the full post »
Posted by Tejus Parikh on March 26, 2008
I happened to come across this javascript quirk in a very obscure way today. I was maintaining some code that when presented with a string such as this.foo.bar
, would evaluate it, if a complex variable such as that exists in the supplied context, or just return the string if it does not. It does this lookup by evaluating each piece with an array lookup. In this example, the first step would be to perform, window['this']
.
Read the full post »
Posted by Tejus Parikh on April 02, 2008
I just had the absolutely horrible experience pleasure of using Flex again.  For details why, check Appcelerant in the next few days.  However, there were a few things that I couldn’t help but get off my chest.
Read the full post »
Posted by Tejus Parikh on April 05, 2008
Safari’s really fast. It blows Firefox 2 and my previous favorite, Opera away. Â However, I’ve held back from using it as my primary browser because the one thing that bothers me more than slowly loading websites are websites that insist on playing music or showing a video as soon as I load them. Â
Read the full post »
Posted by Tejus Parikh on April 17, 2008
I upgraded to Wordpress 2.5Â a while ago and have started drawing some conclusions. Â Stuff I like:
Read the full post »
Posted by Tejus Parikh on April 22, 2008
The Firefox project really started to stagnate for a while when it came to performance. FF2 felt as glacially slow as the Mozilla Suite that it replaced. Thankfully, and I believe in part due to competition from Safari, the FF3 betas are incredibly fast. The speedup is as staggering as the jump from IE6 to what at the time was called Phoenix.
Read the full post »
Posted by Tejus Parikh on May 06, 2008
I’ve gotten a chance to play with the technology a bit in the last few weeks and have a few things to say about it.
My first response towards it was pretty ‘whatever.’ There was the fact that the last over-hyped Google for developers launch (GWT) isn’t really all that. Automatically scalable web apps are pretty neat, but there are already a bunch of grid offerings available. MediaTemple, EngineYard, and Amazon’s EC2 are all variations on this theme. Compared to these production services, Google’s offering is a little weak. First, like all Google products, it’s Beta. Only 10,000 invites are available. You can only have 500MB of storage. You can’t upload a file larger than 1MB (found this out the hard way while building Apptunes). You can’t launch a background process. You can’t take too long to service a request. And so on. Of course, it’s a free private beta, so all the whining is only slightly applicable. The end result was, we built support for it, built a demo, then I forgot about it and moved on to other things.
Until I few moments to mess around at work. Our demo didn’t make much use of Google’s model support. Nor did I have to write a lot of Python. So I set out to build a more complex demo application that would let me play around with the persistent storage engine. It wasn’t before long before the App Engine (and python) really started growing on me.
A major benefit to using Appcelerator is all the service backends are structured similarly. So although I’m a Rails and Java person, I didn’t have to think too hard about where to put things in my App Engine project. Instead I could focus on learning Python. The good I found about Python:
Read the full post »
Posted by Tejus Parikh on May 29, 2008
I finally got around to seeing Indiana Jones last night. Â It was fun, but far from great. Â There were a lot of periods where I felt like I was watching a “Best of Indiana Jones” montage, rather than a whole new movie. Â Almost all the stunts were lifted from the previous movies and some of the non-recurring characters as well. Â What kept it from feeling like a Indiana Jones I-III mashup is the amount of grey on Harrison Ford’s head. Â
Read the full post »
Posted by Tejus Parikh on May 29, 2008
When working on Appcelerator’s AppEngine support, I needed to find some API documentation for Beaker. I didn’t find it, but I did find this gem.
Read the full post »
Posted by Tejus Parikh on June 09, 2008
One Rails thing that has always felt just a bit un-rails like is deployment. There are a ton of solutions out there. I’ve used Lighttpd, fast-cgi, and mongrel proxied by Apache. Almost all of these have been tedious, a pain, and failure prone.
Read the full post »
Posted by Tejus Parikh on June 14, 2008
This week I noticed that there are about 5 tabs in my browser that are never closed. Personally, I think OSX is much better at managing windows than Safari, so I converted these sites to applications with Fluid.
In that process, I noticed that my new gReader.app had a shiny doc badge:
Well now that I had one for my RSS, I wanted one for my email too. I’ve been running Zimbra in Fluid for some time, but I completely ignored the power of the userscripting ability, as well as the Fluid extensions to the JS API. The end result is that I now see a dock badge and get growl notifications when I get an email.
There are a few problems with what I’ve done. You’ll only get notifications if your inbox is open (and is called “Inbox”). Also, this means that you won’t get notifications for events on your calendar.
If you want to run this yourself, you can grab the script from github and install it into your Fluid instance. One thing that you will have to change is the included domains on a line that looks like:
// @include https://mail.vijedi.net/*
Read the full post »
Posted by Tejus Parikh on June 23, 2008
For some reason, PostgreSQL is sorta a pain to get working on the Mac. Much of this is that the ports version does bizarre things, such as make all the directories you expect to have end with the Postgres version number. Once you install it, you have to go symlink a bunch of things just to make it work sensibly. To top it off, the way ports (used to, maybe not now) adds the Postgres user makes it so that it shows up on the login screen. The Mysql installs don’t do that. It’s odd to me that a database that’s some weird conglomeration of Oracle and Sun is easier to get up and running, but it’s true and annoying.
Read the full post »
Posted by Tejus Parikh on June 27, 2008
As a developer for Appcelerator, Inc. one of the most important aspects of my job is keeping in touch with the community through our Developer Network community site. It’s where people ask for help, suggest ways to make our product better and discuss all things Appcelerator. Therefore, the Groups page is always open in a browser tab on my desktop.
Read the full post »
Posted by Tejus Parikh on July 01, 2008
Modern technology rocks. I’ve got my entire music collection, and a few movies, in my left-back pocket. The phone numbers, email addresses, the telephone network, and the internet is in my left front pocket. In my back-right, is a couple bucks and some credit cards. Hardly anything at all compared to what’s in the other pockets. That’s why this picture is just so wrong:
.
Read the full post »
Posted by Tejus Parikh on July 12, 2008
A lot of gem development has moved to GitHub. This really sucks because Ruby gems insists on updating the metadata for all 900+ gems every single time you want to install something. What should be a couple second process can end up taking over 15 minutes.
Read the full post »
Posted by Tejus Parikh on July 18, 2008
In a week that included running 10 kilometers for the first time in over 12 months, getting jabbed with a needle for a blood test, and setting a personal best for the cycle ride to the office, by far the most painful was trying to get RMagick installed on a Centos5 box.
For starters, the RMagick 2.x series requires ImageMagick 6.3.0 (which came out in early 2006). Of course, CentOS5 ships with ImageMagick 6.2.28. I understand the need for stability. But what’s a developer to do if COBOL isn’t a viable solution?
David Bock’s website suggests to try the older version. Which worked, kinda. However, the rmagick build threw up while running sanity checks. The issue is that I didn’t have the Microsoft True Type Fonts installed. Now to find an easy way to install them.
More googleing lead me to Corefonts, which has the installation instructions. I followed these directions and tried again.
Same error.
The finally step is to link the directory with the fonts to where ImageMagick wants them to be.
ln -s /usr/share/fonts/msttcorefonts /usr/share/fonts/default/TrueType
One more
gem install
and everything is happy.
As rock-solid as Centos is, I’m getting very reluctant to recommend it anymore because of issues like this. Unless you’re running software that’s older or from a commercial vendor, it’s just not worth it. Eventually you’re going to want a library, a major upgrade or a snazzy new language that’s going to make you jump through all sorts of crazy hoops.
Read the full post »
Posted by Tejus Parikh on August 04, 2008
Something that I find incredible tedious and boring is managing money. My philosophy is that if I wanted to look at numbers all day, then I would have become an accountant or an applied mathematician. Thankfully, I have a wonderful wife that keeps me debt-free and makes sure the bills get paid on time. However, even she struggles when it comes to getting a bearing on our entire financial outlook, a struggle that compelled us to join Wesabe when it first launched. We’ve been casual users since joining, but this morning we decided to give the better hyped Mint a shot. This is my rundown from using both services.
Read the full post »
Posted by Tejus Parikh on August 18, 2008
Sonali won tickets to the Nine Inch Nails show last week for being an absolutely horrible bowler. Another one of her friends won the other set, leaving me reunited with the group that kicked me out of my own house only a few weeks ago. I was extremely excited to go, since I’m not only a huge fan of the music, but also the way Trent Renzor’s been going about his business. If you haven’t been paying attention, his last three albums have been distributed free in some form and you can buy DRM free music direct for really low cost. His willingness to treat his fans like fans instead of potential criminals was enough to make me buy a T-shirt.
Read the full post »
Posted by Tejus Parikh on August 19, 2008
It’s been a long standing dream of mine to have some remote control stream music from my computer to a device in some other room. After a lot of waiting, a failed rails project, and a few years, the answer finally came in the form of the Airport Express, iPod Touch and iTunes.
Read the full post »
Posted by Tejus Parikh on August 25, 2008
Yes, so I’m one of those really lame people that doesn’t have an iPhone. Now that we’ve gotten that out of the way, I finally discovered how to do this somewhat easily.
Read the full post »
Posted by Tejus Parikh on September 11, 2008
So I finally did it. I’ve been keen on getting a netbook since, well, 2004 when my old Fujitsu P2120 started to get a little old and slow. Every time I went to replace it, I just balked at the price. For the first 5 years of ownership, it would have cost me $2,000 to get something that was anywhere near as small, which was okay. The real downside was in that five years, I still wouldn’t get anything significantly faster.
Read the full post »
Posted by Tejus Parikh on September 16, 2008
Last Sunday Sonali, a bunch of our friends, and I went whitewater rafting on the Ocoee River near the Tennessee - Georgia border. I’ve never been whitewater rafting before and I was incredibly excited.
Read the full post »
Posted by Tejus Parikh on September 23, 2008
Tejus’s Note: I originally wrote this a few weeks ago on the Appcelerant Blog.
I spend a lot of time building web apps. I find that building web applications is just easier compared to my experiences dealing with SWT and Swing. Frameworks, like
Appcelerator’s, just make it even easier.
Traditionally, there are just things you can’t do with a web application. You can’t interact directly with the user’s systems. You can’t (easily) install your app on the users machine. You can’t execute code from another person’s site. You have to be connected to the internet to access anything. These are pretty big restrictions, but there are a
ton of interesting things that you can build with those limitations. Which is good, because these limitations are actually very sensible. You can use your web-browser to go anywhere in the world. Most of the places are going to be clean and safe, but when you happen upon one that’s not, it’s good to know that something is protecting you from it.
Unfortunately, sometimes this isn’t good enough. You just need access to something, be it the hard-drive to cache resources for offline consumption or the video card for high-quality video playback. Plugins can get you close, but they can get unwieldy.
Like with any problem that’s compelling to solve, there are people working on solutions.
Google Gears and
Yahoo Browser Plus extend your existing browser and provide some of this functionality.
Adobe Air and
Mozilla Prism are special browser’s built specifically to bridge the desktop and the web.
In each of these cases, you explicitly authorize a new level of access. The user either has to authorize each component for a site or download something (just like a real app). However, these technologies are built on browsers and have retained sandboxes.
If sandboxes protect users, great. However, if they make hard to build sensible things, it’s not so great. A great example of this is that Google Gears doesn’t let you cache external content for offline consumption. I really don’t see who is protected by this.
I think the solution that gains the most traction will be the one that finds the most sensible balance between protecting the user and allowing the application developer to deliver a good solution. Remember, a real desktop app can do pretty much whatever it wants and puts the onus on the programmer to do the right thing. The world of desktop integrated web apps is much safer than the web at large. We need security models that take that into account.
Read the full post »
Posted by Tejus Parikh on September 28, 2008
I’ve had the machine for almost two weeks and used it a bunch, so it’s time to write a real review of the system.
Read the full post »
Posted by Tejus Parikh on October 09, 2008
I’ve been a Fluid user for months and really couldn’t figure out what this feature was for. However, I had a sudden realization when I saw Todd Ditchendorf’s screenshots of the upcoming Mecca Browser.
Read the full post »
Posted by Tejus Parikh on October 20, 2008
First off, hats off to Micheal Mealing, Lance Weatherby, the ATDC, and everyone else who helped to put this event together. It takes a lot of work to put something like this together and they deserve another round of applause.
Read the full post »
Posted by Tejus Parikh on October 23, 2008
Two weeks ago, Sonali and I headed up to Cloudland Canyon State Park near the Tennessee and Alabama borders. I didn’t realize that any form like that existed in the state of Georgia. It’s not really near any of the other major attractions in North Georgia, but it’s very accessible from Chattanooga, TN. Being a bit off the beaten path keeps it from getting too crowded. It was lunchtime on a fantastic day and there were still ample picnic and parking spots.
Read the full post »
Posted by Tejus Parikh on November 01, 2008
The default Ubuntu install in Slicehost has the minimum number of packages. You have to install most things on your own. The documentation provided by Slicehost is thorough for the most common tasks.  However, I ran into a hiccup that took me a while to figure out.  That hiccup, no surprise, was trying to get the infamous and universally required rmagick gem installed.
My first mistake was probably typing:
$ sudo aptitude install imagemagick
And assuming that it would give me the development headers. It didn’t. Then I tried to find the
libmagick10-dev
package, which doesn’t exist. Eventually, after much trial, error, and increasing familiarity with
aptitude
, I found this combination:
$ sudo aptitude install libmagick9-dev
$ sudo gem install rmagick
Success.
Read the full post »
Posted by Tejus Parikh on November 03, 2008
The chances of your individual vote mattering for anything is incredibly slim. So why even bother. After all, it’s not like the candidates speak for you anyway.
Read the full post »
Posted by Tejus Parikh on November 08, 2008
Media-savvy companies know that in the era of blogs and social media it is impossible to control the conversation. Media-deprived companies don’t even know if there is a conversation happening. Reepli is a solution for rapid and comprehensive response to conversations happening outside of a brand-builder’s direct sphere of influence. PR agencies already engage in this type of activity. However, they charge thousands of dollars a month for this service. Reepli will enable everybody and every organization to have the same level of power.
Consider the case of Joe the Restaurateur. Joe manages all of the day to day for his restaurant. Try as he might, a few patrons leave his restaurant unhappy and post negative reviews. There are only a few a month, but Joe doesn’t have the time, money, or knowledge to find these reviews and set the record straight.
The problem scales to large companies as well. Suddenly, a report is published indicating that a line of popular toys manufactured in China contains a high level of lead. This situation is highly improbable, but if were to happen then the blogosphere would be on fire with conversations relating to this topic. Forums for Mom’s would be questioning the quality of the toys. Financial sites will be speculating on the damage to the stock price. The toy company can use their PR agency to contact CNN and Foxnews, but there is no way they can reach out to individuals on blogs. The company simply cannot keep up with the volume.
A perfect example how immediate and quick response can benefit a company is apparent with Comcast’s new initiatives Comcast is universally lambasted for it’s terrible service. However, they now have service representatives on twitter scouring for people with issues. Once they find them, they solve them. The result is that customers who were publicly complaining about Comcast are now singing its praises. Comcast can do this because they have money to spend on this problem. Joe the restaurant owner doesn’t.
With Reepli, Mattel, Joe the Restaurter and everyone else in between can set up a campaign around a set of keywords. Each campaign would then have a set of predefined responses that could be automatically posted to popular blogging engines and twitter. Reepli will also use advanced language processing to subtly change form messages to prevent the assumption that the marketing outreach is spam.
Reepli allows you to:
Read the full post »
Posted by Tejus Parikh on November 09, 2008
Jumbis
Read the full post »
Posted by Tejus Parikh on November 10, 2008
Reepli.com is the Atlanta Startup Weekend 2 project created by Erik Peterson, Mark Luffel, Hamed Hashemi, Amro Mousa, Joe Uhl, and me. Â I’m really proud of how the team worked together and the amount of stuff that we were able to get done in a very short period of time. Â We closed out 45 issue items over the course of 48 hours. Â That’s a pretty good clip.
Since the site’s still in private beta and the seed data took over the presentation, I’m going to present what we built in a little more detail.
Read the full post »
Posted by Tejus Parikh on November 11, 2008
These are my pretty random thoughts relating to Atlanta Startup Weekend2.
I like the multi-idea format. Â It kept people engaged and happy. Â A lot of folks felt the idea selection phase took to long. Â I was an early supporter of this idea. Â However, in retrospect, it might not have been a bad thing.Â
Based on the ideas posted to the website, I went into Friday night planning on helping out with Giving Time or the project called Seed Stage Records. Â By the end of the night, I really wanted to work on “Mark’s Horrible Idea” or “Get Me A Date.” Â Hearing the pitches, it became clear that a lot of the ideas weren’t well thought out or appropriately researched. Â This made me uncomfortable, since there really isn’t much time. Â The ideas that were better seemed to draw incredibly huge teams. Â This is also disconcerting, since you’re likely to spend more time arguing than actually doing things. Â
“Mark’s Horrible Idea” and “Get Me A Date” were incredibly appealing, simply because they were quirky, morally questionable, and pitched as jokes. Â Which meant they felt nothing at all like a day job. Â I’ve already got one of those, along with a bunch of side projects. Â I came to ASW2 to have fun, and these were the projects that seemed the most fun to work on.
I pretty much ended up as the front person for “Mark’s Horrible Idea” (rebranded Reepli.com. Â This taught me some really important lessons.Â
Read the full post »
Posted by Tejus Parikh on November 15, 2008
Since Delicious rebranded itself delicious.com from del.icio.us Fluid.app’s built in rules for the thumbnail plugin no longer work.
You need to add:
delicious.com/* h4 a
on the thumbnail-plugin configuration screen.
Read the full post »
Posted by Tejus Parikh on December 01, 2008
SVN is based on a relic and broken. A fundamental feature of SVN/CVS is that one’s working copy is a subtree of the repository. At some point in the distant past, this made sense. Diskspace and bandwidth were limited and expensive, but times have changed for the better. However, the design and functionality of CVS stems from this core feature. SVN is a major improvement over CVS by including atomic commits, better support for binary files, and using deltas to create branches (making branching and tagging cheap), but it’s still tied to the partial working directory concept.
Read the full post »
Posted by Tejus Parikh on December 26, 2008
This evening my family wanted to visit the Swaminarayan Temple in Lilburn, GA. I’ve heard about the level of sexism present in the Swaminarayan sect, but I figured this is 2008, in the United States of America, it can’t be that bad and went along.
Read the full post »