hacker news with inline top comments    .. more ..    5 Sep 2015 Ask
home   ask   best   3 years ago   
Ask HN: I have a mental block designing software. Time to quit?
41 points by porker  15 hours ago   70 comments top 26
1
eigenrick 14 hours ago 3 replies      
What you're describing to me is you've built a very solid structure for reasoning about programs, but it is too rigid, and too focused.

I would heartily recommend learning a new language. You need to shake things up a bit.

Two reasons:

1. https://www.wikiwand.com/en/Linguistic_relativity - Our language shapes our thought. This is true for spoken and programming languages.

2. You cannot properly understand a language unless you learn another. This is partially based on point 1, but it needs to be said otherwise.

Since you're in web, I would recommend learning Elm for the front-end, and Haskell in the back-end. Why? They will force you to design your systems differently? Is it better or worse? That's subjective. The important thing is that it is different.

For data design, have a look at things like datalog. Datomic is a good playground for that.

2
manyxcxi 13 hours ago 1 reply      
Learning something is always helpful in some ways but it may not be exactly what you need. It sounds like you may be at a point in your career where you may be suffering some imposter syndrome when it comes to making the decisions to move the PoC code to something more final. I hit a stage as well, years ago where I was paralyzed by the 40 different ways to architect a Java web app and all the arcane crap that came along with it. In general patterns only serve to better understand and maintain your code. That should be your primary goal during this time, is this readable and maintainable? After that, think about ways you can make it more slick. Eventually, you get over the hump and those patterns become part of your writing style and you don't even think about it anymore, until you hear about some new cool pattern (MVC became THE THING during my professional time) and you figure out how to incorporate it. After this similar block I had in my career I never really had another, until...

I had a different type of block earlier this year. For the first time in my career (I'm 32) I left my employer to work 100% for myself. I spent the first six weeks so twisted up I'd go days without a line of code written- luckily there was enough in the way of infrastructure and Ops tasks to give me something to do. I think the stress of it all just kept me from being able to focus like I need to in order to develop.

I started taking breakfast with the wife and kids, going to the gym every single morning, walking around for at least 15 minutes at lunch, being home by 4:30 (instead of 6:30/7). I basically focused on everything else and after a week or two it just started coming back and I feel like I'm faster and less stressed than I've ever been. Even if I'm not I'm happier and my family is significantly better than before, so I'd do it again in a heartbeat.

3
jaredhalpert 14 hours ago 0 replies      
Time to take a break. Decrease the amount of time you spend programming, and increase the amount of time you spend with friends, family, being outside, etc. You need to remove yourself; I recommend balance.
4
sebastianconcpt 15 hours ago 1 reply      
Sounds like a challenge on synthesis and perhaps design problems. I suggest you to not do anything drastic but use a pair of fresh eyes on your project. Manage to pair with someone and observe what this new guy finds challenging. You have to be open to refactorings or code style improvements. Also the guys must have to be good otherwise it could misguide you. What about using 3 instead of one? if they don't know each other you know the biases are under some control. After getting that quality feedback, you can ask yourself those questions again. You'll know better
5
cableshaft 14 hours ago 0 replies      
It sounds to me like you've dug yourself into too much of a rut of how software should be made that you can't just dive into it anymore, and get bogged down in doing everything 'perfect' that you don't get anything done at all.

I tend to just dive in, make a bit of a mess, and refactor/clean things up before I check things in. I think it helps that I have tackled learning quite a few different languages over the years and have done some working for startups (which has no time to get things right, it's just got to get done before the whole ship sinks).

Just pick a little piece of what you want to work on, get that working, then add another bit, and another bit, until you have a full feature but still runs, then clean it up, check it in, and move on to the next tiny piece. Don't worry about documenting every little thing.

Learning a new language, especially a scripting language that can get things done in a few lines of code and people don't obsess over diagrams and graphs of the system could help. Python filled that niche for me.

Good luck!

6
weavie 14 hours ago 4 replies      
> it's getting from what needs to happen to how to decompose into classes/methods/libraries

Perhaps the problem doesn't fit into an object oriented solution. You could try learning a functional language and see if you find it fitting better. I struggled for years with OO and was never happy with my solutions. Learning functional was my road to Damascus experience.

If you have to go OO, there have been plenty of people who have thought long and hard about how to make OO a suitable solution. Some classic books you may want to consider :

- Design patterns : elements of reusable object-oriented software (Gang of four) - there are people who swear by this and turn it into their hammer for which everything becomes a nail.

- Patterns of Enterprise Application Architecture (Martin Fowler)

- Refactoring: Improving the Design of Existing Code (Martin Fowler and Kent Beck)

- Growing Object-Oriented Software, Guided by Tests (Steve Freeman)

7
blt 13 hours ago 1 reply      
I'm going to take a wild guess and say you don't really care that much about the purpose of your software. You're not a game developer who's been an avid gamer since age 4, or a silicon valley entrepreneur who truly believes their web app is going to change the world. You've identified a niche that's liable to make some money, and are diligently plugging away at an implementation.

Your lack of inherent motivation from the product domain means you don't get any satisfaction from just getting the requirements met, so you hunger for the satisfaction of making a beautiful architecture. But all architectures have flaws. As a competent engineer, you notice the flaws in whatever you design, so your only source of satisfaction is compromised.

I would try to find work on a problem that excites you. When you get that giddy rush just from seeing your program give a correct answer. I think most software developers have felt this way about some project during their learning process. Look back and try to remember where it happened for you.

You're in trouble if software craftsmanship is your only source of motivation. It's a great motivator, but it is not enough by itself to carry you through a big project.

Now that you're in this project, it may be impossible to quit. I would find a side project to work on that provides more satisfaction. That should make it easier to plug-n-chug away at your current project without becoming depressed at the inevitable small failures in elegance and design.

I've never understood how developers can be happy writing CRUD apps or wiring together a bunch of pieces made by someone else. You gotta search for meaning. Even if you take a pay cut, it's worth it to find work that you care about.

8
joeld42 7 hours ago 0 replies      
You're thinking about it wrong. Don't think of it as "prototyping" or "just works". If it just works, you're done, there's no need to rewrite it to make it enterprisey.

What about it needs fixing? If it works for 100 items but not a million then fix that. If it works but is difficult for others to change the code, rearrange things until it's clearer. If it works by using some weird 3rd party dependency that wouldn't be easy to deploy and update, just remove that dependency, etc. If it works but you don't have an easy way to build or deploy it, then work on the build system. If it's buggy, fix the bugs.

Don't make things more abstract just for the sake of abstraction. Don't add message passing or enterprise logging just because they're enterprisey. Ask what problem you are trying to solve by adding these.

9
zaphar 14 hours ago 1 reply      
jaredhalpert says take a break and he's right. eigenrick says shake things up a bit and learn a new language he's also right. Sebastienconcpt says get a fresh pair of eyes, he is also right.

You just need a jolt. If it's feasible take vacation and build something fun in a brand new language that is really different from anything else you've ever used. Set goals like I'll work on this no longer than X hours a day where X is small. Don't set deadlines for completion. The goal here isn't a finished product it's to have fun tinkering with something that will break you out of your block. And pick a language with a welcoming but passionate community that can give your feedback on your code.

I do this all the time to keep myself fresh working on open source projects or playing with new things. It expands my toolbox and gives my brain a break from the constant legacy enterprise spaghetti-ware we so often work on.

And when it comes to your money earning work don't discount the Just Works outcome. When you are glueing together legacy systems sometimes there is no "beautiful and elegant" solution. Sometimes due to time and legacy constraints your only option is duct-tape and bailing wire. Having an outlet to write more elegant stuff in your spare time can be a valuable sanity saver.

Side Note: I wonder if there are any good places online to have virtual design reviews done? Somewhere where the high level goals and constraints are listed and people comment on the best way to achieve them? Language and platform agnostic preferrably although some suggestions will inevitably work better in some languages than others.

10
eternalban 14 hours ago 0 replies      
Your #2 is drastic. Your #1, reasonable, and Martin Fowler is your friend [1][2].

[1]: http://www.martinfowler.com/articles/enterprisePatterns.html

[2]: http://www.amazon.co.uk/Enterprise-Integration-Patterns/dp/8...

[edit: beefed up]

11
nerdy 14 hours ago 1 reply      
If the code is tested then refactoring the ideas contained within is the way to go. Do the smallest refactorings possible. Even well-respected programmers who've authored tons of books and given talks do not sit down and 1-shot a program. Elegant programs are the result of refining and designing.

The earlier in the development process you get to the refactoring and isolating minimal testable components, the less of a tangle you have between components to refactor; it's a lot like the wire tangles we're all so familiar with). This not only means less refactoring, but it also means that the existing code is easier to understand.

The tests are code. Treat the tests just like the rest of the code. I prefer test-first but if you want to pull your cart in front of your horse then go for it.

If the code is not tested I'd recommend testing it. There are really only 3 options to go from untested code base to tested code base:- Try to put tests under existing code (often inefficient)- Refactor the system incrementally as time goes on and features are added and bugs are fixed (slow process but over time test coverage grows)- Throw it out and start over (ouch but... greenfield; if you do this you should _NOT_ add any new features to the live/production system or you'll end up in a rat race between the two forever)

Also if you're able to take any time away (preferably measured in days) the fresh perspective might help too. Sometimes that little bit of total separation is enough to come back and read a method name and wonder why the hell it's even in that particular class. This scenario could be an early warning for burnout too, take care of yourself!

12
lukebuehler 14 hours ago 0 replies      
I recently hit a wall like this as well after designing many apps and enterprise systems.

It was a problem that seemed simple at first, but I just kept banging my head against it. I did exactly what some people described here, switched to a functional language, but that didn't help. I started doubting myself.

I'm though it now, and I like the solution, although it could be better. Here are some points that I've picked up along the way:

- Remind yourself that you are not only generating value when you actually write code. When you take a walk and think about the problem, draw stuff on paper and so on, this is still work. You are still doing exactly your job.

- This gets hard when coming up with a design takes longer than usual. It's likely that you have run into a complex problem without knowing it. Endurance & patience is key here.

- Attack from different angles, don't consider the time wasted if you try something and then end up throwing it away, you will have learned something, even if it just eliminating one possible design option.

After you are through it, you might end up cherishing the experience.

13
KuhlMensch 15 hours ago 1 reply      
https://www.youtube.com/watch?v=GAFZcYlO5S0

https://www.youtube.com/watch?v=iukBMY4apvI javascript module workflow that helped me (frontend dev) to transition to modules)

help?

14
themullet 14 hours ago 1 reply      
Design Patterns! As you said your problem is "how to decompose into classes/methods/libraries"

Book wise, I learnt them from "Head first design patterns" which is useful and fun or for a quicker overview - http://www.java2s.com/Tutorials/Java/Java_Design_Patterns/in... .

Also remember if you have other people around you delegate / meet them / bounce ideas together.

15
ArekDymalski 14 hours ago 1 reply      
How exactly does the "mental block" look like?Does it mean that you see several possible approaches and struggle to decide which one to use? Do you feel the pressure of the "into something maintainable that will run for 5+ years" requirement?

If the answer to 2nd and/or 3rd question is "yes", your description sounds like a specific phase in the process of your professional development.

A lot of people grow with their competences (be it knowledge or skills) to the moment when they start to realize the limitations of their competences. The moment when they see a bigger picture of their work, the broader consequences of a possible error, they feel bigger responsibility etc. It's a moment when doubts start to creep in and self-esteem plummets. The paradox of this phase is that objectively such people are very competent and capable to solve the problems they face. But they become paralyzed by the pressure and self-doubt.

If this reminds you your situation (at least partially) then the solution is called coaching - a method created to help competent people who lost their faith in own competences, overcome the difficulties and grow further.

Other (often proposed, even here) solutions like switching a job, going to some seminar, being more controlled by your boss or taking a vacation do not solve this specific problem, and quite often lead to bigger decrease in self-esteem.

Hope it was helpful and coherent - it's quite complicated subject to present in a short comment.

16
stdbrouw 15 hours ago 1 reply      
Relax. Anyone who writes software will code themselves into a mess sometimes. Learn to love refactoring.
17
eyeinthepyramid 12 hours ago 0 replies      
For me, a lot of this stuff only comes through trial and error. It's not ideal, but I think over time, both the trials and errors improve in quality.

Basically as I work in the code, I see little things that could be easier or make the code clearer. Then sometimes I get ideas for big changes. Sometimes the changes make things worse, but that's why we have revision control right?

