Archive for the 'Uncategorized' Category Page 2 of 25



A sneaky little idea.

Okay, I need an opinion on this one:

I was wondering since emails, instant messages, etc all contain content relevant to a particular topic, and that you’re the sole creator of that content (not to mention it’s quite unique), can you make select conversations public, and put it on the internet and advertise on it?

note that it’s just an idea, and is probably very wrong, but the content is technically, yours, unique and easily available.

i’m A FRIGGIN RETARD!

(before I say this, legal nuts note that my opinion is mine alone, you’re welcome to use it if you want)

I found about the “im initiative”.

According to that, Microsoft will donate a portion of advertising revenue when people use their services to send emails or instant messages.

Let me get this straight, Microsoft is asking people to outright increase their profits for no specific reason, except that a (currently unknown to me)% portion of it will go to some nonprofit organization.

Now why do I think this is foolish?

  1. At the end the revenue will be gotten from advertising, which is displayed during a fricking im session!!, and what’s worse, either the retard who’s signed up for this service, or the person chatting with him/her have to click on the ads, and will probably end up paying money. And of that, a few cents will go into microsoft’s pockets, and a cent or two goes into the non profit organization.
  2. This is more or less to make people think “hmmm… the more I message, the more I’m helping people.”, this causes unnecessary traffic, which probably travels around the world a couple of times, routed and resolved, queued and amplified. To imagine the amount of impact of a single message on environment, power, and time, you’re doing more harm by messaging and wasting people’s time in the first place. So if you want to help the world, you can cut down on unnessacary messages, or slowly and carefully wade out of the gene pool. Take your pick.
  3. The entire program is to just make people feel smug. Pick a program, and start making microsoft some money, and suddenly everyone in the world loves you. Go ahead and talk about the chocolate mousse you had in the local confectionary and suddenly an african village is full of food, and is singing praises to you, divine rocketmonkey764. In reality a few cents from an ad you or a friend clicks on will go into some organization’s pockets, while most of it will still go into microsofts.
  4. The entire system is really un-transparent. How much percentage of money goes in, how much did a single user contribute, that’s all never going to be revealed and is probably dumbfoundingly low.

A few of you are going to say “You cynical prick, they’re trying to help people and you’re bitching about them.”

I reply, yes, it’s a good idea to participate in the program if you regularly use Live messenger, or hotmail, and you live in a country where this is supported.

What microsoft is trying to do, however, is forcing you to use their ad-supported(ugh) service, and use it more than required, wasting yours and everyone’s time, in an attempt to think that you’re doing a great deed.

Worst thing is they’re trying to take the thing viral, right to the heart of the astonishingly dumb internet.

Two hours more!!!!

Bury the hatchet

I used to frequent several (social) news websites a few months ago, but these days here’s what I’m seeing:

reddit: obama obama obama, bush is bad, [nsfw], and some obscure programming paradigm

slashdot: DRM, DMCA, viruses, licensing, LGPL .

Lifehacker: How to create a shortcut key to create a shortcut key to create a shortcut key to create a shortcut key.

Digg: Content unavailable as I’ve stopped reading digg due to health concerns.

Techmeme: Apple flavored yagoosoft. (yum)

del.icio.us(yum) hotlist: Common sense disguised as self help disguised as zen, how to bookmark tutorials you’ll never try or articles you’ll never read later, how to make rounded corners, how to get a girlfriend, how to convince your girlfriend rounded corners are cool.

Nobody’d ever think it’d come to this, but the internet has actually become boring.

Mapmaker yay!

Google MapMaker’s finally gone public. You can check it out here: http://www.google.com/mapmaker

I don’t know if I’m allowed to say this, but this product was the first one to be mostly conceived and developed in Google, India.

Read amit’s write-up about the product here.

Bob the builder!

“Can we fix it?
Yes we can!”

They say you can divide all programmers into two categories. Those who rebuild their code every few lines, and those who write their code all day and then build, fixing syntax errors, and then running unit tests, and so on.

I’m trying to shift into the second category, firstly because it seems to be the sensible thing to do, and considering how long some compiles take (my average rebuild and link takes upwards of 300 seconds), doing it every few times can consume a lot of time. Moreover, there’s the time you get into “syntax fixing mode”, and maybe even debug later on, moreover, all the extremely experienced programmers seem to prefer the second and it helps their productivity.

Compiling

But to each his own, they say.

I for one have a huge fear of writing large modules or refactoring code where I go from one pseudo-working state to another and the build is broken from then on. But then again, getting myself to get started on any major patch is a lot of trouble for me, though it’s no biggie once you get into the mood. But the fear of broken builds is almost a phobia of sorts.

What would you feel is the best way to approach a large project, write code that grows in a very organized way writing unit tests along the way, or let your compiler sit in a corner while you churn out the next masterpiece? Or a personalized mixture of both?

Slave to the power of…

An extremely respected and well known blogger asked me to help build a tool which would perhaps be of good use to the blogger and web development community, which wouldn’t be too hard to build. But it got me thinking, nowadays a lot of services are out there which supposedly speed up or enhance the way we work with technology in the first place.

Someone once figured out that some websites have frequently updated content, which people visit, so instead of making the users visit the websites, it would be a much better idea if the content was bought to them. Thus the humble feed reader evolved.

