Tuesday, December 13, 2011

Apps. Confusion as much as with the pc

Scripting News: Why apps are not the future

There's an article raging over the internet, written by Dave Winer where he makes the argument that apps are not the future. His reasoning being that linking is something that is lacking from apps making them silos or buildings rather than an something as open as the web.

Firstly I have a bit of an issue with the definition of linking. But in the case of traversing and sharing information from silo to silo thus bridging the gap between them, I think we are getting there. Android in particular has done this excellently. A good example would be how I bogged this article. I simply long pressed the url on my browser (also an app mind you) and pressed share on the menu and shared it to Blogger. As far as linking goes where linking is passing information from one app to another I really do think we are getting there. But maybe Dave's argument goes deeper. And maybe only a medium which is controlled by open standards will win against individual mobile OS's. But I have a problem with this idea as well.

Mobile OS's need to open up their APIs first

How do you access the rich features of the smartphone if the operating system doesn't provide a unified open way of accessing them? Take a look at android and iOS and try and find out how you would take a photo through a web interface on the phone. You'd be better off encapsulating the mobile website within an app and then accessing the camera from there.

Offline persistence is a big win for apps

The beauty of mobile apps is that I can switch my 3g on for a few seconds, let my apps run an update course and then switch the 3g off leaving me with a new set of rich data to browse offline. This is not really possible with a website since on a mobile device, memory is limited and cached pages need to be refreshed when you make the tab it's encapsulated in visible again. Your best solution would be always on 3g.

But always on 3g is battery intense

Terribly so. Which leads to a far more complex issue than just apps vs the open web. To have websites work on mobile devices over apps you are going to be cranking out the 3g juice and frankly speaking, battery life isn't that good yet. While I hope that gets sorted soon I wouldn't hold my breath if I was you.

The work around to this would be to do what apps do. Offline data storage. Write directly to the phone memory and have your own pockets of data ready. So when I open Facebook.com it's not going to the internet to load those resources like the header bar and icons etc. Those will be ready along with my last update of the news feed which I can browse. But if the website can do all of that,

What is an app really?

Here comes the biggest issue. Linking is basically a functionality. It's not a property that can belong only to the web. It's something that's been implemented only by the web though. Similarly all those other things such as offline persistence of data also come under functionality. So assuming a website implements all of that, isn't the website then an app too?

This is the same problem I have with people using the buzz phrase, 'post pc era'. What utter rubbish. There is no post pc era. The form factor has changed but the personal computer remains. The day our body becomes the machine where data is stored and can be deleted simply within our brains and our eyes become the camera and electro magnetic implants become our gps, that'll be the post pc era. As long as there's a device we use external from our physical selves to do our everyday work stuff, the pc will remain. Just not in the same form factor as 10 years ago. 

And just like that, apps will evolve conceptually before being implemented. Battery life will increase, 4g coverage will become more comprehensive so my battery isn't drained. Javascript execution via the mobile device will become faster making use of the inevitable graphic cores for smoother rendering thus removing the concept of installing an app. But the app, will remain. Changing and evolving in terms of form factor but never dying. I'm sorry Dave. But apps are, the future.

Friday, December 9, 2011

Changing a Primary key value via SQL

I had to run into a rather annoying problem today where due to an error somewhere else in the database I was faced with two tables containing the same Primary Key (AL/1112/0001) which was causing a conflict in my data insertion. The only way to solve it business logic wise was to ensure that one table would programmatically receive the AX prefix and the other AL. While these values are stored in a separate table and changing them was a simple UPDATE statement, changing all the records in a similar way within the tables that would receive the AX prefix in the future was an issue. Changing a primary key value in the following manner:

happens to yield this abominable error due to the constraints and checks enforced

Bah! This may have been just a test DB but reinserting all those values whether through an INSERT/DELETE statement or through the program was going to take time. A quick bit of searching on the MSDN site to see what could be done to alter a table and I got this out.

The first thing you want to do is make all those ‘CHECK’ CONSTRAINTS be switched off. Here’s the code to do that.

I know that the standard code would be ALTER TABLE fcadadet WITH NOCHECK CONSTRAINT ALL but this gives an error with MSSQL. The MSDN documentation specifies it to be put in this way. (Is this wrong?) 

Run your update statement. This time it should work fine.

Once done, don’t forget to put your constraints back on using the code below.

Feel free to try another UPDATE. This time you’ll be met with the error from above again confirming that your constraints are all back in place.

Do note however that this is quite likely a very very bad practice and I used it only because it was a test database and the situation was one of those ‘it doesn’t matter who does what’ things. Using this statement on live data while a system is running is probably a bad idea. Those constraints are there for a reason.

Thursday, December 8, 2011

Hacking, Defined

There’s sadly a lot of confusion amongst a lot of people as to what a hackathon and hacktivist community is. It’s not so much about the definition of what should someone be doing to call it a hackathon but more about the fact that the media’s sensationalization has simply degraded this term to create a mental picture of some greasy hair kid seated in the darkness banging out commands into a shell command prompt in an attempt to gain access to the NSA’s database. Nothing could be further from the truth. Nothing.

I finally stumbled upon something that could put a definition to the word ‘Hacking’ and here it is. Short, and sweet.

Hacking

Hacking is the process of writing code for, or contributing code to, a piece of software.

There is some controversy surrounding the meaning of this term. It began as a benign term meaning "to exercise proficiency" or "to alter or improve," but the popular media have since construed it to mean "to break into a computer system, usually with malicious intent."”

- From the WordPress Glossary page

The piece goes on to direct one’s attention towards Wikipedia for further disambiguation but honestly, for a term this misconstrued I really wouldn’t recommend that. Just take this definition above and keep it at that.

At hackathons we gather to hack upon a common purpose. And that purpose in our SL Hackathon is to hack on our ideas over a short period of time, usually a weekend. Be it individual or group.

What’s the point?

https://gist.github.com/6443

tl;dr?

Hack = "to exercise proficiency" or "to alter or improve,"

Hackathon = to hack with a common goal in mind