I think the same goes for drawing. Just get something on paper and look for small changes. As you make changes, eventually you might see a larger change.

18
abathur 13 hours ago 0 replies      
When you explain your problem, I feel like we might share a trait, which I could pithily describe as difficulty separating/ranking/comparing/organizing/categorizing things. So, I find it very taxing to make the kinds of decisions you describe. I usually get there, but it's heavy lifting for me.

I don't think there's a silver bullet for you; you probably aren't incapable, but you may need to suffer through sub-optimal organization to hone this skill. What I will say is that, if you haven't worked on an existing project with highly complex organization (ideally one that has problems), doing so might help you. While I envision working directly on the project when I say this, there are cases where working with complex dependencies you need to get custom results out of can also be useful.

The point is that you want to be working with complex software (not simple interfaces) that requires a strong understanding of its internals to accomplish what you need. You'll know you're working on something on roughly the right magnitude of complexity when you regularly realize that your understanding of how the project or dependencies work is wrong, and your solution doesn't account for some hitch in how they work. The meta-point is that you're working with sub-optimal decisions other people made, and you either just have to deal with them and simmer to yourself about how _you_ would reorganize this mess if it was within scope, or you have to start refactoring their code (or building your own interface with it) that solves the problems with their design. The meta-meta point is that we're better at seeing problems in work other people have done than our own, but with effort we can train our eye on other people's work and (eventually) learn to focus it on our own.

At it's core, I think this is really about the cognitive overhead associated with working on and understanding a given implementation, so working on things that are cognitively overwhelming provides you an opportunity to learn about how to manage cognitive overhead. The result is hopefully that you learn to wrangle that complexity into an understanding that helps you do what you need without doing surgery, you build an interface that reduces the cognitive overhead enough that you can do what you need, or you refactor to accomplish the same.

19
rbrogan 14 hours ago 0 replies      
Whatever it is, it is only so different from your past work. It may help if you sit down and try to put together an argument either that you can or you cannot do the work. I would be skeptical and rigorous about it and try to force it into defining exactly what it is that you cannot do. Chances are it is a matter of framing up the work, and in trying to prove the work is impossible, you will probably frame it up and make it be possible.
20
omginternets 14 hours ago 1 reply      
If at all possible, take a vacation where you do anything but code. Pull the plug, if only for a week.
21
palidanx 11 hours ago 0 replies      
Do you have any training in UML? I feel that learning basic things like domain diagrams, sequence diagrams, and state diagrams help decompose complex systems into maintainable chunks.
22
Raphmedia 14 hours ago 0 replies      
You could stay in your field, a field that you obliviously love, but try at another company where you would have better ressources / coworkers at your disposition.

Take days off too.

23
chipsy 14 hours ago 1 reply      
Everyone's style is going to be differ on the high-level stuff - and you are surely well beyond the point where any random blog post blabbing about software architecture can guide you.

Keep walking back to the user and business requirements when you're in doubt. In senior technical positions, you aren't focused on immediate issues in the code, so much as on developing the right processes to attack those problems. Software isn't expected to last very long, and when it does it's both miraculous and ugly, as the tools and techniques become more and more arcane over time. If the solution you develop can satisfy all parties for an extended period, it is as correct as you can hope for - and part of that involves choosing a technical process that can be kept running in an environment of some ineptitude.

When you know the requirements, model the data first. Data comes first because data lasts longer than code. Flexible data lets you do more with less code. And if the data is very well defined you can usually use fewer language features, too - which is a bonus to maintenance later. Think of features in data terms first and lifecycles later.

The best-practices cruft you've learned over time - that's going to have to be sacrificed when you identify ways that your designs can be simpler. You may identify a pattern that is useful but not "with the grain" of the languages you're using. That doesn't mean it's wrong, just that you're breaking past some known boundaries of programming.

As you know, most projects get dirty in order to ship. Not doing that means doing basic research to find the ideal technique, whereas there's always room to tolerate a few more hacks, global flags, mystery-meat callbacks, etc. Your best defense is for the data to be so good that all the code can remain disposable and the system will still turn out more-or-less the same way if rewritten from scratch, with a different-but-equally-awful set of hacks and kludges.

Under the pressure of strong data, code that sticks around after several cycles of disposal becomes the library code by default - and internal APIs will become strong enough to prevent a "lava layer" from taking root, because they'll consistently solve the immediate problem faster than any wrapper layer. The maintainers will feel like geniuses because they'll keep finding clever ways to use the existing data better, instead of mashing out another travesty of reflection and classes-on-top-of-classes.

If data isn't sufficient, you may also have to define a protocol. Protocols, if they work correctly, compact the state management into a small part of the app, and leave you with more data.

24
jacooqs 13 hours ago 0 replies      
5+ years? That's crazy for web applications. I cant imagine any code lasting more than two years nowadays
25
ihsw 14 hours ago 1 reply      
Quick question -- do you use unit tests?
26
mikekchar 14 hours ago 2 replies      
It's hard to tell without looking at your code, but I suspect that you are stumbling in to a wall that many do. What's in your favour is that you recognise it, so you will probably be able to do something about it.

Systems grow over time. At the beginning, they are simple, which means that they are forgiving. If you make a mistake, it is easy to see and correct. As the software grows, it gets progressively more complex. Problems hide for a long time and when they present themselves it is often very difficult to see the actual problem.

What I'd like to do is challenge you to look at it a bit differently. Think about the number of lines of code in the OS, system libraries, language, libraries, frameworks, etc that actually go into your code. Even if you only write 2 lines of code, there are probably hundreds of thousands of lines that your 2 lines are sitting on top of. Why are your 2 lines easy to understand?

Obviously because there is a great separation between the complexity of the underlying systems and your code. What you need to be able to do is to provide that same separation in your own code.

As you mentioned that you don't work with others, I will recommend some other approaches. However, if they don't work, I recommend that you change to an office job where you can get the mentorship you require before you leave the field altogether. 15 years is a lot of learning to give up.

#1: Read good code. One of the biggest problems that programmers have is that they rely on their own code for examples of "good code". You are at a huge advantage because you recognise that you need to improve your code. What should you be reading? Read library code from whatever libraries you are using. As you are doing "web development", I would advise you to shy away from reading the source code of frameworks like Rails, but rather read the underlying class libraries for the languages you use. If you are not using languages that are open source, then it will make your life much more difficult, but try your best to find open source and free software on the internet to study.

#2. TDD. Every time. All the time. Not BDD (although BDD is an excellent practice in its own right). You want to do TDD. This will force you to think about your interfaces and to decompose. There are many books about TDD. Some of them are good and some of them are bad. Read Test Driven Development: By Example by Kent Beck. It is probably not the best book on TDD, but it will give you the basics without confusing you.

If you are working with legacy systems and don't know how to TDD with those legacy systems, read: Working Effectively With Legacy Code by Michael Feathers. It is a very, very difficult book. Learn it all.

You may hate TDD. Many people do, but using it will make you a better programmer. Personally, I don't think it's bad if you abandon it eventually, but master it before you do. This will simplify the process for you and break it down so that you can consider things in more manageable pieces. It will move you away from "Just Works" because it is god awfully slow (or at least it feels that way). Just pay attention to the effect it has on your code.

From where you seem to be now, to where you want to be, I estimate you've got 2-5 years of effort. Don't get discouraged if it doesn't come right away. This is a discipline where you can get orders of magnitude better over time. Try to be as patient as possible.

I hope this helps.

Ask HN: What's your favorite CLI or ncurses program?
39 points by wkoszek  19 hours ago   68 comments top 46
1
luxpir 18 hours ago 2 replies      
I've become a big fan of ncurses software over the years without really realising. Newsbeuter, irssi, cmus/mocp, vim, mutt. It's the resource efficiency and speed of use that make the difference with their shiny UI counterparts. That and still having a GUI, albeit a minimum viable GUI.

It has inspired me more than once to pick up K&R's C and have a stab at a tool of my own that I'd love to have - but it's way down on the current list of priorities.

...Now wondering why the question - are you working on something?

EDIT: Forgot a special mention for Finch (pidgin client), which along with the others runs nicely on Tmux (another forgotten mention) on a perma-on server. Rpi2 in my case.

2
realusername 18 hours ago 0 replies      
With ncurses I would say htop, you can see what happens on the machine quickly. And for pure CLI, sysdig is a must-have on every machine !
3
frantzmiccoli 17 hours ago 2 replies      
ncdu: ncurse disk usage (very convenient to see what is consuming too much space
5
DanBC 17 hours ago 1 reply      
Orpheus - an MP3 player. http://thekonst.net/orpheus

I used to love Wordstar and wordperfect. I'm a bit surprised at the glut of curses / cli text editors and the lack of curses / cli word processors.

6
blakesterz 15 hours ago 0 replies      
Glances is a cross-platform curses-based system monitoring tool written in Python.... https://github.com/nicolargo/glances
7
anjanb 18 hours ago 0 replies      
mc aka [midnight commander!](https://www.midnight-commander.org/)
8
rol 16 hours ago 0 replies      
glances is nice if you want to get an overview of your system resources:

https://github.com/nicolargo/glances

bmon and iftop can be used to see network usage:

https://github.com/tgraf/bmon/

http://www.ex-parrot.com/pdw/iftop/

Similar to iftop there is also iotop, but instead of showing network usage, it shows disk usage:

http://guichaz.free.fr/iotop/

Side note: There was a blog a couple years ago, which isn't being updated now, that would post reviews of CLI tools. Anyone that is interested in this topic should take a look at it:

https://kmandla.wordpress.com/software/

https://inconsolation.wordpress.com/ (new blog from the same person that did http://kmandla.wordpress.com)

9
anthk 3 hours ago 0 replies      
- nethack- mc- ag- ssh- renice,pkill,htop- ncdu
10
yami 18 hours ago 0 replies      
Dwarf Fortress
11
znpy 18 hours ago 0 replies      
Mutt or The emacsclient in terminal mode (ncurses)
12
Yaa101 18 hours ago 0 replies      
For many years that is Midnight Commander for me.
13
Shorel 13 hours ago 0 replies      
Midnight Commander, a clone of the original Norton Commander for D.O.S.
15
hultner 17 hours ago 1 reply      
Semi related, anyone got a great lib/framework for graphs/charts/plots in ncursers with python? I'm considering to build some simple terminal monitor utility to keep track of health status but haven't really looked in to it yet.
16
pppp 15 hours ago 0 replies      
nvlc - a ncurses vlc videolan media player built into vlc.

nvlc is just a script supplied with vlc:#! /bin/shexec /usr/bin/vlc -I "ncurses" "$@"

17
vortico 18 hours ago 2 replies      
mocp. It replaced iTunes for me (although I've long since switched to Linux).
18
Nicolargo 16 hours ago 0 replies      
19
p4bl0 17 hours ago 0 replies      
ncurses: emacs.

cli: cd, ls, mv, rm, grep, , i.e., the core utils, + git, svn.

I couldn't live without the core utils, and I use them a lot as I don't have a graphical file manager (I think the last time I used one was in 2007, I might try again someday).

Also, I don't know if it counts in either category but: ssh, of course.

20
neunhoef 18 hours ago 0 replies      
I only say that on many days I spend more time in my vim than in my bed. I usually run it in a terminal Window.
21
ch215 16 hours ago 0 replies      
I'll add two that have yet to be mentioned: moreutils and youtube-dl.
22
g0rfel 19 hours ago 2 replies      
ATM when testing deployment flow:

 function sd() { n=2 while [ $n -gt 0 ] do sed -i ''"${1}"'d' $HOME/.ssh/known_hosts n=$(($n-1)) done }
I like sed.

23
chazu 14 hours ago 0 replies      
Does 'sl' count? Because it should...
24
MoSal 12 hours ago 0 replies      
nethogs: bandwidth usage by process(Does not work with UDP!)

iptraf-ng: bandwidth usage by port.

lsof: list open files(including network files).

25
chilicuil 18 hours ago 0 replies      
Vim, mutt, wicd-curses, irssi, mplayer|mpd and conky
26
rkangel 18 hours ago 0 replies      
menuconfig
27
orkoden 17 hours ago 1 reply      
fortune | cowsay
28
dagw 18 hours ago 0 replies      
slrn was pretty much perfect back in the day.
29
adamlindsay 18 hours ago 1 reply      
jq, vim, sysdig
30
bonf 18 hours ago 0 replies      
mitmproxy has a great terminal UI
31
alex101 18 hours ago 0 replies      
Does Vim count? I guess so :)
32
mahouse 18 hours ago 0 replies      
Irssi
33
olalonde 18 hours ago 0 replies      
Vim :)
34
hdoerey 17 hours ago 0 replies      
Taskwarrior - www.taskwarrior.org, best CLI todo list manager.
35
_gdd_ 17 hours ago 0 replies      
36
captn3m0 17 hours ago 1 reply      
git, ranger, cmus, byobu (I shifted to i3 though)
37
a3n 15 hours ago 0 replies      
tig

htop

ipython

vim

little bash and python tools that I write myself, to automate my specific workflows.

38
tokamach 18 hours ago 0 replies      
ncmpcpp is a great MPD client.
39
Jach 18 hours ago 1 reply      
Moon-buggy.
40
kanche 17 hours ago 0 replies      
vim, htop and ncmpcpp :)
41
jacobroufa 11 hours ago 0 replies      
tig
42
yc1010 17 hours ago 0 replies      
iftop
43
fla 17 hours ago 0 replies      
qemu
44
posnet 17 hours ago 0 replies      
ack
45
sssk 17 hours ago 0 replies      
mc
46
jordibunster 18 hours ago 0 replies      
git
Will the data breach problem ever be solved for good?
3 points by joseandresch  3 hours ago   1 comment top
1
04rob 34 minutes ago 0 replies      
It certainly seems to be accelerating. I think we'll reach a tipping point where everyone's personal information will have been stolen so many times that things like two factor authentication and biometrics will become a necessity.
How to get started w/ Docker (full collection of useful learning materials)
4 points by anacleto  7 hours ago   discuss
Ask HN: Are 4K monitors worth it?
24 points by dennybritz  1 day ago   33 comments top 22
1
aappleby 23 hours ago 2 replies      
Totally worth it, but with many caveats.

