hacker news with inline top comments    .. more ..    4 Dec 2014 Ask
home   ask   best   5 years ago   
Ask HN: How or where to begin learning mathematics from first principles?
12 points by smtucker  1 hour ago   8 comments top 7
dil8 13 minutes ago 0 replies      
I have found the below links excellent pathways to mastering mathematics. I actually was in the same place as you and started with Spivak Calculus. Now I am back at School studying mathematics :P



jeremyis 15 minutes ago 0 replies      
I went from being a below average math student in high school to a really good one and it started by reading this text book and doing the problems in the back: http://www.amazon.com/Stewart-Redlin-Watsons-College-Algebra...
plinkplonk 22 minutes ago 0 replies      
Learn how to prove theorems. "How to Prove It" by Velleman is the best book for this (imho). (Amazon link http://www.amazon.com/How-Prove-It-Structured-Approach/dp/05...)

More good advice at http://scattered-thoughts.net/blog/2014/11/15/humans-should-...

haxiomic 34 minutes ago 0 replies      
Try http://www.khanacademy.org free), their math series starts from basic arithmetic and walks all the way through to undergrad-level mathematics.

I personally preferred khanacademy to my math teaching at school and it's been handy during my degree.

For more advanced stuff i've found Stanford's online courses (https://www.youtube.com/user/StanfordUniversity/playlists) and MIT OpenCourseWare (http://ocw.mit.edu/index.htm) to have the best material for Physics

ArkyBeagle 27 minutes ago 1 reply      
There is some distance from this to antenna design, electromagnetism, etc, but I think you have to be fluent in proofs to actually follow along on those. Math is a big subject; ymmv.

A Transition to Advanced Mathematics by Douglas Smith (Author), Maurice Eggen (Author), Richard St. Andre (Author)

ISBN-13: 978-0495562023 ISBN-10: 0495562025 Edition: 7th

It shows up on Abebooks which could help with the price. It's a small book, exceedingly well-crafted and worth every nickel.

SEJeff 45 minutes ago 0 replies      
I'm in a not too different situation from yourself as a self taught developer. I spent about 6 months and taught myself most of the mathematics concepts I forgot or never tried hard enough to learn from the Khan Academy. Their mathematics tutorials are excellent.


bobsadinook 51 minutes ago 0 replies      




good luck!

Google Maps Pro soon to be free
14 points by stigi  3 hours ago   discuss
Ask HN: What's the best way to nab a soon-to-expire domain name from a squatter?
11 points by seanherron  6 hours ago   4 comments top
joedavison 4 hours ago 2 replies      
Step 1. Stop calling the rightful owner of a domain name a "squatter", even if you don't happen to agree with the way he chooses to make use of his asset. [1]

Step 2. Contact the owner of the domain name and make him a reasonable offer. If the domain name has been registered for any length of time, it's highly likely the owner will renew it, and not let it drop. This is especially true if it has broad appeal or generic value.

[1] Based on your profile, it seems likely you are trying to get this name:


It has been registered since 1999 and the owner is a well-known domain name investor. Your best way to have a shot of getting the domain name is to contact him and offer to pay him a reasonable price for his asset. Note that he probably does not take too kindly to the pejorative term you have used to describe his profession.

Squatters are people who live in homes or real estate that they don't own -- not land owners who choose to keep their land undeveloped. There is a huge difference. You don't call the guy who owns a bunch of land just outside of town limits a "squatter", because he leaves the lots empty for years, even though you'd like to build a house there.

Cybersquatting is a very specific legal term which refers to bad faith trademark infringement. http://en.wikipedia.org/wiki/Cybersquatting

Unless you started your company and/or registered a trademark before the domain you want was registered, and the person registered it only as a result of having heard of your company or mark, then no "squatting" or "cybersquatting" has occurred.

Good luck.

How common is it to work remotely as a programmer?
3 points by thepredestrian  2 hours ago   1 comment top
gamechangr 1 hour ago 0 replies      
Remote jobs are harder to find, but they do exist.

There are many, many jobs that have a two or three day work from home option.

Ask HN: My company is about to get acquired, how do I best manage this money?
13 points by crcme  7 hours ago   8 comments top 7
cegascon 7 hours ago 1 reply      
Honestly if you are talking about considerable amount of money you should seek out to first and accountant (He will save you more money that he will charge) he will figure those things out cause even if you research on that a lot, my personal feeling is that you might do mistake that will catch up to you in the future.

For the were to invest it, well no one can answer that for you it depends on your attitude towards risk and where you are in your life. If you 25 no family and looking to risk more to (hopefully) earn more then invest back in yourself and start your own but if you have a family and looking to work in o a more steady environment, wait a bit because with over 100K in your bank account, you will get calls from portfolio managers! : ) Those guys will know who to invest your $$ better and at a risk level your will be comfortable with.

An personal opinion, fix everything with an accountant an then relaxe a take the time to answer those questions they will affect a lot how you will live your futur!

seainvest 4 hours ago 0 replies      
I was in a similar position a couple years ago, and I can pass on the advice that I was given from financial planners/etc.

Much of the advice that can be given is dependent on what you want to do with your windfall. If you do bring in $1 MM or more, you theoretically will have enough to live out the rest of your life in a 4/5-star hotel on a beach somewhere. You could travel for a while, or just hang out, or you could try to turn that cash into something much larger. Personally, I've done all three, with different levels of personal satisfaction from each.

Depending on your age (are you closer to your 20s than to your 60s?), most financial planners will advise putting roughly 50% into higher risk investments (startups, riskier stocks, Forex baskets), and 50% into more conventional assets (real estate, investment funds, etc), with higher allocations to lower risk as you grow older.

I would definitely try to invest a large part of your wealth into assets that pay regular, well defined returns. The most conventional of these are real estate and dividend producing stocks. In real estate, there's small apartment complexes, rental houses, small office buildings, and other commercial properties. Generally, you can purchase these types of assets with a 10% down payment and will see a return of 7-9% over the long term. Generally, you should be able to secure a 30 year mortgage on a property with interest of roughly 3-4%. There are other types of conventional investments that also perform regularly, such as purchasing under-performing small businesses like small tool-and-die shops, or other small manufacturing concerns.

Much of it depends on your taste for risk. For instance, energy and commodity stocks, which can usually pay out good dividends are in freefall at the moment (due to the low price of oil). However that freefall won't last -- a well-timed purchase or sale could mean a 20% gain in a relatively short span. Additionally, Forex baskets are showing extremely great growth at the moment, with the right split between currencies. If you start monitoring these markets, you'll start to get a feel for when the peaks/valleys occur, and can invest accordingly. Generally, it is wise to spread out your higher risk investments into smaller baskets that can be easily changed/converted into other assets. Also, be wary of any investment managers who claim they can beat the market. They likely can't, and if they did before, it was due to a combination of luck, timing, and being in the right place at the right time. I have yet to meet someone who can reliably outwit the market.

If you have a taste for riskier investments, and since you have an engineering background (and are a short plane flight away from most of South East Asia), you might consider joining a small investment fund (or VC firm) that focuses on technology in SEA. There continues to be huge growth all over SEA (Indonesia, Philippines, Malaysia, Singapore, Thailand, etc). Many startups require very small investments ($50,000-$100,000), and you could theoretically invest in 5 or 10 at the same time, with the intention of later selling one at 15-20x and the others either returning less than the investment or roughly breaking even. Attend one of the regional tech conferences as an investor, and find some teams/products that you have confidence in and invest!

If you have an idea for a product or service in any business sector, I would highly suggest starting your own company and "giving it a go." In my experience, these types of ventures tend to have far better returns than any other, so long as you are judicious with your spending, and keep your company small and lean enough until it is able to narrow down on the right product/market segment fit. Once you have found the right product, then you scale like mad.

Remember: there's no reward without risk.

chatmasta 7 hours ago 0 replies      
You don't want an accountant for this amount of money; you want a financial planner. Find someone who's an expert at managing wealth to grow it safely and conservatively. He/she will work with you to devise a plan, based on your life goals, to make the best use of that money.

Also, don't spend any of it for at least a month.

jenkstom 7 hours ago 0 replies      
Reduce expenses first, cover cash flow requirements then increase revenues without more risk than you can accept.

Begin by paying off highest interest debt and continue until you run out of money or have paid off all your debt. You always get rid of debt because debt costs you money on an ongoing basis. Better is to make money - which is not just a little better, it's double better. You get to keep cash you would have lost due to interest PLUS you get to make more money by investing.

Next you need to try and make sure you have enough cash flow to continue meeting recurring expenses, or make purchases that eliminate or reduce recurring debt. Buy a house instead of renting, that sort of thing.

After that the general rule of thumb is to invest in the highest-return investments you can find that provide an acceptable level of risk. If you are 40 years from retirement and can accept a very large amount of risk, then you might want to invest part of it in another startup that you think has a good chance of a very high rate of return. You might put part of it in stocks (high to medium risk), bonds (medium to low risk) or money market items like certificates of deposit (low risk, but some of these tie up your money for longer periods of time than others).

alain94040 6 hours ago 0 replies      
It really depends on which stage in life you are at. Do you currently have a comfortable life (make good income, no major debt)? Then don't change anything, just place your money safely.

Piece of trivia: the first thing people in your situation buy is a new bed.

jbrad7354 5 hours ago 0 replies      
You're going to pay 50% in tax. No way around that.

$2M in Sydney doesn't go that far these days, but if you want hassle free investment, put it into Vanguard.

Otherwise just throw it into a high interest savings account for zero risk.

Ask HN: Is it OK to reverse engineer a file format for interoperability?
5 points by chwind  3 hours ago   1 comment top
Ask HN: Working at digital agency company vs. startup
6 points by leeinsu  4 hours ago   3 comments top 3
guiambros 4 hours ago 0 replies      
It's hard to generalize. In the same way that not all startups are created equal, this is even truer for digital agencies. And even different offices within the agency network.

There's a lot of great work coming from agencies [1][2]. But there's also several agencies that are just doing busy work, making a living by getting basic digital production work done.

If you have an offer from a digital agency, I'd look carefully at:

1) the type of work you'll be doing (and, more specifically, which clients)

2) to whom you'll report to, and the experience of your peers

3) what this agency has done in the past, that you think would add value to your career.

Good luck! If you need help assessing your options, feel free to drop me a note. Email on my profile.

[1] http://en.wikipedia.org/wiki/Cinder_(programming_library)

[2] http://www.compositeframework.io/

EDIT: having said that, there's good things to learn on both. A startup teaches you to be flexible, and to move fast, be lean, focus on the product. Agencies teach you to scale things, to get the work done in teams, to work with enterprise clients.

petervandijck 3 hours ago 0 replies      
The basic difference (and of course it depends to some degree) will likely be:

- at a startup you learn how to make users happy.

- at an agency you will learn how to make clients happy.

thehulk 4 hours ago 0 replies      
I think it would come down to the people you work with and the companies themselves. In some ways you're comparing apples to oranges.
Ask HN: What stock will you buy in 2015?
3 points by davidshariff  5 hours ago   5 comments top 5
fredmonroe 2 hours ago 0 replies      

long term holding period, more information herehttp://etfdb.com/2014/affordable-active-alpha-inside-the-u-s...

i'm a fan of Wes Gray's writing and philosophy and approach, if you really want detail read:http://www.amazon.com/Quantitative-Value-Practitioners-Intel...

disclaimer: i am good friends with an principal investor in their ETF business.

zwiteof 4 hours ago 0 replies      
Vanguard target date retirement fund. Auto-invest set and forget. Maybe once I have more I'll do a 3-fund portfolio to reduce the expenses a bit. Returns should generally track the market, pretty much hold until retirement.
logn 3 hours ago 0 replies      
I always like this blog which focuses on stable/growing dividends: http://www.dividendgrowthinvestor.com/

But I tend to think that an S&P 500 index fund is just as good. However, I also believe central banks have been investing in the S&P as well, and that it's due for a large correction (valuations are currently 2x historical norms).

chuhnk 4 hours ago 0 replies      
Definitely some sort of index fund like vanguard. Then try to de-risk my portfolio by making some non-tech investments. And finally leave some money aside to wait and see what IPOs next year. Investing starts with the new tax year which is April in the UK.
adventured 1 hour ago 0 replies      
Hopefully dirt cheap oil industry companies.