SL Hackathon = The common goal to hack on is an idea where at the end of a weekend/Hackathon’s duration you have a tangible product.

Edits – Some awesome links (content is verbose) provided by @nazly and @laktek in response to this post.

http://catb.org/~esr/faqs/ – This is like the mother of all guides to becoming a hacker

http://www.paulgraham.com/gba.html – Paul Graham’s essay. “The Word “Hacker”

http://www.paulgraham.com/wealth.html – Another one of Paul’s essays. Related and very much worth a read.

Visual C++ 2010: Scope Of License

Early in the morning today while installing the MySQL client components I had to install Visual C++ 2010 runtime as a prerequisite to continue. No problem, set it to download via the installer itself (very convenient that) and once the install screen showed up I thought I’d give the EULA a bit of a go. Just for the heck of it. The scope of license section was actually quite interesting simply because of what I found to be one oddity.

2. Scope of License. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not

· disclose the results of any benchmark tests of the software to any third party without Microsoft’s prior written approval;”

Eh? I may not disclose the results of any benchmark tests without Microsoft’s approval? But why not??? I understand that Microsoft reserves all rights except my right to use the software but why can’t I perform a benchmark test without Big Brother’s approval?

Anyone know the answer to this one?

Edit – Some interesting posts related to this topic

Benchmarking is illegal says Microsoft

Microsoft Restricting Free Speech

Dangerous Terms: A Guide To EULAs

Discoveries on a day of programming from home

Thanks to me being sick due to food poisoning I had to stay home today instead of going for work. Feeling irritated since I had such a little left to complete I thought I would complete the code at home and then take it back to the office and integrate it with the rest of the code base, test, correct and make a final commit before going home. During one of the longer builds I was toying with the idea of how nice it would be if we had a remote SVN to which I could commit from work. Sadly such a feature does not exist. But how would you go about such a thing? VPN was the first thing that came to my mind. Ba! Too complex. Wouldn’t it be nice to set up the thing as a remotely accessible server by opening up a port, say:

"Company IP address:14035”

with some username and password and let us access it. I really don’t know if that can be done but it was still an idea worth toying with.

Out of curiosity however I just typed in our company IP address into the web browser bar and was greeted with the standard Router username and password dialog box. Feeling lucky I typed in admin, admin. No result. admin, admin123; nothing. admin, pass; still nothing. admin,password; welcome to the… “WHAT???????”

Turned out that not only was our router accepting external connections but the router’s username and password were still at default level. Note. I decided to wait a day to publish this since I gave a call to the office and asked the person in charge to fix it. Turns out that when the connection was being redone by SLT they had to do a hard reset on the router and hadn’t configured this bit again. Negligent but not as severe.

Strangely enough “Jerry” over on the IRC SLHacktivists had mentioned this before stating that it was unbelievable just how many routers one could find by typing in random IP addresses and even more unbelievable how many of those routers had been left on with the default username and password. Please don’t use this information for malicious purposes. If you do find someone’s router open and if it is an SLT ADSL configured one, you should be able to get the person’s phone number straight out from the username. Give that person a call and tell them to call SLT to reconfigure the router to prevent this kind of activity. I find it to be irresponsible on SLT’s part that they configure routers for clients and then leave it with these default settings on like this. Most people don’t know any better and therefore the onus of customer security falls upon SLT and any other company that installs these connections.

Wake up the community and spread some awareness people. Oh and check your own routers too.

N.B – Doing this at your own workplace could lead you to being thrown out and/or bringing up bad will between you and the server dude should the router have been left open. My suggestion is to do something in which you have definite evidence to say that nothing has been tampered with and that you did this only in the interest of investigating corporate security.

Technorati Tags: ,

Monday, December 5, 2011

Musings of a Weekend Hacker

Each of my blogs have been going through a serious repurposing over the last month and a half as I’ve tried to up my game somewhat in the blogging department. By upping the game I don’t mean to be some pro blogger who the world reads and then talks about but instead someone who is fairly consistent. By consistent I don’t mean how often I post. I’ve decided to put that aside since trying to do that unnaturally means it doesn’t get done. But by consistent I mean what I talk about. One thing I’ve always wanted to do is share whatever knowledge I gain with the rest of the world. Even if the rest of the world doesn’t read this blog it’s still a medium with which I can share everything right?

If you’ve read the last two or three posts of this blog you would notice that I’ve been trying to spur myself into becoming a weekend hacker. And it’s working. Along with dubstep and the pomodoro technique I am going through an unprecedented productivity burst. Over the last two weekends I have been able to release my first Open Source application, begin learning HTML and have given up my addiction to Twitter and RSS feeds. When you are programming those things matter less and less. I had to give up podcasts too up to a certain extent, something I’m a little sore about since the information I get from those is fairly valuable but some sacrifices have to be made I guess.

Digress digress digress.

Long story short, since I’m not reading tech news anymore I don’t really have anymore stories to write about all that often. But since I’m learning new programming stuff everyday I figured that whoever is trying to learn a new technology probably has to go through the same steps I do. So welcome to the journal of my tech life. Will it be daily? I don’t know. Will it be worth reading? For some yes. For others no. I don’t see the Hitler’s ghost taking much of an interest in this. What will it be?

Tech journal. Itsy bits of tech news. My open source projects. My ideas on building Sri Lanka’s Silicon Valley. Code snippets. Gotchas that screwed me over at work. And plain stupid things like how I managed to miss an assignment to a BigDecimal variable while using the add method on that variable itself. Why? Because it’ll keep me sane. :)

Saturday, November 26, 2011

SL hacktivists: Your guide to joining the IRC

 

Yesterday on IRC about three of us were having a chat on the number of people in the IRC. Or rather, the lack of it. Fact is, most people haven’t really used IRC at all since it can be just a very cumbersome and tiring process. Especially if you happen to use Windows seeing that the most popular client out there isn’t free. Neither is the second most popular client. It doesn’t help that most of the tutorials out there have been written for those two either. Given that, I though it would be best to write a tutorial for joining the channel on IRC using one standard process. No choice of clients, no frills, no nothing. Just one standard process which once you are comfortable with you’ll be free to move on to try other things. Be warned however, IRC can be addictive once you get into it. Let’s get into it then.