I'm on my 4th (!) 4k monitor, and think I have found the sweet spot - it's a 48 inch curved 4K Samsung JS9000 TV that supports 4k @ 60hz with 4:4:4 chroma over HDMI 2.0.

At that size the pixel density is identical to a 24" 1080p monitor and the slight curve means it fills your field of vision with significantly less distortion at the edges.

Unfortunately the stand isn't adjustable, so I replaced it with a set of adjustable 'feet' off Amazon that bolt to the wall-mounting holes. The screen sits about a centimeter off my desk - just enough to run keyboard & mouse cables under, while keeping both the top and bottom of the screen at comfortable viewing distances.

The overall result is _glorious_. I have so much room I can just drag windows over to whichever part of the screen I feel like staring at, while having tons of room at the top for widgets and music players and such. I can run games in windowed mode alongside web browsers and everything's readable and playable. I can have pages and pages of code spread out everywhere and it's all marvelously usable.

In comparison, my other 4k experiments -

1. Seiki SE39UY04 39" - Terrrrible lag, bad color, 30 hz only. The 30 hz is not itself the killer (30 hz on the JS9000 is only mildly irritating), it's the 100+ millisecond delay that makes it infuritating. Sold it for $100 after trying and failing to adapt.

2. Samsung 55" UN55HU8550 - Great except for the lack of 4:4:4 chroma, and 55 inches is just -too- big to use as a monitor - especially without the curve. I still use this one as my main living room monitor & TV.

3. LG 40UB8000 - Almost good enough. No 4:4:4 chroma, slightly buggy firmware, too much color distortion at the edges when used at monitor distances. Pixel density is about the same as a 27" 2560x1440 monitor, but in practice you'll be squinting as it needs to be placed farther back on your desk in order for the sides of the screen to be usable.

Samsung does make a cheaper 48" 4k screen (the JU6700) which I believe supports 4k@60, 4:4:4 chroma - it would probably be just as good as the JS9000 for most purposes, with only slightly reduced color quality and a few less bells and whistles.

2
kogir 3 hours ago 0 replies      
I have a 32" 3840x2160 60Hz Asus PQ321Q which I run at native resolution with no scaling. It's fabulous. More pixels than the dual 2560x1600 30" monitors I had before, and it fits entirely in my field of view. I barely need to move my head.

Get a TV only if you can return it. A matte monitor will nearly always look better in realistic lighting scenarios.

Definitely worth it, at least for me, especially since I expect I'll keep it for 5-10 years.

3
icefox 1 day ago 1 reply      
I personally found the 4K monitors just nice, but could never justify them. Just recently I discovered monitors that have a 21:9 ratio. It is the same as having two monitors, but without the bezel in the middle. It is the first time in a long time that I happily put down cash only shortly after time thinking about it. For me there have been very few big jumps in the desktop: 8GB+ ram, SSD's and now a single 21:9 monitor over dual monitors.
4
adultSwim 12 hours ago 1 reply      
Remember that the size of the screen determines how much "real estate" you have. It's easy to think that higher resolutions will allow you to see more.

It's hard to say if it's worth it or not. Software support is getting much better but the benefits seem unclear.

I recommend Dell P2715Q. It's $700 for 27" (though Dell often has sales/coupons - I got mine for about $500). IPS + matte. The stand is pretty decent. Nothing stupid like a glossy bezel, etc.

I'm not sure I would but it again. I use 19020x1080 monitors at work and don't notice a big difference. Plus monitor resolutions jumped up quickly (after being stagnant for so long) but video cards didn't. Not a huge issue for editting text but something to consider. You can always game in 1920x1080 (and it will look fine) but alt-tabbing to your desktop will be slow.

5
cweagans 11 hours ago 0 replies      
I don't necessarily care about the actual resolution, but after moving to a high PPI display > 24", I certainly won't be going back.

FWIW, I'm using an LG UM95 (Thunderbolt display better than Apple's). If I was buying again today, I'd go for the 34UC97, which is essentially the same display, but slightly curved. Ultrawide displays benefit a lot from a slight curve, and the only thing you lose is the VESA mount. Might be important for some, but not for me.

6
joshmn 1 day ago 1 reply      
Whatever you do make sure you get at least 60Hz. A friend made the mistake and he regrets it every day.
7
fezz 1 day ago 0 replies      
Very much so if the monitor is larger than 36" and not too large. 60Hz is a must have.
8
learc83 1 day ago 0 replies      
Yes, worth it. I went from 3 1080p monitors to this 40" 4k. http://www.amazon.com/Samsung-UN40JU6700-Curved-40-Inch-Ultr...
9
tlack 1 day ago 0 replies      
I prefer 21:9. The form factor is much more friendly (I almost always want two different things on screen while working, but I rarely need more than that), seems less obnoxious on the desk, and I found the display performance much faster on my somewhat underpowered tablet. Cheaper too, which is nice.
10
orangecat 1 day ago 0 replies      
From a retina iMac: yes, absolutely. High-DPI is even better for text than for images.
11
jleehey 23 hours ago 0 replies      
The UI scaling looks a little off on windows. I have a 28" 4K and it takes a little bit to get used to. Make sure you have a desk where you can sit far enough back (I'd say around 3 feet), otherwise eyes start hurting. Only certain IDEs have decent scaling too (Android studio needs some font size tweaks). Visual Studio does a pretty good job.

It's amazing for gaming in the off-hours though. I'd say go for it if you do a lot of front-end work, otherwise wait until there's better support.