But often, while a process is streamlined, people try to do more and more and more to “optimize” the system. Soon you see hundreds of articles to help you manage feed overload, hundreds of bookmarking tools, etc, etc, to help you read and connect to more and more articles.

But there’s only so much you can make more efficient. I don’t want this to go tangent into something that sounds like a “back in my day, we needed to climb three mountains just to read our email” story, but tell me, how many times have you found yourself clicking the “next” button or key again and again, barely reading any stories, and only absorbing what catches your fancy. How is this so much better than the days when people checked a website once, and actually read everything.

I’m not trying to say that “all the internet is crap”, but there was one point when I felt very afraid that the Internet is making me impatient and restless with the need for that “new story, article or tool”, that it almost spilled into my regular life.

The internet is crazy about having everything in one place. It’s about convergence and collection, yes, and it’s the natural order of things, but I’ve found joy in newfound minimalism and disconnectivity.

But I can’t help shake the feeling that the myspace and youtube generation might really hurt humanity in the time to come.

Wouldn’t this be nice.

While many people resort to logging for efficient debugging, writing everything to stdout might not be the best thing, especially with cout.

In my perfect world, I’d love to do this:


using namespace std;
#define __DEBUG
#ifdef __DEBUG
#define LOGME cout
#else
#define LOGME //
#endif

int main()  {
  LOGME << "Hello world";
}

But sadly, comment marks are excluded from preprocessors.

Here’s my winner of…

The best firefox extension in the known universe

It may not help you organize your ridiculously useless content or share it with your equally ridiculously useless social community, but it will help you use the mouse less, and save you from repetitive strain injury in the long term.

It takes a while to learn, but you can’t go back.

One of the best ideas I’ve had so far

If you’re into programming, I’d suggest you read this.

As a developer I’d love if I can write code that anybody can run, on their desktop (as opposed to trying to move it on to a browser so it can be truly cross platform), but let’s just stay away from the operating system in the browser paradigm. Let’s say I want to build an application which would run on windows, mac osx, and linux (and perhaps even bsd, etc). There are three major options I have

1. Write the code in java, and have it execute in a virtual machine. While java is nice, I’m not too fond of having my code run in a virtualized wrapper like format. Moreover, performance concerns, the Java Native Interface, etc do not make this the best choice for me.

2. Write code in a more simplified language like python, or ruby which has language bindings to major system so which allows me to run my code on most systems. This is nice, but there’s the performance concern, the obsfucation and moreover requiring the right version of python or ruby to be installed in the target machine.

3. Write code on C++ with the right cross platform libraries and compile. This is a confusing option because finding good cross platform libraries and learning to use all of them can be very complicated. But this does, however mean that my code will run natively, thus, much faster than the aforementioned options.

 

My idea deals mostly with number 3. I won’t beat around the bush and get to the point:

1. An easy to use suite of cross platform c++ tools, with open source wrappers to all of them, and are configurable to larger extents.

Here’s what this means. Suppose I needed to build an alarm clock, and wanted it to run natively on all platforms, I first write a “libcollection” file. This will be a list of all the libraries that I’ll be using for the project, and these are sort of dependencies. These might be gtk, wxwidgets, or qt for gui, opengl or SDL for graphics, openal or some other audio library for audio, one particular library for networking, etc, etc. These might also include other details as extra libraries, dlls, per-platform specification, etc.

ALSO, we will have native access to files, operating system, etc, through a vast object oriented library, who’s code will work on all object oriented systems.

The first benifit of this is that there’s a program that downloads the latest versions of all the libraries, and their dependencies, and create a project for an ide of your choice, ready to compile with any supported compiler.

Now the hassle of getting the right libraries is removed, which is only the beginning, as the best part, and an excruciatingly hard part is to write object oriented wrappers for all of these. So for example if I have:

(note this is just a concept and not anyway related to the final code)

File music_file(“asastor.mp3”); // FILE: is a wrapper class

Audio_Decoder decoder(music_file); // An audio decoder

Audio_Output output; // to output audio

decoder.play_with(output); // set the output module.

decoder.playfrom(“1:00”) //play from 1 minute timestamp

 

Now, you say, sure, there are libraries that can do things like this, even if you present an oversimplified audio, graphics, networking and filesystem interface, there are ways to do this, but the best caveat will be this:

Suppose you are writing code for linux. You’ve set your gui engine to gtk. So instead of writing code for gtk, you write it like this:

Window new(“My window”);

Button click_me(“Click Me!”);

new.Attach(click_me);

Now suppose some code like this would attach a button to a window. While porting code from gtk to another gui engine like qt is painful, it’ll be as simple as setting a simple variable in your library collection file. Of course, the functionality will be lesser than all libraries, as certain features are there in qt that’s not there in gtk but while we cannot hack our way to replicate features, we’ll have to allow ability to add features directly from the libraries themselves.

 

This would enable to write code once, and have it run almost flawlessly anywhere. Taking what we already know about building good cross platform libraries, and the great many advancements in compiler and build tools, and the power to run an application natively using the blistering fast power of computers, rather than running it on top of some other layer. Moreover, with so many open source libraries with some really cool stuff from computer vision, to artificial intelligence, etc, allowing developers to easily install and use these libraries would be a great first step before encapsulating them classes.

If compelling enough reason exists to build this and enough support, I plan to build this over the next few years.