Edit – Screenshots have been provided for the whole process. Scroll down if the text doesn’t interest you.

Step 1: Downloading and setting up the client.

This is the worst step usually. Wikipedia’s comparison of IRC clients is worthless. It’s a mess of colours and columns which makes one wonder if they are in the process of inventing some form of chinese tic tac toe. To make things standard, let’s all get on the same boat with Trillian. (For windows. For mac users I have an instruction all the way at the bottom so it doesn’t confuse anyone up here in wondering which one to take)

1.1 Go to http://trillian.im/

1.2 Click on the download button (I’m loving the simplicity. Are you?)

1.3 Standard install process. No frills. Refuse the bloatware that comes with it.

1.4 Go through the basic sign up process. Note that this account you sign up for is like an account with any other website. The account is with trillian and not with the IRC so go ahead and set it up like you would a normal accout. Username and password. Yey. You are done with that

Step 2: Setting up the IRC connection

You should now have a skinny column on the left of your screen. Welcome to trillian. Time to IRC.

2.1 Click on the trillian menu bar. And click manage accounts.

2.1.1 Ideally you should be in the screen Basics->Accounts. If you aren’t, then go there.

2.2 Click Add New Account. You should see a nice tall column of various types of accounts to click on. Click IRC (doh!)

2.3 Ok this is usually the tough part right? It’s simple.

2.3.1 In account name, just type what you want to call it. SL hacktivists account maybe. It’s just a name for your reference.

2.3.2 In nickname, choose what you want to be called*. This is the equivalent of a twitter handle. We’ll see you as ‘crazym4dd0g’ when you log in (or whatever you choose to call yourself. I’m kiriappeee).

2.3.3 Just type in irc.foonetic.net here. IF you are wondering what that is. That’s the server where our slhacktivists and slhackathon channels are. That’s all you need to know.

2.4 Click connect. And once done. Close the window.

Step 3: Joining the channel

Notice now that your skinny column has a new tiny blue logo on the top right of it? Click it.

3.1 Click join a channel

3.2 In the window that opens, type slhacktivists and press Join.

Welcome to the IRC.

There’s the slhackathon channel you also want to join. Do the same process above (3,3.1,3.2) again and type slhackathon this time into the channel name.

Do bear in mind that we are building the community at this point. It may seem a little empty but that’s ok. Come on in and just leave yourself logged in. Even if you are idling don’t leave. Conversations will pop up from time to time and things will eventually get started.

* Note that if you choose to use an existing username you will probably be automatically given a username of the format [existingusername]_ . So if you chose kiriappeee you’d be giving kiriappeee_ <- notice the ‘_’ :D

For mac users you can use the plugin chatzilla with firefox. I think. Either way, if you get something that has no graphical user interface like trillian, then type this into the chat line when you join.

/Nick <your username> (like kiriappeee)

/server irc.foonetic.net

/join slhacktivists

/join slhackathon

Hope to see you guys in there soon. Please share this tutorial. We understand that IRC is a geeky thing but there really is nothing better to get people into one place where they can chat and wait. Let the hacktivism, begin.

Edit – Big thanks to ‘AJ’ who provided screenies for how to join the IRC if you are using a MAC. Choice of IRC client here is Adium.

 

I’ll put up tutorials for all other clients as well soon. If you’ve got screenshots for Linux and iOS I would really appreciate that.

Friday, November 25, 2011

The SL Hacktivist movement

 

It’s about time this got started. So, this morning’s post on hacking received a generally decent amount of positive feedback if the retweets and faved tweets were anything to go by. Also a quick review of my blog’s traffic shows somewhere upwards of 80 page views. That’s just for the individual post so I figure there must be around another 20 page views coming through the standard blog home view. Not bad. 100. I think we would be off to a super brilliant start if anywhere of a quarter and upwards of those views were converted into people participating from tomorrow. I’m really not expecting too many people, mainly due to the spontaneous nature of this suggestion which also equates to way short notice. But I think its important that we start. Even if its just me tomorrow I will forge ahead because I think starting is the most important thing. How could it not be? It’s the one thing we keep putting off after all. And it’s time to change that.

If you read the post on my mild disappointment at refresh Colombo there were several interesting comments regarding my observations on us not having a community of individuals who actually create stuff. One set of comments that interested me most were the ones left by laktek in which he said this.

“It's very hard to cultivate this attitude on Sri Lankans.  They are more comfortable with cursing the system and envying others for lack of opportunities rather than creating it by themselves. Well, of course there are few exceptions (like you :)).
Also, another cynical piece of advice - just ignore these so-called tech events in Sri Lanka. I know the people organizing these events are passionate and have pure motives. But if you analyze the audience carefully, it's a just a bunch of rich kids who wants to show off their new gadgets and some smugs desperately trying to find some way to get noticed, upon realizing they have just wasted the best in their lives.
If you want to get some real shit done these events are just poison. It's easy to dream up all sorts of crazy ideas. But it will take lot of stamina and courage in you to turn them in to realities (and even more perseverance to get people to pay you!)
(Disclaimer: this is just my personal opinion based on my experiences, so take it as a grain of salt)”

He wrote another post on his Google+ as well. Scathing. But sadly true in many ways.

Lakshan Perera  -  Oct 27, 2011 (edited)  -  Public