12
MalcolmDiggs 1 day ago 0 replies      
For a work computer, it really depends on what you're developing. If you're a backend person (and don't spend your lunch breaks watching movies) I don't think it's worth it, no.

But if you're a front-end person building a web-app, I think it's important to have access to screens that are as good as what your visitors have (so you can see what they see). If your site is catering to users who would have 4k, then you definitely need it yourself.

13
i386 1 day ago 0 replies      
I bought a Dell U2515H recently. Not "retina" but really close enough. Everything looks so damn crisp it might as well be for the price. The extra inch (its 25") really makes a difference too.

http://accessories.dell.com/sna/productdetail.aspx?c=us&l=en...

14
bjourne 20 hours ago 0 replies      
Reading stuff on the web is 1000x nicer with completely crisp, perfectly shaped serif fonts. It feels like I can read fonts at smaller point sizes due to the much improved shapes. Unfortunately, Linux support for HiDpi is lagging significantly but hopefully it will catch up in 6-12 months.
15
jamespcole2 1 day ago 0 replies      
I use a 28" 4k monitor with ubuntu 14.04 and it works great(with an nvidia card). One issue is that in gnome 3 the UI scaling cannot be set per monitor so that if you are using a mix of HD and 4K it can become a bit annoying. If you're wanting multiple monitors I recommend upgrading all of them(assuming your graphics card has enough grunt).
16
rbanffy 1 day ago 0 replies      
It depends.

Software support is a bit spotty (unless you have a Mac). If your eyesight is up to the task and the 4K screen is large enough, you can just treat it as a huge normal monitor and have lots of reasonably sized pixels to play with. I would go with something in the 40" range, which is the same pixel density as a 20" one.

17
blt 23 hours ago 0 replies      
I just got the dell 27" 4k and it's great. Text looks amazing. Some Linux gui apps look awfully tiny though. I'm not worried about it, the world will catch up in the long run. But I also have decent eyes and can read really tiny text if I must.
18
rbut 1 day ago 0 replies      
Yes definitely. I bought a DELL P2715Q @ 60hz and run it at 150% scaling, which gives me 2560 x 1440, the same resolution as my old 27". Text is much easier on the eyes now.
19
atom-x 1 day ago 0 replies      
Agreed as well. Moved to an Asus ASPB287Q, and absolutely love it. Using SwitchResX I enabled HighDPI modem and it's stunning. It's like having a giant Retina display.
20
rebootthesystem 23 hours ago 0 replies      
At the most basic level pixel pitch (the center-to-center distance between pixels) is perhaps the most important parameter. The other parameter is observer distance (eyeball to pixel).

Those two interplay and setup a situation where resolution is utterly wasted if the observer is farther than the perceptual limit. Think of a standard Snellen chart placed at 12 meters rather than 6.

And so, the decision to go to 4K displays is inexorably connected with a specification of display size and viewer distance. Ages ago IBM introduced "Big Bertha" probably the first 4K display. It was about $20K. The problem was that IBM made the display 22 inches diagonal and, at that size and resolution, you had to be 6 to 8 inches away in order to actually make use of the resolution.

There are other considerations but I think being able to actually use the resolution is key.

Personally, I prefer multiple (3) 1920x1200 monitors because it allows segmentation of your workspace. For example, you can maximize a the video of a course or online class you are taking while you code on the middle monitor and have reference material on the third.

I know this will not be well received on HN but I have to say it. The OSX UI has been grossly outdated as it pertains to large or multi monitor setups for a long, long time. This insistance on having menu's at the top of the monitor is rather than within the application window simply isn't sensible. I've had the experience of projecting a Mac on a 40 foot 4K theater screen. The only way I can describe the single top menu bar experience is tiring and ridiculous. Windows or a similarly setup Ubuntu systems with menu's owned by the application are a dream to use on a huge multi-screen environments. I've done just that with huge stadium-sized LED video walls mapped as multiple monitors to the OS. Nothing like hqving to move a cursor across 160 feet of screen real estate to reach the menu's to show, in no uncertain terms, that a UI is broken.

21
dman 1 day ago 1 reply      
Highly recommend using three 1920x1200 or 1920x1080 monitors in portrait mode.
22
avoidwork 1 day ago 0 replies      
Ask HN: Should i put online courses in my resume?
12 points by kiloreux  18 hours ago   9 comments top 9
1
04rob 30 minutes ago 0 replies      
It shows an interest in refining your craft in your personal time, but as other posters have said, don't oversell it.
2
UnoriginalGuy 13 hours ago 0 replies      
Yes, but don't over-sell it. Just throw it into an "other education" or "continued education" sections.

It should be something someone reading your resume nods at but doesn't challenge you about in the interview. A lot of people continue to view education as: "if there is no qualification it didn't happen." So you'll find people (particularly older people) asking you what qualification you got then outright discounting the entire thing if you got none.

3
0x400615 12 hours ago 0 replies      
I would recommend doing it if you already have a lot of white space on your resume. If you don't, then I wouldn't bother, as personal projects have more value than online classes.
4
zhte415 16 hours ago 0 replies      
Yes, put all of the ones you feel comfortable talking about (being asked questions on) down.

If there's a manager that knows about MOOCs, they'll notice.

If there's a manager that doesn't know about MOOCs, they'll either gratefully receive a new thing to try, or will not care.

I don't see a downside.

5
TheCams 18 hours ago 0 replies      
I would only put courses that lead to a degree on my resume under the Education section. If you have extra knowledge that you want to mention, a Qualification section would be the best place to add a line about it in my opinion.
6
GFischer 13 hours ago 0 replies      
Some comments talk about "resum" while others talk about CVs.

It depends on which country you're in and where you're applying.

US-style resums are VERY different from, say, European-style Curriculum Vitaes (also used in 3rd world countries like mine).

In a CV, I would definitely add them. In an US-style resum, I'm not so sure how they fit (seems like UnoriginalGuy has some good advice)

7
hnarayanan 18 hours ago 0 replies      
Yes.

It indicates to employers that you have an inherent drive to learn things (i.e. beyond what is required as part of your formal education). And that is a good thing.

8
pkinsky 12 hours ago 0 replies      
Depends on the class. There's a series of excellent Coursera Scala courses taught by the creator of the language, those will stay on my resume for a while.
9
tonyedgecombe 18 hours ago 0 replies      
Yes, if it's important to you then you should try and find an employer that values it, hence it should go on your CV.
Timecube.com has lapsed
9 points by DAddYE  1 day ago   2 comments top 2
2
mknappen 23 hours ago 0 replies      
See also: original Dr. Bronner's Magic Soap label
Ask HN: What is the best pre-commit code review workflow?
19 points by rocky1138  1 day ago   17 comments top 8
1
hacker_9 1 day ago 2 replies      
1. The reviewee should self-review his code before he calls you over - that means going over changed files and undo'ing those that are unneeded (i.e. where only a newline/space was entered). They should also read through their changes in the diff window, and add in any comments where the 'why' is not clear from the code.

2. There should already be a window open displaying how their changes affects the UI/behaviour of your product, so that you can immediately get into the right context/mindset when you come over. This way as they explain their changes you can compare with your mental model of how'd you'd have solved the problem, and notice any glaring problems along the way (like if they used a bunch of complex logic to parse a string when they should have used a simple regex)

3. Coders should expect to get reviews every one or two days, otherwise they will build up a substantial amount of changes that will take longer to process. Additionally they may even forget why they made earlier changes!

4. Once you've reviewed a team member a number of times you'll find that they 'get it' and have already predicted your questions and made the necessary changes. They are then ready to become a reviewer as well to lighten the load on you.

5. Post commit reviews do not work. The damage is already done by then. They tried this at a place I used to work and nobody learnt anything from it :\

2
piotrkaminski 1 day ago 0 replies      
Besides all the good ideas suggested by others for high-level process optimization (small PRs, self-review first, prioritize reviews, have a larger pool of reviewers, etc.), you can also micro-optimize the time spent on reviews proper. A good tool can help a lot here: it will show incremental changes since the last review round (even if the branch got rebased), filter out changes due solely to rebasing, track resolution of any issues raised during the review, etc.

If you're using GitHub, the built-in pull request review system doesn't really do these things very well (or at all), so you end up wasting a lot of time and/or missing things. There are a number of third-party options that do much better but some of the best require you to host your own infrastructure, move your repo, etc. Selfishly (and again, only if you're using GitHub), I'd recommend checking out https://reviewable.io, as it integrates smoothly and requires nearly no setup. (Disclosure: I'm the founder.)

3
bjourne 19 hours ago 0 replies      
Ugh. I would quit if I had to work in a pre-commit code review system. The idea should be that your team is so aligned that for 95% of all commits, you don't need any code review at all. If I refactor three common pieces of code into a utility function, why waste time code reviewing something that obvious?

> I don't want to block my team but at the same time I don't want to switch to post-commit reviews since I can't ensure code quality.

You should have thought of that when you hired those developers. Now if you think that you cant trust them to produce quality code on their own then you have a problem.

4
tal_berzniz 1 day ago 1 reply      
Good questions.

1. Everything must enter your main branch (master) via Pull Request2. Everyone can review it. Sometimes more than one person is needed.3. It's asynchronous - write comments on the code or sit together if you need to see UI / Changes.4. Code Review should also review unit tests (which pass)5. Merge PR

This shouldn't block your team and in a week of doing it people will adore this since it will save them at least once.

5
njs12345 1 day ago 1 reply      
Phabricator is great, can't recommend it enough.
6
loumf 1 day ago 0 replies      
I do what you are suggesting. Some other things:

1. Always a PR that is ready to merge (rebased properly). I should be able to read commit-by-commit and it all makes sense.

2. All reviewers are committed to review in < 24 hours, mostly the same day. Reviewing is considered an important high-priority activity for developers.

3. Keep them small - we reserve the right to reject a PR on size -- split it down (in reality, this is rarely done, because we know this)

4. Only make a comment if you think the code is unacceptable without the change. You can be convinced otherwise later, but no subjective comments -- it's either acceptable as is (no comment) or not.

What I wish we did (and will probably try to make happen)

1. Work off a checklist. I have a couple of things I always check for -- e.g. i18n and accessibility, but we could do this a lot more.

2. Have a common understanding on what acceptable test coverage might be

7
nahname 1 day ago 1 reply      
How is everyone not using github pull requests for this?

git checkout -b my-new-feature

<write code>

git add --all :/

git commit -m "added this awesome new feature'

git push origin my-new-feature

<open PR>

<wait for feedback>

<address feedback>

<merge PR>

<ship>

8
jacques_chester 1 day ago 0 replies      
Here's a strong opinion, based on my own experiences here at Labs. As is traditional on HN, it doesn't directly answer your question, but instead assumes the universal superiority of my own preferences.

1. Pair program.

2. Drive code from tests, outside in.

3. Rotate pairs frequently. Daily for short stories, no more than 2 days for long stories.

4. Review your commits together.

Every other reviewing scheme I've seen quickly becomes an unacceptable bureaucratic drag on forward movement.

At best you wind up with an average of around 2-3 days lag, giving plenty of time for the original engineer(s) to lose context and for the master branch to be well out in front.

At worst you have patches sprinkled around multiple branches of multiple repos, everyone is blocked on everyone else and continuous integration is thought of as a joke about mathematicians.

The original literature on code reviews is based on a very particular and extremely rigid manner of developing software. I think pair programming captures 80% (or more) of the value for less than 20% of the effort and disruption.

Ask HN: What is so great about Lisp that makes Emacs powerful?
4 points by anuragpeshne  19 hours ago   5 comments top 5
1
bjourne 16 hours ago 0 replies      
Emacs is an open/unsafe architecture. Whatever I write in Lisp in my .emacs file becomes part of my implementation. It's on the exact same level as the Lisp code rms writes which is bundled with the releases.

Vim scripts like Chromium and Firefox plugins are inferior to their host processes. They can only modify the application behavior through a set of (supposedly) safe api calls. Since Elisp packages aren't second class citizens, like Vim scripts, it changes everything.

2
tptacek 13 hours ago 0 replies      
Extensibility is the reason for Emacs' power. Lisp is just an implementation detail. You could make an equivalently powerful editor in any high-level language.

There are other extensible editors, but the line between Emacs' kernel and its extensions is drawn at a different place in Emacs than in any other popular editor. It is more likely that any given feature you're interacting with in Emacs is provided by its extension code than it would be in another editor.

Probably more important is the benefit Emacs gets from being one of the two major Unix editor projects. It has an immense community and user base.

3
informatimago 15 hours ago 0 replies      
Lisp is a great dynamic programming language.

One particular feature that makes it really great for emacs (and a lot of other applications), is that you can define and COMPILE new functions, or even REDEFINE old functions.

Nowadays a lot of dynamic languages have followed the lisp model. They didn't exist when GNU emacs development started.

In the context of emacs, it allows you to edit a new command, and have the lisp in emacs evaluate it (define it) and compile it, hence integrating into emacs code, and making it available for further use. Or indeed, since most of emacs is also implemented in lisp, you can redefine any emacs function the same way, and have it taken into account immediately.

So basically, you are not "extending" emacs so much as you are just modifying it.

Also, lisp has alot of nice and fun features, like lisp macros, first class functions (and now closures), allowing for high order functions, which let you create abstractions easily when programming. Contrarily to most other custom application specific scripting language, lisp is a real algorithmic programming language without artificial limitations.

4
brudgers 12 hours ago 0 replies      
5
lispm 17 hours ago 0 replies      
GNU Emacs is not a Lisp Machine. It's an editor written in C/Lisp and extensible in Lisp, that's all.
My boss can't parse a CSV file
3 points by throw_for_throw  1 day ago   7 comments top 6
1
geoff-codes 19 hours ago 0 replies      
> I recently found a new a job hoping to gain some mentorship

I this is probably the real error. Lacking greater context, what made you expect that your boss at this new position would be able to mentor you?

Is he supposed to know how to parse a CSV? (Manually? Like, with awk or something?) Or is that why he hired a hacker/programmer like you?

I'm not saying your boss isn't incompetent. Maybe he is. But you shouldn't expect that your superior is always going to be more technically competent than you.

2
brongondwana 1 day ago 0 replies      
If they're demanding 16 hours and you don't want to work 16 hours, get the hell out. Otherwise knock off at 5pm "time to go boss, my pet goldfish needs me. See you 9am tomorrow". They obviously did something before you started. Worst case they fire you instead of you quitting - best case they respect you more. Either way, you're doing better work than if you're putting in consistent 16 hour days.

If your boss can't parse CSV files, presumably (s)he has some other skills - find out what they are and learn them.

You're supposed to be working together right? So go teach your boss how to parse CSV files (nicely).

3
JSeymourATL 13 hours ago 0 replies      
> new a job hoping to gain some mentorship...

Be patient, there may still be something useful you can learn from the Old War Horse.

Sometimes we learn by teaching. Your boss might welcome and appreciate a tutorial on Parsing CSV files. Assuming the work environment is otherwise congenial, your job can serve as a research lab to master your craft. Think Gladwell's 10,000 hour rule> http://www.slate.com/articles/health_and_science/science/201...

4
olalonde 18 hours ago 0 replies      
Parsing CSV is notoriously hard: https://news.ycombinator.com/item?id=7796268
5
MalcolmDiggs 11 hours ago 0 replies      
Well, what is your boss good at? Maybe they have some business, management, marketing, or other kind of experience that you would benefit to learn?
Ask HN: Why is Xcode so buggy?
8 points by ians  1 day ago   6 comments top 3
1
paulrpotts 1 day ago 0 replies      
I have not used the current version but I have used a number of previous versions, and my experience is that it certainly has not always been this way. Many versions have been very reliable for me, although granted I use it mostly for developing command line tools in C/C++. But even when doing development for iOS a couple of years ago, it was very solid. XCode has its roots in ProjectBuilder for NeXT, a long and distinguished history. Maybe they have released some bad versions. I hope they can get it together.
2
aaronbrethorst 1 day ago 2 replies      

 but for something that Apple uses in house to build pretty much all of their software products how can it be this bad?
Probably because the Xcode team doesn't dogfood their own tools. I forget exactly when and where this was, but I once talked to someone who interned on Xcode. He stated that almost no one who worked on Xcode actually used it, and most of them were, instead, vi users. Grain of salt, and all that, but it certainly fits.

3
martinni 19 hours ago 0 replies      
You should give AppCode a shot
[Website] hid my job application from an employer?
9 points by rmellow  1 day ago   5 comments top 5
1
Gustomaximus 1 day ago 0 replies      
I would be suspicious of any website that wanted me to pay to apply for a job. Recruiters get paid big money to find talent. I can't see many of them seriously using a service that hid candidates that don't have a paid for account.

If this is LinkedIn, it seem a good time to short these shares. If this kind of activity is allowed it sounds like the beginning of the end for any website that is desperate for revenue at any cost.

2
sound_of_basker 1 day ago 0 replies      
It is LinkedIn, isn't it?
3
JSeymourATL 13 hours ago 0 replies      
4
BWStearns 1 day ago 0 replies      
Did you check the request traffic? If it's API driven they might have accidentally left in some clue there. That would be a bad idea on their part but so is acting against the best interests of your user (by and large).
5
mmastrac 1 day ago 0 replies      
> I don't see any feasible way of collecting evidence

The story above seems pretty compelling to me. Why not ask one of the other companies on the site to test your theory?

Ask HN: What are some good resources for learning Algorithms and Data Structures?
19 points by chinmay185  2 days ago   11 comments top 10
1
ruraljuror 2 days ago 0 replies      
Coursera's Algo part 1 starts in 2 days.https://www.coursera.org/course/algs4partI
4
brudgers 2 days ago 0 replies      
I learned a lot in Roughgarden's course on Coursera:

https://www.coursera.org/course/algo

but I'll be first to suggest going to font of computer science that is TAoCP, not because you're likely to understand most of Knuth, but because it's unlikely that anyone will understand half on the first pass, so there will be something else to learn for a really long time.

Good luck.

5
minthd 2 days ago 0 replies      
I think it depends on what you want to achieve.

If you want to design algorithms, and not just reuse an algorithm from a catalog:

"Introduction to Algorithms: A Creative Approach: Udi Manber" Is very good.

If on the other you;re interested in a an extensive srvey of algo's and data-sturcutres, see"Algorithms and theory of computation handbook", by atallah. It has 2 volumes.

6
ninetax 2 days ago 0 replies      
Skiena's Algorithm Design Manual is really great, it's pretty comprehensive.

http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/...

7
facorreia 2 days ago 0 replies      
I learned it back in the 1980s from "Algorithms + Data Structures = Programs" by Niklaus Wirth.

There's a more recent edition available: "Algorithms and Data Structures".

https://news.ycombinator.com/item?id=1921125

8
chinmay185 2 days ago 1 reply      
Thanks. I am mainly interested in learning about dynamic programming and graph algorithms.
9
chinmay185 1 day ago 0 replies      
Thanks for all these links.
10
samfisher83 2 days ago 0 replies      
clrs=bible
Ask HN: What's the best Bitcoin exchange/wallet out there?
2 points by pattle  1 day ago   5 comments top 5
1
starshadowx2 1 day ago 0 replies      
For wallets I really like using blockchain.info

- https://blockchain.info/wallet

It's free, well designed, secure (encrypted, two factor authentication), and there are mobile apps to access it anywhere.Check out the How it Works and the FAQ:

- https://blockchain.info/wallet/how-it-works

- https://blockchain.info/wallet/wallet-faq

For UK exchanges I'm not sure, maybe also check /r/bitcoin (https://www.reddit.com/r/bitcoin) and the Bitcoin Wiki (https://en.bitcoin.it/wiki/Trade#Currency_exchanges).

2
27182818284 13 hours ago 0 replies      
https://localbitcoins.com/

I've personally not had problems with https://www.coinbase.com/ thus far. I'm not a power user though, either.

3
out_of_protocol 1 day ago 0 replies      
Unfortunately, https://blockchain.info/ is bad idea for anything last year or so - under any non-zero level of [bitcon network] load it tends to show wrong values and stuff. Also, using hosted solutions for own wallet is not that great idea as you could think it is - site owner could ban your account, inject evil javascript etc.https://electrum.org/ is descent choice as a wallet.MultiBit HD (https://multibit.org/) is possible alternative (not reached 1.0 so far)
4
subliminalzen 1 day ago 0 replies      
If you can, purchase from a Bitcoin ATM or using LocalBitcoins.com. Coinbase can be heavy-handed at times, but it's better than Circle by a country mile.
5
womitt 1 day ago 0 replies      
I've used mrcoin.eu a few times recently, all were pretty good experiences
Ask HN: Importance of a good .com domain?
3 points by vishaldpatel  1 day ago   13 comments top 6
1
gesman 37 minutes ago 0 replies      
Get creative with domain name as much as you're creative with your product.

You need .com

2
MalcolmDiggs 1 day ago 0 replies      
IMHO you're at a disadvantage if you spend too much time on non-core elements of a product.

So, if the name/domain/brand is crucial to the success of the company (if it's a clothing line for example), then maybe it's worth spending a lot of time brainstorming until you find a .com that works.

But, if the core value-proposition of your product has little to do with the public-facing branding, then your time is probably best spent elsewhere, and you should just buy whatever domain is available ASAP and move on to other things.

3
justhw 1 day ago 0 replies      
I depends. But as others have said I would try to get creative with the name to find a .com for it. PG recently wrote a post on changing your name but I don't agree with it 100%. http://www.paulgraham.com/name.html

However if your product is a mainly accessible via a mobile app then I would use the .co or other clean TLDs. For example, Vine is still using .co and it's a massive success.

4
spb 1 day ago 2 replies      
I would look at alternative names that you can get the .com for. A .com is like the "The" badge on Amazon or a "Verified" check on Twitter: it also gives you much better odds of not having to deal with trademark disputes.

For some tips on naming, see my Trello board of notes on naming and domains: https://trello.com/b/TekvQe5x/naming-and-domains

5
snap12789 1 day ago 1 reply      
Unless you own a super common word or group of words as .com; it doesn't make too much of a difference. Only enthusiasts will use a smaller service, regardless of its usefulness and will be ok googling for a domain or entering a less common TLD. Wait to see if it develops and if it does, use your profits to buy the right domain for more casual consumers.

I'd say best you can do is make your site https and responsive and make sure you have all relevant SEO data to increase its indexing performance.

6
dudul 1 day ago 1 reply      
Just avoid the TLD that are marked as spam by most filters and you'll be fine.
Ask HN: Any tools for two way synced music listening?
2 points by j2bax  1 day ago   4 comments top 3
1
MalcolmDiggs 1 day ago 0 replies      
I believe that was the basic concept behind Turntable.fm (RIP). There were a number of competitors but I think they may have all bitten the dust as well.

Sad, because (like you) I love the idea of being able to sync my music with someone else.

[1] https://en.wikipedia.org/wiki/Turntable.fm

2
siquick 1 day ago 1 reply      
3
HelloHN 23 hours ago 0 replies      
If you're somewhat technical I believe you can achieve this with hubot
Ask HN: Do you attend Hackathons?
10 points by scardine  2 days ago   13 comments top 8
1
WorldMaker 2 days ago 1 reply      
I stopped attending Hackathons (and Jams) out of a principle decision. I've come to feel that Hackathons are only encouraging some of the worst aspects of the software industry. The industry as a whole has long, bad habits of encouraging "crunch work" and unpaid overtime. Hackathons are a celebration of those bad habits (and a mirror to them). The arguments pro-Hackathon point out that such events are unsustainable and you can't expect to do it every weekend, and yet you also start to see Hackathons filling up nearly every weekend in a year and people that try to attend all of them that they think they safely can.

I don't want to encourage "crunch work" and so I stopped paying attention to Hackathons entirely. Life is too short to burn so brightly on weekends for projects that mostly don't matter. I do worry that Hackathon culture encourages more bad software business cultures that think that they need crunch or can survive on crunch and that "everybody is doing it".

2
codeonfire 2 days ago 2 replies      
No, I don't recommend anyone but students attend hackathons. The first problem is they are usually badly executed with limited seating and very bad food. Secondly, no professional is going to allow themselves to be compared with amateurs. All a pro will get out of a hackathon is probably to look like an amateur and to be shown up by someone who has a lot of shortcuts up their sleeves. Thirdly, hackathons don't represent real world software development in which it can take weeks to roll out basic features. Only by working ahead before the competition do people complete hackathon projects in a short amount of time.
3
Raed667 1 day ago 0 replies      
I used to. I have made long-lasting friendships there. But I stopped a while ago.

I think that CS/Engineering students should attend a couple of events like this. Everyone should get exposed these (worst) aspects of the trade before hitting corporate world. (Stress, deadlines, team-work, conflicts, unfairness, etc...)

I only one once (the last time I attended) and that because I learned how to "play", putting more on the presentation and looks of the app than consistency or code quality. I basically made a demo not an app, and it won. This is why I stopped going.

[Edit]:

I know people that come with pre-coded modules for hackathons (especially in mobile dev), they copy-paste the codes and projects and just change a bit of the UI. They win every-time.

Unfair? Yes. But they hacked the hackthon system and they win, so good for them.

4
laaph 2 days ago 0 replies      
I love hackathons and game jams. I also don't run to win, and definitely finishing them is victory.

I have to agree with some of the detractors here, though. If a major company sponsors a hackathon or game jam, I immediately get suspicious. Anything offering venture capital or business deals to the winner, I think it will be a "pitch-athon", and I've seen the winners be those with the best pitches, not to those with the best implementations or even best ideas. I've seen hackathons go sour from bad faith in prize money (see https://medium.com/@aliciatweet/the-dirty-secret-behind-the-... for one example).

Having said that, I join the Global Game Jam every year, and partake in several other game jams and hackathons. Dedicating a weekend to a play project, something I plan to never look at again, is an outlet for creativity and fun that I just can't find elsewhere. Sometimes I'm lucky and I'm so impressed with what I've done that I end up submitting to the app store, or otherwise sharing with the world, sometimes it's embarrassing and I never talk of that again. I've worked with a wide variety of people using technologies I've never used before.

The easiest way I think to prevent "hustlathon" is to simply not have prizes nor sponsors. Although I don't completely avoid hackathons of that nature (and hackathons without sponsors are rare, someone donated the space if nothing else!), it is far too common that some company wants to dictate what the technologies used are in a hackathon. Prizes that are "we will offer venture capital" also quickly lead to hustlathon. And a lot of times terms and conditions can approach the offensive.

Anyway, I think more than just students can learn from and enjoy hackathons. And all the comments focusing on the food? When I hosted game jams I didn't offer food! You aren't required to eat bad food.

5
liamcardenas 2 days ago 0 replies      
Hackathons are great for the CS undergrad who just learned how to make an iOS app. It's a good way to push yourself to solidify a skillset, especially while in school. Students don't necessarily have time to be doing side projects (although they should make time). Getting a bunch of work done in one big spurt can be very beneficial.

That being said, I personally don't enjoy them. Free food is great, but I would much rather be working on one of my long-term projects. Also, I think hackathons are targeted a little bit too much towards newbies, rather than experienced devs.

6
dcarreras 2 days ago 0 replies      
I would be considered a "hustler" under the terms offered in your post. As such, I have attended multiple hackathons as a company rep, to support friends, or just to keep up on new ideas. Yes, for me hackathons can be a spectator sport. I do understand the frustration of some hackers that build brilliant applications but fail to win, I have seen it happen. I also have yet to meet a hacker who does not think he/she should win every contest they enter. (that is funny because its true). Like everything else that grows in popularity the original goal may become less obvious over time. Is this a good or bad thing? It depends I suppose. One thing I do know is that popularity brings more attention, which brings more sponsors, which brings larger and more diverse hackathons. Hackers are the heart and soul of hackatons obviously, just don't discredit the business side too much. We kind of need each other. Good luck with your next event
7
loumf 2 days ago 0 replies      
I only attend civic hackathons that are run by non-profits and for the benefit of non-profits. They are not a competition.

Stuff like: http://hackforchange.org/

8
russellsprouts 1 day ago 0 replies      
I'm a CS student, and I do attend hack-a-thons several times a year. My policy is to ignore the competitive aspect. I should feel successful no matter what the judges decide.

My mindset from the beginning is that I won't work on the project at all after the 24 hours allotted. It's a throw-away project. This is really freeing. You don't have to worry if the code is messy, or even if there is a fundamental problem with your idea (game mechanics, etc.)

My goal is to pick a new technology or library to learn and build something with it. Once, I decided I wanted to learn how to use OpenCV, so I made a little game that is controlled by facial tracking. Another time, I had just bought some USB Nintendo 64 controllers, and I wanted to make a game that used them, so me and some friends made a local multiplayer fighting game. (The projects almost inevitably end up as games). Another project we made a multiplayer game with WebSockets to fiddle with lag compensation and clock synchronization. I learned a ton of distributed systems stuff in that short time.Sometimes, the technical problems take all time, and the finished game just barely counts as playable. Getting OpenCV bindings working with Java took nearly 8 of the 24 hours. Another project, using WebRTC for a peer-to-peer multiplayer game, only came together in the last hour, and stretched the definition of game so much that we won a special award "for challenging perceptions of what games can be" :).

It doesn't really matter, because my goal isn't really to make a great game, it's to force myself out of my comfort zone to learn something new. The game is incidental, really. Sometimes, the judges are looking for something more polished, or more business oriented. That's OK -- the game isn't for those judges. I only invested 24 hours into it. However, I've been pretty lucky, so far -- most hack-a-thons I've been to really celebrate true hacks.

I think one thing organizers can do is emphasize the process of writing the code, rather than the result. Ask what challenges the teams faced, the hardest bug they fixed (or didn't :). Near the beginning, try to offer workshops on different technologies, so that people can branch out and try something new.You can also offer categories of judging -- if there is only one category, it's hard to decide between an awesome business idea with little technical innovation and an awesome technical achievement with little applicability. No matter which one you pick, someone will be disappointed. But if there's a category for best game, best presentation, best app, most innovative, best technical achievement, or whatever categories you pick, then everyone at the hack-a-thon can participate however they like best, and be recognized for it.

Ask HN: How to find duplicated directory subtrees
5 points by harperlee  1 day ago   3 comments top 3
1
geoff-codes 13 hours ago 0 replies      
Identical is pretty easy. Maybe something like this.

 #!/bin/sh here=$PWD dir=. depth= rm -f /tmp/list [ $# -eq 1 ] && [ -e "$1" ] && dir=$1 || depth=$1 [ $# -eq 2 ] && for i in "$@"; do [ -e "$i" ] && dir=$i || depth=$i done for each in $(find -L $dir -type d -depth $depth 2>/dev/null); do [ -x "$each" ] && cd "$each" && sha=$(tar c . 2>/dev/null | tar xmvO 2>&1 | xz | shasum | sed 's| .*||') [ $(find . 2>/dev/null | wc -l) -gt 1 ] && echo $sha $each >> /tmp/list cd "$here" done for sha in $(cat /tmp/list | sed 's| .*||' | sort | uniq); do [ $(grep $sha /tmp/list | wc -l) -gt 1 ] && echo Identical directories: && grep $sha /tmp/list | sed 's|.* ||' && echo done
Similar and "similar-and-strictly-newer" both are much trickier as you have to invent a rubric for what "similar" mean, and `diff -qr` isn't going to tell you if, say, the files are mostly the same, but have been moved into a subdirector. So I'd probably use git, traversing the file tree by moving the .git dir around and adding each candidate directory as a different branch, and doing a `git gc` each time to try to keep the size of the index manageable. Then doing a `git diff [--word-diff] [--stat] --find-copies-harder` between branches will pick up files that have been moved around, etc. You could literally do this for every directory and subdirectory, but if you can narrow it down to, say, directories with the same baseman, it would be substantially easier.

On the other hand, I would say I suffer from this same ailment, I just mostly don't bother sorting it out. I just use something like http://cpansearch.perl.org/src/ANDK/Perl-Repository-APC-2.00... to make hard links between identical files, keeping the size of the monstrosity in check.

2
hugopeixoto 1 day ago 0 replies      
I have exactly the same issue. Tons of backup archives nested inside each other. I have been reducing the mess manually, as I have not found a tool that would help. My approach is to use "diff -qr" between directories I know contain the same project and manually merge them / pick the best one. Merging is definitely the worst part of the process, as it cannot be automatically done. I thought about building a tool that builds some sort of sha tree through the directories but on the first try it generated many matches due to empty folders and stuff like that.
3
mtmail 1 day ago 0 replies      
When I sorted my photos, which are also copies of copies, especially after moving laptops several times I ended up with creating a list of md5sums, sorting by count to find duplicate folders.

I'd be interested in something more reusable as well.

Ask HN: Are there software companies that don't make you work all day long?
5 points by wintermute42  2 days ago   14 comments top 7
1
MalcolmDiggs 11 hours ago 0 replies      
Academic institutions (and non-profits) don't necessarily function the same way as corporations. You can expect managers in a for-profit organization to try and squeeze every ounce of productivity out of you. That's their job, really. They'd be doing a disservice to shareholders/stakeholders if they didn't try to get you to put 100% of your time and energy into the company.

So if you want breaks, you just have to take them. If you want to work 6 hours instead of 8,10,12, (or take part of your day to continue your education), you're going to have to "just do it". But no, I wouldn't expect anyone who is responsible for your output to give you 'permission' to work fewer hours, or work less intensely. They will always ask for more, and you've just got to learn how to push back.

In other words: You've got to learn how to be just as strong as an advocate for your own well-being as they are for the company's. Once you learn these skills, it's quite possible to have a good work/life balance, and to make time for the things you find important.

2
jeffmould 2 days ago 1 reply      
Not to be a smart ass, it is called work for a reason, and to be expected to put in 8 hours a day is a reasonable request from any employer. With that said, there is a difference between being "expected" to work 40 hours a week and being "expected" to work 80 hours a week. If you were coming to work for me I would be a little upset if you sat at your desk and read a book the entire time you were there. However, if you were working and using a book as reference to complete your work, well that's a different story.
3
tixocloud 1 day ago 0 replies      
Having been a software engineer for about 4 years, there were times when I remember having to put in extra hours to get things done. However, the majority of my time there has been really pleasant. We were never forced to work all day long so I believe it's more of a corporate culture more than anything else.

Call me crazy but I believe that it is possible to build a company where people can do amazing things without being forced to work extra hours. It's definitely on my to do list with my startup.

4
rahimnathwani 2 days ago 0 replies      
Focus on what you're expected to deliver (e.g. some working software) and how you're expected to deliver it (e.g. being nice to colleagues, writing design docs, ...).

If you don't know what's expected of you, that's something you could discuss with your manager.

If you're doing what is expected of you (and being nice to colleagues etc.) or, ideally, exceeding those expectations, then you will probably enjoy your job more, and feel less pressure to conform to specific work hours.

Of course, different companies and teams/managers have different cultures. Also, in some countries you're expected to stay later than your manager. She, in turn, is expected to stay later than her manager.

5
gdulli 2 days ago 1 reply      
You didn't say what the work hours are so we can't tell you if they're normal. Right?
6
PaulHoule 2 days ago 0 replies      
I read books on my tablet when I do cardio at the gym to square the circle between learning what I need for work and keeping in shape.
7
orionblastar 2 days ago 0 replies      
It depends on how tech savvy the managers are.

Part of doing the job as a programmer is research and design. You don't just sit down all day and write code, you have to write documentation, you have to do research to find ways around bugs, you have to design the UI and data structures.

For example I would write Pseudo code on paper to work out design flaws before I entered it into the computer. I would write Flow Charts and other things. I even developed my own method of developing data structures and database tables on paper as well.

When I got stuck I'd research things in a book, or I'd search for the answer on the Internet. Companies paid for a MSDN subscription and have to make it pay off by searching the knowledge base esp when dealing with API calls that change with each service pack. In using Visual BASIC 6.0 sometimes I'd have to ask a developer at Microsoft via MSDN when I found a bug in Windows or Visual BASIC itself that killed my project and find a way around it. Crystal Reports we used and talking to Seagate Software at the time was the only way to fix CR issues. We had an issue where if the user wasn't an Admin on a Windows PC it would show duplicate rows, and Seagate got a service pack out to fix that issue.

Everything I did on the Internet, on the phone, or reading books was job related and going towards solving problems and using resources. But my managers didn't always see that as work because they wanted me to solve the problems by myself, which would have taken a lot longer and impossible without a service pack to fix bugs.

I never read a book, used the Internet, or made phone calls for personal things, they were all work related.

Yet a service pack is like the size of a CD-ROM and takes five hours to download, so they noticed I was using 5 hours of Internet when that happened. (This was in the late 1990s when the Corporate Internet was slow).

Other programmers who didn't do the same things I did to solve problems, could not solve them and the projects got reassigned to me to fix them, because I was able to fix problems.

No matter how good you are, you will get stuck on some problem and need someone else's help to solve it. If it is a bug in the language or OS, you'll need a service pack or a way to get around it.

You managers might not always understand that you need to seek help by reading a book, looking in a knowdlgebase, or talking to a developer on the phone to solve things.

Your programs work on the old OS with the old service pack, but as soon as new ones come out they break compatibility and trying to figure out what changed without contacting the company that made the updates is really really hard to do.

Ask HN: Is it possible to be a good programmer?
3 points by svanderbleek  1 day ago   10 comments top 7
1
imauld 1 day ago 1 reply      
I admire your courage to basically call everyone on this site a bad programmer ;-).

I also disagree with you. Why do you think nothing can be done about changing requirements? I also don't see how a client/boss changing requirements makes me a bad programmer. This is in same line of thinking as saying someone is bad at sports because sometimes it rains when they go to the park to play.

AS for platform specific implementations details there are people who have built entire careers around being experts in platform specifics.

2
dragonwriter 9 hours ago 0 replies      
> It is possible to be good at thinking computationally, but when it comes to platform specific implementation details and changing requirements not much can be done.

Its quite possible to be an expert at platform specific implementation details for various platforms, or to be good at analyzing new platforms and understanding those details, so that part is something one can be good at, or not, too.

Its also possible to be better or worse at designing software to be maintainable in the face of evolving requirements.

3
lucozade 1 day ago 0 replies      
If by good programmer you mean someone who produces code to some notionally optimal level in a real world environment then, sure, that's close to impossible.

If you mean someone who knows everything about every facet of computing then that ships probably sailed too.

If you mean someone who delivers software that changes the way people live and work in meaningful ways then it's most definitely possible as I see the evidence every day.

4
MalcolmDiggs 1 day ago 0 replies      
I've never been in a situation where programming was an "end" in and of itself. It has always (for me) been a means to an end.

So, I think: yes, it's definitely possible to be a good programmer. If your work-activity furthers the larger goals that you're working towards (in an effective and efficient way), then you're pretty good in my book.

5
informatimago 1 day ago 1 reply      
Fast, Good or Cheap. Pick Two.

Guess which two corporations want?

6
ACV001 15 hours ago 0 replies      
We need to define the term "good programmer". Then we need to find a way to measure it and only then we can try to answer your question.
7
0xdeadbeefbabe 9 hours ago 0 replies      
Yes, but only to the degree it is possible to be an evil programmer.
Ask HN: How is your docker based production flow?
5 points by aprdm  1 day ago   4 comments top 2
1
dennybritz 1 day ago 1 reply      
I am using Rancher (https://github.com/rancher/rancher) to deploy my containers to AWS and have been pretty happy with it so far. It has a nice UI, good documentation and all the features I need (except for data container persistence, but that's coming soon). I like that it plays nicely with docker-compose files.

I previously used Kubernetes (http://kubernetes.io/) to deploy my containers. It's a very powerful platform, but documentation and usability is seriously lacking compared to Rancher. Kubernetes seems like a good choice if you run a large datacenter and need a lot of control. For a small company the management overhead isn't worth it IMO.

Why I will never again rate an Android app
20 points by chmike  2 days ago   6 comments top 4
1
brador 2 days ago 1 reply      
I'm gonna get crazy heat for this, but real talk: get an iPhone.

For now, Apple has not screwed their customers like Google/Android and has more granular privacy options.

2
bookwormAT 18 hours ago 0 replies      
At your first attempt to rate an app on Google Play, you got a dialog warning you that this will be connected to and visible on your account.

I find this information extremely useful, because a +1 from someone i know is more interesting than 5 stars from some random user.

However, I should be able to hide this / opt out after the fact.

3
OJFord 2 days ago 1 reply      
I'm sorry this wasn't as you expected, but that is operating 'as advertised'.

There's some text when you rate that explains it will be shared.

4
chmike 2 days ago 0 replies      
Sorry for the typos. I can only edit the title, not the text. I wrote this with my iPad 1.
PCB design softwares
2 points by technicgang  23 hours ago   discuss
Ask HN: Phnom Penh shared workspaces and real estate insights
6 points by jawon  2 days ago   2 comments top 2
1
thomas-b 1 day ago 0 replies      
I'm working in the city center (BKK1) for an IT company with both locals and expats, (W.E Bridge Technologies, should show up on google maps). So not quite the location you are looking for.

I could advise you to contact elevatedrealtyco.com (not affiliated in any way), they helped me find my place, and they only charged landlords last time I checked.

The condo pricing is really overpriced in the area (especially BKK1), but it will probably go down, too many condos in construction/just finished and most are unoccupied so I'm hoping prices will go down...

2
bbcbasic 1 day ago 0 replies      
I can't help you but mentioning Phnom Penh brings back holiday memories :-). Have you been there before? I remember lots of poor children begging tourists. That part was quite sad.
Ask HN: I have lost all interest in my life. Not sure what to do?
29 points by yumnotfun  1 day ago   41 comments top 31
1
flashman 22 hours ago 1 reply      
I read all the comments here and only one other suggested therapy or counselling. So before you 'shake everything up', 'engage with the PUA community' or 'shave your head', go to a doctor and describe how you feel about your life. They will be able to advise you whether what you are describing is normal, or symptomatic of a mental illness.

Do not take this as a diagnosis, but you sound like you have depression. The good news is that depression is treatable, either through therapy, lifestyle changes, or medication. Many other people suffer from depression; it's a thoroughly modern illness, albeit one that still carries some stigma.

I recovered from depression over a period of about 18 months, starting from the age of 25, and I can say this much about it: you cannot expect people to start loving you until you love yourself. (Family is an exception: they already love you. Turn to them for support.) And you really need a qualified external opinion on your situation. Solving your own depression is like trying to get airborne by pulling on your shoelaces.

2
mindcrime 22 hours ago 1 reply      
No girl or women , I mean not a single one has ever shown interest in me for last 10 yrs.

Oh yeah, one other thing. Be VERY careful of believing this. This is something a lot of guys get wrong. They think no women are showing interest in then, when actually they (the women) are doing so, and the guys just don't realize it. And that's because women tend, in general, to be much more subtle in how they show interest, and because most women expect men to be the initiators in any kind of romantic or sexual scenario.

It's entirely possible that there are 100 broken hearted women out there, wondering why you weren't interested in them, because you didn't react to their subtle cues. I probably won't get any points for this, but if you're the kind of guy who thinks of yourself in terms like "I"m not good with women" or "I never know what to say to women" then consider spending some time engaging with the PUA community. Read Neil Strauss' book The Game at a minimum. You may find some interesting revelations there.

3
realcr 23 hours ago 0 replies      
Hi. It seems to me you are doing pretty well. Some people in the world are dying of hunger or spend their life in wars. You are living the dream of many people.

Use your talent and make something great of your life. 29 is pretty young. Some people begin to be successful only at the age of 40.

About the women: I am no expert, but women don't care so much about your hair or muscle. Most women also don't care about how much money you make. In fact, having a lot of money might become an obstacle when trying to meet women. I think that women care about who you are. So make sure to become a great person.

Some additional specific advice:1. Go learn a martial art. I suggest Brazilian Jiu Jitsu. Maybe when they try to choke you you will be reminded of death, which in turn will remind you how great your life is. In addition, after you survive a fight with the tough guys, you will never fear of approaching a woman :-)

2. Watch Tyler Durden's (Of Real Social Dynamics) "The blueprint decoded". It's really long, but watch all of it. It talks about how to live a great life. It made a big difference to my life, and I hope it will help you too.

Take care mate. Life is beautiful, make the most of it.

4
eip 20 hours ago 1 reply      
Biologists have presented you with some startling evidence that living creatures change themselves dramatically to ensure their survival in a particular environment. Life is self adapting. An insect in the Amazon playas has wings that look exactly like the flowers of the tree upon which it thrives. A bird has a beak that is shaped exactly right to gather nectar deep within a particular flower in its forest. A beetle puffs itself up to double its size to frighten off predators. Most plants, animals and insects have unique biological anomalies that ensure its life cycle in a very special place. How did the creature know how to change itself so accurately? Can you suppose that a moth is smarter than you; that it can alter its own DNA?

The butterfly, whose wings look like flowers, has eyes and a sense of logic, and certainly a desire to stay alive being a butterfly. Its simple desire went forth as a signal to alert a greater intelligence who, by law, was able to assist the DNA change in exactly the way the butterfly had described. The butterfly literally said to itself, in butterfly language, If I were to look exactly like these flowers where I spend my happy hours feeding, the predators would not see me here and I could avoid a horrible death. And so it was. Desire propels a signal to where it needs to go.

Humans use the same adaptive biological process, but they are often slowed down by traditions and lack of trust. If a human wants to fly he settles for an airplane - because he has learned to understand and trust airplanes. It is possible that a human could grow wings and fly. And then again, he wants to remain a human. He is literally afraid of radical change from what his ideal humanness is like. The butterfly wanted to remain a butterfly, but one that looked like a flower. The human is very limited by his ideals. A human could live 300 years, but then he would look funny and old and everyone would hate him - he thinks.

We would like to propose that the joys of humanness could be presented in an attractive but radically different manner. If you could know yourself as a Creator Wave Form that kept your personality and identity intact, you might find it quite interesting to change forms, to alter your appearance at will. Think about what opportunities might be in the cosmos to accommodate your desires. Owls and alligators remain unchanged over millions of years. Why? Because they were so successful and happy being owls and alligators that they stayed that way. Dissatisfaction has many advantages. This is not a joke. Think about how you might want to change. Believe that you can.

5
UnoriginalGuy 1 day ago 0 replies      
What are your hobbies? What do you do in your spare time? Do you socialise at all? I know that for me I never met women and never really dated, then I started socialising and before I knew it I had met someone.

You talk about your job, but what about "everything else" in your life? If your list consists of work -> gym -> home with the occasional family event thrown in between then you'll never be around single women (except at work, but a lot of people avoid that for other reasons, plus it only shows off certain parts of your personality).

If it really feels hopeless and you run out of things to change in your personal life, then maybe it is time for a change of scenery. New city, new job, or heck go back to college just for the experience and jump into all extra clubs you can.

PS - I too have trouble making friends.

PPS - TV would have you believe that everyone is living these fabulous lives with tons of hooking up and intrigue. Most people's lives are fairly boring and dull, in particular by 30.

6
thrownear 18 hours ago 0 replies      
Hit the gym.

It does not matter how you look, or how much hair you have left on your head when it is attached to a well built body.

And know what the funny thing is. We all look same on the inside. I am pretty sure your skeleton and the skeleton of Brad Pitt looks the same (Save for a difference in height). What you have on the outside, can be changed. Muscle can be built and fat can be lost. The only think that matters is, "How bad you want it?" (Also how many depressed body builders have you seen?)

So go on hit the gym (A good one with a good trainer, I guess you can easily afford that). Turn your desperation into muscle (But don't overdo and don't skip leg workouts).

And, this is very important, do not expect shit to change overnight. Actually don't expect anything. Just hit the gym and work your ass out. Never stop and ask yourselves. "What is the point anyway?". After an initial spurt of growth, your progress will probably hit a plateau. But just keep at it, even after you stop growing.

You can also join some dance classes, or martial arts classes. Force yourself to get out more often and meet more people.

And eventually you will start to see things differently. Good luck.

7
jason_slack 13 hours ago 0 replies      
A few thoughts.

1. Keep your head up. If you don't these feelings will get worse. Remember who you are, what makes you happy and why your happiness is important. You can't make someone else happy if you are not happy yourself.

2. Talk to a Dr. They are qualified to help get to the root cause of why you are feeling less than ideal about yourself.

3. Make sure you have a work, life, balance. Work and then get out of the office and enjoy the fresh air.

4. Eat properly. Get some exercise. This works for me. When I feel down I hit the gym extra hard.

5. Get a hobby that isn't your day job. Go to public places to enjoy your hobby if you can. This might help you meet people.

6. Don't worry about dating. Try to make friends. Enjoy them. Build a relationship with them. Maybe they can help you get dates too. They would also be there for support if the dates don't go well.

7. `Smushing` sounds like a Jersey Shore term. I don't think a female wants to hear this out of a males mouth. It might be just me, but I wouldn't let any woman I wanted to date hear me use that.

8. Don't worry about looks, possessions, housing, car, etc. Most all women, I think, would rather find a guy that treats them right, values them, makes them feel like they are the most important thing in life versus all these other things. I had to uproot my wife and kid to be able to afford to make ends meet and buy my wife a house. We were able to move cross country and afford to buy a small house on a lake for about $150K. This made my wife happier than I could have imagined and I don't stress about paying for it. I am an average guy with a beautiful wife and I never had a lot of money or possessions to offer. At one point, my car exploded on a freeway and I could not afford to buy another one. This didn't detour her at all.

9. Lastly, find good in yourself. If you can't, "find a better mirror." Repeat Item #1.

I wish you the best. If you need to talk, so many of us here want to listen and help. Please let us help.

Edit: typos

8
threesixandnine 1 day ago 1 reply      
Man, don't put yourself down like that. Baldness? I am becoming bald as well. It's just the way it is.

As far as women are concerned. Don't fret about it. It'll come eventually. I mean for fu*k sake. You're 29 years old. Still plenty of time.

99% of the world population would love to have your knowledge, job and salary.

9
MaDeuce 1 day ago 0 replies      
Dude, you are too young at 29 to consider yourself a failure. You're not even half done.

I see nothing but good advice so far -- challenge, exercise, lighten up on yourself. However, I'll offer up something completely different... allocate a chunk of your time to helping others. Focus on their problems and challenges (not yours) and use your skills and background to help them improve their situation. It is incredibly rewarding to look back and see how your actions have materially helped the lives of others. Churches, other non-profits, Big Brothers, community groups, etc. are often starving for skilled volunteers like yourself. And hey, while you are busy helping others, you might bump into a nice lady. It's a great way for them to see you for who you really are, not just what you look like on the outside.

BTW, I just watched Unbroken tonight for the first time. What an awesome story. The number and magnitude of the challenges that this guy went through were staggering -- and he never gave up. The challenges just made him redouble his efforts. Get some inspiring things to watch and read.

Friends? Get some quality ones. If you have any toxic friends, dump them. If a good group of friends doesn't happen by accident, you should consciously cultivate one. You need a group of friends that will support and encourage you, and it's your duty to do the same for them.

10
oroup 23 hours ago 1 reply      
Shave your head. It's a small thing and won't solve the underlying issues but its totally in your control and it projects confidence. If you're going to lose your hair then why not on your terms?
11
Pishky 22 hours ago 0 replies      
29 is so young....

Look at the spiritual side of things. What does it mean to be happy. Who defines success, you or your peers. How long does it last?

I can really relate your feelings about women, been there done that. Am now married with two kids and looking back at things I was totally wrong in the assumption that a drop dead gorgeous person would make you happy.

You see, happiness comes from within and is not defined by things like jobs, partners, things you own. If I could choose a religion for you it would be Buddhism, follow the steps and happiness is guaranteed.

All the best

12
michaelpinto 1 day ago 0 replies      
Suggestion:

If you're not happy there is nothing wrong with seeing a professional therapist.

Also avoid life advice from those who work in software, since it's an industry that's not known for "human interface issues".

13
ccrush 22 hours ago 0 replies      
I'm 30, bald since I turned 21, married, divorced, one child, Software engineer like you. Best advice I can give you is to keep dating. Dont look for commitment. You're too young. DO ask for second dates. Women expect you to ask. Only one in 100 will ask you, and half of those do it out of desperation. You don't want that. Make the first move and play the field. Have your midlife crisis in 12-15 years. It is statistically what you'll end up doing anyway.
14
ahanjura 22 hours ago 0 replies      
Dude, there are zillions other people who go through the same in life and feel something very similar. However, you are far ahead of many by acknowledging that there is a problem and money is not the only thing. Kudos for that.Besides, as a typical indian male (i am one too), you seem to be awefully desperate to get laid (given your reference to women/girl friends etc). Trust me, life isn't all about marriage, kids and dates. Yes, they are very important but first, it is about YOU.

You might have rushed through the first few years of your adult/professional life and arrived where you are today but take a step back. Think about YOU. Look at what you are good at and what you need to work on. Just a few things. Don't try to be someone you are not at the core.

If you were an achiever ever, you still are. That hasn't gone anywhere. You have just stopped believing in yourself based on parameters the "world" considers as criteria for success/fun/adulthood. Live your life. If you can do just one thing today, go and help some people with those 120K you make every year. I have worked in the bay area ages ago and I know how it feels. Your problem is lack of belongingness. Go, create an impact in other people's lives and life will love you back. and yes, that woman/girl you want in your life will follow you but if you ask me, don't go looking for it. If you do the other things I talked about, the HIGH you will get will be awesome. If you do get a pretty girl :), please let me know. I will tell other folks that I helped you (in someways) get one:). Chill out. Life is awesome even when it is not.

15
gexla 22 hours ago 0 replies      
> I have always got advice that be confident.

This is what you need to focus on. You need to be confident to sell. We are always selling. You had to sell to land your job, maybe you can look at what you did right there and use that as something to build on.

> Despite trying multiple times and many many changes I still feel like I never get a girls attention.

None of us do.

> I go on date once in a while but I never had second date.

Here is your problem. Dating is a numbers game. The more attempts you make, the more you are going to connect. But also, the more confident you will get, the more natural it will feel and generally the better you will get.

As with sales, if you aren't getting many opportunities, then you need to find them, create them and generally do whatever you can to line up more of them. That means you need to make changes from what you are currently doing. Make a list of changes you can make (activities, meetups, hobbies) and hit the pavement. The facetime you are getting with opportunities is your main metric (at least for the start) - if you are growing this, then you are well on your way.

As with sales, you can either wait for sales to come to you and get down on yourself when you aren't closing. Or you can get out and aggressively push your "product." Who wins in this scenario? You have to grow thick skin. You can't obtain happiness without experiencing the pain of failure. Making a sale and getting rejected are two sides of the same coin. You can't have one without the other. If you can't hang with the negative side, then you don't deserve the positive.

Selling in this case is just weaving a story and convincing people to listen. That's the first win. Attention is scarce and valuable. If you can hold someones attention, then you are winning. Then you have to weave a possible alternate reality for that first date which is potentially better than all the other alternatives. A great story that your potential date could see herself being a part of.

You got this. We are all social creatures. People will be attracted to you just for that reason alone. You have friends. You landed a job. You have family who want to talk to you. There are others out there who would love to spend time with you. Put in the effort and show them WHY they want to spend time with you.

16
chipsy 22 hours ago 1 reply      
A basic question comes up: Do you know what you want? Your goal is described in terms of acting the way you thought you were supposed to - finding some woman and starting a nuclear family with her. You're unhappy about not having that but you also say you're unmotivated.

What you may need is to shake everything up. If you aren't happy performing in this way(and following a traditional career and marriage script is a performance) start questioning who/what you are instead. There are a lot of different lifestyles out there. Some folks are libertine, others celebate. Gender and gender roles aren't static. You may desire a subset of sex, romance, or children, but not all three. If you go through the process of exploring and questioning and come out the other side basically still aligned with the norms, you'll be more prepared for a relationship - you'll understand just how different people can be. Goes the same for your career choices too - you may do better with a small tweak. Imagine interviewing for different positions and conpanies.

17
declan 22 hours ago 0 replies      
As others have said, objectively speaking you're in the top 0.25% or so of the world's population by income; the global median income is only around $1,300 a year. So objectively speaking you're doing well.

Relatively speaking, though, you seem to feel you're not. In terms of dating, it's a matter of supply and demand. There is a glut of men (114:100 ratio) between 20 and 44 years old relative to women in San Jose: http://sanfrancisco.cbslocal.com/2014/10/04/man-jose-san-jos...

So women can be more selective. You can change this by improving your own desirability, as others in this thread have suggested, or by moving to a place with a less lopsided gender ratio. Neither is trivial but it sounds like it's worth doing given how unhappy you say you are.

18
realcr 17 hours ago 0 replies      
A friend of mine have read your post. He doesn't have an account, so I include here his message:

Dude, I know your situation very well from my own life experience.100% familiar.I've gone past it.If you wanna know how - keep reading:

1. If you've reached undesired places in your life - it for sure meansthat you've followed the wrong roads. Gone the wrong path for you.What you harvest now, is the plants you've been sowing all of yourlife, until now. Keep sowing the same seeds, you'll keep harvestingthe same results.I would suggest you to doubt and question everything you thought andbelieved about life, and recalculate route... ;-)

2. Here are the good news:Have you asked yourself why do you post this question here in the web,instead of jumping out of the window?..What is that urge inside you that makes you wanna live?? Wanna be happy??Block all your thoughts aside, just focus on that infinitely deep urgeof inside of you, that made you come here and ask for help.This urge alone is the answer, the key for you to get out of the mud,and live your life the way you want them to be.You might, however, have to let go and give up things (you think) youwant - in order to break out of your own jail.In other words - GET OUT OF YOUR COMFORT ZONE.Don't hold anything back. Drop all of your attachments. Be willing TOSACRIFICE EVERYTHING, in order to attain that which is reallyimportant to you.Do you even know what it is?..If not, finding it out will be a good start. ;-)

3. Get into a group of ppl like you. A group of searchers. Studytogether, practice together, share your experience s and problems witheach other. That's crucial for you and will help you way beyond youcan imagine. Just do it.I've started by searching google with all questions I had about life,girls, love. Don't prejudge anything. Go with whatever speaks to yourheart.

If it feels good - you're on the right way!!!

4. Lack of sex IS the reason for you unwillingness to live. Sex islife force in our body. Once that vital enrgey is surpressed and blockinside of us, all of the universe becomes meaningless!!!I want you to notice a very important point:These two problems are circularly dependant!!! They CREATE EACH OTHER.You are caught in a loop of no sex - no life desire - no sex - and soon.One sure way to break out of this miserable loop was given to you inpart 2 in my answer. :-)

I could write here a whole book for you, but I think you got enough. I willfinish with a quote of Tyler Durden (fight club, (RSD one is alsohighly recommended)):"It's only after you've lost everything, that you are free to do anything."

Have an awesome journey.

19
TheGrassyKnoll 17 hours ago 0 replies      
Get the fuck out of the office; you work too much.

 1) Get in the car and take a road trip. The US has some of the most spectacular scenery in the world. 2) Even better would be to do a road trip and go camping. 3) Best of all would be a backpacking trip.