Eg. Halliburton (HAL) is currently 40% off. Or Continental Resources (CLR), currently 50% off (assuming I think their balance sheet and earnings hold up well enough to the pricing pressure and there's no threat of insolvency).

I'd love to get Exxon (XOM) in the $50's or $60's on a bearish run. Its earnings will fall with oil, and its valuation should come down according (despite holding up currently); it hasn't had growth in years, this will make that much worse. Despite the lack of growth, Exxon would be a great dividend at lower prices. I view Chevron (CVX) in a similar light.

Solar companies will plausibly take a beating as well, the lower oil goes. Emotion will likely cause investors to make typical mistakes here, and push valuations too low. First Solar (FSLR) is near its 52 week low, and will probably drift lower with oil. SolarCity (SCTY) is also near its 52 week low. This while the stock market is at all-time highs.

I think the damage will get worse yet, providing great bargains. If the market happens to turn south as well, at the same time oil is down, there could be extreme bargains, ala the oil lows of 1999/2001 and the great recession crash.

Ezra Zygmuntowicz has died
416 points by milesf  3 days ago   65 comments top 46
jxf 3 days ago 1 reply      
One time I was working on doing some tricky distributed routing for a freelance customer that was using Merb. At the time I didn't know Ezra and we'd never personally met, but I explained my problem over email and asked if he had any suggestions. I wasn't really expecting a reply -- it was essentially a cold call.

He immediately dropped what he was doing and emailed me back, "that sounds like a really interesting problem -- can I call you and we'll set up a screenshare?" He then spent two hours helping me get it right, free of charge, and he never asked for anything. (I eventually had to email a few of his colleagues to figure out his office address to send him a thank-you present.)

I think that is the sort of thing that epitomized Ezra, from everything I've heard from his many other friends: he was funny, patient, and most of all kind.

eliziggy 3 days ago 3 replies      
This is Ezra's brother, Eli Zygmuntowicz. Thank you all for you kind comments. I know he valued his programming and tech community immensely. He will be sorely missed by his family, friends and son. If any of you are interested, we are having a memorial service for him in Portland this Wednesday, Dec 3. We are also setting up a memorial trust fund for his son, Ryland. Please email me at eliziggy@hotmail.com if you would like details about either the service or fund. Best. Eli
antirez 3 days ago 0 replies      
Ezra was the first to start making Redis popular, wrote the initial implementation of the Ruby client, gave the first talk I remember at lightning conf. One time I met him at EY office with his family, with the 2 months old child. At some point he started to disappear more and more, we were supposed to meet in Portland at a Redis conf and he was not able to make it. I was concerned about him every time I saw a rare tweet. I'm sorry Ezra.
hcatlin 3 days ago 0 replies      
When I was first releasing Haml, I remember that Ezra piped up and encouraged me. Actually, thanks to the Internets, it's still there https://groups.google.com/d/msg/rubyonrails-talk/UqYlo_N59zo...

Seeing someone as brilliant as Ezra saying he liked my project (Haml was the first thing I ever released) really encouraged me to continue on in OSS development. And, of course, we added iterators to Haml shortly after Ezra suggested it.

Also, Ezra was super helpful when we built m.wikipedia.org using Merb... helping me get everything set up so that we could scale that project to 2 billion pages a month through the three dinky machines I had!

I'm totally surprised and gutted to hear that he's passed. :(

mreider 3 days ago 0 replies      
He used to fly little radio controlled helicopters all over our office at Engine Yard. Playful and fun. The real tragedy has little to do with his departure from the world oftechnology. The real tragedy is that his son, who must be no older than six, has lost his father. So so sad.
eliziggy 1 day ago 0 replies      
Hello everyone. Here is the link to my Brother Ezra's son Ryland's Memorial fund. If I know one thing at this time it was that my brother loved and wanted to provide for his son. Please help us do that any way you can. Please share via Twitter or any media or with friends who want to help out. Thanks for all the support.


Best, Eli Zygmuntowicz

holoway 3 days ago 0 replies      
Ezra was so good to me. He helped write Chef, tool our idea and ran with it as a critical part of Engine Yard cloud. We wrote chef solo together . He and his wife made my wife and I feel warm and welcomed in San Francisco. Rest well, big guy.
milesf 3 days ago 0 replies      
If you didn't know Ezra, some of his talks are available on Confreaks:


In particular, his last talk at RailsConf 2012 is a fascinating history of Ruby on Rails:


throwa 16 hours ago 0 replies      
excsm 22 hours ago 0 replies      
I too would like to echo the sentiments that already have been expressed here. I remember discovering nginx through his blog post about how to easily set up rails with it. I had issues with backgroundrb and he was so kind to help me out over irc and countless other moments. I also remember him bringing Redis to my attention I think he did so for a large number of us. I followed his work as I had a deep respect and admiration for him as a person. So tragic to hear this news. Really gutted. I will never forget him.

Never had a chance to meet him in person so Thank you Ezra.

Adam_Simms 3 days ago 0 replies      
He moved to Portland, Oregon for a new job, but I believe mostly to jump back into the glass blowing scene he helped create in the 90's. Ezra was a innovator in the glass pipe world. A world class artist that reinvented lampworking.
mattetti 3 days ago 2 replies      
The way I will always remember Ezra: https://www.flickr.com/photos/adelcambre/2932034431/in/photo... MerbCamp, 2008
asenchi 3 days ago 0 replies      
Ezra hired me at Engine Yard about two months before he left. I loved discussing infrastructure and software with him. He did a lot for the Ruby community and brought to light lots of great tech (redis and nginx). He had a big impact on my career and for that I will be forever grateful. Prayers and thoughts with this family. Rest in peace Ezra.
heimidal 3 days ago 0 replies      
I shared a cab ride with Ezra from the New Orleans airport to the RubyConf hotel in 2010. In the very short time we spent in the car talking about his new role at VMware working on Cloud Foundry, his enthusiasm and passion for Ruby and the community's future left a huge impression on me.

Ezra, you will be missed.

inetdavid 1 day ago 0 replies      
I'm very sad to hear this.

In the very early days of Rails Ezra was one of the most helpful people on the IRC channel. When he mentioned that he worked only a few hundred miles away I helped hire him at a small software outfit in Spokane, WA and worked closely with him for over a year.

From there he left to co-found EngineYard.

He did so much for the Ruby community and will sorely missed.

I'm glad I had a chance to know him.

macournoyer 2 days ago 0 replies      
When I was getting started with Thin (the Ruby web server), Ezra sent the first few patches, talked about it at confs, used it at his company and helped me debug it on IRC for hours. Only because, he thought it was cool tech. His passion was contagious.

He's the reason why my tiny project became popular and I'm sure many other tech we use today. Thank you Ezra!

tomfakes 3 days ago 0 replies      
If you were building Rails apps in 2005/6, more than likely you were reading Ezra's blog post on how deploy to your VPS. It was tricky to get right, but Ezra made it so that it was no longer impossible. He was always there to help people with their own tricky configurations too.
mikepence 3 days ago 1 reply      
What do you say about a man who embodied everything that is good and precious about the culture of sharing in software? When we all got that Rails was the next big thing in '05 and '06, Ezra was there in IRC and freely gave of his time and expertise and all but tutored me in Rails and Ruby. I was so deeply moved by his generosity, that on meeting him at the first Rails conference, I just had to hug him.

Goodbye, friend. The kindness you showed to me and to so many others lives on. Thank you.

tmornini_ey 3 days ago 0 replies      
I woke up this morning to Regan's post on that old photo.

It's an incredibly sad day: a great hacker, founder, and community member has been lost forever.

Goodbye Exra, I'll miss you.

brumir 3 days ago 2 replies      
I meet Ezra at RailsConf 2007, this was pre Engine yard if I am not mistaken. At this point he was all merb. He was fun to be around, very positive attitude and extremely smart.

Sad day

jasonwatkinspdx 3 days ago 0 replies      
In the early days of both Engine Yard and Kongregate Ezra and I worked closely on solving some problems during high pressure moments. He was smart, dedicated, and genuine. He worked hard to not just solve problems, but to communicate and teach everyone around him.

We lost touch over the years, chatting occasionally and always saying "hey, we should meet up sometime." I'm sorry now we didn't.

hassox 1 day ago 0 replies      
Ezra was an inspiration to me. My first ever OS contribution was to merb, and his was so helpful, it inspired me to keep going. It was great to work with him on that project, and later at Engineyard. So sorry to hear of his passing.
rabble 3 days ago 0 replies      
Ezra was a playful hacker who was never afraid to strike out and build something crazy.
bphogan 3 days ago 0 replies      
He taught me how to deploy Rails apps, and with his help I figured out what I needed to get a production environment running on Windows. Then he asked me to contribute what I know to https://pragprog.com/book/fr_deploy/deploying-rails-applicat... (out of print now).

He's one of three people responsible for turning my career completely around back in 2005. He always paid it forward, and I have always done that myself since.

He was amazing. Honestly, we need more of that and less "you're doing it wrong."

acangiano 3 days ago 0 replies      
This was horrible news to wake up to last night. The importance of Ezra in the Rails and related communities cannot be overstated. He was a great guy with a big heart; always busy making things whether in the programming world, with glass, or 3D printers. A true hacker. I wasn't lucky enough to call him a friend, more of a professional connection/acquaintance, but I'm glad I reached out to him during his darkest moment and got to know him a little better in the process. He will be missed.
milesf 3 days ago 0 replies      
I met Ezra back at RailsConf (2007) after a talk he gave. Scary smart, yet friendly and humble. The man left us way too soon.
GMFlash 3 days ago 1 reply      
It looks like Ezra has been battling an illness for over a year: https://groups.google.com/d/msg/trinitylabs-talk/f8XOageAwcY...

I'm very sad to hear such bad news about a great person. :( I learned a lot about developing by hanging out in #merb and #engineyard chatting with Ezra and the crew.

joshowens 3 days ago 0 replies      
Wow, this make me really sad. I remember interviewing him about Engine Yard on my old podcast.

He always impressed me and I was so happy he took the time to talk: http://web20show.com/2008/07/episode-47-ezra-zygmuntowicz/.

mk00 3 days ago 0 replies      
Ezra was a pioneer in the glass-blowing/pipe industry. Here is some of his work: https://www.facebook.com/jason.lee.16568548/posts/1020460894...
sebie 3 days ago 0 replies      
He left us to early. It is very, very sad. RIP you will be missed :/
derekcollison 3 days ago 0 replies      
I am deeply saddened by this news. I remember trying to convince Ezra to join us to help out with CloudFoundry. I, like others, knew Ezra through the Ruby community where he was a larger than life presence. My thoughts are with his son, his family and friends.
nathan7 3 days ago 0 replies      
I'll miss Ezra and his outgoing spirit. Goodbye, old friend.
AxisOfEval 2 days ago 0 replies      
The Ruby and Rails community has lost one of its kindest souls. Ezra has left behind a legacy everyone must aspire to.
tiegz 2 days ago 0 replies      
Condolences to Ezra's family. He'll be missed my many lucky people whom he influenced.
davidw 3 days ago 0 replies      
Wow... Very sad news. His twitter page shows him living in Eugene, Oregon, my hometown. I wonder what he was doing there.
Joanne_jiang 1 day ago 0 replies      
He left us too early. So sad to hear it.
nexneo 2 days ago 0 replies      
RIP Ezra!

Thank you very much for your contributions and Merb.

piyushpr134 3 days ago 1 reply      
:(( What happened ?
_pius 3 days ago 0 replies      
This is terribly sad. Profound loss for the Ruby community, among many others.
eternalban 3 days ago 0 replies      
Ezra is an upstanding human, a generous and helpful spirit. He will be missed.
RickHull 3 days ago 0 replies      
Oh wow. So sad to hear about a pillar and pioneer in the Ruby community.
imbriaco 3 days ago 0 replies      
Rest in peace, Ezra.
grover_hartmann 2 days ago 0 replies      
Sorry to ask, I know it's a very personal thing, but was he ill? :(

RIP Ezra.

grover_hartmann 2 days ago 1 reply      
Such a big loss. May you rest in peace.

What was the cause of death?

JBFromOZ 3 days ago 0 replies      
shit man! that sucks, you will be missed :-{
mrkris 3 days ago 0 replies      
Ask HN: I've learned a programming language how do I solve problems with code?
203 points by bnb  5 days ago   104 comments top 70
ChuckMcM 5 days ago 4 replies      
Excellent question for a Friday. Coding is like welding, how do you find two pieces of metal that need to be joined? Generally the answer is visualize something that could exist, but does not exist, and then fill in the parts that need to be there for it to exist.

What you need at this point are a series of assignments which are self-contained problems with known solutions. The assignment 'create a web server that displays "Hello World"' is an example of one.

Here are some more:

Create a web site that allows a person to identify what would be an 'affordable' mortgage. (or flip it, shows them how much they need to save each month in order to retire). These are both applications of the compound interest / annuity calculation, but built in such a way that you can pick different parameters to see the results. Pick an interest rate, or pick a home value or retirement amount.

The goal of that assignment is to have you create a web site which has a built in formula (logic) which can be manipulated by user entered data.

Next assignment, build a web site that collects data about a particular commodity that changes day to day (could be a stock price, could be oil, unemployment, could be Eve online credits, what ever), then plots that data on a graph. Allow the user to annotate the graph by date with specific events. You will find the d3 library helpful here. Once annotated allow the annotated graph to be shared by URI.

The goal of that assignment is to get you to store data over time, use third party APIs, and provide a way of getting to a particular state based on arguments in a URI.

Now for third assignment, create a market site for three commodities, we'll call them 'stone', 'wood', and 'sheep'. Have a system random number generator periodically generate one or more units of one or more commodities. Simultaneously create a Sudoko board such that the first player to solve the puzzle gets the commodities. In the Market people can buy and sell commodities, the market creates a currency for recording those transactions. Players with a specific quantity of individual commodities can produce a 'product' and that product adds to their 'production' score. Rank all players by the quantity of currency in their account and their production score.

The goal of that assignment is to create a fun market simulation game that echoes some of Settlers of Catan and gives you something fun to put into a Show HN posting.

Bottom line, practice problems. Then when you, or someone you know says, I'm trying to do this ... you can tell them you can do it or not.

mulander 5 days ago 3 replies      
Hi bnb,

I started programming around 20 years ago - self taught and experiencing the same problems as you in the early beginnings.

I made mistakes when I started

- jumping around between languages

- thinking I couldn't grasp something

- jumping from one tutorial to another, and another, and another

- I wish I started learning algorithms & data structures earlier

- I wish I took time to dive deep instead of rushing to getting something working

What was my breakthrough?

I got a job in social assistance - it was mostly sitting at a desk and distributing food supplies. This left me with most of the day unfilled with errands and a PC in front of me. I installed Perl on it and started learning, digging deep into every bit of the language.

- Learning how the interpreter works

- Reading the perldoc for every module I used, every function I called

- Writing small scripts to help with my then daily tasks

- Writing code every day, even for stupid one off tasks or things I wanted to try

Three months later I got my first job as a Perl programmer - mostly doing web interfaces, marketing mailers & web scrapers.Having learned Perl to the level when the language itself wasn't getting in my way it was far easier to grasp additional concepts:

- programming paradigms

- algorithms & data structures

- abstraction

- documentation & good practices (version control, testing etc.)

This was a major stepping stone for me. Picking up any other programming language, framework was a breeze since then.I worked at a corporation doing Oracle PL/SQL for seven years. I programmed in Ada, Ruby, Perl, Python & JavaScript professionally in long term employment. I did contract work for C, C++, Java. I played with Common Lisp, Scheme, Prolog, Erlang & Smalltalk (mostly when I was hospitalized for a long period of time) and now I'm working with a start-up I co-founded where I'm doing Python, Ruby, Javascript, C, Go and recently some Dart.

Don't let anyone tell you that you're limited in any way - most of all don't think it yourself. The only limitation is what you want to achieve.

Recently I got really interested in OpenBSD and would really want to be involved in OpenBSD development.

Here's how I'm tackling this specific problem now with hindsights to the mistakes I made when starting as a programmer.

1) Pick one project

This is OpenBSD in my case - should be a heavily developed framework, library, application in your case.

I ignore all the OpenBSD vs X articles, post whatever. I made my choice.

2) Follow it

Subscribe to the mailing lists, join the IRC channel - consume news & changes about the project.

Don't feel bad when you can't keep up! 20 emails per day? Try to read a few of them and leave the rest for later - just keep at it.

3) Follow the code

Take a look at each code change made to the project, try to understand it even if it's over your head.

4) Run it!

Changes were made? Pull them in, run them.

5) Poke around