These are the people you will actually meet in a Sri Lankan tech event:
1. I work for [insert a big multinational organization] as the Chief Social Media Strategist and my job is to tweet the inside jokes of the office.
2. I work at a cubicle farm and I just masturbate to Endgadget & Gizmodo all day.
3. Dude, I have compiled & installed Linux distributions that don't even exist.
3. I'm a final year engineering student at [insert any prominent university in Sri Lanka] and I have a first class. I'm planning waste my next 5 years in this CO2, for the prospect of going to US and getting a PHD (I don't know what to do with it after that).
4. My parents could afford to send me to [insert one of the top 10 universities in the world] and there we had this thing called [insert a name of a popular web app]. I'm looking for someone do a clone of it for Sri Lanka. Guess I could make big bucks out of it.
5. I'm just here for food.
6. I don't trust my boyfriend, that's why I'm here.
7. All these tech stuff are greek to me, but our professor said he will ask questions from this conference in the final exam. So I even took notes of lightning talks.
[6, 7 are the only kind of female species you will find in these events]
People you will not find in these events:
"I'm the one who developed ____________"
or
"I'm working on _____ to solve ________"
That's why I don't attend to Sri Lankan tech events anymore.”

So I replied to his comment on my blog. A long rambling reply both agreeing with his observation about tech events as well as defending the whole concept of Refresh Colombo which I think has done a lot of good for the community. I’d never have started down this road if not for them. And if this takes off then it’ll at the end of the day have been because of that first Refresh Colombo meeting I attended. The reply I received to this sparked my interest.

“As I said, the second point was based on my own experience. There was a time I even used to gatecrash tech events searching for inspiration and guidance. The audience I've seen around all these events (including RefreshColombo) seems to remain the same (I don't mean it as in individuals, but as in personas they represent). That's why I remain skeptical, but there's a hope for change.
Anyway, rather than ending this conversation by just dissing the system, let me suggest something. It seems there are many folks with cool ideas out there, but they are not committed to spend time and effort on those.
So let's gather around all these inspired people for a Sri Lankan style Hackathon, fueled with Kottu and lime. They will have to hack on their idea for 48 hours. If they run the full race, they will have a tangible output on their hands after those 48 hours. Then, they could come up and present it confidently in the next editions of RefreshColombo.
More importantly, it would be a great start to evolve just an idea in to a fully blown product.”

I thought I could get this started. I pitched the idea to my dad and his reply was one of interest but which at the same time didn’t seem to be too convinced that this sort of activity could lead to better things. If you are wondering the same thing, “can something as small as this actually work out to something worth while?”, then I would suggest you go ahead and read this gist on github. Big thanks to laknath for posting this link. One of the most valuable things I’ve read in a while. The gist of it is basically that the people who created successful web apps and iOS apps didn’t just create it out of no where. At least not in the case of the majority. The way this happens is that there’s a lot of tiny apps and experiences and slightly larger apps and a lot of difficult work that actually happens before someone creates an experience that turns out to be a hit. The problem and the reason that people rarely get there is that they don’t take those first steps towards creating the small apps and suffering through the difficult experiences.

Which brings me to the last point I want to make on getting things started. It’s not just about the small experiences and the tiny apps. The fact is that if you don’t get started you won’t go anywhere. But the other side of that fact is that once you do get started you won’t know where you will go. A recent question thread on quora questioned the validity of the incessant amount of photosharing apps and other things that seem to be permeating the very atmosphere of silicon valley these days. In an extremely logical and eloquent fashion this claim is not only disputed but the value of these kinds of projects are also brought to the front. For me the most valuable lines were,

  • "Trade Pez dispensers online" -> a marketplace larger than many national economies (eBay)
  • "Tell your friends what you are doing" -> a global communications network (Twitter)
  • "Hook up at Harvard" -> a billion person network, disrupting governments (Facebook)
  • "Send money to your friends" -> disruptive payment network (Paypal)


Large, disruptive ideas start with teams who jump into the game, start with small, tangible problems, then grow and expand from there.
But that requires their getting into the game in the first place. They need a starting point of something that feels achievable and caters to their passions and aptitude.
And they need encouragement. They don't need criticism from various pundits and hanger-ons who deem them to be working on the wrong problem. Especially since many of the pundits don't work on them either.

Do you see that? Small seemingly worthless ideas that don’t have any capability of running at a profit or ever generating a worthwhile revenue have grown to be something not only worth billions of dollars but also something completely different from what they started out to be.

So let’s get started then shall we?

Here’s the deal. Since I can’t afford to put up a physical hackathon yet and since the logistics are a little beyond me without knowing the real interest of the community I thought, why not we start a cyber weekend hackathon and a general hacktivist community?

This is how it’s going to work.

For the hackathon, the serious hackathons will happen every 2nd and 4th weekend of the month. This is where we actually try and work on an idea and smash it into place in 48 hours. Maybe an old idea even but the point is we work like the hounds of hell are after us for those 48 hours. Saturday morning 6 AM I should be on the IRC (more on that in just a moment) and hopefully you guys will join as well. Come along. Introduce yourself. And if you know what you are going to be hacking on just tell the rest of the community. You don’t have to be specific. Just a general idea.

What you decide to do at the hackathon is for you to choose. The point is to get started.

At the end of the hackathon we need to show each other what we’ve done. I would like to see some sort of standard here that we upload the stuff on to github so that we can actually see tangible work from each other. A physical hackathon would actually have people being able to point to their laptop screens but since we don’t have that let’s just go with this. Open sourcing side projects is a good thing imo. If for some reason you don’t want to open source your work that’s fine. But leave something tangible to show what you did during the last 48 hours. Preferably something more than a screen shot. If it was an Android app, upload the apk. Desktop app, upload the exe. Web app. Host it on your machine and let us know how to remotely connect to it for a few hours. Or take a screen cast of it using screencastr.

On all the other weekends it would be nice to see the community still hanging around on the IRC but more as a way of working on stuff in a chilled out way. Ideally talking the product you are working on/worked on the previous week with you co havktivists would be the best thing to happen. Features might get added. Unwanted stuff will get dropped and at the end of it we might just see the growth of the hacktivist ecosystem.

The SL Hacktivist culture

Since we don’t really have an Hacktivist culture I think it would be a great idea to work right from the start on being supportive. Be critical of ideas. Question the person working on those ideas on the whys and whats. But don’t be destructive. If you feel something isn’t right, don’t just say it. Say it with a suggestion of what you think might be right. Essentially the best case scenario would be a community which continues to pump ideas into other people’s projects in order to spur further innvoation.