Hopefully, you've saved a little money & have some vacation time.

Do not waste time with doctors/shrinks. There's nothing wrong with you.

20
Yaa101 18 hours ago 0 replies      
Bull... And quite normal to feel on that age, I had the same...

What you need is reachable goals to set for yourself, goals that are not dependent on others to achieve.

This way you are solely resposible for the outcomes of these goals.

Start with giving your brains the temple it deserves by doing https://en.wikipedia.org/wiki/Calisthenics

If you do that for one or two years start to give yourself further goals.

That's all!!

21
rasengan0 23 hours ago 1 reply      
Engage in physical activity like social dance- salsa, swing, ballroom, yoga, tennis or whatever is in close promixity to you. Or determine by random method. Seriously, no joke. Test this for 30 days.
22
winash 19 hours ago 0 replies      
I am not bald. Sometimes I also get depressed as hell, the only thing which helps is exercise.

See a trichologist for your hair, if it helps get implants, or just shave your head and forget about it.

Work-out (if you already do, work out harder and heavier), eat well and do something challenging in your free time (learn Chinese, learn to play the flute, etc etc). You will feel much better in a month.

23
CmonDev 19 hours ago 0 replies      
I will get downvoted for this promptly, but have a look at Reddit Red Pill:

https://www.reddit.com/r/TheRedPill