Try introducing your own changes. Hit a bug? Try to trace it down as much as you can & fix it. If you can't fix it, report it upstream.

6) Make your own

You want it to do more? Add it, or at least give it a good try.

Don't know how? Still try! Even if you just end up breaking stuff you will learn!

7) Rinse & repeat

Until you feel confident enough to go in on your own - though you rarely are completely on your own. Don't be afraid to ask for guidance & help. Just remember that it's always nicer to show people that you tried on your own (and documenting that) before going public with a help request.

So this was a wall of text, hope it helps you at least a little bit :)

I mostly work from home on my own schedule so can devote a few hours spread out throughout the day. If you really want to learn and need a helping hand in the early steps or someone to bump ideas against feel free to catch me on freenode @ #hncode.

jastanton 5 days ago 1 reply      
There are a lot of good answers here. What launched me into development when I didn't even know to program (so one step behind you) was that I found a problem I had personally had and looked for a way that could solved it. It turned out it was programming. The reason this was so effective was I was already passionate about the problem before I even knew what programming was. Then I discovered programming was the right approach, so I learned the tools to get the job done, then iterated.

That _passion_ was a HUGE motivator, in fact i didn't even like programming really was when I solved the problem, but I liked the result. I realized later how many problems could be solved that programming was the tool for the job so I eventually learned to program. But that came after I found the problems I was passionate about.

I find later that this approach was very fulfilling and now I am reading heavy textbooks and doing jobs I thought I would NEVER do because I really like solving problems. But I never could have seen myself doing this 10 years ago.

Now you're follow up question might be, how do I find my passion for this tool I have. Doesn't that now feel like an awkward question? I have a tool, I don't know why I have it, but I want to use it on something. There must have been some reason why you learned how to use this tool. What made you say "wow, how was this done?", or "I wish I could just do X" Try to recreate whatever it was that made you first look up "how to learn javascript programming" in google. If you are still stuck, then you might take to some of these other answers. Browse github, visualize something that could exist and work backwards, read other peoples code etc... but where all of them will fall short and where I suggest you take with yourself is that nothing will kick you on the curb harder then doing something that you're not passionate about.

The number of times I quit a program half way through because I lost the passion was A LOT! I felt miserable about programming for years. I thought I didn't have what it takes and beat myself up about it a lot. I was admittedly ambitious. Some things that could have helped:

* Smaller problems. Something you may not be able to control.

* Breaking your goals up into smaller chunks so you get rewards often.

* Working with someone else. Think of it like a running buddy, or a workout buddy.

* Being forced to do it. Get a job in programming, if someone realizes on you, and you feel that heat under your butt you'll probably end up doing it even if you loose the passion temporarily, though you should stop if you never get the passion back, but give it some time.

* Teach someone. You learn very quickly if you try to teach someone else. Especially if you try to force your brain to think of ways to find your passion. It's a good chance it will spark some passion into yourself as well.

Good luck, I hope something I said helped spark something in you and I hope you can find your passion! Or learn that this passion isn't for you. Someone once said that programming is 90% frustration and 10% elation. That gets you through that 90% my argument here is your passion to solve the issue. If you have no passion that 90% is going to be hell. But stick with it because it will take time! Good Luck!

PeterWhittaker 5 days ago 1 reply      
Don't start by trying to solve a problem. That way lies madness.

(The problem is that your mind, your approach, needs to change, and that change comes with practice and time. And practice always starts with the simple, the controlled, the repeatable, not the full fury of all skills brought together in a high pressure win-or-lose moment.)

Computers are nothing more than repetition machines. Start by writing code to do things that you yourself now do multiple times per unit time.

Start small. Simple things. Let the computer handle the repetition for you, no matter how simplistic and rude and hacky your solution.

Then notice how program A and program B, written to repeat different procedures, have similar processes or structures.

Generalize A and B to make a C that does both.

Do this again for other processes. Over time, your approach will shift. You will notice patterns: Patterns of process, patterns of structure, patterns of relation.

Then you will start solving problems. Only afterwards will you realize you have done so.

(I started coding shell scripts for anything I had to do more than twice - or anything that required "too many characters". I got tired of typing "ls -alt *|head" so I wrote nwst to do it for me. Then I added a numeric option to nwst to control how much head wrote. I got tired of writing "find . -iname" so I wrote fndi. Etc. Etc.)

karangoeluw 5 days ago 0 replies      
That is exactly why I made this collection of problems: https://github.com/karan/Projects

> A list of practical projects that anyone can solve in any programming language. These projects are divided in multiple categories, and each category has its own folder.

Feel free to also look at other people's solutions (many in JS): https://github.com/thekarangoel/Projects-Solutions

richardknop 5 days ago 0 replies      
Most people have already given you a very good advice.

I can tell you what I did many years ago. When I learned my first programming language, I decided to create my own CMS. I was still in high school, around 15-16 years old so it was just a fun project for me.

Imagine a simple version of a Wordpress. An admin area where you can add new posts and tag them. And an index page where the posts are displayed in a descending order with a pagination.

This will teach you basic ideas about how to store data in a database, how to work with forms etc, how to retrieve the data from the database and display them in a structured way (templates).

Ok, let's make it little bit more challenging. users can click on individual posts and add comments. Once I got my hands dirty and created something simple, I started adding more functionality to satisfy my newly acquired thirst for knowledge.

Each new problem I solved, no matter how trivial, motivated me to go t a next level and learn more.

Let's say users have to register in order to post comments. This will learn you how to create a basic authentication system, how sessions and cookies work, how to safely store passwords in the database, maybe add your own custom catcha element on top of it.

Next, I moved on to a new feature. I wanted to be able to upload pictures from the admin area and be able to insert them inside posts. Images should also be resized into multiple sizes (thumbnail, full size etc).

You can see that what started as a very simple project can actually grow more and more complex and you can learn a lot.

After I finished my CMS, I went on to a new project, I wanted to created my own text editor and a simple image editor (imagine MS Paint). Did both of those and again learned a lot.

After that, I went even deeper and created a fairly complex social network from scratch. Although this was the first piece of code in my life I got actually paid for so it probably doesn't count.

What I am trying to say is that you should go and get your hands dirty. It might seem like reinventing the wheel (because it is reinventing the wheel) but it is perfect for learning how to actually do something useful with code. It teaches you about data structures and algorithms.

You will probably laugh at your first creations in couple of years but they will be very important in making you an actual software engineer down the line.

j-rom 5 days ago 0 replies      
Find a problem first. Then try to implement a solution using your language of choice (Node in this case). An example could be: "I want to create a service that parses books and lists the most frequently words used. A step further would be to have the user enter a longer piece of text and analyzes it (http://www.online-utility.org/text/analyzer.jsp)"

Another example is "I want to create a service that auto-corrects text that users enter."

Try to find something that would make your own life easier. Chances are that other people are having the same problem.

Shameless plug. Hopefully you get some ideas out of it: http://jairampatel.com/projects.html

hnnewguy 5 days ago 2 replies      
>How do I learn that?

I had (have?) the same issue. Maybe it's something that experienced programmers take for granted; there is a huge disconnect between writing code and developing software.

I've asked the same question, and received the same answer: get your hands dirty. I agree with the premise, and am working on it. But there's the disconnect. I can write a little Python, but have you ever tried to set up a Python development environment on your computer? I don't understand 95% of what is required.

All that said, I'm way ahead of where I was when I started, a year or so ago. I'll keep plugging away, and recommend doing the same. Hopefully we see a few good replies here to help us out.

jamessteininger 5 days ago 0 replies      
Start. Jump in head first. Before you're ready.

I made my first video game when I was 13 years old. I made it because I wanted to make something for a girl I liked. I used Macromedia Flash, learned as I went along, and never lost site of the goal. I had to impress this girl.

Sometimes we are inspired by technology to do things. The reason an engineer might give to building something bizarre: "I'm building this because I can." I think it's better to have the goal in mind first, though of course we may only think of solutions to problems because we also understand the tools we have available to us.

It's easy to solve a problem with programming once you know what problem you want to solve. I don't think anything great is made when you try to come up with a product based purely on technology. It's great that you learned JavaScript, I happen to think programming is a blast! And learning new tools, languages, frameworks, or paradigms are always great for the left side of my brain. But programming has always been the most fun, most rewarding, and easiest when I'm deep into solving a problem. The "how" is straightforward: you Google the error message, you Google the 'how to perform X function with Y language on Z platform', you ask friends and family to test and break your likely fragile baby, you build a business, et cetera.

Try to solve an issue you have. Try to solve someone else's issue. Try to solve an issue many people have. Or, browse GitHub.com, and work on another person's solution.

Did the girl I made that game for ever go out with me? No. But it didn't matter.

I got started.

S_A_P 4 days ago 0 replies      
One of the best quotes I've heard about programming was from an old C++ developer I knew- "the best way to learn how to program is to start 10 years ago"

The fact you are asking this question is a great sign. This is a key skill that is overlooked in technical hiring and by many development blogs trying to qualify what makes a "good" programmer. Problem abstraction is a huge part of software development. I work in enterprise development around a very specific niche of oil and gas. (ETRM) the "programming" I do amounts to little more than reading and writing to a database. The tricky part is modeling a business process and breaking it down into manageable units of work. For what I (and probably most developers) do, language is just syntax to know and interchangeable.

In my experience, programming is a series of learning curves and plateaus. A lot of what I know just comes from experience. The best way to learn is to program. You will eventually see patterns in the types of problems you see and know the general approach to solving it even if you don't have the exact answer.

chipsy 5 days ago 0 replies      
The computer is an automation tool. When you write code, it is serving the purpose of automating a specified and designed process. The things you write in the program to make the automation happen only have to be as complex as is actually necessary for that task.

First, have a good problem to solve. This is your design - developing your sensibility for it is somewhat independent of your coding skill. For your own project designs you should always prioritize your own motivations first, because there is nobody you are directly obligated to finish for. If you don't do this finishing will become very hard. Find problems people have already solved and reinvent their wheels so that you learn more about the problem domain. (e.g. if you want to learn how Facebook works, clone parts of Facebook - if you want to learn how operating systems work, build a toy OS, etc.) Or, find clients who seem to know what they want(nobody really knows - the design will change) and build things for them, on their terms, in a way which will get you paid so that you have the obligation to finish.

A good problem should be either obvious and a bit boring on the surface(an everyday thing made easier, more available, more accessible), or scary(a technical problem that you are not immediately sure how to solve, or are not sure how long it will take to solve). Usually projects start out looking like the former and then develop parts of the latter as you go along, forcing you to "plateau" on new features as you build out the infrastructure. You can also slice up a project into defined versions with incrementally larger sets of features so that your expectations for "done" are managed - if you don't get to some things, you still have a practically useful program.

Then, start working on it in small steps. Maybe you aren't sure how to envision the whole problem. In that case, you can simplify it by reducing the problem into a bunch of facades that are intentionally incomplete. Maybe you want to render a page that shows tables of data, for example. You can start by building up a facade for the presentation layer and see what kinds of data will have to be passed in to make the presentation work. Then you can mirror this at the other end and only solve the problem of "how to store and process the data." Then you figure out a protocol for making the two parts communicate. If you design each part so that it is simple to rewrite, the code will be maintainable regardless of your techniques or technologies, because then you can rewrite your way out of any corner you get painted into.

aniketpant 4 days ago 0 replies      
I started development actively in 2010. At that time I was in my first year of college doing Mechanical Engineering which I didn't grasp really well. So, I ended up putting all my time into development.

The first thing I built was a small website which was a music catalogue. When I think about it now, it seems utterly pathetic but it was the first thing I ever built. Later on, I got into WordPress and spent a lot of my time picking up PHP and writing new themes. This was an enlightening experience as I picked up a lot of plugin writing practices and I ended up being invited to a few WordCamps.

In the coming years, I learnt a good deal of JavaScript and was working with PHP frameworks to write a lot of admin interfaces for my own projects and some tools for my college's software development team.

In the last one year, I picked up Ruby and wrote a few tiny gems.

With this much experience, I have been able to port code from most of the languages I have encountered to all the languages I know.

Currently, I work at a company where I write a lot of PHP, SQL queries, a lot of front-end and all of us are expected to be full-stack.

My only advice to you would be:

1. Start slow. Try to spend a lot of time learning from other people's code and attempt to imitate a lot of code which is already out there. Solve the same problem many other's have done and trust me that you will learn a lot more from it.

2. Why don't you start a blog? You can start with a blogging system in the beginning and maybe later you can write your own.

3. When you say:

> "But I don't know how to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from."

My answer would be, "If you can solve a problem for yourself, then there is bound to be a person who is benefit from it."

Good luck to you.

fsloth 5 days ago 0 replies      
The answer will be 'write code'.

This will teach you a lot of things... I can try to come up with a short list of what I've observed of my own development as a programmer.

You will recurrently come up with particular patterns, you start to identify which approaches will work, which will be dead ends and so on.