There will be zero tolerance towards those who want to put down other people’s work. If you don’t think it’s something anyone will use then please have an explanation ready to be given in a civilized way rather than simply putting it down as “what is this I don’t even…”. That’s the sort of thing comment trolls write. That will not be tolerated within this community.

The communication mechanism

I racked my brain trying to figure this one out and the realized the answer was simple. IRC. I will write a quick tutorial later on how to get IRC started up so you can join the conversation. Because if you don’t know how to use IRC I really don’t blame you.

Server will be

irc.foonetic.net (port 6667 if needed)

Channels are

#SLHackathon – Will be the default channel we land up in for the hackathon days. Also on non hackathon days if you want to discuss your hackathon projects going to that channel would be a good idea but I’m not sure how the non hackathon days would pan out. Most important and distinguishing factor of this channel, going off topic will not be tolerated here all that much. I came to realise some time ago that conversation can be the bane of all productivity in situations like this. So chit chat will not be allowed. If you want to have a friendly chat and get to know your fellow hacktivists,

#SLHacktivists – Will be the channel you want to go to. Discuss your random programming problems. Share stuff you find interesting and just chill and get to know the community there. There might occasionally be interesting topics based on what you guys want. So enjoy your time there. (Right now at the time of writing this it may be a little cricket like silent but don’t worry. People will come soon hopefully).

Also on Twitter we will use the tags #SLHacks and #SLHackathon to talk about it. I’m sure we’ll agree on a standard in the end but let’s leave it at that

Timing and management

Apart from the no chit chat there’s also the time management technique called pomodoro technique. I went through it and it sounds ideal for getting people into a high focus mode with a goal oriented approach. Check it out. (Another one of laktek’s suggestions).

The end

That is it. That’s all you need to know. The first hackathon starts tomorrow (26th Novemeber 2011) and finishes Sunday Midnight-ish (or goes on if you wish)

Let the hacking. Begin

A big big big thank you to laktek for the advice and the ideas provided. You and the rest of team at Curdbee (vesess) keep making us proud :).

Thursday, November 24, 2011

Who wants to hack?

Time to get stuff done. While I’m continuing work on Project MADA I’m sad to say that I don’t think I can give my full attention to it as I have decided to give that attention to the place I work at. It’s my dad’s company and I might eventually be the person who takes over it so therefore I need to give some time and focus to that business instead. I’ll probably do a full post about that on the Project MADA website sometime later but for now let’s just say it’s going into a stasis of some sort.

But I don’t want it to be like that. I want it all. I want to work on stuff for the company as well as Project MADA. The problem is that my attitude won’t let me do that. I admit. I youtube a lot. I get on HN plenty. And I figure I waste at least 2 hours a day on that kind of stuff. You know how much 2 hours is? Every 12 days you lose one whole day. In less than 2 weeks you have already given up one whole day for YouTube and HN. Just imagine that. Can you actually picture yourself watching YouTube and reading tech stories for 24 hours at a stretch? It’s poison. That’s what it is.

So I want to become a hacker. That’s it. Simple right? And I’m going to blow past this attitude of mine by simply ‘doing it’. I know I can. I did a lot of serious sports and my mind is still conditioned towards doing stuff like that. I just need something to get started on. So I figured why not take a tiny step. That was how I did it in sports too. When I was running and I felt myself hitting the wall I would reach deep into my subconscious and give over control of myself to get me to take that one step. 5 minutes later I’d find myself back in stride. But I digress.

This weekend, and every month on the 2nd and 4th weekend I propose that we get together to have a cyber hackathon. We all work on a project for those weekends and by the end of it we have a project we can show off. Something. Some tangible end result. So here’s how it’s going to work.

We get together as a group. If you want to collab with someone else be my guest. I probably won’t because I discovered how useless I am at it recently. There’s just a few people I can collab with mostly because they know who I am and can actually keep me on track when working in a group. So, here it is.

  • We all get set this weekend. Jump on to skype. Add me on kiriappeee. And please add the message saying weekend hackathon. I’ll set up a private Google group/FB group later.
  • We get set pretty early morning. No slacking. It’s one weekend. By 6 AM we are on.
  • For 45 minutes we discuss what we are going to do. More than discuss we just tell what we are going to do. If there’s feedback to be provided we’ll do it then
  • Get down to hacking. No katha. No sina. Hack hack hack. If you need help drop it down on the skype board but otherwise please don’t use the Skype session to talk incessantly.
  • Break in the evening. 30 minute discussion on what got done.
  • Back to hack
  • Knock the work off at 10 30 PM. You want to continue. Be my guest but honestly I think that’s not really needed.
  • Same on Sunday. Hack till about 11 45.
  • Commit to github.

Now all this was just off the top of my head. If we are going to be hacking then we need to be thinking in the spirit of hackers. Get a general idea first and then correct details as you go along.

What kind of projects should you bring to the table.

Just an idea of what you want to do. Maybe you want to create a project management web app but you have no idea what web programming is. That’s ok. Spend the night before deciding what language you want to use as scripting (Python or Ruby probably) and then come and start hacking from your first HTML page to your first python script. Bring it on. And learn as you go.

At the end of the hackathon we commit whatever we did, even if it is test code, to github. Why? Because we all get to have a good idea of what we’ve done and it’ll give a sense of community success. If you don’t want to open source your project, well, come along and join anyway but just be sure to make something tangible that others can see at the end of the day. Else the purpose will be lost. This is a cyber hackathon after all.

Now I hammered this post out in about 15 minutes. I’m rushing to work. Leave your comments and we’ll figure out how this is going to work in the future. For now, Hacking starts tomorrow.

Wednesday, November 16, 2011

So what?

A note to those who attended my presentation at apiit where I delivered my talk on how go generate and sell a (tech) business idea. I don't feel I explained the so what section as well as I should and therefore I thought I'd go through it in writing for your benefit. What I will do is first explain exactly what the so what factor means. And then I'll address each project's so what factor individually.

What's up with so what?