They are giving useful advice as opposed to "just be yourself"

24
dennisgorelik 19 hours ago 0 replies      
1) Ask your parents (or other relatives) to find you a bride in India.

2) If that does not work - move to either another part of the US (with male/female ratio more favorable to you) or go to India for a year or two until you find a wife there.

25
santaclaus 23 hours ago 0 replies      
What about a change of locale? Does your company have offices in other cities? Sometimes a change of scenery can do wonders.
26
gchauhan 22 hours ago 0 replies      
Start listening to Les Brown. You will feel like a rockstar and life's gonna change my friend.

* From an Indian to an Indian

27
adventured 1 day ago 0 replies      
Three pieces of advice that I believe will help a lot.

1) Challenge yourself more. If you're bored at work, do something else that will excite you. 29 is young. If anyone in SV tells you otherwise, they're delusional. Nearly all of the most famous entrepreneurs in SV's history were in their mid 30's when they got their big hit. At 29 there is still a lot of great work / productivity to be had, decades worth in fact.

2) Work out, weight lifting specifically. Put on 20 pounds of muscle. It's an excellent way to boost energy, feel better mentally about yourself, and to get the attention of the opposite sex. You can get most of the way there in a single year with discipline. Getting fit is also one of the best ways to beat normal feelings of depression.