Try to separate your understanding and model of a problem to at least data, model and view domains. You will have certain data - you should keep this as simple as can be for the problem you are solving. There will be the model - how is the data mutated, which rules will guide it - and there will be a one or more view to this model and data. Note, that as a pattern the view encompasses both the possibility of an API to your system, as well as the actual display of data.

Try to keep you code as simple as can be. Don't go for the more complex solution unless you know you really need it.

'Pragmatic programmer' and 'code complete 2' are pretty good books about software development in general.

I would suggest you figure out what interests you and then try to implement simple programs in that domain. If something feels too complex, then first try a simplified version... more simplified etc. until you understand how to solve it.

One of the best knacks to learn is how to approach something from a direction which makes the problem easier to solve. There are usually an infinite amount of ways to write something and the challenge is not to just start writing code but actually figuring out which solution method leads to the most understandable and easy solution.

I would suggest you familiarize yourself with the practically important datastructures: the list, the binary tree, the map and the graph, etc. "Algorithm design manual" is a pretty good book for this. Aho's foundations of computer science is a pretty solid and free reference: http://infolab.stanford.edu/~ullman/focs.html

It's probably most motivating to mix the computer science with practical exercises unless you find you get a great kick out of it.

Good luck!

thehoneybadger 5 days ago 0 replies      
The question is a bit open ended, so here are a few thoughts. Programming involves learning by doing. Just start on something. Perfection is the enemy of the good. Your first real attempt won't be perfect. In fact it will be downright terrible. Set your expectations accordingly and do not let this prevent you from getting started. It will also never be finished. Do not let the scope of the project prevent you from getting started. In fact you might even be bad at estimating the amount of time it will take. Ignore those fears and confusion and just start. Channel your weekend warrior instinct. Sit down on a Friday and just start typing stuff.

Start with an idea, a problem. It really helps when the problem is personal. What do you hate? What annoys you? The text editor you use? Some little feature of JS that the makers of the language seemed to have forgotten about (how could they!)? Some website that just looks wrong to you? The todo list that doesn't work the way you want? Just think of something that doesn't quite work the way you want, a void, and then try to fill it. Just start and get in over your head. Do some spying on how others solved it (preferably only if you really get stuck, or once you made substantial progress). Maybe you can solve it better? Gotta dog food it. I find dogfooding a solution to a personal annoyance is what keeps you progressing towards a finish line.

If your asking about, say, the idea of website design, and the typical systems that make up sites (the software stack), just start reading about website design. Make a dumb website. Make a blog. Make a family photo album. Basically, start, and then figure out what you don't know, and then figure out what you need to know to proceed. It is an iterative learning process of realizing all the things you do not know and calmly tackling them. For some, this is the best part, the adding of another tool to the toolkit, the unearthing of some common pattern among the tools.

samzhao 5 days ago 0 replies      
I think what your question implies is this: "I learned how to write Javascript in a black box where I'm not solving real world problems, and instead just learned how to print static text."

Programming, like anything, is a tool - you learn the features which might not sound like solutions to problems, and with practice you start crossing your programming mind with normal day to day mind. Let me give you an example.

I got the mega Creative Market Black Friday Photos bundle yesterday. To my surprise, the photos are all separate, so instead of one zip file for me to download, or a "Download All" button, it gave me a list of 100 or so buttons to click to download INDIVIDUALLY. Conveniently (or not), they added a "Save to Dropbox" button to each item, but that doesn't help at all, there's still no "Save all to Dropbox" button.

So after clicking on 5 or 6 items... I started to give up, then suddenly my programming mind jumped in and said to me "hey dude why don't just go into the console and select all the elements and do a `trigger('click')`?" So I jumped into the console, and typed


I didn't even bother to check if the site uses jQuery, I just typed it in and it worked!

Now, if you were to jump in and helped them add a "Sync All to Dropbox" button, don't you think that's gonna be really beneficial to a lot of the users?

You might have learned the feature in jQuery to trigger an action, but to actually do something with it to solve a problem you need to not only learn the tools, but also start thinking about problems using your programmer brain.

sajonara 5 days ago 0 replies      
Just DO! ;) That's why it is named "learning by doing".

No offence: Programming is not worth a dime if you don't have a problem to solve yourself. And either you are the kind of lemming who sits and waits that someone presents you a problem you should solve for him or her or you are as creative to create your own problems as creating problems is a very creative process.

For example take a website. Let's suppose you are using a popular blog system. Then... what? Well you see a spectacular gallery on a site X. You want to have that on your site too. Then sit down, take notes and think over what you need. All you write down is more or less your algorithm (logic). You could do it with database support or without, you could use a JS lightbox or you could do your own. I remember doing my first coding. The example in the book was a basic text editor. So what did I do? I expanded the thing, so I added feature after feature I found very useful. :)

Another example with your blog and an API? Let's say you would like to visualise your data. Get the proper js library and try to connect it with your data. How could you do it? You could use csv files with a cloud space like Dropbox or Google Drive.

At least the problem is what you think of it. There are a lot of problems or none. Noone could tell you what "your" problems should be.