Everything in my talk that I gave was geared entirely towards pitching your ideas in such a way that people will be interested in it. Within the first 1.5 minutes. Or even 30 seconds. That's right. Everything I spoke yesterday was for just your first 1.5 minutes. It does of course lay out your framework for a larger presentation but the fact remains. Your opening 1.5 minutes will depend a lot on getting across the points I mentioned yesterday.

The so what is for everything else. If someone gives you the so what question you should be happy. Why? Because it means that people are interested in knowing more about what you have to say. It may come across as "oh no. This person doesn't care" but trust me. If they really didn't care they'd just nod their head and wait for you to speak before deflecting it and changing the topic.

What's so important about the so what is that people want to know more. People want to know:
  • What's your edge? 
  • What makes you unique?
  • How do you fight the inevitable clones? 
  • What is your domain expertise in this area? 
  • How large is this market? 
  • How do you plan on marketing?
Think of the so what factor as the Q&A session. That's where the best stuff comes out so you better be ready for it. Well if you've understood what the so what factor is all about then I shall proceed to breaking it down for each project.


Sunday, November 13, 2011

Hacking Spool: Breaking the Regional Barriers

 

Quick reminder before I go any further. Definition of hacking in my book is, using something for a purpose other than what it was intended for. This is not some crazy sql injection where I stole a gabazillion usernames and passwords that match password123 which I promptly dumped onto pastebin. This was simply an intuitive use that I pushed out of a product that really wasn’t built with that purpose in mind.

A Quick Introduction to Spool

For the uninitiated and those who did not actively watch the videos of the TC disrupt competition, Spool is, in the words of TC itself, Instapaper on steroids. For the even more uninitiated, Instapaper is a service which allows you to save web pages to read later where the pages you save and read are synced across various devices. Instapaper and Spool share a very similar purpose (as do a plethora of Instapaper clones out there) and even execute in a very similar manner with users being able to save web pages both across their mobile devices as well as via Google Chrome using an extension. While most of the clones of Instapaper do the same thing, Spool takes a more advanced approach in not only saving a web page and syncing it to your device but in also making the web more readable. It uses an AI engine in the backend that reads the document like a human would and gets the necessary text (major time saver when it works on paginated articles). But most important is that it takes videos on the web page you wanted to save and converts it to a format that plays smoothly on your mobile device. In fact, given the language used in the app where upon saving the web page it says “recording…” I have a feeling that this was meant to be The killer feature in Spool.

The unique way Spool records

At first I wondered how Spool does the recording. I was thinking maybe they act as a download accelerator of sorts and simply rip the video out of wherever it is saved. I was surprised however, when I saved a Techcrunch TV article and found that instead of just the video, I was actually watching a video of the TCTV video playing inside TC player. Let me rephrase. Instead of just the raw video, I was actually watching the player on the Techcrunch website, playing the video. This meant that I could see the 3 second ad before, the play and pause button, the little tabs on top displaying the various categories and it was literally how I would see the player on the screen when looking at it with my own two eyes. What the AI engine was doing was actually taking a screencast of the video after having pressed play too. To be honest, I was mind blown. This just seemed really really advanced and in fact quite a cool solution to me. And then I saw the hack in front of my eyes.

Sunday, November 6, 2011

TouchFire: Finally a real keyboard for the iPad

If there's one complaint that can be made about the iPad across a large number of users, that complaint would be that it just isn't built for content creation where a large part of that criticism comes from the fact that they keyboard just doesn't allow for it. The touch keyboard doesn't provide the necessary feed back for users to type continuously without looking at it. I've heard of an effort to make a screen which actually uses a small electric current to create a pull on the finger to give the person that actual feeling that they are touching a keyboard. And while that kind of screen may solve the problem across every kind of device here's a solution which is both elegant and a work of genius.



Like I said. Elegant and genius. It completely utilizes ever aspect unique to the iPad to create a solution that does not get in the way. With just 36 days to go they've already hit 467% of their Kickstarter requirements but more really doesn't hurt now does it? Head over to the Kickstarter link under the video to check it out.

If you want more updates on tech stuff do follow me on @area51research on Twitter. Also I just started a new tumblog to feature indie projects at http://www.theindiezone.tumblr.com so give that a look and help me pass the word about it. You can follow that Twitter account on @theindiezone

Thursday, November 3, 2011

An interview with Addictive Mobility's CTO

As an accompaniment to my post on Google's lack of innovation in the mobile ad space (which you really should read) I thought I'd include the videos of my interview with Addictive Mobility's CTO and co founder, Dilshan.


Google's disappointing lack of mobile ad innovation

About a month ago I was fortunate enough to be sponsored by the company I work at to visit the GITEX 2011 tech exhibition in Dubai. While there I took the time to find out what talks and panel discussions were on and available for pass holders to attend free. On the side of mobile, apps and content world there were quite a few interesting looking discussions and daily addresses (most of which turned out to be duds) of which the talk titled " Daily Address: Mobile Marketing; The New Frontier - Mohamad Mourad, Regional Manager, Google MEA" caught my eye. The talk and the panel debate regarding targeted ads turned out to be a major disappointment for me in the end and I still can't believe I ran into a lack of innovation of this nature.

What the Google guy spoke of

As a member of the audience rightly commented, Mourad's talk on how advantageous mobile advertising is to companies was basic at best. The talk seemed better structured for a set of individuals who were absolutely new to the world of mobile advertising and I wouldn't be surprised in fact if the man had just taken a presentation he had already delivered countless number of times before to various audiences and attempted to deliver the same thing to us. Leaving the issue of being basic aside what was more interesting were the points he decided to focus on.

The first point he went harping on was the opportunity for advertisers and developers alike to use mobile advertising as a means of getting exposure and generating income respectively. His chosen example of Angry Birds wasn't one I would have chosen as it is definitely an edge case and doesn't apply to everyone. More on why that's important later. The second point he chose to go on about was the various types of rich media ads that mobile advertising could support thus leading to (apparently) better engagement with consumers and "increased brand awareness". Oh the agony of having to sit through a cannon ball of buzz words. A lot of buzz words that don't seem to ever touch upon the real issue of mobile advertising.