3) Shave your head. Combine that with adding muscle. As a combination it tends to go over well with a lot of women.

People your age do not smash left and right. Most people don't have much going for them at 29, either in the US, the bay area, or the world. It's an SV myth, and basically complete bullshit, that sub 30 year olds are killing it left and right. Don't buy into it, it'll just cause you to be hard on yourself for no good reason.

28
orionblastar 1 day ago 0 replies      
Don't lose hope, you've had some bad luck but you are still young.

I ended up on disability in 2003 due to a mental illness. I got married in 1997. Before that women wouldn't even talk to me because I was a geek or nerd. I was always considered to have autism because of the way I talked. I couldn't find a thing I was good at until I got into computers and programming. I met my wife at church, before that I would meet women on BBS systems and BBS events and most of them were weird or already had a boyfriend they wanted to make jealous.

You have to respect women and listen to what they say. You shouldn't meet women in bars and at work, you should go to meetup.com and join special interest groups of like minded people and find women who have something in common with you. You need to take it slow with women, they don't like it when you rush them and they have to show interest in you first before you make a move.

A lot of men in IT have problems finding women to date them, it is a common problem. Most of those men have had to move to where the jobs are and it is a different culture, society, and community than the one they are used to, so women there don't find them attractive.

29
mindcrime 22 hours ago 0 replies      
I think I have failed myself and everyone who kept high expectations of me.