If you get past JS you could use Rails, Python, PHP and code your very own content management system (recurring to Codecademy and CodeSchool's content). Or you could write an app, which aggregates all the news channels you like by storing all rss feed entries, all tweets all Facebook postings by the channels you chose.

rlearner 5 days ago 0 replies      
As others have mentioned, you need to practice solving problems with increasing complexity. You can try Project Euler which has lot of mathematical/computer programming problems. https://projecteuler.net/problems

You can also try daily programmer subreddithttp://www.reddit.com/r/dailyprogrammer

If you want to practice with Bioinformatics problems:http://rosalind.info/problems/list-view/

Skywing 4 days ago 0 replies      
A lot of explanations here about how other people learned to use programming as a tool for themselves, but everybody is different. One person's analogy for using code might not work for you. You have to discover what works for you on your own. Sure, keep the other analogies and things in mind, and ask yourself if you can relate, as you progress through your own journey. Everything is relative though, and your experiences are what make you unique and valuable to the community as a whole. Maybe you're the next Bob Ross of JavaScript - we want you to be. So, don't aim to mimic somebody else's experiences because that'd just be an injustice and it'd also take away from what makes this journey so rewarding. I suggest just visualizing some end goal of yours. You want to make a website that offers some kind of service of something? Visualize that site and break it down into chunks. Finally, dive in head first. Just start coding on it. Don't give a single thought to whether or not it's as good as somebody else's code. Don't worry about if it's the best it could be, yet. All you need to do is connect the dots, mentally, and play with the legos. Focus on hacking together something that, in the end, resembles that mental picture you had. Once you're there, a large portion of your original question will have pretty much been answered - you'll have use code to solve some problem. All that remains is to figure out how to improve. That's all any of us are doing - trying to improve.
akwebb1 5 days ago 0 replies      
Remember, programming languages are a tool and problem solving is a skill. Learn data structures and algorithms. There are plenty of good books and websites out there on those topics. Once you have a basic understanding of those you can learn to apply your language of choice to implement solutions to problems. Next, find problem and solve. Also, some languages lend themselves to solving certain problems better than others. Don't limit yourself to one language. Once you have the knowledge of one language you are only a different syntax away from the next. Logic does not change, problems do.
bjt2n3904 4 days ago 0 replies      
Hey bnb. A few thoughts from my perspective.

What does it mean to "solve a problem"? Furthermore, how can computers be used as a solution? Let me illustrate this with a precautionary tale. It doesn't involve software design, but the principles are the same.

An old company I worked at had a crippling problem. Development groups were not communicating with each other. Each team would work on a module, only to find there were separate interfaces. Months of man-hours were wasted, time and time again. An up and coming intern convinced the management he could solve the problem by implementing a forum. Resources were allocated, and he spent the next few weeks setting up phpBB. Hopefully you can see where this is going.

The tedium of checking forum threads soon wore on the jaded developers. Nobody wanted to root through non-threaded, disorganized responses, or update the attached Wiki. Soon, the server turned into a forgotten wasteland.

Computing problems are solved with computers. Human problems are solved by good leaders. Sometimes, computers can help. Although the forum didn't work, a new developer was hired as I was switching jobs, and was doing a marvelous job uniting the development team. Before I left, a Jabber server was setup in place of the forum. The reception was much better--but the real problem solver was a good leader. Not the computer.

aspl 5 days ago 0 replies      
Try make something that interests you, see how you would go around implementing it. If you're stuck with a feature, google it. Then see how you did against the "proper" way of doing something, and maybe adapt your code to use the "proper" method. By proper, I mean that it's a more efficient way to do something than to hack it together and have it just about work.

You've learnt the language and the syntax, but it's the experience of just doing something that counts is where it's at! Good luck :)

goblin89 5 days ago 0 replies      
A few of my friends are learning or have recently learned their first programming language. By my observation[0], what prevents them from building real projects is that while they know the language, they arent very comfortable with any frameworks.

Im not arguing that you have to know frameworks to build real projects. However, I believe knowledge of a framework reduces the effort required to complete a working solution so dramatically that it changes the game, especially if youre new to programming.

Im not a pro by any means, but my practical advice would be: dont stop at having learned JavaScript (the language) and Node.js (the platform). Learn Meteor.js[1], build all the examples you can find in the official docs, and after you become familiar with the processthe ideas will flow.

[0] It was a surprise to me, but in retrospect it shouldve been obvious as I myself have quite literally learned Django before Python.

[1] Meteor is just an example that came to my mind, Im not affiliated with them and its possible that there are better choices in the land of Node.js-based web frameworks.

aercolino 4 days ago 0 replies      
A nice thing about "hello world" applications is that you can always use them as the starting point for any other.

The first step forward would be to change it from "hello world" to "hello {{name}}" and have the user input their name and the application show a custom hello.

Having this minimal input / output, now you can invest some time to make your app secure. This will teach you a lot.

Then you should feel ready to allow users to register, log in, and log out. This will teach you DB stuff and a lot more about security.

Then you should feel ready to allow users to add a profile with an uploaded picture. This will teach you about sophisticated UI issues, and even more security.

Then, except for scalability, machine learning and a few other special but mainstream technologies, I think you should feel ready to learn anything else.

coldtea 4 days ago 0 replies      
>Well, I can write code, sure. But I don't know how to _solve problems_ with it. I know how to create a webserver in Node that echos "Hello, World!" because I've done it a thousand times. But I don't know how to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from.

Well, first think of a site. Something that's not "hello world", but it's not Gmail or Facebook either. Something simple.

E.g. create a site were a user can log in, write notes, and save them.

That can be the start -- it's a real problem (not novel, but real) and it teaches you how to move forward from hello world.

Then you can add to it:- Auto-save the notes as the user writes.- Let the user write notes in a rich text editor.- Let the user share his notes with other users. - Let the user mail the notes.- ...

d4mi3n 5 days ago 0 replies      
This is a very common problem for people getting into software development. You are not alone!

A lot of other people in this thread provided some good advice to finding problems to solve, but I'd just like to comment a bit on how to solve them.

My advice: read code. Lots of it. Find popular libraries in your language of code and pick them a part to see how they work. Set up some open source project that solves a real problem (a CMS, chat bot, whatever) and explore how it operates.

Seeing how other people solve problems will give you a good frame of reference on how to tackle other challenges you encounter. You will also occasionally come across sub-optimal solutions: learn from those as well. Seeing how to do something badly can be just as valuable as seeing something done well!

At the end of the day I think programming is a lot like writing: a good writer reads a lot of books and writes often.

Just keep at it, there's a whole community of people here who've gone through this exact same thing. Good luck!

i4i 4 days ago 0 replies      
I'm in the same boat and it's so frustrating I've simply given up caring whether or not I actually ever make anything. I did Udacity CS101, (253 was a nightmare), every single Codecademy track, Ruby Koans, Ruby Monk, Learn Python The Hard Way, Command Line the Hard Way, and the Ruby on Rails Tutorial. That's a couple of years of daily practice. There's no shortage of projects I want to make or actual problems I'd like to solve. I kept hoping I'd run across something that was close enough to what I actually want to do, that I could bend it to my will. Here's what I think would work: Using Michael Hartl's Ruby on Rails Tutorial as a model, add 10 projects that increment in complexity between 'Hello World' and the Twitter clone.

I assumed that smart people who code would be able to solve the problem of teaching eager minds how to make stuff with code. I was wrong!

saluki 5 days ago 0 replies      
Pick a problem you need a solution to . . .

a todo list appshopping list appblog/cmssimple crmtracking lego minifigures in your collection

Basically pick anything you would use, then dive in and start developing it.

You'll be creating a basic CRUD app initially but you can expand and improve on that as you go/learn more skills.

I'm not sure js/node is the best starting point but use what you know. Typically I recommend learning

html/css/js/jquery/php/mysql/(rails or laravel) then top it off with angular.

I recommend rails or laravel.

railscast.com or laracasts.com have lots of great tuts.

Coding something up from scratch before diving in to a framework is probably a good idea. The first time a started learning rails it was tough to follow what was going on behind the scenes. But after creating a few apps from scratch in php/mysql rails was a lot easier to learn.

Good luck, have fun.

habosa 4 days ago 0 replies      
I remember exactly when I was at this point. I had a decent grasp of Java, but I couldn't build anything that I wanted to use. The way to learn is to build something you want, or something you'd like to show off. For me it was an Android app. I knew there was Java involved, but it taught me all of the things I could never learn from just reading a book (user interactions, getting data off the network, etc). Building my first Android app and my first Ruby on Rails website showed me 'real' programming. The funny thing is it turns out that stuff is all boilerplate rarely involves the fancy algorithms you learn first, but it's what makes real products.

Since you know JavaScript, go build a mobile app with Phonegap. You'll get a really great rush when you see your first app pop up on an iPhone or an Android phone. You'll naturally want to iterate and improve, and that process will make you learn.

primitivesuave 5 days ago 0 replies      
Your best project ideas are going to come to you in day-to-day life, like the time my roommates started complaining that the laundry machine in our basement was always being used. A couple days later, a simple web app was hacked together that displays the washing machine status, and let's anyone "claim" the machine. I did that project when I was in college, and I probably knew way less about web servers and Node than you. I just Googled the first thing I wanted to do "make a website", struggled for a bit figuring out DNS and hosting for the first time, and then put up a test page. Seeing a page show up on the internet at yourwebsite.com for the first time is a pretty magical thing, and the rest was history.

In general, what you need is activation energy - that initial bump to get the project or idea started. After that, you need to practice maintaining the motivation to complete the project you started.

Asking the HN community was an excellent way to start. Good luck!

exDM69 4 days ago 0 replies      
Project ideas will come to you at some point. Meanwhile, while you're practicing, start making small projects that you know you can finish in a few days, but there's something new to you in it.

I learned by doing games, can't go wrong with that: Minesweeper, Poker/Blackjack (or any card game, implementing the rules of a complex card game is very educational), Tetris, Connect Four, etc. These are not unique projects and won't make you rich but keep on doing them one per week or so until you get a grasp of what you're doing. Just make sure you can and will finish your projects.

Small projects like that are also a very good way to fill your portfolio for your first entry level job. It's no substitute for a good CV but will certainly get the foot between the door compared to someone who doesn't have any work samples to show.

kev6168 4 days ago 1 reply      
No no, don't work on petty real problems just yet, because you have only finished half of the programming training, specifically the bottom half that is the lowly Javascript(or PHP).

Now you need to spend 3 months on a lisp language(Clojure, Racket, SBCL, Arc, doesn't matter), then another 3 months on Haskell, the King among Kings of programming languages, yet another 3 months on the almighty Emacs, and finally 3 months on Vim, so you can use the Evil plugin with Emacs. Only after all these, you can confidently and proudly start learning PHP, work on a Rails project.

You will thank me every time in the future when you visit Hacker News, Reddit or StackOverflow, every time you walk into a meetup, or join in a water cooler conversation.

JoseVigil 5 days ago 0 replies      
You hit the nail on the head with a huge question, not sure if was on purpose or not but well done.

Your question is much more important than learning code even for a long time. That is a good start. Even super great developers never solve a real problem.

Solving a problem, demonstrating a business model and creating a successful start up are -to my eyes- more and less the same thing and takes years of extraordinary hard work, much more work than people at an office could even imagine.

My advice, watch all these videos are amazingly useful http://startupclass.samaltman.com and try to attach as much as possible to the advices.

Best of the luck! Great start.


cphuntington97 5 days ago 1 reply      
Hi from Tent :-) https://cphuntington97.cupcake.is

If you're uninterested, please ignore, but here is something I want that might make an educational project:

A list of English words and/or phrases that are "phonetically contained" within Spanish words and/or phrases (and vice versa). For example, the English words 'cone,' 'tea,' and 'go' are phonetically contained within the Spanish word 'contigo.' (I'm trying to write songs in both languages that converge at key points). You might be able to do it with a https://www.wiktionary.org dump.

xanderjanz 5 days ago 0 replies      
Great question.

Problems are solved by tools. Powerful tools can be built with code.

So try first to think about what kind of tool would be helpful for you. How could a computer help you accomplish something that you couldn't do yourself on pen+paper.

One example I like was I was making designs for various sports teams, and I liked the idea of word clouds, but it seems like too much work. So I built a javascript app that counted words in wikipedia articles and built wordclouds form that.

It's a cool project, but the original seed didn't comde form thinking 'what problem can I solve with code' it came from trying to do something new, then thinking if that specific problem could be done with code.

akafred 5 days ago 0 replies      
If you want a process that takes you from problem to product I recommend one I have used in developing several real world solutions, described by Freeman & Pryce in the book "Growing Object-Oriented Software - Guided by Tests". Allthough the book uses an object oriented paradigm and Java (none of which I particularly recommend) the process described in the book's first few chapters is solid and makes quality software development more predictable - and less of an art. (For those of you in the know, but who haven't read the book, this is about TDD, London style, (outside-in) with a high level of automation (continuous delivery).
unclesaamm 5 days ago 0 replies      
The most salient part of your question to me was the word user. How do you add functionality to benefit a user? Once you have a clear idea who your user is, and what they want, the answer comes more naturally to you. For instance, if your user is someone who wants to know a piece of information, you can display that information. If there is logic to be handled depending on who the user is, you can google "nodejs authentication" and use a library to handle that for you. Everything is constructed in steps, and I don't think there's a magical barrier between writing your first lines of code and having useful functionality.
progx 4 days ago 0 replies      
Programmers learn programming by doing, they solve a problem / need, a problem for themselves, for customers, for other users.

What program did you/your customer/other users need?

Then do it.

No course in the world will tell you the exactly need and how to solve it exactly -> if it exists, millions of programmers will be unemployed ;-)

I learned it when i was 10 years old (C64), i saw the "cool" games and thought -> i want to create my own. Learned Basic, learned Assembler and Build step by step many different games and programs.

lakeeffect 5 days ago 0 replies      
I was in this same situation for a long time and when meteor 1.0 came out I went through several tutorials, including discovermeteor, bulletproof meteor. Its like a wave of ok, now I can build stuff and its dynamic, I had a plan to learn socket.io and now it just works. I have also signed up for the free mongodb class jan-Feb so that I don't make a big mistake at some point and dump my database. I also used erlang zotonic for a while but meteor has a bunch more kool-aid that makes it easier when you get stuck or have a question. Oh man, good luck I have been in that situation and can really feel your pain.
lordnacho 4 days ago 0 replies      
There's some great comments here to the effect of "find a project to do". That's ok, but I find the problem with that is you tend to find projects that you already know how to do, and you end up making a spec that is just a slightly bigger hello world. You miss out on collaboration and moving goalposts.

Real world projects often come from other people, the spec changes over time, and other devs need to collaborate with you.

Make me a tutorial site that exercises these two goals, with someone else at your level.

red_hare 5 days ago 0 replies      
Pick a small, simple project that will force you to learn new things and put pieces together. My favorite starter server project is building a super simple URL shortener. You just need to render a page with a form, accept a POST from that form submission with the URL to shorten, hash the URL, store it in a database, return the hash, and set up a GET that maps your hashes to your URLs by looking up against the database.

The most important thing with beginner projects is scope. Pick MVP versions of things you want to make and build out.

aaronm14 5 days ago 0 replies      
I've often felt the same way. I've found things just by spending time brainstorming, and keeping it in the back of my mind as I go about my week. You can actually come up with a lot of ideas just by practicing observation of daily tasks you have.

I'd also recommend attending a Startup Weekend or hackathon of some kind and just joining up with a group working on something interesting. Being around the creativity at these can the wheels turning even afterwards

fragmede 5 days ago 0 replies      
What have you done that's more advanced than 'Hello World'?

I'm assuming you don't literally mean you've written 'Hello, World!' a thousand times, and I assume you've tried more complicated projects, so where do you keep getting stuck?

Logic and structure doesn't leap, fully formed, from the head of an architect like some prophecy. It starts with some notions that are carefully honed into a working implementation.

dreen 4 days ago 0 replies      
Apart from good advice already given in this thread, solving problems with code usually consists of the following actions:

1. Define the problem - think about/write down exactly what you want the final program to do.

2. Break it down into smaller problems, then break those further, right down to the smallest.

3. Solve the small problems individually, one by one.

martinald 5 days ago 0 replies      
I learn it backwards. Take something slightly complicated (so much so that you find it challenging to read) that solves a problem that you understand.

Then think of a feature or modification that you think would be useful. Try and implement it.

It's incredibly painful but I find this works better than trying to build something from 'hello world'. Before you know it, you can understand why stuff was implemented that way and what not.

keypusher 4 days ago 1 reply      
The question you are asking is like"How do I build a house?" It's too broad. Instead ask, "how do I pour a foundation?" or "How do I frame a wall?" Figure out how to setup a database. Figure out how to execute queries between database and application. Figure out how to write a login form. Build up from there, one small piece at a time.
hayksaakian 5 days ago 0 replies      
based on what you wrote, i would say the next goal is to write a twitter clone.

write something that takes user input, stores in a database, and represents it later on.

CRUD (create read update destroy)

many webapps could be categorized as a CRUD app, or start as a CRUD app. if you've only gotten as far as "hello world" then i'd consider this a worthy "next target"

simonblack 5 days ago 1 reply      
Start small then build up. Give yourself lots of small nonsense throw-away challenges, or maybe take one small part of somebody else's website and see if you can duplicate it.

You have to keep challenging your boundaries. Don't do stuff you know, try to to do things you don't know. But keep each step upwards simple - don't try to build a skyscraper before you can build a house.

arc_of_descent 4 days ago 0 replies      

I'm currently learning Python and I did the Letter Frequency problem and I'm now working on the Bulls & Cow problem. I highly recommend you visit the website and pick a random task(s) and solve it using code.

husseiny 5 days ago 1 reply      
Just do it! You need to pick a pet/side project of something you want to work on and try to figure out how to get there with code. Perhaps start with a framework and go from there. If you can't come up with a project, find yourself a product person friend who can brainstorm ideas with you and work on it together. Where are you based?
haidrali 4 days ago 0 replies      
Well i think you need pick a real world problem or need or an Idea and turn it into a product like

Skype ( it solve voice problem over ip and people uses it more than any other software)

whatsapp, Airbnb, Uber, Twitter etcor build something which people love to use

minthd 5 days ago 0 replies      
Since you know javascript, read this:


It's from a workshop called "how to build your first mobile app in a day"

kedargj 5 days ago 0 replies      
Are you having troubles coming up with problems to solves or in getting started on a problem you've identified?
aosmith 5 days ago 0 replies      
The best way to learn to sole problems is to find a practical problem and solve it!

Find something that would make you more efficient or something that you would personally use. It's going to be a lot of head banging at first but it keep banging away and then start adding complexity.

petercooper 5 days ago 0 replies      
Read Programming Pearls to begin flexing your mind in the right direction. It's a somewhat older book in terms of the actual practicalities, but in terms of getting you thinking about how code is applied to situations, it's timeless.
hoodoof 5 days ago 0 replies      
Why are you learning to program if not to build some specific software application?

Start doing it. Within seconds or minutes you'll hit your first problem that will need a solution. Keep doing that forever. You are now a programmer.

kazinator 5 days ago 0 replies      
[H]ow to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from.

How do I learn that?

When you figure it out, please pass the message on to the fifty bazillion useless websites out there, that all want me to enter my e-mail address and create an account, yet provide no benefit.

To create something that will benefit users, you need a brilliant idea, not only the ability to code, even to code very well.

If you don't have your own idea, then you get someone else to supply the idea. The idea will start out vague, then take the shape of concrete use cases (interaction scenarios between the proposed system and the people or other agents that use it). From those emerge requirements and a detailed design, and then some prototype code that becomes production code.

jaequery 5 days ago 0 replies      
before i learned to program, i knew what i wanted to create. that was 13 years ago when i was too busy playing an online video game (nba live 2000) and i wanted to create an association league out of it, just like nba.com. first thing i knew i needed was a website, somehow picked php and after heavy amount of trial and error, just under 4 months or so i had a website going with my own forum, standings, team management system, player/team statistics, etc ... little did i know, that was all it took to set me off on a career path i've never have imagined otherwise and i love every day of it. :)
attheodo 4 days ago 0 replies      
Don't think too far. Find a problem of your own, your family or friends and try to solve it. Best chance is that if you have it, someone else might have it too.
krmboya 4 days ago 0 replies      
Vanzetti 4 days ago 0 replies      
>But I don't know how to _solve problems_ with it.

Do you have problems? Maybe you just don't to solve anything at the moment.

surganov 5 days ago 0 replies      
See '180 websites in 180 days' project.http://jenniferdewalt.com
akwebb1 5 days ago 0 replies      
Programming languages are a tool. Problem solving is a skill.
mck- 5 days ago 0 replies      
The best way to learn is always to just do it. Now that you r got some fundamentals down, think of a project that you would enjoy building. Now Google the little pieces together :)
yakamok 5 days ago 0 replies      
find things in your everyday life you could use programing to make easier or solve
robomartin 4 days ago 0 replies      
Take the MIT Intro to CS with Python course. It's an introduction to using computational methods to solving problems. Then take the second course.

Then find problems to solve. Lots of them.

Find a mentor.

I had my 15 year old son take these courses (with me acting as tutor). There is no way to describe the transition he made. From wasting his time learning a bit about a language here and a bit about another language there to focusing on one, learning how to solve a range of problems, learning about data structures and more. He cam out of that swinging and capable of approaching real problems (still with a need for me to coach, but a huge step forward).

contingencies 4 days ago 0 replies      
Pike's 5th Rule: Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. - Rob Pike, Notes on C Programming (1989) via https://github.com/globalcitizen/taoup
wellboy 5 days ago 0 replies      
For this, you don't need to ask yourself how you solve problems with code, you need to ask yourself how you can solve problems with products.

Coding is not the hard part, it is rather a means to an end. Figuring out for whom you are solving that particular problem and how your product will actually solve that problem is the hard part.

For every problem that there is to be solved, there are 1,000 ways to execute the product that is supposed to solve that problem. However, only 4 or 5 out of these 1,000 ways actually do solve the problem that the product is intented to solve.

So, now you need to

1. Find a problem that is worth solving and that interests you

2. Find out if this is actually a problem. The more people have the problem, the better

3. Figure out how to build a product that is built in such a way that is solves that problem that you are intending to solve

All in all, as you are just starting out, you should probably start writing little scripts that solve your own problem. However, your questions is basically how do I build products that people want to use or how do I start a startup. I would recommend you to start with this essay. http://www.paulgraham.com/start.html.

graycat 5 days ago 0 replies      
When I went to grad school, my careerhad been programming, and I'd done a lotof it for some years. Two applied mathprofs were starting a computer science course and asked me what good lessons I'dlearned, and I answered. The answer remains current:

A programmer stands between a real problemand a computer.

The computer does onlywhat operations it is carefully instructedto do and no more understands the real problemthan the chef's knife of a good cook understands cooking.

So, the work of the programmer is to take the real problem and see how to use the computer tosolve it.