My question is...

Wednesday, November 2, 2011

Bling my iPad 2. For £5m

I won't lie, I honestly think making luxury products out of things like mp3 players and computers is really one of those over the top things in life. I guess whatever floats the boat right? In the case of this iPad the likelihood of the boat being sunk seems to be greater. And I'll admit. As far as pulling out all the stops goes, the people behind this really didn't hold back. This iPad 2 features:
  • Two kilos of 24 carat gold and 12.5 carat diamonds.
  • A bezel made from ancient rock and the crushed remains of a Tyrannosaurus Rex. ~750g of Canadian Ammolite was mixed with 57g of fossilised T-Rex leg to create the bezel.
  • The rear Apple logo is made from 52 individually-set gemstones and the front includes an 8.5 carat diamond surrounded by a further 12 small flawless ones.

Now tell me. Where are you going to use this? I suppose if anyone ever tried to grab it, it could be converted to a lethal blunt object in a pinch. Read on for more

iPad 2 made from T-Rex fossils costs £5m • reghardware

If you want to be updated with the latest in tech and science consider following me on Twitter: @area51research

Monday, October 31, 2011

Quick update

In case anyone is here looking for a new article, my grandma passed away two days ago and as a result I will be back to blogging only tomorrow :). In the mean time feel free to keep an eye out on my Twitter account @area51research since that'll be going live again.

Saturday, October 29, 2011

Android Developer Tutorial is Deprecated?

I've dabbled in Android development for some time having created a few homebrew apps for my personal usage including a small password en/decrypter. But I'm finally taking the plunge into pro development to expand my skill set. As I was going through the Notepad Tutorial on the Android SDK I noticed something strange in the final step for Notepad Exercise 1.

The code given in the Android Tutorial is


private void fillData() {
        // Get all of the notes from the database and create the item list
        Cursor c = mDbHelper.fetchAllNotes();
        startManagingCursor(c);

        String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
        int[] to = new int[] { R.id.text1 };
        
        // Now create an array adapter and set it to display using our row
        SimpleCursorAdapter notes =
            new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
        setListAdapter(notes);
    }

But when you check the documentation you find this.

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)

This constructor is deprecated.
This option is discouraged, as it results in Cursor queries being performed on the application's UI thread and thus can cause poor responsiveness or even Application Not Responding errors. As an alternative, use LoaderManager with a CursorLoader.

The documentation for the LoaderManager isn't exactly the easiest thing to understand for someone who really is on their first day of Android (even if they have a decent enough a Java background) so maybe it would have been better to at least include a Notepadv4 exercise to cover this? Anyway I'm going to redo the Notepad exercise once I'm done up to v3 and I'll post the redone version using a LoaderManager.

edit - Upon checking again I realized the SDK version this applies to is actually one that is higher up than what I am using currently. Version 11 to be precise. Regardless of that they really need to update the tutorial. Maybe we'll see a tutorial fragmentation now.

Friday, October 28, 2011

Generating and Selling a Tech Business Idea

This is the recording of the presentation I delivered at Refresh Colombo where I discussed how to generate and sell a tech business idea. For those of you who may be reading this from abroad some of the views may seem overly simple but bear in mind that the crowd at Refresh Colombo is a very diverse one. It isn't just a geek community but it also includes a lot of people who just have an interest in how technology is finding its way into every facet of life today. If you are looking into how to sell the idea my suggestion would be to skip to the second video but as I say right at the start, generating and selling are not two concepts that live apart from each other. They are interconnected and move together.




The essence of my talk revolves around these key concepts

Stanford's AI Class: Unit 2 - Problem Solving (search)

Well it's mostly the absolute foundation of search algorithms but I still think it would be useful anytime as a refresher course for a lot of people. Stanford university lecturers have an odd habit of jumping about 5 chapters ahead into a topic yet to be discussed so you need to have some major patience to hang in there at times. Not so much in this unit but in the latter units you feel it a bit. Anyway. Here's the playlist compiled from the 2011 Stanford AI course (ongoing) Unit 2.



To keep up with more tech updates you can follow me on Twitter @area51research

Thursday, October 27, 2011

Apple Opens Up Lossless Audio Codec Under Apache License

Apple Lossless Audio Codec

From the welcome page

"The Apple Lossless Audio Codec (ALAC) is an audio codec developed by Apple and supported on iPhone, iPad, most iPods, Mac and iTunes. ALAC is a data compression method which reduces the size of audio files with no loss of information. A decoded ALAC stream is bit-for-bit identical to the original uncompressed audio file.

The Apple Lossless Audio Codec project contains the sources for the ALAC encoder and decoder. Also included is an example command line utility, called alacconvert, to read and write audio data to/from Core Audio Format (CAF) and WAVE files. A description of a 'magic cookie' for use with files based on the ISO base media file format (e.g. MP4 and M4A) is included as well.

The Apple Lossless Audio Codec sources are available under the Apache license."

Wednesday, October 26, 2011

Collection of inspiring videos to get you 'started up'

Need motivation on working on your startup? Been sitting around for weeks not able to ship that last feature out? Can't get started on shipping your first feature out???

There's an interesting thread over at Hackers News asking for some inspiring videos to get the thread starter motivated to work on his/her startup. Even Paul Graham took some time to leave a quick response to and others have left responses to some really good stuff I didn't know was out there on the internet.

I'll take the time to watch them and when I find interesting stuff I'll probably push it over to my techstopmuse tumblr and let you guys know. If you want to stay update follow me on @area51research for the latest in tech and science updates.



Oracle vs Google goes way past Halloween

Looks like I'll have to put the pop corn away as the trial between Oracle and Google gets postponed to a date that would be next year. NEXT YEAR! And I was hoping for a treat this Halloween. To be honest, having seen the charges and the documents I can't say I am in favour of Google and have been watching this trial intently because just like the solar flare activity a lot of people seem to be pretending these damages caused to Android by the patent battles don't exist.