I think everybody feels that way sometimes. Don't let it get you down. And remember, you're living your life for YOU, not for all the other people and their expectations. This is one place where I'll advocate going in for some good old-fashioned Nietzsche'an / Ayn Rand'ian selfish / self-centered thinking. Be the center of your own universe and quit giving a fuck what anybody and everybody else thinks.

You're a fucking badass. Why? Because you said so. Because you chose to be. Yes, you did, just now, I heard you. Trust me. I hear things.

Choice is everything. Remember the end of The Matrix:Revelations? When Agent Smith is taunting Neo, asking, "Why, Mr. Anderson? Why do you keep getting back up? You know you can't win, why keep getting up"? And Neo just looks back and says "Because I choose to". That is one of the most powerful scenes in movie history, because it reflects such a powerful truth about the real world.

Choice.

It's your life and you can choose to be happy, or choose to be miserable. It's all down to how you chose to see, hear, feel and interpret things. You can focus on the negatives our you can focus on the positives. Your move.

Seriously, I can't make you think like this, but I'm trying to point something out, a very basic, fundamental truth... your happiness, your contentment, your state of mind, it comes from within. It isn't about how much money you have, what kind of car you drive, or how many girls your boning. You get to choose to be happy, to be content, to be whatever-the-fuck-you-want-to-be... every day.

So you don't have all the "stuff" you want yet? Fine, remind yourself both that it's OK, that what you have doesn't define you AND remind you're self that you are a bad-ass, and you're still on the way up. You are a conquering machine, and you will be on top of the world before you're done. Don't just say it, KNOW it. You have the world by the balls, now take that motherfucker and squeeze until it hurts, and show it who's in charge.

Just remember this, when things are tough... you can have your dreams, but NOBODY said it would be easy. OK, there WILL be adversity and tough times. That's OK, the adversity is what makes your story a story worth telling. You think bards would sing songs about a Prince who's born with a silver-spoon in his mouth, sits around being pampered until he's 18, then walks next door to the neighboring castle and says "Can I marry the beautiful Princess?" and she comes running out yelling "oooh, I live you, I love you so much" and then they are married the next day, have a couple of kids a year later, and then live happily ever after? Fuck no, that story is fucking boring. The stories people want are about the stable-boy who falls in love with the princess, but can't even get near enough to her to talk to her, and then she gets kidnapped by the Evil Dragon, and then he has to steal a an old, broken-down, half-lame horse, a rusty suit of armor that's full of holes, a broken sword, and then go off to try and rescue the princess... and of course his horse dies halfway in the middle of nowhere, it's freezing cold, with brutal, nasty, driving rain and sleet falling, and he's freezing nearly to death in the wastelands, with no food and no help, but he keeps fighting and fighting and through grit and determination and pride and love manages to make his way to the lair of the Evil Dragon, and... well, you get what I mean.

So, what story do you want to be part of? The one where everything is just handed to you and everything is perfect and nice and sweet and easy and everybody gets a pony? Or the one where some bad shit happens and you will your way through, over, or around the obstacles?

Oh, and listen to some good music too. Good music always helps lift your spirits. Here's something to get you started:

https://www.youtube.com/watch?v=WtuoFv4dcwM

https://www.youtube.com/watch?v=EhGEGIBGLu8

https://www.youtube.com/watch?v=CmXWkMlKFkI

30
brogrammer90 23 hours ago 1 reply      
31
NhanH 23 hours ago 0 replies      
I might be too sensitive, but this seems to be offensive on too many levels. And no, I'm not Indian
       cached 5 September 2015 04:05:01 GMT