For this work, as a first step,if only to make the work easierfor the programmer, get a first list of thedata inputs for the problem and the dataoutputs. Yes the code for a Web page isa special case of this first step.

Then outline how the program will take theinputs and generate the outputs.

Here likely will need to define storagefor the inputs, say, some or all ofvariables, arrays,data structures, instances of object-oriented classes,database tables, etc.

Then move on to the work manipulatingthe input data to get the desired outputdata. In the case of a Web page or anysoftware with a graphical user interface(GUI), also will want to outline what the output will look like on the user's screen.

Then for the manipulations of the data,use the old strategy of divide and conquer, that is, break the work downinto largely or entirely independentpieces of work. People have been doingwork of wide variety this way forcenturies, likely back to the pyramidsand the first boats that couldcross an ocean.For each such piece,have in the software a section of code,subroutine, or function. The work of such a piecemay be further subdivided.

In the end, want each such piece ofcode, section, subroutine, ...,to be small, to have a purpose that iseasy to explain briefly, that is fairly easy to debug, by desk-checking(that is, careful critical reading),running test cases, etc., and with logicthat is fairly easy to create, explain,and follow.

This division of the work shouldbe, at least intuitively, robustto small changes in the real worldproblem to be solved. That is,the division should be for a problema little more general and complicatedthan the one actually given; how muchmore is a matter of judgment, buta small change in the problem statementshould still be a small changein the software!

Next, in the division, exploitthe scope of names rules in theprogramming language to helpthe software pieces be independent.

Next, remember that at least onehuman needs to be able to understandthe source code and that"When a program is written, it isunderstood only by the programmerand God. Six months later, only God."So, humans need to be able to understandthe code, for small projects, just byreading the source code and not needing additional documentationoutside the source code.

Next, remember that humans communicatein natural languages, e.g., English,hopefully with sentences, paragraphs,etc. Remember that, no matter how muchwe might wish and intend otherwise,the source code of software is notin a natural language. Yes we canuse mnemonic spelling for the variousnames we choose and use, and suchmnemonic naming does help someone tryingto read and understand the code, butsuch mnemonic names are still a longway from English. Bluntly, asinformation for a human reader, thecode doesn't really mean anything oris likely a puzzle problem to solveto guess the meaning.

So, net, have to document the code,that is, explain the code toa human, explain with English, essentially with sentences, paragraphs, etc.

Here is an example of a techniquein source code documentation:My project now is a new Web site;the source code for the Web pages isin Microsoft's Visual Basic .NETmaking use of the .NET Framework(collection of object-oriented class),SQL Server,ASP.NET, and IIS. For this work, I have5000+ Web pages of documentation, nearlyall from Microsoft's Web site MSDN.

So, my code makes use of a lot ofclasses, functions, etc. from those 5000+ pages of documentation,and some of those classes, etc. doa lot and need some good documentation.So, in my source code, when I useone of those classes, functions, etc.,I insert in my source code a commentwith the title of an appropriate Web page of documentation along witha tree name of the Web page ona hard disk on my computer. So, whenreading such source code, one keystrokein my favorite text editor(which is what I use to write code)will display the Web page so thatI can confirm that my source codeis doing what I intend.

Since thecode is awash in symbols,good examples of how toexplain code are in good textsin subjects based heavily onsymbols. So, can explain codemuch like a good freshman physicstext explains Newton's second law or Coulomb's law or howa good freshman calculus textexplains conic sections ordifferentiation. E.g., forEnglish readers, mathematics isstill written in English;then the symbols are names,that is nouns.

In large projects, the documentation may be hundreds of pages.But essentially always thereis documentation as sourcecode comments in the source code.

Then, six months later God, theprogrammer, and others will allbe able to understand the code!

My view is that currently the biggestbottleneck in practical computingis poor documentation. Sorry 'boutthat. YMMV!

Ologn 5 days ago 1 reply      

  1) Go to Github  2) Browse the Javascript projects  3)  Look for projects which are active with many follows/forks  4) Click on the Issues tab  5) See what open issues there are  6) See if the maintainer is active and applies pull requests  7) Pick an issue you can fix, fix it, write a patch  8) Send a pull request  9) See if the maintainer has any comments   10) Go back to step 1
See - you're solving problems. This is the kind of stuff you'd have to deal with on the job, and is the kind of stuff you'll deal with with your own projects as you or your users discover problems.

I know exactly a problem you can solve right now with Javascript.

   * Go to this website - http://maps.huge.info/zip.htm    * Move around the map so you can see where various San Francisco zip codes are.   * Now try to do this on your phone
I'd love for this to be a mobile-friendly website, but it isn't. It's a useful tool, it looks like it's just a mashup of Google Maps and ZCTA's. A perfect project and problem to solve.

curiously 4 days ago 0 replies      
The reason you don't know how to solve a problem is because you do not have a solid grasp of what you learned. This will sound harsh but node.js is a horrible beginner choice. you should've learned python, java, php. asynchronous programming is a bit advanced way of doing things, and synchronous, functional programming works best. i've dabbled with OOP, but have rejected it largely because it doesn't work well for most of my projects.

Pick a new language, which will be now easier since you know javascript, create a simple project with it. Once you get to creating something, you will realize, the confidence to solve other problems. You keep going until you are very confident. You can't learn it, you have to use it.

Check to see if Google know's who you are
2 points by codewithcheese  12 hours ago   4 comments top 2
Nanzikambe 11 hours ago 1 reply      
I'm logged into gmail and see the captcha in another tab regardless. Perhaps because I refuse 3rd party cookies but never-the-less it pokes a hole in your theory.
jayd77 11 hours ago 0 replies      
I see "I am not a robot" but when I click on it I get a Captcha. So??
Ask HN: Where do you submit your landing pages to gather potential users?
12 points by tim_nuwin  1 day ago   10 comments top 3
codegeek 1 day ago 1 reply      
You don't submit it anywhere necessarily. The best way is to get users to come to you which involves doing many things.

First, have quality content that you are genuinely interested in writing. Be detailed but also with a human touch. Keep it interesting. Cite real stories if you can

Use a good newsletter software (Mailchimp, Aweber etc) and make it easy for a user to give you their email address. Make it clear why you are collecting their email and what will you do with it. If someone is genuinely interested in your stuff, they will gladly subscribe

Start with a very simple Blog template where the focus is on your content and nothing fancy. i personally like 2 column with the right/left column having an About section and a newsletter form below it. thats it.

One trick with blogs is that you can auto post them to your social networks like fb, twitter etc. If you use wordpress, there is a great plugin called "SNAP" that stands for Social Network Auto Poster. Check it out.

Add Google analytics to your homepage. Create some "goals" and see how users behave on your site.

Initially, focus on writing quality stuff and forget about optimizing on google, SEO etc. It will happen with good quality content for the most part.

Rinse and repeat. There is no magic wand but this should give you a pretty good start.

Lastly, make sure you know what to do with the collected email addresses. Do you have a campaign setup ? Do you have autoresponders ? If you don't know what these are, read about them. Engaging your users who could be potential customers is a daunting task but also fun if you do it right.

ASquare 1 day ago 1 reply      
Try betali.st and erlibird.com

There's no guarantee of when they'll show up (unless you pay) but there are the most common ways to get your pre-launch startup in front of an audience who is interested in seeing new product everyday.

AznHisoka 1 day ago 1 reply      
Nowhere. You find interested people manually and tell them about it. Do things that don't scale.
Ask HN: Help me retrieve my (past away) friend Google account
7 points by aberatiu  9 hours ago   4 comments top 2
pseingatl 9 hours ago 0 replies      
Open an estate under the probate laws of your state.Appoint an executor.Subpoena all files that Google has with respect to the decedent. Done.
mikeyouse 9 hours ago 1 reply      
Follow the instructions here:


Google has ~1 billion users, this isn't a terribly uncommon problem.