The main point of this particular announcement is that the plan for the trial has to be presented in the following three stages.

1) Trial of copyright issues

2) Trial of patents

3) All remaining issues including damages and willfulness will be tried.

For a much more detailed look at how it will work do take a look at @fosspatents blog. (Oracle-Google trial postponed beyond the end of the year - http://pulse.me/s/2A8cD)

And pop over to Twitter and consider giving me a follow @area51research

Tuesday, October 25, 2011

Mild disappointment at Refresh Colombo

A little less than a week ago I was standing before the tech community of Sri Lanka at refresh colombo having just delivered my first public product demo of Project MADA and was feeling exhilarated. This product demo was the result of me having opened my big mouth at the previous meetup and suggesting that we have one person come forward every month to showcase their product. And of course I said as the person to suggest it that I would do the first product demo. Giving everyone else an extra month to get ready for their chance to demo.

So there I was standing in front of the crowd holding a mars bar in my hand and telling them that the mars bar would go to the first person to say they would step up to take the challenge next month. I knew we had plenty of web developers in there. I know we had plenty of people fresh from their degree with final year projects having been completed and could easily step up to demo them. But as I stood there almost pleading with someone to step up and take the challenge I realised even before I started the auction style count down that no one was going to come forward. And I said, "going once... Going twice... Remember what Steve said people.. real artists ship.. aaanndd... gone!"

The mars bar remained with me. I couldn't get myself to eat it since I so wanted to see someone take it. So I gave it to the newly married man in the house and asked him to share it with his wife. Something put to good use at least.

How about we have an idea session?

Looking back at it I suppose I should have seen it coming but we still got a suggestion on Twitter to give room for people with ideas to come present those as well. So I thought about it and it made sense. Two ideas being presented on the days where one product wasn't set to be present. And it makes sense because having worked with a lot of Sri Lankans on idea generation and refining I know a lot of us miss the point in designing solutions because we keep addressing the surface problems instead of the root cause. So it makes sense for people to come forward and get some serious step ups in creating viable business models that don't revolve around just an abstract concept.

That said... I'm still not entirely happy. And I wont be until I see someone creating something and actually showing it in front of the audience and even releasing it there. Let's look at the problems I want to see solved by this session.

Being able to give and accept direct constructive criticism

There's a big cultural barrier that needs to be broken down to get a silicon valley created in Sri Lanka and ons of the hardest factors to out is our inability to accept failure as something that can be respected. Especially after someone attempts something brand new. Even worse, the critics are happy when whatever they said would go wrong does go wrong. They berate people. And in many communities it becomes something that defines that persons future with him/her being considered unsuitable and far too unstable for a marriage. This is reality.

As a result we've ended up as a community that simply deals in services. Why do services match this attitude? Because in the case of services you let the client dictate the scope to you giving you the assurance that you are building something that will be used. Products on the other hand are one size fits all and are high risk along with the risk of being easier to compete against. The returns on being successful are immense and can be much more rewarding at a personal level. And of course products are what can really spur innovation on since it is the maker of the product that determines the direction that it should take.

The problem is that taking this risk is tough in our society so one should jump at taking the opportunity when there is a community just waiting to support you. At the same time we in the community aren't fully aligned towards respecting failure after serious attempts either. Maybe that's why people didn't jump at the opportunity either. Because that trust isn't there yet. Which is why I took up the first step and the community support feels awesome. More awesome than a lot of things have felt in a while. And I'm urging people to take a step forward. Chicken and egg be darned just get your act together in front of that crowd. You'll already be one step ahead.

The problem of all talk

I'm being realistic here. As a nation we have a fantastic environment of people who talk. Less people who talk sense but we have enough people who talk. We don't have enough action. I'm looking forward to people finally taking steps towards proving they aren't just critiques of ideas but people who can actually do. It's a serious cultural barrier that needs to be broken down.

Like I said. Having an idea session is excellent towards building problem solving skills. But if we are going to just stand there proposing ideas while the people with the idea don't get down to working on them it'll have all been for nothing. I speak from experience here with my only saving grace being that I insist that I am just an idea guy. But I'm doing something now right? That brings me to the final piece I wanted to fix using this session at Refresh Colombo.

Commit or be silent

Committing to something means that that's it. You are in it for the long run. Sure, maybe you won't succeed but committing ensures you won't go easy on yourself. This weekend thanks to work I've been a bit lax on my preparation towards making Project MADA ready to be taken online. And I'm sweating thinking omg. What am I doing? The only reason I'm taking time to write this blog post is that I feel its important to ask people to come forward. But back to committing.

The first step is always the hardest. The first bucket of ice water is always the hardest. Assuming one is sober the first of anything is always the hardest. Even if it's losing your virginity. And coming forward in front of a crowd and saying this is what I'm doing here's my plan and here's when you can expect to see this throws your subconscious into the deep end leaving you no choice but to either finish the product or just not
show your face around the community for a while.

Why this all upsets me so much

My dream is to help build Silicon Valley Sri Lanka someday. I have in fact spoken about this idea to several people including a potential investor and I've been told that the time isn't right. And I was upset about being told that. For me I saw things like Refresh Colombo happening and I wanted to believe that we are on the brink of disruption here. I was sadly proven wrong last week when I ended my presentation with no one taking the challenge. So here's my call out to people. You've been blessed with an opportunity that you've been pining for for years. It's very easy to say "great idea.. great initiative.. can't wait to see what comes out of this" but it takes guts to get up there and actually demo. Even more than an idea, demoing is tough. It's an incredible amount of pressure and most of Refresh Colombo that day is a haze for me because I was just thinking of what would happen when I present. Will my system throw that one exception error I know is still hanging around in the code? Will I click the wrong demo file and come up with a result I don't expect? You need to go through that for yourselves.

Please don't leave me with that Mars Bar again. You want to be somebody in this tech world? Quit reading the blogs of how some 21 year old is now worth oodles of dollars. It really is never too late to get a move on. But first you've got to start moving.

"Real artists ship" - Steve Jobs