Sunday, December 30, 2012

My 2012 python meme #2012pythonmeme

I have been writing production application in python for the past one year.

1. What's the coolest Python application, framework, or library you have discovered in 2012?
    MRJob - A python package that helps you write and run Hadoop Streaming jobs.

2. What new programming technique did you learn in 2012?
    I have learnt how to write highly modular and reliable code. How to do automated deployments. And how to auto-scale.

3. Which open source project did you contribute to the most in 2012? What did you do?
    Well most of my contributions were to non-python projects. But I did a very tiny contribution to cyclone.

4. Which Python blog or website did you read the most in 2012?
    Planet Python and couple of other blogs.


5. What are the top things you want to learn in 2013?
    Natural Language processing, Machine learning, Big Data in python.


6. What is the top software, application, or library you wish someone would write in 2013?
    A full stack framework that supports Hadoop and related technologies.

Want to do your own list?
here's how:copy-paste the questions and answser them in your blog.
tweet it with #2012pythonmeme hashtag

Friday, October 19, 2012

Xcode: warning: no rule to process file '$(PROJECT_DIR)/path/to/file' of type for architecture

I came across this warning.
warning: no rule to process file '$(PROJECT_DIR)/path/to/file' of type for architecture 
Silly me! I did something stupid. Looks like I have put a .h file in the list of compiled sources. The list should only have .m files. I dont know if we can put a .c file in it, but there should not be any other filetype. I fond that some developers even dragged Javascript files into the compiled sources. If you are facing the same problem, you should probably remove any non-.m files from list of compiled sources. Here is how you do it, considering you are running on Xcode4 or above.


  • Open up your project target's "Build Phases" tab. (Click on the project, then the target's name, and then on the "Build Phases" tab).
  • In the the compiled sources section, make sure that you dont have any files other than .m files.


Happy Hacking.

Tuesday, September 4, 2012

My first pull request

“A journey of a thousand miles begins with a single step.”

That single step for me, in my carrier, is learning python. A fun loving, magnificent beauty. For me, programming is like raising a baby. Initially, the baby girl doesn’t know anything. As a dad, its my responsibility to teach her what to expect, how to react & what to respond. For me, it is more than art. Its parenting. I take care of her so that, she never crashes. To ensure that she  can be fixed when someone breaks her, I should write great test cases. She is just a kid right? She is not mature enough to take care of her all by herself. So I have to make sure that she is always happy by employing some care taker who always look after her changes. Buildbot is her caretaker. When some one breaks her, buildbot will notify me where I can fix her right away.

So I was trying to get buildbot up and running. For some unknown reasons, it did not start. It just crashed. When I looked at the logs, it said that “twisted.web.errors.NoResource” was missing. Well that was weird. So I decided to go through the source-code of twisted. And “No Resource” was no where to be found. I got confused. Only then I found out that Twisted was updated to 12.2 just a few minutes ago.

There was a breaking change in it. “NoResource” has been removed. It was not there. The only thing that appeared to be similar to it was “Errors” So quickly without thinking anything else, I patched it and send a pull request.

I was happy, because it was my first contribution for a big project. Then next day when I checked my mail, I was sad. Looked like “NoResource” has been moved to “Twisted.web.Resource” package. I was dumb enough that I failed to see it. My pull request has not been accepted. It was fixed by some one else. Then I remembered something.

”I haven’t failed. I’ve just found 10,000 ways that won’t work.”

Yes, I just found one way in which I cannot submit a pull request.

“If You’ve Never Failed – You Haven’t Tried Hard Enough to Succeed”
“Success does not consist in never making blunders, but in never making the same one a second time.”

I am happy that my pull request got rejected. If a person always agrees to what you say, then you sort of never learn anything. It is only while someone disagrees you, you learn something new.

Wednesday, July 25, 2012

iOS 6 UI Interface Orientation - shouldAutorotateToInterfaceOrientation: Not Working


This post will soon be moved to here
This blog has moved to http://dhilipsiva.com/blog/
This post is outdated.

The method shouldAutorotateToInterfaceOrientation: is NOT supported in iOS 6. Its deprecated. Just in case if you are a newbie, who just stared working in cocoa, and wondering why is your view controller messed up in iOS 6 and perfect in iOS 5, just know that shouldAutorotateToInterfaceOrientation: is not supported anymore. Even though it may work well with Xcode 4 to 4.3 it will NOT work on Xcode 4.5. 

Apple provides a new method to get this thing done, in a much cleaner fashion. You use supportedInterfaceOrientations instead. It returns all of the interface orientations that the view controller supports, a mask of interface orientation values.

UIInterfaceOrientationMask Enum:


These constants are mask bits for specifying a view controller’s supported interface orientations.


Example:

Again, if you are newbie searching for an example, let me give you an example. Consider that you have to set your interface orientation to both left and right landscape orientations:

Using shouldAutorotateToInterfaceOrientation: method:



Using supportedInterfaceOrientations method:





UPDATE: This is a reply to an email which I received. Wanted to share this update.

     I am always glad to help anybody, if I have the time for it. Well from iOS 6.0, the system never asks for the supported interface orientations with the view controllers. It only asks the parent. In most of the cases, AppDelegate is always the parent. This is a line of code from the ReWire (http://www.rewireapp.com/) app that I have been working lately. I had a specific requirement. I had to set landscape mode only to VideoMeditationViewController. The rest of the video controllers should only support portrait orientation. So here is a solution:


-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
    if([rwNavigationController.topViewController isMemberOfClass:[VideoMeditationViewController class]]){
        return UIInterfaceOrientationMaskLandscape;
    }
    else{
        return UIInterfaceOrientationMaskPortrait;
    }


 Yes, I know this is a hack. And I know this is not an elegant way of doing things. But trust me, this is the easiest.

Tuesday, July 24, 2012

Xcode - Could not launch app - No such file or directory Error.

This post will soon be moved to here
This blog has moved to http://dhilipsiva.com/blog/
This post is outdated.   

It has been 4 months since I have been developing for Apple (iOS). As a user, I am in love with Apple. But as a developer, I feel Apple is a crap. I mean, It treats developers like a piece of crap. I hate tools that apple provide for developers. Often buggy. I loved Microsoft from a developers perspective. Okie, to the subject now. I found this really annoying problem with Xcode and fixed it. When you run a project on Xcode, you sometimes end up with a message like this:

Could not launch app - No such file or directory

Thats really annoying. This error happens in a number of different situations. Sometime restarting the Xcode, fixes the problem. If not, follow these steps:
  1. Disconnect your device. 
  2. Delete the app from your device. 
  3. Quit xcode (Don't just simply close the window, quit it) 
  4. Delete derived data folder (~/Library/Developer/Xcode/DerivedData/-gbrvhlvwmpiobxdujegtghggrffp - or something like that) 
  5. Now start Xcode, connect device and run the project. It should work fine.
There it is.

EDIT: Weird. Even theses steps are not helping me sometimes. I dont know what is causing this problem. When everything else fails, restarting both Mac and iOS device solved the issue in some situation. And what is weirder? Some times the app just runs fine the next day, without me changing anything.  I know I am not practicing an elegant solution, but this is the only working solution I found so far. If you have any Ideas, you can mail me. I ll update this post as necessary. BTW, this is the post with most hits on my blog. 20,000 and counting! :)

Friday, June 8, 2012

What the Love?


Unfulfillable longing, and yet I wait.
Unquenchable thirst, and yet I cry.
Bottomless pit, and yet I fall.
Endless road, and yet I run.
Never-ending ladder, and yet I climb.
Ever-growing agony, and yet I laugh.
Sleepless nights, and yet I dream.
Hopeless days, and yet I love.

- DhilipSiva

Sunday, April 15, 2012

Endurance & Subtle thinking...

Endurance. Endurance. Endurance. I was having a talk with Mahesh and learnt a lot of things that day. Since from then I have been doing a lot of thinking. I have been thinking about this for some 6 or 7 days in a row now. I am constantly improving my thoughts on it. So what were we talking about? Endurance and Subtlety!

Short Version : Endurance and Subtlety are the tools that make a warrior. Without them you are just a common man.

Long Version : Let me tell a few words about "subtle thinking" first. Because in my opinion, a subtle thinking is highly coherent with Endurance. It is critical to understand some of the tiniest details to endure. Let me give you an example if you don't understand my point.

Consider a person "A" who is mentally challenged. He has no idea what he is doing, because his mind is messed-up. His appearance shows that he is not normal. He throws throws stones at everyone on road. "B" is a normal person who happens to be walking down the road.  As expected, "A" throws a stone at "B". Now, the story has two ends. (1) - "B" can UNDERSTAND that "A" is not normal person. Depending on "B"'s Character he can either step aside and go away or talk to his relatives to keep him safe. "B" endures because he understands that "A" is mentally helpless. (2) - "B" is blind enough to ignore the mental condition of "A" and he prepares himself for a fight or argument. This is where "B" is said to lost endurance due to lack of understanding. In this case, I feel pity only for "B" for being mentally helpless than "A".

Understand my point now? But it is just an obvious example! Subtle thinking involves in paying attention to tiniest details of life. It is the awesome ability to understand the most mysterious aspects of anything. If only you could pay attention to details at that level, you can endure. And endurance makes you a warrior.

The reason I am posting this today is fairly trivial. I live my life with some of the people who are unable to understand. Driven by some blind motive which is just pointless. And the motives that they have did not come out of understanding of anything. They are just motives that are embedded by some other ignorant moron. They were asked to believe without reasons. These are people who lack subtle thinking.

There was this one thing that was screwing up my head. The cast problem. It is one of the most misunderstood systems in India. So immature, so blind and so ignorant. It broke me into pieces sometimes, but it is not gonna happen ever again. Maybe I ll be writing about the cast system sometime next week. But now, I understand that these people are raised by telling lies. They believe in those lies so much blindly that they think, they will die without it. And I really really feel pity for those souls. Well the thing that confuses me is, is it appropriate to classify these people as blind or ignorant? blind is OK. But ignorant is much worse. I ll keep thinking on it.

But the point is you gotta endure to realize the truth. And you should have a subtle thinking to endure. "Truth about what?", you ask me. well the truth pretty much about everything. So what is the truth that I realized? Ok, before answering that question let me tell something, "I don't expect you to understand it, unless you have a subtle thinking". To the answer: "The truth is : Nothing is true!". If that makes sense to you, welcome to the clan. If it doesn't, you should wake-up. And it is the waking-up that requires the endurance and subtle thinking.