17 year old Carmageddon debugging symbols file dumped using Node.js
7 points by jeff_harris  9 hours ago   4 comments top 2
mrsharpoblunto 8 hours ago 0 replies      
This kind of programmer archeology is super interesting and pretty important for keeping knowledge of early gaming culture around. Its fascinating to imagine the software development practises and company culture that bought about a codebase containing such function names as 'CalcOpponentConspicuousnessWithAViewToCheatingLikeFuck' and 'MakeFlagWavingBastardWaveHisFlagWhichIsTheProbablyTheLastThingHeWillEverDo' (Well actually in this case you don't have to imagine - The Carmageddon creators Stainless software have footage of their Christmas parties on youtube where they pretty much destroy their office once a year)
dang 7 hours ago 1 reply      
Posts without URLs are penalized. You'd be better off submitting this with a link to that article.
Ask HN: What domain provider do you recommend for unlimited sub-domains?
3 points by tim_nuwin  9 hours ago   6 comments top 3
med00d 9 hours ago 1 reply      
You're looking for a DNS host. Amazon's route 53 is a good choice.

Alternatively, you could use wildcard DNS and programmatically determine the host header value to direct the user to the correct place. For example, in PHP that information would be available by using $_SERVER['HTTP_HOST'].

sideproject 7 hours ago 0 replies      
Our company (http://www.postatic.com) provides a tool to create online communities.

When a user creates a community, they automatically get a sub-domain.

We do this by wildcard sub-domain.

Then you pick it up in the Apache conf file.

If you are using Laravel, it provides a wildcard subdomain routing feature


It works really really well.

We also allow users to point their custom-domain name to the sub-domain they have been given (http://www.mydomain.com -> http://sub.postatic.com)

All works well.

We use 1and1 for our main domain (postatic.com) and our DNS is handled by Linode.

Let me know if you have any further questions. Will gladly share knowledge! (hello@postatic.com)

RoR, Django or both?
15 points by syedahmed  11 hours ago   19 comments top 14
lastofus 10 hours ago 1 reply      
Django and Rails are pretty much equivalent these days in just about every meaningful way.

I've gone Django for no other reason than I much prefer Python over Ruby. This is not to say Ruby is a bad language, but I much prefer Python's "one way of doing things" ideology over Ruby's "many ways of doing the same thing". The fact that the "alias" keyword exists in Ruby annoys me to no end.

I also get the benefit of using Python outside of web dev, such as with the awesome SciPy stack for statistical analysis.

It's a personal preference at the end of the day though. You won't go wrong in either direction really.

Finally, don't discount .NET. If you know it well, there's no reason you can't build your own solid startup with it at the foundation. It's been done before.

(You're going to have fun trying to figure out what front-end JS libs/frameworks to learn next :)

EvanDotPro 10 hours ago 0 replies      
The only correct answer to this is to spend some time to go (all the way) through the getting started guides for both.

Now, if you are sincerely planning to shape your career on this decision (and because you didn't clarify how you narrowed your decision down to Django and Rails), I'd recommend taking advantage of your current flexibility to get your hands dirty with a wider array of the options out there before investing copious amounts of time specializing on a single language/framework.

In your position, I'd take this time to actually go through the getting started guides for at least a couple of additional languages/frameworks (e.g., Symfony, Zend Framework, etc for PHP and Meteor, Express, etc for Node.js). This will allow you to find the stack that's a genuinely good fit based on your current skill level, opinions, experience, etc. This should not only give you confidence in your decision, but more importantly, it's sure to make the entire learning process much more enjoyable. Additionally, this approach would give you exposure to the documentation quality of the various projects in the process.

All tech arguments and language hate aside, specializing in any of the languages/frameworks mentioned will absolutely make you employable by a wide variety of companies in the current market, so personally I wouldn't stress over that aspect of it very much. That is, unless you're only planning to entertain local opportunities and live in a region which lacks tech diversity. In that case, your local job market should probably be a more important factor in your decision.

code_duck 10 hours ago 0 replies      
The bigger choice there is Ruby vs Python. They're both great language, of equivalent capabilities and sophistication, but encapsulate quite different styles of viewing programming. I suggest playing with Python and Ruby some more and seeing which makes you feel more at home.

Personally, I love Python but never felt quite at home with Django. Ruby and I havent ever meshed well and Rails was not better in that regard. My current favorite framework is Flask. Flask's simple power matches my style well.

BCharlie 10 hours ago 0 replies      
I work in Django, and I love it. I chose it because I also wanted to learn Python, since it is used in Open source projects I support and is commonly used in a variety of spaces beyond web development.

I think it will boil down to your personal preferences for the most part. On the other hand, when I was looking for jobs early this year, there were 5-10 times more openings for RoR developers than Django, so if you are looking for work in the medium term, I would choose RoR.

gee_totes 10 hours ago 1 reply      
As someone who does both Django and Rails, I suggest Rails.

Rails is very "do it the Rails way" about putting together a website, while Django lets you kind of do whatever. If you're a beginner, the do whatever part of Django can often lead to very kludgey code and a big mess if you don't take the time to carefully architect out your application.

Rails is also nice because it's very strict MVC and built for the modern web (meaning it's easy to have a model spit out it's values in either JSON or be plugged into a template, for example). With Django there's alot of fiddling and "what file do I put this function in?" (for the beginner).

Plus Rails has super duper good form handling, while I find the form handling on Django to be atrocious.

I think your choice should come down to how well you know the architecture of the application you want to build. For me, I find it easier to shoehorn my application into the RoR framwork than to try and shoehorn the Django framework around my application.

(FWIW, I'm speaking of Django 1.6 and Rails 4. Things may have changed in the latest version of Django)

metaphorm 7 hours ago 0 replies      
I've used both. I like Django better. I don't think Rails is bad or Ruby is bad. Just that I personally prefer Django and Python.

They're very similar. Most of what you know about Python/Django is still applicable with Ruby/Rails and vice versa. If you learn one, it won't be wasted effort if you decide to switch to the other.

I would say just try them both out with a tutorial or practice project and see which one feels nicer to you.

larrykubin 5 hours ago 0 replies      
I personally find Python code easier to read and maintain, and I have an easier time keeping up with changes in new versions. I was pretty familiar with Rails 2, but feel like there are frequently big changes between releases that I can't keep up with if I'm not a full time Rails developer.
lostinpoetics 10 hours ago 0 replies      
can't speak to django, but i've worked with rails, node, and meteor (caveat: not "professionally," only on some personal (failed) startups)

rails: always have had pains with maintaining apps, but will always love ruby. very much stays true to its convention over configuration philosophy. if you stick to (or sometimes, can even find) the "right" way to do things, it's very smooth. if you start down a wrong path things can get painful quickly. luckily there's a lot of resources for 90% of things you'll want to do.

node/express etc.: basically the flip side of rails, a lot of doing it yourself. there's a good ecosystem but i've sometimes found myself lost in a sea of options.

meteor: last year or so i've been doing more and more stuff in the framework and it's a good mix of both of the above. it's reliant on Mongo so a lot of RDBMS techniques are useless which can cause some pain. ecosystem is pretty young so there's a lot of the node-esque soul searching.

like runjake said, i'd try each out. have found the following somewhat useful:

* ruby/sinatra: http://code.tutsplus.com/tutorials/singing-with-sinatra--net... express, later, was inspired by sinatra which is a quick library to learn)

* rails: http://ruby.railstutorials.org (the "definitive" starting point i suppose)

* node/express: http://scotch.io/tutorials/javascript/build-a-restful-api-us... (this is just an API but generally gets the main ideas across)

* meteor: https://www.meteor.com/install ("Discover Meteor" is the best resource to start, but it's not free)

Outside of the Rails tutorial, should probably be able to get a rough sense of each in a day

runjake 11 hours ago 0 replies      
The same advice as always: There's no one true answer. They're about equal, so mess with both and move forward with the one you feel most comfortable with. Or Node.js.

Play with them all and decide which one you enjoy the most.

mod 8 hours ago 0 replies      
I much prefer python to ruby, language-wise.

I find it much easier to work with Rails addons than Django addons, typically.

If most of the work is new code, and not patching together various plugins, I'd choose Django every time.

I work in Rails every day professionally, and choose to write all my side-projects in Django, fwiw.

Pr0ducer 9 hours ago 0 replies      
I'm a Djangonaut whose also built an (extremely simple) app with RoR. I like them both. I'm more comfortable with Python, so I'm biased, but Rails is full of stuff that makes early prototyping fast, and lots of TDD goodness. I remember the first time I used Generate and it barfed out all these files, and I barfed rainbows in amazement.
avalaunch 9 hours ago 0 replies      
I would approach this from a different angle than the other commenters suggested so far and make a list of companies you might like to work for. Find out what stacks they're using and make your decision based on that.
wasd 11 hours ago 0 replies      
There's plenty of great shops that run .NET or will value your .NET experience and expect you can learn on the job.

Instead of choosing between RoR or Django, just find a startup whose product you love and apply to work there.

120photo 11 hours ago 2 replies      
Ask HN: What is your self-hosted blogging platform?
2 points by nickysielicki  9 hours ago   2 comments top 2
taprun 8 hours ago 0 replies      
I built my own. It's very handy because I can make my blog do all sorts of customized things very easily. Plus, I'm a tinkerer at heart.
Arnt 8 hours ago 0 replies      
Loathsxome, which is a cleaned-up blosxom clone.
Ask HN: What tool(s) do you use for Mobile SDK Documentation?
2 points by jaboutboul  11 hours ago   discuss
Ask HN: What do you think about using classes in Python?
13 points by rodrigoreis22  1 day ago   18 comments top 10
Vaskivo 14 hours ago 1 reply      
Stop writing classes - Jack Diederich - https://www.youtube.com/watch?v=o9pEzgHorH0

Show them this.

I'm still grateful for the moment I grew dissatisfied with OOP, or at least OOP in the Java/C# way. I was almost getting to an intermediate level in python (by myself) and had been thinking about a video game architecture problem I just couldn't solve.

I was still "indoctrinated" in the gang-of-four patterns and inheritance. When I discovered the solution, Entity Component Architectures[1], I also discovered the "composition over inheritance" philosophy. My mind was blown! Coupled with some Python's characteristics (duck-typing, everything is public, first-class functions) I was having a blast. Then I saw the video above, and all fell into place. Class based OOP have specific uses, but It's a shame how heavily enforced the paradigm is.

    Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function.  John Carmack
Now, for scripts or not-to-big programs in Python, I mainly use NamedTuples for passing data around and (mostly) pure functions.

P.S. Another funny thing: At my job I use J2EE aka "lots of hinheritance and classes and boilerplate". Sometimes I just have to go home and write some code in python or lua to "cleanse my palate". It helps me get motivated for my personal projects.

[1] https://en.wikipedia.org/wiki/Entity_component_system

rodrigoreis22 23 hours ago 1 reply      
I loved this essay Paul Graham wrote: http://paulgraham.com/noop.html

Quoting:"My own feeling is that object-oriented programming is a useful technique in some cases, but it isn't something that has to pervade every program you write. You should be able to define new types, but you shouldn't have to express every program as the definition of new types."

brogrammer90 23 hours ago 1 reply      
It's easier to write bad OOP than bad procedural code.

Let me guess what's happening here. Some kid recently read the gang of four design patterns book and now thinks he can turn your battle tested scripts into reusable extensible modules?

striking 1 day ago 1 reply      
(I don't think this is a strictly Python-based argument, so I'll expand to all of OOP.)I agree with the sentiment that Object-Oriented Programming is only useful in certain cases. Personally, as long as there's enough encapsulation that components can be composed and utilized well, classes are not useful.

Pros: enforced encapsulation, things mix and match easily, inheritance (sometimes useful)

Cons: over-organization/God objects/anti-patterns (especially of the inheritance variety), bad garbage collection patterns, classes that are "only behavior and not state" [1])

(Also, if it ain't broke, don't rewrite it. Not unless their programming concerns have been conveniently redacted from your post.)

[1]: http://eev.ee/blog/2013/03/03/the-controller-pattern-is-awfu...

gjvc 1 day ago 2 replies      
if they mean "turn the currently fat, repetitive scripts into slim wrappers which call into a well-structured collection of well-composed classes of objects, which closely match the problem domain, thus promoting code reuse, and fix once, benefit everywhere behavior", then good.

difficult to comment properly without more context.

raquo 1 day ago 0 replies      
* Python offers more encapsulation without classes than say PHP if you use importing properly, so a codebase without classes is not a big deal (I prefer OOD though).

* If your python code is organized in such a way that your classes will end up having no instance vars or methods, pragmatic advantages to using classes are limited. In other words, if you're switching to OOP, make use of that paradigm or it will indeed feel like mere boilerplate.

a3n 1 day ago 2 replies      
> they want to change all the python code

Why, doesn't it work?

Always potentially a bad idea, regardless of what you're changing to.

dragonwriter 23 hours ago 0 replies      
If you have a particular reason to use classes when writing new code or updating existing code, go for it. But rewriting just to use classes without a clear purpose is pointless -- its at least a waste of time, and quite possibly ends up introducing new bugs and maintenance problems.
CyberFonic 1 day ago 0 replies      
Boilerplate code for classes in Python? WTF?

Are you sure you are not adopting Java or C++ conventions?

Python supports both OO and functional paradigms. For any project you would use the combination that is optimal for the project. Forcing the use of one or the other without considering the overall impact is unwise.

jdubya 1 day ago 0 replies      
I have rebuilt a lot of code from scratch.

You learn a lot and hate programming...

Unless the codebase is awesome.


Ask HN: I am a data analyst and my code is a mess
4 points by elliott34  14 hours ago   9 comments top 3
valarauca1 14 hours ago 1 reply      
The rule of thumb that most people stick with when doing OOP is duplicate code is bad.

The goal is to find data that needs to be grouped, and group it. Find functions that only use that grouped data, and stick them in classes.

For example a query can be an object. I.E.: A database connection (in java)

       public class DBconnect       {               private connection Con = null;               public DBconnect(String Ip, int port)               {                        this.connection = mkConnection(ip, port);               }                public Object query(String query)                {                          return this.connection.ExecQuery(query);                }         }
Then you query specific pre-processing code can be added directly into the query.

                 public String query(String query, String regex)                 {                         return this.connection.ExecQuery(query).replaceAll(regex, "");                 }
Which results in code like

                  DBConnect db = new DBConnect(, 150);                  String[] quereies = { "yada", "yada", yada"};                  for(String str: queries)                  {                         String result = db.query(str, "\\s+");                         doDataScience(result);                  }
I don't know if this helps. But its a suggestion.

P.S.: I've been spending my free nights the past 2 weeks trying to throw together a javascript based data processing engine in java. It should be mostly workable by the weekend. I could throw it on a ShowHN if you'd be interested.

mc_hammer 13 hours ago 2 replies      
not a python dev, but:

- python probably has a lib like underscore (reduce map filter etc), could help

- check out the quake source code, any version, its huge and the entire thing is not only readable but possibley a work of art.

- have you tried lambdas? to some its more readable.. ex:

    nums = range(2,50)    for i in range(2, 8):        nums = filter(lambda x: x == i or x % i, nums)
personally when i have too complex process i like to go more functional, ex:

    main:        prepare_data1()        prepare_data2()        do_long_stuff()        nextstep()
that allows me to focus on only on building one step and still have readable code.

many game-devs prefer breaking their project into many tiny files with a specific purpose instead of spaghetti, ex:

    file.py    parser.py    display.py    function1.py    function2.py
its also a bit easier to nav around the project and make sense of it this way. you might want to check out rust or D or F or another lang also.

lovelearning 11 hours ago 0 replies      
Has somebody reviewed your code and called it spaghetti, or is it your own opinion?

If it's your own opinion, then it's possible you're being unduly harsh on your own work. Perhaps you can publish it - or a suitable equivalent - on github and request people here for code reviews.

Ask HN: Which websites use GPG public/secret keys for user password retrieving?
4 points by NaNaN  15 hours ago   4 comments top 3
rprospero 14 hours ago 1 reply      
The problem with using GPG for password retrieval is that we're assuming that the user is irresponsible enough to lose their password, but responsible enough to maintain backups of their public and private key.

To put it differently, if you have gpg authentication available, why are you even bothering with a password in the first place?

valarauca1 15 hours ago 0 replies      
GPG doesn't easily lend itself to be wrapped, or even used for that matter.

You are welcome to try.

hakanderyal 15 hours ago 0 replies      
Tried to explain GPG, public/secret keys to non-tech guys. Not fun.

Something like that must be easy to use, and easy to understand to be used by the masses.

Ask HN: Any backup software similar to version control?
9 points by mushly  1 day ago   11 comments top 6
modzilla 1 day ago 2 replies      
Apple's Time Machine keeps daily (or more frequent within a given day) snap shots of all of your folders.[1]

Also, in any native OSX app each "save" works like a git commit, you can browse all "versions." [2]

Combined, these native OSX features do exactly what you want.

[1] http://support.apple.com/en-us/HT201250

[2] http://support.apple.com/en-us/HT202255

striking 1 day ago 1 reply      
Just use Git (sans GitHub) for whatever you're doing. It works quite well on just about any content (although viewing changes/merges is a little more difficult without setting up special mergetools and difftools for special files like images
drifkin 21 hours ago 0 replies      
Ori FS does replication and atomic snapshotting:


Some of its underlying architecture is very similar to git. Check out Section 5.4 of the paper: http://delivery.acm.org/10.1145/2530000/2522721/p151-mashtiz...

Ecio78 23 hours ago 0 replies      
I'm not 100% sure because I haven't used it for few years, but BackupPc normally lets you browse the files of a specific backup set but it has also a "history" function for a directory that maybe is what you're looking for:


excpt 1 day ago 1 reply      
1.) VEEAM for VMware or Hyper-V does this job. You can access restore points at a specific point of time.2.) Never saw a file-diff tool implemented in a backup software. You may only have backup logs for your incremental backups about the size, duration, etc. If that's what you meant by view changelogs of a backup file.
ak4g 22 hours ago 0 replies      
Bup satisfies both.


But the frontend is kinda bare-bones. In many cases, it's git.

I have heard that attic is similar but more fleshed-out. But I have not tried it myself.


Suggest HN: Stricter Char Limits on Who's Hiring?
31 points by mattm  2 days ago   11 comments top 2
dang 2 days ago 4 replies      
That sounds like a good idea. What should the limit be?
jerrythompson 2 days ago 0 replies      
I'm guilty of this and have edited down as much as possible with 6 positions that opened up.
Ask HN: Facebook Data Download broken?
5 points by ladino  1 day ago   discuss
Ask HN: What is the best alternative to Angular JavaScript framework?
57 points by ericthegoodking  2 days ago   61 comments top 28
csallen 2 days ago 0 replies      
EmberJS is a great alternative to Angular, and is often considered its primary competitor. To summarize, Ember is basically Rails for the front-end. It emphasizes convention over configuration, and it was designed to aid in the construction of "ambitious web applications", i.e. Javascript-heavy single-page apps that need best-in-class routing and composable views all the way down.

Companies using Ember: http://emberjs.com/ember-users/

The getting started guide: http://emberjs.com/guides/

The command line tool you should use to initialize your Ember projects (not yet mentioned in the getting started guide but it will be soon): http://www.ember-cli.com/

stackthatcode 2 days ago 5 replies      
I really like KnockoutJS, having used it on multiple projects, both personal and professional. Many will say that it can't really be apples-to-apples compared with Angular since it's technically MVVM, it lacks many of Angular's features, like dependency injection etc. etc. And that's all true. But, the end result for me is that I'm able to rapidly build sophisticated client apps. I'd have to dig up the links, but there are some pretty complex front-end apps i.e. website builders and the like, that were developed using KnockoutJS.
o_____________o 2 days ago 1 reply      
React, which is "just the V in MVC"

Combine that with Reflux[1], which is a more opinionated framework around it. It's conceptually a little different than the Flux pattern that Facebook recommends, but the changes make sense after you have some insight into the Flux pitfalls.

Stir in some react-router[2].

It's still not as full featured as Angular or Ember, so you'll need to adjust your expectations there.

On that note, the Ember team has stated[3] they're going to to take the best ideas from React, so it's probably a good idea to keep an eye on that project as well.

Mithril[4] also looks React-ish and interesting.

1: https://github.com/spoike/refluxjs

2: https://github.com/rackt/react-router

3: https://docs.google.com/presentation/d/1afMLTCpRxhJpurQ97VBH...

4: http://lhorie.github.io/mithril/

lhorie 2 days ago 1 reply      
Mithril might be worth looking into. It's similar to React in terms of providing a unidirectional data flow pattern for code organization, and it comes with a few other useful tools out of the box (e.g. routing, ajax, promises), despite being smaller in terms of byte count.

It's designed to leverage generic knowledge as much as possible, as opposed to introducing a large amount of framework-specific terminology that no one else uses and that may be out of flavour in 3 years.

I've heard people say they were able to get up and running in less than an hour, so even if you don't ultimately use it, I think it's worth investing some time into looking into it.

Cthulhu_ 2 days ago 3 replies      
Note that the weird direction is not final yet - Angular 2.0 is still a ways off, you don't actually have to use AtScript to build your applications (ES6, ES6 + Traceur annotations, CoffeeScript, Dart, AtScript should all work), and the funky HTML attribute syntax is still under debate because most browsers don't actually support .setAttribute() with bracketed attribute names.

Besides, 1.x works and will keep functioning fine for years to come. You won't be required to update or change your tech stack if 2.0 is ever released.

I'd defer looking around until 2.0 is actually released, 1.x will do until then.

jsangilve 2 days ago 1 reply      
Use EmberJS. Great framework with a good core team that really listen to the community.

Further details: http://t.co/GKoBKpIReq

Backward compatibility is always in mind.

sergiotapia 2 days ago 1 reply      
EmberJS is a great alternative. It's a bit more involved and all-or-nothing, but you gain so much in return.


* Consistant project structure.* Great toolchain.* Ember-Data


If you're starting to learn EmberJS or are making a new project, start out right using Ember CLI. It's the defacto way of building Ember applications.

cacozen 2 days ago 0 replies      
http://vuejs.org/ is similar to Angular in some aspects, but smaller and simpler. From it's site:Philosophically, the goal is to provide the benefits of reactive data binding and composable view components with an API that is as simple as possible. It is not a full-blown framework - it is designed to be a view layer that is simple and flexible. You can use it alone for rapid prototyping, or mix and match with other libraries for a custom front-end stack. Its also a natural fit for no-backend services such as Firebase.
davexunit 2 days ago 1 reply      
drinchev 2 days ago 0 replies      
Of course as all questions related to development, the answer is definitely "It depends."

That's also why there are so much alternatives of MV(VM|C) platforms out there.

You can ask yourself a couple of questions when you start your project that will help you what framework will best fit you :

1. Is it a huge single-page app that needs client-side url handling?

2. Do you have plenty of DOM manipulation?

3. Are you going to have a REST API backend?

4. Do you plan to support IE <9 or you want the cutting edge?

5. Do you plan to use jQuery or plain ("vanilla") javascript will be your DOM manipulating library? ( Actually this one is also a question that should be answered, considering your application requirements ).

When answering all of those you can have a second round of questions :

1. What you and your team are experienced in.

2. What is the current market of developers and the popularity of your framework? ( people that have experience with Knockout are less than Backbone experienced ones - e.g. ).

That will give you not only the best alternative framework to Angular, but the right framework for your project.

durango 8 hours ago 0 replies      
http://paperclipjs.com/ is nice as well, which is an even more boiled down version of vuejs
kimh 2 days ago 0 replies      
I am using Backbone.Marionette. I like it because it is simple. Marionette helps you to write consistent codes and avoid javascript chaos even when your project gets bigger. You probably have to write more codes than Angular to archive the same thing, but the effort will pay when your project becomes big because you know what you are doing. No magic exist.
lupinglade 2 days ago 0 replies      
"AngularJS 2.0 itself will be written with AtScript, but then transpiled to ES5. You can write your AngularJS 2.0 app with ES5, ES6, AtScript, CoffeeScript, TypeScript, etc. Angular 2.0 apps will run in today's browsers, and even better as ES6 features land"
bzalasky 1 day ago 0 replies      
A combo of Backbone.Marionette (composite app architecture) and Backbone.Stickit (data binding) has served me well for the past 2 years. Also, while Marionette is under active development, the core team has a policy of breaking deprecated features out into separate libraries that can be mixed into your existing project if you want to stay current with updates.
sparkymat 2 days ago 0 replies      
If you don't mind straying off the beaten track, you should try Nadeshiko. It's available for both Ruby and Go. Be warned that it's still a work-in-progress.




huskyr 2 days ago 0 replies      
You're asking two different questions:

1) What is the best alternative to Angular?

2) What should developers invest their resources and time in?

For 1), like drinchev says, it heavily depends on your usecase. If you're making a 'regular' website i would opt for plain old backend HTML rendering combined with simple Javascript and maybe a bit of jQuery. But if you're making a 'webapp' that's very dynamic, a framework like Angular or React might be a better option.

Considering question 2): invest your time in learning Javascript, and whatever language you think might be useful. It's good to know as many frameworks as possible, but in the end language knowledge is far more useful than framework-specific knowledge.

