227 karma · joined April 28, 2013
I am good with lua (openresty),nodejs,couchdb and elastic search.
careers profile: http://careers.stackoverflow.com/akshatjiwan
email: akshatjiwan@gmail.com
One other benifit of working for the end user is that in many cases you end up being paid for maintaining (for example being a server admin for a web app) the application you wrote for them. This can be a nice source of recurring income.
Which means that you can write an erlang module and call it with couchdb show functions and have the benefit of a ready made http api for you.
A practical use of this would be to use mnesia as an in memory key-value store(for similar things that you would use redis for) and then call the functions in the module from a show function. All the benefits that you get with erlang you get with couchdb.
One of the killer features (for me at least) is user accounts management. In 3 http calls I have login-logout facility in my app ready. I can't tell you how impressed some of my clients are when I show them a V1 of their product in a couple of days.
1. Indexes are built and appended to at read time.
2. If you change the view code an index rebuilding will occur. (A hash of all the views in the design document is taken and compared with the previous hash. So even a small thing such as adding a space will in effect change the view code and trigger rebuilding of views.)
3. No change to any other part of design document will have any effect on views.
I wrote in detail about it here (http://staticshin.com/programming/does-updating-a-design-doc...)
I think I started reading after @edw519 said something like he reads his code everyday before going to sleep. While during writing my focus is on making the thing work when I am reading I am more critical of my code. Not as good as having a review but still helpful.
Also I think reading code of other programmers is a good exercise. Reading different styles of books is already recommended to writers and I think that programmers can extract same benefit by reading code of different programmers. If nothing else at least it will develop your debugging abilities.
I am Akshat, a freelance programmer (http://www.staticshin.com/freelance-programmer)
Do you want someone to help you with your existing codebase, or write a new feature or code an entire application from scracth? Maybe I can help (http://www.staticshin.com/how-can-i-help-you)
contact: akshatjiwan@gmail.com
Edit: And a very happy 2015 to you :)
Also here is the clickable
A couple of bad clients. Didn't listen to my gut feeling and worked with them. Sucked up months of my time first in working for them and then getting them to pay me. Lesson: upfront payment :) as a sign of good faith.
I think I did okay with friends and family which always a relief to know :)
1. couchdb: it was the obvious choice for me one because I know it well and second because it is document oriented. Most of my data is JSON representation of real world documents like the rent contract, the monthly bills dues etc. And lastly because I feel that couchdb is an excellent server side JavaScript environment. I am using it to render templates, validate data and even for user accounts management. Lots of easy wins for me there. Plus who knows I may decide to add an offline component to my app in the future :)
2. Openresty: I discovered openresty from a hacker news thread (thank you HN :-). I already used nginx but I was a bit frustrated with it when I could not do some slightly complex things. Couchdb has an http api and I just needed some tiny bit of scripting to make it suitable for my application. I think that openresty + couchcdb/elasticsearch/oritentdb/ any database with an http api is a great combo.
3. Jquery: old and faithful. I have worked with knockout in the past and while I really like it I feel much more productive with jquery.
4. simple grid: a very small css grid framework. If I need anything else I just extract it from twitter bootstrap. For example I extracted table styles from it when I couldn't get my tables to look as good. It works well for me.
To get by I started freelancing. Odesk is a pretty good place to work if you are starting out. The people there gladly trade inexperience for a tiny amount of salary(work!) and it can be a start. What I learnt though that it is more or less pointless to market yourself to the technology people (but if they do come to you on their own it is worth it to discuss the opportunity since you have a slightly upper hand in negotiations). Rather it is more profitable to market to people who use that technology.
So for instance suppose you work on your programming skills and learn how to build a CMS. This feat will be "meh" for technology people. They do this stuff day in and day out and see no value in it(maybe they will even criticize you for using jquery). But if you can learn to sell this CMS to say a local travelling agency who is still marketing their services through blogger, by showing them how much more they can accomplish if they used a better tool, then you are on to something. A single sale can transform into managing the server for them which can be quite a good source for recurring income.
Another thing that I learnt is that it is very valuable to have a domain expertise (besides programming). Taking the above example if you learn how the travelling agency conducts it's business you will no doubt find ways to generate income from this knowledge. Maybe you will design a CRM for a them or maybe you will create a tool that makes it easier for them to find new leads or send invoices or whatever.... you will learn to look out for things that can be done better with a program and that is where the real money is. That's what these companies do after all don't they?
Unless you have a debt, or a family to look out for, may be you are better off without a job (or maybe not). Regardless of this take time to learn how to market yourself and the stuff that you build. Oh and how to deal with negativity I don't know what will work for you but I pick up a PG Wodehouse book and laugh till my stomach hurts :)
Deus ex
System shock 2
Wipeout pulse
Final fantasy (sound tracks for all of them are great but my favorite is battle on the big bridge)
Monter hunter freedom 2 (The town theme)
As I am writing this I have Innocent sea (Sieken Densetsu) on repeat :) If you do listen to music while programming make sure that you don't leave the earphones plugged in for too long for me 30 minutes at a time works.
It is not as difficult as you might think. Extract a bunch of choicest testimonials and put them on your website along with a description of what you do. While this won't get you new clients(at least until you start optimizing for keywords) it will definitely make you more appealing to those who you market to directly and when they do background checks on who you are and what you do before giving you work. Treat your website as your "reputation certificate" :) If you design it well you can leave a good impression on those who come visit.
The hard part is marketing. If you work for people in the technology you should have pretty good response by sending them emails directly and if you do it right you can set up an interview or two with them. If these interviews convert to actual paid work this will be much more profitable and long lasting than the contracts you took on odesk 'cause of two simple reasons:
1. In the "real" world people are much more open to form alliances for mutual benefit. On internet they can say to themselves "meh we will find another. More from where he came!"
2. Network effects are much much stronger. Or maybe I should say "convertible". I have had this hunch that once you start to work in the "real" world more people know what you do and you do get more offers just because you "did work for that guy maybe you can help us as well". Odesk and other sites are localized closed market places where they want to keep the talent for themselves and do nothing that may help you grow. Which makes sense because it adds to their appeal when they get to say "you find this freelancer exclusively on odesk". But for you this is not good at all.
The transition can be rough. Be a bit careful. I made the mistake of permanently deleting my odesk account 'cause it was the first google result on my name and clients would not accept anything I charged in excess of that amount (a vicious cycle since I charged little on odesk so I could get more work and now I couldn't do anything about it). That meant that my source of guaranteed work was lost and well... dry spells are not fun :) If you can try to make the transition slowly so it does not hurt your income.
I mostly work with couchdb/couchdb-lucene,openresty and nodejs.
My stackoverflow profile is : http://stackoverflow.com/users/1263781/akshat-jiwan-sharma
you can reach me at akshatjiwan@gmail.com
local res1,res2,res3 = ngx.location.capture_multi{ {"/api/1"},{"api/2"},{"ap1/3"} }
The above function runs in a non blocking synchronous manner. No http is involved it is all done internally and it's really fast. It can be very helpful if you are making multiple api calls from your code. I personally use it along with couchdb and I have never been happier writing code :)
There are already a lot of modules for openresty. Not as many as node js but plenty (and of a very high quality). It also has a framework built on top of it called lapis (http://leafo.net/lapis/) so if you are used to mvc type of frameworks in other languages you should feel right at home with it.
https://github.com/orientechnologies/orientdb
All of the good stuff is in the wiki :)
What about you? What plugins do you use?
I would love to know your thoughts on this.
1. Some of them flat out refused to use such a service. As you say the increase in costs was a detriment to them.
2. Some tenants said that it would be a very good idea and they would not mind paying higher rent if it meant that it was more convenient for them to pay.
Group #1 were people who had a family to support and increase in cost was significant. Group #2 were single persons with high salaries and 30-100 additional monthly cost meant nothing to them (this includes the fees of wrinq as well).
I also discovered a third group of people. Landlords who were willing to take in less rent if it meant that their tenants were happier. These people did not keep tenants for profit but for company and maintenance of their properties ("better than it being empty and gathering dust") so I will be targeting groups #2 and #3.
Also I think you can have a tremendous advantage if you look for landlords locally and offer them additional services. Like I have tied up with a few agents in my locality so when the existing tenants leave I am going to make sure that the landlords find new ones quickly without any difficulties. This way I promise new business to agents, good tenants to landlords and continuous income stream to myself.
Finally tie up with your local banks. Despite what most people think banks these days are quite open do business with individuals. They can offer you a proprietary api for a small upfront fees (and lot lesser transaction charges) which you can use to lower your charges. But don't do this at first. This should be a last resort when you have exhausted other methods or if you want to grow your market to group #1.
Anyway don't give up on the idea. Talk to people in your locality maybe you can discover some other ways that you can help them besides collecting rent.
I am working on wrinq, an application that allows tenants to pay their rent online. I think it's cool because it makes it convenient for tenant to pay his rent and for the landlord by taking care of bookkeeping and reminders. I am set for a launch in December.
Also I am working on an openresty book[2] (definitely an openresty guide) which also should be complete by December. The official docs for openresty are very good but when I was starting out I struggled with a few things(like ngx.location.capture) so the goal of this book is to help someone who is new by quickly showing him some core concepts. I think that a lot of people who already use nginx can benefit a lot by using openresty.
[2]http://www.staticshin.com/programming/definitely-an-open-res...
Some quotes:
> What readers ask nowadays in a book is that it should improve, instruct, and elevate. This book wouldn't elevate a cow.
> It is impossible to enjoy idling thoroughly unless one has plenty of work to do. There is no fun in doing nothing when you have nothing to do
Great light read before going to sleep :)