The majority of resumes I get are pretty boring word docs derived from the standard templates - it gets boring after a while and the candidates blend together. Just a touch of design is all it takes to stand out.
I used to use LaTeX but couldn't figure out how to style it exactly as i needed.
If you do use LaTeX, use the \LaTeX function.
I wouldn't pay for it, but it would be nice.
My resume  and source  for reference:
When you're a new college grad, it's assumed that you know jack but are hopefully smart enough that you can learn it. Even if you've had some internships, it's understood that someone else was calling the shots, and you're just doing what you're told. The only real exception here is folks who've shown some true entrepreneurship or have already made significant open-source contributions.
Therefore, the questions that most companies ask new college grads are to assess potential - what you got out of your college courses, what initiative you've shown in your life so far, what your general level of curiosity, intelligence, etc, etc, etc is. Hence lots of puzzle-type questions and softballs to give you a chance to highlight the best stuff you've done in the first 20 or so years of your existence.
However, when you have 15 years of experience, you'd better know your shit in several areas related to your work experience. Expect to be grilled in the top few technologies you list on your CV. Also, at this point, you're expected to have shown good judgement and leadership at some point, so expect to be asked about that. And savvy companies know that in 15 years, you've likely royally screwed up on some occasion, so expect to be asked about that in order to demonstrate hat you're honest, humble, willing to learn from mistakes, and a whole slew of other things smart developers want to see in their experienced comrades.
In other words, review your work experience so far - what have you learned? How have you demonstrated your value? Where have you grown? Where are you still growing? Be prepared to talk about those things - and don't pass up the opportunity to do so.
Many prospective employers and future coworkers will be concerned that your knowledge is 15 years old, so be prepared to answer potentially condescending questions about how you've kept your skills up to date (and I sure hope you have).
(Nevermind that everything interesting in software was discovered 30 years ago - that won't impress anyone who's not already very aware of the fact, so it's probably not worth pointing out.)
Oh yeah, and expect to code. At the very least, expect to show some code you've written. This should be true (at clueful companies) for new grads as well, but is typically more true for experienced hires.
I'd talk to your significant other and be honest with each other.
Try to schedule some guilt free time so each of you can do something you enjoy. Just make sure you respect that schedule that you've agreed to, otherwise you'll find yourself with all the free time in the world and no one to share it with.
But do share your experiences. I am curious to know.
This provides something to look at to distract me for a short time (helps me to get ideas popping back into my mind) and just generally provides some background noise.
I also do this so I have a record of who contacted me and if I think they are at all interesting. I usually don't refer them anyone and I usually don't connect with them unless I've worked with them in the past.
Kevin Rose's Foundation interviews are also very good.
That's generally how long I need to break an addiction
whois -h whois.arin.net 126.96.36.199
NetRange: 188.8.131.52 - 184.108.40.206CIDR: 220.127.116.11/15
OriginAS: AS36420, AS30315, AS13749, AS21844
NetType: Direct Allocation
Sorry, just hit a nerve. Like doing some OS updates (Windows) and then needing to reboot to "complete the installation". I'm sorry. That totally sucks.
(Funny surprise: the one for this comment box expired before I submitted this comment.)
oh gosh its okay, I'm just kidding :P
And yet..... all I can think of is to stay up all night creating a "replacement HN" just for Saturday morning. I just started using Django and it would be perfect for this. Must. Resist. Must. Live. Real. Life.
I make GoJS, a HTML canvas-based diagramming library with all sorts of useful features. Node and link concepts (with data binding, templating), layouts, an undo manager, lots of customizable tools, drag and drop/cut and paste.
In other words, a very rich set of diagramming features atop HTML5 canvas.
I think its cool, because it took two years of canvas tomfoolery to get working well, and I think its much faster than similar diagramming libraries for canvas out right now. A lot of technically interesting stuff was encountered while making it, but I haven't had the time to write about my collected intricacies yet.
Or straight to samples:
Firefox warning for that specific sample though. I need to change the default sample this week.
By the way, if there are other canvas library authors out there who have had interesting (or downright weird) issues with various canvas implementations, I'd love to hear from you!
PouchDB is a full reimplementation of CouchDB inside the browser (using browser storage), you can build applications that work offline then sync your data with 'the cloud'
http://angularjs.org/Angular UI is amazing http://angular-ui.github.com/And Angular for Bootstrap is also amazing http://angular-ui.github.com/bootstrap/
I'm not a great programmer, so that's what excites me. It's flexible enough that as you get better as a programmer, you can plug that right in.
And that's what I think is cool.
Even though it's not "cool" in the sense that it's very low level and doesn't do fancy UI stuff, my asynchronous code has become significantly cleaner and easier to maintain through using promises rather than having callback pyramids. The ability to wait for a number of promises to resolve before firing the next makes life so much easier too.
Its not sexy, but it gets the job done for pretty much everyone.
Github repo: https://github.com/mrdoob/three.js/
It breaks down large frameworks like jQuery, Underscore, Backbone, Twitter Bootstrap, etc into small, reusable, and composable micro libraries. There are UI elements like tool tips and modals, wonderful and tiny DOM manipulation tools, well documented AJAX libraries, and more low-level functional and control-flow related tools. It's really amazing.
It's by TJ Holowaychuk too, who is huge in the node community (Express, Jade, Mocha, Stylus, Connect, and many others).
Non direct link (to plug my own site with lots of other similar stuff)http://pineapple.io/resources/ace-high-performance-embeddabl...
Also if you like Backbone.js, don't miss Knockback.js (http://kmalakoff.github.com/knockback/). Now you have observable (view)models and collections. Definitely cool.
It's not the coolest, but I think it's the coolest selector engine. I'm also totally biased.
Why I think it's cool? Well it's really fast, and it's lazy which allows you to work with really big arrays. Plus it's a really tiny library providing you with a streamlined set of APIs for working with lists (similar to array.js/Enumerable)
If you're working with smaller lists it's probably best to go the lodash route, but if you want it to be lazy then I believe lz is the right tool for the job.
From the site
Anyway, I use this site as a quick reference to see what is new in JS world. www.functionn.in The author seems to be pretty meticulous in his updates, so there's a lot of interesting libraries. Seems like a labour of love for him. (P.S: Thanks, Hirvesh)
There's also Hakim who comes up with some interesting stuff from time to time www.hakim.se
Here's another that came up on radar lately -- http://soulwire.github.com/Makisu/
Subscribe to the smashing letter magazine's newsletters for a periodic stream of latest "cool" into your Inbox.
Hope that helps.
An obvious use could be as a library building tool. i.e. All the macros could be restricted to the internal methods used to construct the library DSL. All the public methods could look like standard js, and the library users would be none the wiser to the magic used internally to make the library construction more efficient.
For example https://starthq.com is using about 35MB of RAM and is easy to debug despite some pretty complex business logic around generating site thumbnails.
Speaking of data tables, I wrote a little function to make table headers sticky so they stay at the top of the viewport as you scroll down a large table. https://github.com/kingkool68/stickyHeader No options, just include on the page, add a class of stickyHeader on the table and you're done.
Just instantiate a model with an endpoint and an ID and Backbone will do all your syncing for you. You can have views listen for changes to the models and update automatically. You can add easy support for client-side navigation via push state.
Backbone takes tedious tasks and makes them fun. Highly, highly recommended.
I bet a bunch of you actually searched for that on google. What's sad is that is probably the name of some obscure testing library. What have we come to...?
My new years resolution has been to push out a mobile application. I've been working pretty tirelessly in the evenings and on weekends. I work full time mind you, so it's been hard.
I pushed as hard as I could with tutorials. I would slap tutorials together and pray that everything would compile and the app would have added functionality. Sometimes it worked, sometimes it didn't...
Anyways, I'm not the type of person to sit down and read an entire book on development for a platform. I can, and I have, but it just doesn't bear fruit like I would expect it to.
So, I had to make a project. I did as much as I could, and then I would dig through the books I have [I have way too many] and try to find an answer. Again, sometimes it worked, and sometimes it didn't.
In the end, I opted to hire a mobile dev consultant. Yeah, he isn't cheap. Yes, I could have maybe, eventually, figured out some questions I have, but I know in the end I would have likely gotten discouraged. Or maybe I would have gone about a task the completely wrong way and wasted my time on something pointless.
I am only about 10% into my current budget for a mobile dev consultant. It's going okay. If I go through my budget, and I still don't have that much to show for it, well at least he's showing me HOW to solve problems. Where to look, what processes to go through, that sort of thing.
I'd look locally and see if you can find a dev to hire for tutoring. Those bootcamps are a bit more money, and they wouldn't be able to give that personal touch. Pick a project you think you could accomplish and poke at it tirelessly.
And if you're married, make sure your SO supports you in this. It won't be easy. Good luck
At the end of the day you're the only one who can answer this for yourself.
Are you an absolute beginner? If so, pick a language (I recommend Python), go to Codecademy, work through Zed Shaw's Learn Python the Hard Way and see how you're doing. It's natural to feel extremely overwhelmed in the beginning. Try to build stuff on your own. After some time, you should assess your situation. If you feel like you could have advanced more with a bootcamp program in the same amount of time, go ahead and apply to one.
Mind that I haven't participated in any dev bootcamps. I find that I get extreme pleasure by learning things on my own. Even then, I think I would like to participate in a dev bootcamp some time.
Last year I took a 3-day, all-day class at MIT on relational database programming. I had learned database stuff on my own, picking up the bits and pieces that I felt I needed to get work done. I found being "forced" to go through all of the material in the class, whether if I thought it was relevant to me or not, was very enlightening, and well-worth the time. I could have learned all of that on my own... but I didn't.
But as posted below, I think the big negative of self-learning is that the HOW questions go unanswered many times--and I mean after countless online searches too. Luckily my aunt is a great programmer so I am able to get most of my questions answered. I'm sure someone in your network can serve as a personal consultant...I don't think its necessary to hire someone. Just network around, I like to think most people are helpful.
If you are starting from scratch, it may be a good idea to do a quick run-through on code academy as the lessons give you a basic functional understanding as well as pretty good syntax rules so these can at least be engrained in your head. I don't think I will necessarily be faster in teaching myself what dev bootcamp teaches in the same amount of time, but I know that I am gaining, and will have gained, the ability to think and struggle on my own. To me, its a priceless skill that I am learning to appreciate.
I ask this because I frequently signup with Facebook on some apps, and purposely put it to "Only me" privacy, to keep my activity hidden from my Facebook friends. I would hope that doing so, would keep me out of those types of Open Graph searches. Can anyone confirm/deny this (I don't have Open Graph Search, yet)?
Edit: a Facebook app that where you can click on friends you want to sleep with. If they have the app, they are notified. I would think this would be more cool if both of you are only notified if you both signify that you want to sleep with each other. This could also be toned down to just signify romantic interest to get more engagement.
If I understand the current user base of BangWithFriends, this will return no results.
Replace the app_id with the id of any facebook app you want to use.
That's just a symptom or side-effect of the real problem.
As the idiom goes, if you lie down with dogs, you will get up with fleas.
"Men who live in Toronto, Ontario and who use BangWithFriends" - 65
"Females who live in Toronto, Ontario and who use BangWithFriends" - 6
You can't find out who wants to bang who, right?
You only can find out that people want to bang. Which is true since the big bang 13.8 billion years ago. (well, humans evolved later, i know)
I can imagine Version 2.0 being even more general (a craigslist of discreet hypothetical matching) for more than just sexual arrangements. But continuing the sexual theme, obviously the next logical step is N-way group hookups.
It occurs to me that something similar could also be implemented in a distributed manner (for use offline or with decentralized P2P networks, etc...) using asymmetric encryption and split keys.
Not sure if facebook has a privacy setting to prevent others from knowing the apps I use but if they do then the developers of this app should inform this to their users.
If facebook does not have a way for me to hide from my friends the apps I use then IMO, facebook should have this option.
So yes, this seems to be true.
When I have the chance, I'll break open my crypto book and see if this problem is less impossible to solve than it seems.
We created a version that is more suitable for Facebook - for people looking for serious relationships instead of casual encounters.
We have got some good support in our beta launch.
It was called Rubbed Out and the point was to list all of your friends you had thought about while masterbating.
With bad permissions, or a small sample size, it gets really scary.
This kind of app is completely fucked from the start bc of the gender disparity.
Using FB connect killed all the fun in that. You can tell by the disclaimer they're now using on their landing page.
Rabbit Hole Syndrome is a symptom of having a curious, persistent, independent mind. If there were a drug that cured Rabbit Hole Syndrome, and everyone just worked on Shipping Their Products and Not Asking Questions, there'd be no one left to make the interesting discoveries that make the world better in the long run.
There are very famous quotes from Richard Hamming (see "You and Your Research") and Richard Feynman (see "Surely You're Joking!") about the importance of working on problems that seem trivial at first. Not only do they help you enjoy problem-solving for its own sake, but if you work on enough silly problems, then eventually the odds are good that you'll stumble upon something that other people will later think is really important. Incidentally if you read Thomas Kuhn you'll find that this tends to be how scientific revolutions happen: someone is bothered by some tiny little thing that doesn't quite make sense according to the prevailing theory, starts digging at the little cracks, and finally the whole system comes crashing down.
The major benefit of going down rabbit holes is that is opens yourself to serendipity: sometimes you'll turn out to be right about something for the wrong reason, or discover something that you later realize contains a solution to a seemingly unrelated problem. The more rabbit holes you've gone down, the more they start to connect.
In addition, frivolous research helps you develop a very "bottom-up" view of the world. If you know the details cold, then you are better able to see through high-level BS ("conventional wisdom") and evaluate things on their own terms. You'll find that regardless of what's optimal, most things are done a certain way only because they've always been done that way, and that regardless of what's true, most people believe things only because other people believe them.
Of course there are costs to all this -- in particular, "schleppers" will resent you for being irresponsible, and most people will think you're crazy if you ever explain what stupid little you've been working on lately. Which is why Rabbit Holers should try to should avoid actual responsibilities to the greatest possible extent and absolutely not care about what most people think about their work.
Anyway, to sum up, if you're lucky enough to be in a position to descend rabbit holes without impoverishing your family or bankrupting your company, I say go for it. It strengthens your most valuable asset (your mind), and who knows, maybe one day you'll discover something you can teach the rest of us.
By now it's 9:30pm. It's dark and cold. You realize what your original purpose was: Dinner with friends. That was two hours ago. You missed dinner, but hey, you got some satisfaction.
The above was more of an analogy about Yak Shaving than Rabbit Hole Syndrome, but there are parallels. Like you, I used to be obsessive about details and solving subproblems. I used to come home from work and work on my own side projects for similar reasons as your own.
But then an advisor said something like, "You need to focus. If you want this thing of yours to succeed, you have to focus on making it succeed. Nothing else should matter." So I stopped my side projects and I became so effective at building our product that my employees wondered if I ever slept.
Stay on target. Make it to dinner.
So I suggest you to try to build the minimum viable working program ASAP. Along the way, write all the things you would like to improve in something like an Evernote note, just a few lines for every thing you want to address and make better.
Then if you have something working ship it ASAP, don't care about what other people will say about the sub-optimal parts of your work: many programmers trying to achieve perfection actually end with a mess of complexity that does not serve very well the purpose of the software, so there is little to be embarrassed for a programmer for shipping simple software.
In the second pass, refine every part with the same approach: find a solution that within the timeframe you have is better compared to the previous one, but will make you able to ship a new version.
Also when you face a problem, other than reading the existing literature, papers, and the proper way to do it, check if there is an intuitive solution that is comparable as a result (even if maybe not provable or not perfectly optimal) but much simpler to implement.
But IMHO the golden rule is: don't freaking care, ever, about what other people think about your work. Often perfectionism is just a form of insecurity.
1) Try the pomodoro technique, or some other form of time tracking. When you're about to take a side path which may or may not be a distraction, you can decide how long it'd be worth investing in it. Once the timer dings, you can stop and evaluate if it was worth it.
2) A few years ago I started repeating in my head the phrase "real artists ship". Embrace imperfect or partially finished solutions that are viable.
3) Keep a list of things that you'd like to investigate more. I've found that the act of writing down the idea lets me stop obsessing over it. Later when you revisit the list you'll be able to cross off the things that you thought were important, but turned out not to be. By delaying work on these items, you're able to better explore the most important parts of the problem you're solving, and so your future self will be in a better position to evaluate which areas need deep research.
I'm like you. I write fairly vanilla production code, then I go home and work on alien technology. And I used to have the same problem as you: I'd get sidetracked and sidetracked, and somehow I went from writing a fart app to reading about type theory.
So I started skipping the fart app part, and started learning some more abstract theory. The nice thing abstract theory is that it's abstract---it's not incidentally connected to anything, so there are fewer places for you to get sidetracked.
So go sign up for a math course on Coursera, or learn the lambda calculus. They are so alien from your everyday programming experience that you won't have anything to connect them to---until you do. But then you'll be coming at the new topic in the direction of abstract to concrete ("a trivial application of x") rather than concrete to abstract ("there's a greater truth here and I MUST understand it!").
Also sometimes feel I read way too much
One post that really catched my atention that's related was: http://www.ribbonfarm.com/2010/03/18/the-turpentine-effect/
I related to it in the way that I find it difficult to see myself as a super nerd technical robocoder, I need to create too, can't not think about creating and ~wholism~ in this because it's the reason I started to learn it in the first place, so I accepted that
So, well, I'll buy a board, outline stuff and start on them, maybe I'll do an Output Week in that I'll try cranking projects for a week and this is good because of learning and etc like other ppl said here, but learning how to focus is just as much important, so is actually getting-things-done... so it's like "there's no problem in running as long as you know where you're going"
I think the anxiety increases as you don't do stuff and the more you do the more you also learn what's worth doing, no? Before I tried setting out to do a complete project by myself I'd probably accept the invites of "Hey let's start this project, you code!" more, now that I know the work it takes I'm way more picky because I know it doesn't matter if I build a complete skeleton for this but then there's nobody up to even do a fucking design for it and I won't be willing too... so it rings "not worth it"
If it's something that's clearly not ever seeing sunlight, if it won't be at least instantly useful for me, if no one is buying/using it(in the future)... why do it? even a painting has to have a meaning and a purpose
Aren't the best actors the ones that are picky about work they'll take? Aren't the top industry guys who get teased by Facebook, Google and most promissing startups picky? I'm pretty sure they are... I'd guess it's because they know they are basically unable of half-assing stuff, so they need to choose well what they'll set out to do.
I'd say that's the positive version of people with this personality trait, the negative version of people with the same personality trait are the anxious, lost, starting-a-new-thing-everyday-and-never-finishing-anything guys... so IMO it's something for each person to work out
At some point you realize your best days are the days when you delete more lines of code than you write.
But that being said, chasing rabbits is what will eventually make you more skilled than your peers. Which is awesome, except now you'll have put yourself in a perpetual category of being paid less than your worth because you don't fit the same performance evaluation criteria as everyone else.
All anyone cares about is a) are you easy to work with, and do you b) get things done to contribute to profitability.
Continutally stressing yourself out by spending more time on problems than they deserve and eating away at your work/life balance does not contribute to a) or b).
This actually has a label: Maximizers vs Satisficers.
And a little something I wrote about it regarding programming languages:
I think the key is to "choose your battles", and be a maximizer where it really counts, and try and be more of a satisficer for the things that aren't so important.
Something that's helped me: make sure you have multiple rabbit holes available at any given time. i.e. several problems, any of which is interesting enough to tempt you. Then you can make reasoned decisions about which would be the most rewarding to work on, while still giving in to the temptation of rabbit holing.
Another benefit: maybe by solving one problem, you'll discover the other was totally irrelevant, or a special case of the other. (At least for me, "Turns out I didn't need this to be perfect" doesn't carry much weight, whereas "Turns out I didn't need this at all" is quite convincing.)
The other approach I'd suggest is at the complete opposite end of the spectrum. Start treating your side projects like a real business, and create some process that connects real incentives to them. There are harder and softer ways to approach this. You can quit your job and now you have the focus in your side projects that you need to ship to get paid. You could also keep your day job and set up some automatic funds transfers into a semi-liquid asset like a CD or 401k, such that you leave yourself enough to cover the basic expenses, but so that the marginal income from your side project becomes significant enough to be motivational. Revenue is a great feedback loop getting you to focus on what matters, and letting go of what really doesn't.
You could also bring in another person, perhaps as a business partner, or simply have one of your friends agree to call you up once a week and have you give them a report. The key here is to clarify and draw attention in your mind to the work that you're avoiding, and the outcome that you want. In this process, it's important to vividly color the positive outcome be emphasizing the real changes it will create in your life.
For example:"This week, instead of shipping my product which will enable me to quit working for other people, spend more time with my family, own the high-performance german cars I've always wanted, and visit 20+ countries a year, I instead spend 6.5 hours working on a sort algorithm, and 5.4 hours fiddling with the presentation styles on the country-list drop-down menu in my app."
I used all of the techniques above when I was starting my first company, and they made a big difference in helping me focus on what was important in getting to market, and not OCD-ing out on things that were, ultimately, minor details.
Most of these tickets get resolved as "doesn't matter / won't fix" two or three weeks later - but myself.
As a recent example, I just spent a long time on a tiny plugin for CarrierWave (the Ruby/Rails file uploading gem). This took me through most of their source code (always good to read code, and I could probably PR on their project now), new Rails internals and techniques, and mocking and stubbing with RSpec (in the process, I turned up a bug with RSpec, which they promptly fixed; and I have a better understanding of mocking best practices and clean RSpec).
I do empathize with feeling I'm "not getting enough done/shipped" (if you feel that way?). To alleviate it, I try to cut corners and just get something out.
Time-boxing helps me do this -- "accomplish X in 1 hour". This doesn't happen too often, however. I know, like you, I prefer the learning itself; and, I view all my spent time as building experience and a critical mass to accomplish work faster in the future.
Also, I find pair programming helps immensely. I am sensitive to the other person's time, and thus naturally refrain from digression when pairing.
As for motivating myself to "schlep". I'm not sure what you mean -- menial tasks? I do those when I'm tired or having down time.
Finally, as in your case, I do this on personal projects and not on "work". That said, it can make it hard to get your startup and product launched - your own "work". Again, disciplined time-boxing helps. I have not mastered this, and find myself regularly looking for good time-boxing tools.
If positive user feedback 'gets you off,' as it were, try releasing something that isn't as perfect as you'd like it to be and see if there's any measurable difference in sentiment. I bet there won't be. Do it a couple more times and hopefully it'll break the pattern.
For the other case, try time boxing yourself so you can get back to the more interesting challenge. Make that other thing 'perfect' if you won't.
I think you're probably not doing projects to help people, but instead projects that you think would be fun to do. If you start with a burning itch, or a person that needs help, you will probably find it much easier to stay on task. This is not to say that there's anything wrong with exploring interesting technologies, or thinking about "the right way" to solve certain problems you find interesting... It's just to say that when there's a burning need the interesting diversions tend to fall away.
Hope that helps :)
It happened the most while attempting to study research papers.
A lot of times I would be unable to finish reading what I had planned, because I had stumbled upon an interestingly-looking concept and then proceeded opening up another paper on that subject and so on.
And then, of course, having returned back to the original paper, I would have to re-start reading from beginning to freshen up my memory.
Terribly exhausting process, so I can perfectly understand your frustration.
The only solution I found was to un-clutter my computer 'work-space' as much as possible: close any non-essential apps, unplug internet cable and each time I have the urge to stop reading and go research a newly discovered subject, I remind myself that I am only allowed to do it after finishing what I'm currently reading.
Another helpful thing for me is to remind myself what I'm trying to accomplish with whatever I'm doing at that particular time and what my long-term goals are.
For instance, if I'm working on a project for a client, the goal is to get the work done as soon as possible and obviously get paid. I am not working on said project to primarily enrich my knowledge, but to make money.
I can use the time after the project is delivered to draw conclusions from the experience or do further research.
This may sound trivial, but it really does help to constantly remind yourself of what your goals are, it keeps you in check.
For extra effect, every time you have the urge to let your mind wander too much, try imagining the possible consequences of not completing your task (on time).
This can be particularly effective if you're doing client work. Imagine how embarrassing/unprofessional would have to explain to your client/employer that you won't be able to deliver on time because of something that you could've prevented.
Side-note: you have not provided enough info, but you may have obsessive-compulsive disorder, which is nothing to be ashamed of, but you can only 'solve' this with medication, so you would need to see a doctor.
The problem is that you're interested in the wrong aspects of your side project. You're interested in learning and solving the code problems that come with your project. You have to shift your perspective to the human side of your project. You have to learn to see the user's issues as the problem to be solved.
Let's use an "reviews" site as an example. Your users cant find reviews, that annoy them. What you're solving is not a programming problem; your problem is "make it easy for users to find reviews". That is your problem. Your problems is not what the best algorithm for ratings. None of the code stuff matters. These users do not care about code.
When you've shifted your perspective to the human side you'll start to see hacky solutions differently. A crappy algorithm for ratings isn't a poor solution, it's a perfect solution. You've solved the reviews problem. You have a perfect solution.
The problem is that most of aren't actually excited about the human side of our side projects. This is because we get excited about things that interest us, and what interests a programmer is usually programming. It's not surprising we choose projects with interesting code problems.
Start reflecting on the human/sociological side of things before you choose a project. You might be surprised at what you find. Projects that seemed interesting may suddenly become dull and the one's you thought were dull might suddenly become interesting. A human perspective doesn't exclude building stuff with a code focus, just make sure coders are your audience. You and your users just need to be excited about the same things.
There is this classic saying about "building something for yourself" resulting in the best products. As with most sayings, they left out some important information. They forgot to tell to you to make sure that what you're building for yourself is the same thing you're building for your users.
Make your goals align with your users. Otherwise, you'll find yourself trapped down the rabbit hole.
Some extra thoughts
Don't forget that all your tricks to solve programming problems work on human problems. For example, for a reviews site it's easy to phrase the problem as "make it easy for users to find the best reviews in the most efficient and enjoyable way possible while allowing them to simultaneously book and view and and and....". Break it down into it's simplest elements first, just like you would a programming problem. The simplest element of the problem is "make it easy for users to find reviews"; best reviews are a separate problem.
You're probably good at solving programming problems, breaking them down and being productive. You know all the 37signals posts, all the design patterns, and can quote re-work by heart. Use those principles you have learned and apply them to the human side. Everything your learned about productive programming applies to productive life.
Whilst the desire to strive for perfection is in any craftsmen, ultimately what matters is getting the product to the customers and solving their needs.
Only after solving their needs should you start to indulge in the craft for what the customer cannot see, the internal quality.
I also sometimes describe this as "be lazy"... don't do anything that doesn't need to be done (for the benefit of the business and your customers).
I'd very much prefer to pick up an apple that isn't perfect than having no apple at all because of looking for the perfect one forever.
1. Set goals and fixate on them. Imagine what it will be like to have achieved the goal. Get excited about it and keep reminding yourself. When you're not making progress toward the goal, make yourself imagine the situation where you spend 6 months making unimportant things perfect and never achieve the goal. Imagine all the other goals you won't even be able to set because you're wasting your time.
2. Make other commitments. Make plans to meet a friend for drinks at 9pm. You only have 2 hours after work to get anything done â€" don't waste those 2 hours! If you can stay consistently busy, you'll notice quite quickly that not using your time effectively will lead you nowhere.
What I mean is, if you see a problem to solve, and you are able to keep working on your current task and to solve the problem later, then do so... just note the problem. This will immediately make you much more focused.
Then at the end of the day, review your list of rabbit holes and try and determine which ones are necessary for the current project, which ones would be educational / you want to do, and which ones can be discarded.
Basically rabbit holes are a problem because they are long and narrow and do not offer an overview of the entire grounds, so before jumping down a rabbit hole force yourself to survey the big picture and to see if you can step over it instead.
Reading about interesting stuff is deeply satisfying, and so it's something you want to justify so you get to do more of it. Actually getting stuff done is hard.
It's a bit like why so many techies - myself included! - vastly prefer to code new app features rather than working on marketing or sales copy. One is has a definite end point, and we feel comfortable getting there.
The other one can seem like work!
It sounds like at least part of your problem may be perfectionism. I did a bit of research on this a while ago, and it turns out there's a lot of literature on perfectionism and how to manage it. A quick look on Amazon under "Perfectionism" should bring up a few interesting books.
Long term hack: meditation.
How long with each, how much of each... that's going to take a lifetime to learn and figure out.
It might help to limit going down the rabbit hole too much, by researching what could be improved without actually doing it right then. Save it in a list for later, do the schlep, then when things get bigger chances are you'll actually need to take on some of the challenges on that list. And the more useful they become, the more satisfying it'll be.
I think it's actually "have kids" that solves this procrastination problem. With having kids you get so many constraints on your time that procrastination is no longer an option.
Over time, your rabbit holing will develop in a direction called a 'specialization.' Take note of which areas interest you and what areas have opportunity and rabbit hole that way.
I think you spend time weighing each design because you're unclear on your final vision of your product. You haven't definitely answered what your values and needs are that you're trying to solve.
This may be a hard question to answer. This is why MVP are neat, you can get a product out to consumers quickly and use their response to develop values and a overall direction.
I find you if you think too far ahead, you don't leave any room for random disruptive opportunities that can occur in each step.
So know where you're going. Figure out and focus on the next step that gets you close to that.
BTW, going down the rabbit hole occasionally isn't a bad thing IMO. But if you go down every rabbit hole, it can slow you down.
I knew his web site went down (scsi.com) where did you hear of his passing? Is there / was there a service?
Well said and thank you for sharing. I've never met your friend, but I respect his contributions and life as as fellow human. My sincere condolences to you, his friends, and family.
No one, except grieving professionals, really is.
Seriously, thank you for writing this piece the way you did, it is a good one. You are right: I never heard of him. You made sure that I read your words about the loss to the end and got to know what he did a little.
For any kind of machine learning or data processing, linear algebra is definitely a good thing to have. Basic calculus is good too, but I'd say may be less important if you're applying methods and approaches as opposed to developing them too. Differential equations, while providing an important set of mathematic tools which may open some doors you didn't even know existed, may not be the "highest yield" material from a programmers point of view.
In my opinion, probability and statistics is a big yes for anything data related, doubly so for algorithms. I'd also consider some graph theory, as it's amazing how many problems can be projected as networks and then approached from that perspective.
I suspect that differential equations could be left out if you choose. IMHO the subject is boring, but naturally others disagree.
I suspect it will be indirectly helpful to get practice writing proofs. I imagine some of these courses already involve proof-writing.
Finally, I also believe it will be helpful if you see some mathematical abstraction. I think the best place for this is abstract algebra (= "modern algebra"), and in particular group theory.
Here is one fact to convince you that group theory is cool. It turns out that there are 43,252,003,274,489,856,000 positions into which you can manipulate a Rubik's cube. But suppose that you are allowed to take apart the puzzle and then put the pieces back together any which way. Then there are 519,024,039,293,878,272,000 positions - exactly 12 times as many.
Why is the ratio of these an integer? Study group theory, and you will have a very good intuition for questions like that. Probably not something you will need directly, but I imagine it will sharpen your mind in the direction you'd like to go in.
Good luck to you!
2. What is your girlfriends name? What companies has she worked for? What jobs titles has she had?
3. If you're a US citizen then consider marriage if you are serious about your relationship or consider going to her country if you're not sure yet.
4. Submit her resume or her HN name so people can check out her past experience.
5. I googled your name and gmail and came up with no hits. This is one of those times when having a blog, github etc would be a good thing.
6. Ask her to talk to her old workmates and managers, they are the best source of leads for a job, especially if they know people in big companies that work with Visa issues all the time.
Are you madly in love with this woman? If so, be willing to consider leaving your job, and going to live in another country where you can both get residency status.
It may also be an option for you two to spend blocks of time in each others countries so that you stay under the visa-free travel requirements. For example, my girlfriend is from a Schengen country and I'm a California native. We can both spend 90 days out of every 6 months in each others' country, and do a bit of travel together in other countries. This has enabled us to let the relationship progress at a natural pace, and not rush into marriage for visa/citizenship reasons. I think that's really important. Some years ago I was dating a woman from New Caledonia whose ability to stay legally in the US was approaching a deadline. She suggested marriage as a workaround, but it really made me doubt the sincerity of her intentions.
If you're totally and completely in love with this woman, then you'll find a way. Asking around on HN can be one part of that, but more likely, you'll need to step your game up, hustle, maybe work some extra projects to cover travel/legal expenses, and possibly make some real sacrifices. If you love her with a real fire inside you, then the most important thing to both of you will be that you two are together and you'll find/make a way.
Sounds like it's time for you to go hard in the paint. Good luck.
As others suggest, I think your best option is to find an established company, one for whom getting visas is a well-established process. Good luck!
I am from India. I have no work for now and ready to start working on JS,Html,css & PHP kind of work. I am free from last September where last time I worked on a E-Commerce project.
I have previously worked on ASP.NET MVC. Made more then dozen of site and all of them still alive on internet with a great reputation.
These days I focus on Wordpress Administration, JS framework. bootstrap & jQuery development. This is all I love to work with.
I do work from Home (Remotely). I work on low price that's why people love to got better service at great price.
I have many clients that are return with few more. This will make my service game better. But really I want to do something innovative.
Making my own project never paid me something from #1 days. I have no good funding for my own family so I can't rely on my personal project.
Right now, I am looking for someone who love to get developer work Remotely. It's kind of work like tell in Night and got work done in Morning when you come from sleep and see that work is done whatever you want.
Is this not amazing. That's all Why people love it. Please contact me firstname.lastname@example.org for get some cool response.
TITLE 8, SECTION 1182 - INADMISSIBLE ALIENS says you are BOTH illegals and need to go home right now. We have smart US citizens living in tents and smart US citizen PhDs working at Staples.
GO HOME NOW
You people have destroyed 28 million US jobs since 1998 and now there are not enough jobs to go around, are there? In 1998 the USA had FULL EMPLOYMENT. That was before the dark times, before the poojoos. We were here first and built this place and we're citizens so it's you who have to leave.
You were only supposed to be here temporarily anyway and go home in 2002.
Why are you still here?
I hear there is great demand for someone in India to start toilet factories.
1. I was formerly Fire Chief of a volunteer fire department, and one of the youngest people to hold that position in my area.
2. I was one the youngest, if not the youngest, Firefighting Instructors certified by the NC State Fire & Rescue Commission.
3. I ran for Lieutenant Governor of NC, appeared in a statewide televised debate with the other two candidates and got about 125,000 votes (roughly 3%).
If you're struggling to pay your bills, you've gone about things wrong.
2. Don't pay for anything unless you absolutely cannot do without it.
3. Don't pay for things that you can acquire or make with some schlep. The equation of "I shouldn't be doing X because my time is worth Y" only works if your time is actually worth Y.
The tough part is the travel bit. When I'm on the road, it makes it a lot tougher to collaborate with my cofounder, meet with potential customers, etc. But I'm not out all the time, and I manage to work around it all somehow, even though it's pretty stressful.
2. Live with your parents if you can (I'm Indian, and that's totally ok for us) - it helps a lot not to have to pay rent & basic living costs.
3. Try and find alternate sources of money while you bootstrap. Ex: Selling stock photos/footage, selling code modules, stocks etc.
If you have got dependent family on you donot do it without some form of cash flow coming in.
If you do not have dependents and you are young take the leap with faith and from somewhere somehow things will just move along as long as you believe in it. Thats what I have seen in mine and my friend's case
Just curious. Obviously risks are there.
We've been doing this for 10 years and growing like gangbuseters.
Also agree with the screenshot comment.
Some copy amendments:
#1 Should read: Collect vacation requests
#2 Should read: Adding new staff or changing the approval structure
Sign up page. Should read: We are working hard adding the final touches to Flexday.
Overall, I'd need a lot more info to peak my interest.
As attheodo said, I think screenshots are a must. It lets your potential customers see what they're going to get.
The website could use a little bit more work. I'm not a designer by any stretch by personally speaking, I like information grouped up based on context. What do I mean by that? The main body of the page is about what your application does but there's a big arrow that points to pricing and plans which is in the main body as well. I would consider adding a navigation bar and place pricing and plans there along with some other links.
Speaking of other links, consider adding an about page which lets your potential customers know who they're dealing with.
You could consider giving out beta access or free access for a limited amount of time so you can see how your potential customers use your application and get valuable feedback from them. This will also help you build up a user base which can turn into customers when the app launches for real.
And while this may be a small issue or perhaps one that is strictly related to my browser (Safari), the header "Track employees with..." seems to be farther left than the line above Copyright stuff. For some reason this really disturbs me, I instinctively expect them to be lined up. If this was intended please ignore this.
Speaking of the copyright footer, there's a funny character before (c).
Hope this helps and good luck with your application :)
From another superficial point, I don't really your choice of font. It makes the charachters look a bit broken up and uneven and bothers my eyes.
Lastly, you need to put some more information there. Its so sparse, I don't understand what you're providing me with beyond a very basic big picture view.
That aside, the website is clean and the idea is promising, best of luck to you.
Also, you need integration with Payroll solutions (like ADP ). Call up your friends in HR and hit them up on how they do it now. I know from experience that payroll integration for vacation system is an absolute must.
I wish you the best of luck.