yamalight 2 days ago 0 replies      
We've decided to go with React + Flux. Using Flux and CommonJS (since react plays well with it) allowed us to split all our code into small npm modules that do one and only one thing. Never had easier time managing client-side app code and a bunch of collaborating developers.
simantel 10 hours ago 0 replies      
I've been really enjoying Ampersand: ampersandjs.com
kitd 2 days ago 0 replies      
Ractive [1] is like React but simpler IME. I prefer tools that do one thing well.

[1] http://www.ractivejs.org/

percept 2 days ago 1 reply      
You might check the comments at https://news.ycombinator.com/item?id=8679245 for alternatives (React, for example, seems to be gaining mindshare), but this may also be a good time to reflect on the broader implications (as many are doing there as well).
tdicola 2 days ago 0 replies      
I'm in the same boat and am curious, how is Dart and Polymer.dart? I watched a few videos from Google I/O, etc. and am really impressed with how much more sane Dart seems to make the frontend development world. Anyone gone down the path of Dart & Polymer.dart and had any major regrets?
thecolorblue 2 days ago 0 replies      
I have just gotten started with meteor.js and I am liking it. I find the documentation to be lacking (or maybe I have not found the documentation everyone else uses), and there is probably just as much 'magic' going on as angular, but I like that the framework as a whole has more features, i.e. the cli or deployments.
petercooper 2 days ago 0 replies      
I speak not from a position of technical experience but a position of monitoring the ebbs and flows of the community and React with the Flux architecture certainly seems to be in the ascendant.
Koldark 2 days ago 0 replies      
mc_hammer 2 days ago 0 replies      
meteor and espresso.js are nice. react is cool.
insertnickname 2 days ago 2 replies      
Not using client-side scripting
dodyg 2 days ago 2 replies      
The alternative for Angular framework is not using a framework.

As long as you keep tying yourself to a framework, you will encounter the same situation as Angular 1.0.

Don't do it.

Just pick libraries that does one thing well and wire them together yourself.

Ask HN: Is Bitcoin still hot? The hype seems to have died down
10 points by hoodoof  1 day ago   14 comments top 5
bjourne 16 hours ago 1 reply      
On most sites (such as Coinbase) you must provide passport and id scan to even buy any bitcoins. Then you have to wait while they verify your credentials. So there is no anonymity at all and it's more hassle than purchasing something with your credit card. Well, you can use a mixing service but then you incur even more hassle and fees.

Realistically, to use bitcoins you have to buy it from a site (incurs fees), then create transactions to other bitcoin addresses (more fees) whose owners will have to someday convert their bitcoin to real currency (even more fees). It's not even competetive with bank transfers which costs me a flat fee of about 5 to transfer funds using my banks internet portal to any other eu bank account.

UnoriginalGuy 1 day ago 0 replies      
While a lot of Bitcoin's boom can definitely be attributed to hype, it is also worth remembering how much value was added by the illicit drug trade (e.g. Silk Road). That trade provided some of Bitcoin's long term stability, and given the recent closures and arrest (even on Tor) that market has diminished somewhat (plus the legalisation in some locations).
mathiasben 12 hours ago 0 replies      
Transactions per day is close to it's all time high. https://blockchain.info/charts/n-transactions?timespan=all&s...
jefflinwood 1 day ago 1 reply      
Realistically, I think that bitcoin will probably be "embraced and extended" by some larger financial institution (PayPal? Stripe? Wells Fargo? Goldman Sachs? HSBC?) that takes advantage of the open source codebase and creates their own trusted version with colored coins and its own blockchain.

The killer app for bitcoin will be the FDIC offering insurance on bitcoin deposits.

kolev 1 day ago 2 replies      
I think people finally realized that Bitcoin is never gonna be a mass-market thing... especially after Apple Pay.
Ask HN: How to provide health insurance for one co-founder?
7 points by BryanB55  23 hours ago   3 comments top 3
debacle 14 hours ago 0 replies      

I'm assuming you take a salary in addition to your K-1 share. If your co-founder is covered through his wife's plan, he doesn't count against the 70% requirement.

logn 21 hours ago 0 replies      
I think you should look into ACA plans. This link might help regarding taxes: http://www.taxact.com/support/715/self-employed-health-insur...
michaelbuddy 21 hours ago 0 replies      
have him / her pick an individual plan and then set up a reimbursement.
Ask HN: Would programming be easier if we had more types of brackets?
4 points by woah  1 day ago   2 comments top 2
noiv 23 hours ago 0 replies      
Honestly, I'd prefer less brackets or none. Just like natural language: Punctuation is enough to define contexts. The compiler/interpreter could point at ambiguous parts.
matthewarkin 21 hours ago 0 replies      
No, case and point Objective-C
Ask HN: Where can I get Dev Ops training?
19 points by zackify  2 days ago   12 comments top 8
WestCoastJustin 2 days ago 1 reply      
Most of this can be learned for free with a little time investment on your part. AWS has great training courses, both online, and in person [1]. I have taken a couple by heading to their Seattle office and it was extremely useful (like seeing the future). But before you take a course, I would suggest getting an AWS account, if you don't already have one, and using the free tier to get a lay of the land. Also, download and play around with redis, ansible, and docker via Vagrant VMs on your local machine. This is a personal plug, but I run a screencast site for sysadmins @ https://sysadmincasts.com/, so you might find some useful bits there also.

ps. I am always looking for episode ideas too, so if you have something you want to learn about, shoot me an email.

[1] http://aws.amazon.com/training/

sk2code 11 hours ago 0 replies      
I totally agree with what Justin has mentioned. All these things can be learned for free. I am a big fan of what Justin has been doing and his Videos are simple and easy to follow. I've been doing Unix/Linux system admin for the last 10 years and would like to explore Devops myself.

You can checkout http://linuxacademy.com/ (I am not affiliated to them in anyway what so ever). During my search for the DevOps training I found their website. They follow a Team Treehouse kind of a model (learn at your own pace) and charge around $25 per month. I haven't tried that myself but their AWS content (All tracks) and DevOps track looks pretty solid.

If you want to get in touch my email address is in my profile. Good Luck !!

wallflower 2 days ago 0 replies      
Learning DevOps is a good move.

It depends on your company but your goal should be to get on the on-call rotation as quickly as possible. Once you are on the on-call rotation, you will take your responsibility even more seriously - as you will be the point person for systems issues.

Similarly, your goal should be to identify a pain area in your systems management and be able to write a script, a Nagios plugin, something to address that pain point. You can work from there to larger projects involving infrastructure automation.

Like with anything, it will help to learn to understand the language of DevOps. The best way to do that is by reading and watching presentations by practitioners.

Similar to iOS Dev Weekly, you can learn a lot by reading a curated list of articles in the DevOps world.


Surge 2014 (one of the better DevOps conferences) has slides and videos.


willthames 2 days ago 0 replies      
Do you have an Operations function in your organisation? As really DevOps is development and operations working together to meet business goals.

If you do have an Operations person, you should be working together on things like how you can improve the deployment process to make it easy for new software to get into production.

If you don't have an Operations person, then you will have to bridge that gap. And that means learning what things make software operable - logging, monitorability, availability, resilience etc.

Web Operations, Continuous Delivery, Release It are three good starting points.

I gave a talk at Devops Days Brisbane on How to Design and Develop Software for Operations. I don't claim it to be complete but it comes from years of experience supporting critical applications


tacon 2 days ago 0 replies      
Camp DevOps is once a year, and I stumbled across it this year as it was in Houston. campdevops.comThe web site might give you ideas about who is in this space, or query the speakers for ideas on training.

There are also local meetups on devops, so attend one and ask for advice or mentoring. If you have a budget, there is probably someone who can help.

neduma 2 days ago 0 replies      
chr15 2 days ago 1 reply      
What area are you in? Learning basic sysadmin tasks will take you a long way.

Plug: I'm in the process of making an online training curriculum if you're interested. The content isn't ready now, but I may be able to do some remote training. Contact info in my profile.

grover_hartmann 1 day ago 0 replies      
Is DevOps just another word for system administration?
Ask HN: How to monitize a web application outside of subscription service?
3 points by NicoJuicy  17 hours ago   5 comments top 3
taprun 12 hours ago 0 replies      
I may be reading too much into your question, but it sounds like your existing customer base is too small to support your development activities.

Have you thought about seeking out a trade association and selling them the rights for their members to use your software? You may be able to grow your customer base while reducing your transaction costs.

My field of expertise is software pricing, so feel free to contact me!

NicoJuicy 17 hours ago 1 reply      
Just for extra information, i'm talking about this webapplication: http://www.ledenboek.be/EN

No need to register, demo: http://www.ledenboek.be/EN/Account/Login?Demo=True

sysk 17 hours ago 1 reply      
Do payments go through your app? What about collecting a small fee on all transactions?
       cached 4 December 2014 05:05:01 GMT