Ask HN: Have I lost my skills in programming? - <AUTHOR> I am getting really angry. What is happening to me?
I am literally getting worst at programming. When I was a beginner I could solve any problem those "coding challenge" websites, but now I simply can't. I haven't stopped coding since then, I was doing it every single day and I still got worse. Maybe I am just overcomplicating things when programming.
I feel like the thousands of free (not good quality) tutorials that I watched online are now showing their flaws. I just have piles of trash "programming knowledge" in my head that I don't know how to clean or replace.
How do I relearn programming? Relearn it in a way that I don't have to watch or read tutorials with the stuff I already know. Cuz I seriously can't watch another video of someone explaining what a variable or function is.
Do I just have to go heads first and it will all just "fit in place"? I will finally become a good and confident programmer one day?
I wanted to share this because I don't want someone wasting two years learning programming and get to the state that I am in. :(
If someone had this problem before or has advice to get back on track please reply. <comment><USER2> > Do I just have to go heads first and it will all just "fit in place"? I will > finally become a good and confident programmer one day?

You have to build things without tutorials for this. Just take something and then build it without a tutorial. For example, you can build space invaders. How would you build that without a tutorial? Here would be my process:

1\. Space invaders has graphics, do you know how to do graphics in your environment of choice? If not look up documentation for some draw API and try to draw things moving around.

2\. Space invaders has images, look up documentation how to load images and implement. Make sure that you can draw the images and move them around like in 1.

3\. Games need user input, look up documentation for how to listen for keystrokes, make the things that move around from earlier controllable.

4\. The rest of the game is just implement some boring logic like tracking score, tracking aliens, checking collisions, killing the player, winning etc. This is fairly straightforward to implement.

This was just an example, you can do most things in similar ways. Like building a forum, building a text editor, building a web server, building an interpreter/compiler etc.

<comment><USER3> Agreed on the project instead of tutes, but a simple crud app would be much more typical than a complex game.

</comment></comment><comment><USER4> If you have any reasonable skills as a programmer (which I have to assume if you have been programming professionally for some time) then you should stop watching videos, etc. As you have observed many are poor quality and aimed at beginners. Many so called challenges are created by jerks who are trying to prove that they are "clever".

Why don't you pick up a well recognised book and learn from that instead. I'm thinking along the lines of SICP (Structure and Interpretation of Computer Programs)? Yes, learning a new programming language probably would also help with your progression.

<comment><USER5> I think SICP is way too hard for the amount of material it wishes to explicitly convey to you. If we were speaking thoroughly, what do people expect to get out of SICP?

<comment><USER6> SICP is one of the books that I've seen everyone recommend - and I never understood what is so special about it, until I finally read it!

It feels very similar to a mathematical book. Rather than learning about the syntax, or the programming rules It teaches a way of thinking. I agree it is hard - but I don't know if it could be simpler.

In the end programming is not about computers or programs - but people solving problems. It teaches people to solve problems using computers.

<comment><USER4> Fantastic explanation of the impact of working through SICP.

Scheme notation is effectively AST, thus you can mentally map any PL to it and at the same time avoid getting caught up in the syntax issues of any given language.

Agreed working through SICP is a non-trivial experience. However, what you learn will provide solid foundations for your professional future regardless what languages you end up using.

</comment></comment></comment></comment><comment><USER7> Stop sharpening your tools and just use them for a while to do something fun or interesting. Different parts of your brain are trained by different activities: study, play, taking tests, competing, working with other people, fighting for your life, etc. You've probably done the equivalent of an athlete who spends all of his time on drilling certain basics without spending much time actually playing the game.

Go play the game. Put projects before skills for a while and your skills will improve, too.

</comment><comment><USER8> I believe your problem is simple and has a simple fix...

There are 2 kinds of learning: "Push" and "Pull". "Push" means you find learning opportunities and "push" them onto whatever you're building. "Pull" means you have something you have to build but don't have all the personal resources you need, so you "pull" in what you need as you go.

You're problem is that you're a "Pull" learner using a "Push" approach. The result is that you haven't learned deeply enough because you're pushing what you have so that permanent deep knowledge hasn't successfully transferred into the firmware of your brain. When you "pull" knowledge, you're applying it immediately in a deep, permanent way and you're much more likely to get all the value from it.

How do I know you're a "Push" learner? Easy, your language. "Coding challenges", "tutorials", "videos" are classic examples. Nothing wrong with these when you need them (by "Pulling"). But when you "Push" them into your brain you get the classic result: confusion, over complication, frustration, and eventually, anger. This is a common problem. You are not alone.

I am the opposite, a classic "Pull" learner. I bet I don't know more that 20% of the syntax of any technology I know. I've written over 2 million lines of code in over 1,000 successful projects but I've only written about 15 programs from scratch. I really don't care about how much I know or how good I am; I only care about getting the job done and satisfying my customer to get their job done with my tools.

Like I promised, your solution is simple: Find someone who needs what you're building and then find a way to build it. That's it. Trust your inner self to find what you need, learn it, make it work, and the internalize it.

The sooner you stop worrying about your problem and start worrying about your customer's, the sooner you solve your problem as a byproduct of solving theirs.

Give it a shot and let us know how it goes.

</comment><comment><USER9> Pick a problem you have and solve it. Even if you have to start small, like a grocery checklist. Just do a few of those to explore a problem space and see it through to the end. Don't grind like "I must learn". Let curiosity be your guide and get curious about making something you need.

If you need help, refer to documentation in the IDE, then Stack Overflow. Read. Don't watch videos, you should be able to read faster than anyone can talk. Take notes. With pen and paper, not a text editor window. The muscle movement of writing is a different way to teach yourself. There are studies that say retention is much better when taking notes on paper vs. computer.

After that, move your problem space up, like maybe a video game and repeat. I learned I dunno probably 5 different languages by writing Space Invaders in the new language.

Revisit one of your programs and either refactor or rewrite it. Actually, refactor one, rewrite another - from scratch. No peeking at the original. And by rewrite, I mean design a new approach to solving the same problem set.

</comment><comment><USER10> > Maybe I am just overcomplicating things when programming

This is probably the root of the problem. But there is good news because a) many people suffer from this and b) they tend to be good or at least experienced programmers

For example; we use FizzBuzz and some algorithm challenges to screen new hire candidates - the number of times an otherwise great programmer has submitted a 100 line behemoth (for something that should be less than 10) is unamusing.

As others have said; sounds like youve cracked programmig, you now need to hone your craft by learning engineering methods and problem solving.

This is best achieved by doing; try building something useful based on an ambiguous goal (if you let us know what programming languages/interests you have then it might help get more specific advice). Work your way up to submitting patches to open source projects - where youll get valuable feedback that will help hone your method

<comment><AUTHOR> \- HTML \- CSS \- JavaScript \- NodeJS \- MongoDB \- PHP \- C# \- Java

I've sorted the list as my knowledge is in them. HTML, CSS, JavaScript is where I'm best and PHP, C#, Java is where I'm worst.

Interests that I have are, Math, Programming, Electronics, Physics, Chemistry.

<comment><USER10> Thats a pretty big spread :) Id say focus on the web side of things and build a few apps - perhaps something you would find useful or rebuild an app you use.

</comment></comment></comment><comment><USER11> Probably you are just procrastinating. Procrastination has to do with anxiety emotion. Whatever creates anxiety, creates procrastination.

I have programmed for more than 20 years, but programming is never what I want. In fact it is an obstacle for getting what I want, like helping people.

You probably need real problems-challenges that you can solve.

I have created compilers because I needed it for something else. If I could get the same result with 0 programming I will do. In fact I proactively work to destroy programming in its current form in the future.

Programming is a dead end without something else as a goal. In fact, it creates a serious imbalance in your life: You spend most of your time thinking rationally(conscious mind), slowly,alone, static, in front of a computer(sit down?).

That is deeply abnormal for humans beings. We are designed for moving miles or kms each day, mostly use our subconscious mind(not thinking rationally)in a social way while hunting, fishing, collecting, making tools, pottery or clothing.

When you break the balance you don't need more of what created the imbalance in the first place. Spending your life only programming for me is the definition of a miserable life.

As I have to program, I will do whatever I can to restore the equilibrium, like going out each day, practicing a sport that requires coordination, meeting colleagues,friends and family regularly, meditating and never sitting down while in front of a computer(well I use a stool).

</comment><comment><USER12> The fundamentals never change. If I had to guess, your anxiety is from an overload of information and paralysis by analysis. It's easy to get lost in noise.

I remind myself of this whenever I feel like I'm being swallowed up in a rabbit hole of videos and opinions.

Do you have a math background? The thing that ultimately saved me from what I think is a similar problem to yours, and bear with me, is mathematics, particularly Discrete Math. I learned to program long before I discovered an interest in mathematics and the difference in skill, confidence and happiness is stark.

Many programmers go on about how math is not really necessary for programming. They are wrong. Sure, you can get by and you can do creative things and have a job that doesn't require "CS theory" but you'll be forever hamstrung by the torrent of shit being hurled at you from every direction at all times. You'll forever be at the mercy of bad tutorials, shortcuts and conveniences.

Mathematical thinking is the antidote to this kind of paralysis and insecurity. It's the power of knowing how similar things really are in computing and how little it's really changed. It's the power to eliminate bullshit.

You'll still have to learn new languages and tech but you'll be far greater equipped to detect and avoid the garbage.

Mathematical thinking is a super power in this field.

<comment><USER13> mathematical thinking is a subset of thinking

<comment><USER12> Well that seems overly broad and meaningless. Care to expand on that?

</comment></comment></comment><comment><USER14> A good developer starts out by planning, not coding.

When you have a good plan, the next step is usually obvious.

Also, you only learn by doing, and luck favors the active.

Learn the very minimum by tutorials, make up a project and go - learn as you need...

That is my go-to plan (and I have been working as a developer for 20+ years)

</comment><comment><USER15> If you have trouble picking a project, code katas are really fun to try.

The instructions are broad enough that you can solve them in different ways. Take a crack at one, solve it. Reflect on what was easy and what was hard or painful. Come back some time later, re-do differently - maybe this time optimising for what was hard the first time.

Also you can take a look at classic data structures and reimplement them from scratch. Don't look at the current implementation, just at how it's supposed to work, and try implementing a List (array or link based ?), a Map (hash, tree?), etc. Then you can compare with the existing implementation.

Or play those coding games you're talking about ! Start easy, work your way up. When it gets too hard, take a break, try another game. Let it rest a bit, come back to it when you have fresher ideas in 2 weeks time.

In general, flex your muscles where you think you're lacking. E.g.: think you overcomplicate ? Do a kata, finish it. Then look at it and try to simplify what you've done.

Good luck in your practice, I hope you enjoy it :)

</comment><comment><USER16> You don't need programming skills what you need is engineering skills.

</comment><comment><USER17> Try to find other root causes. Anxiety, depression, vitamin/minerals/good fat deficiency. [https://medium.com/@dr_eprice/laziness-does-not- exist-3af27e...](https://medium.com/@dr_eprice/laziness-does-not- exist-3af27e312d01)

<comment><AUTHOR> I think that anxiety or depression can be a factor. Because before programming was just a hobby for me. Now I'm doing a coding bootcamp where I pay about $100/month which is a lot for my family. I have a lot of pressure on me to be good to get a job, since I am going all in for a tech career. I am going to school in the day and doing the coding bootcamp at night and I'm learning from other sources too because I feel like I have to work 120% to be better than other to have a better chance finding a job.

I'm not sure. :(

<comment><USER18> where are you from?

<comment><AUTHOR> I am from Bosnia and Herzegovina.

</comment></comment></comment></comment><comment><USER19> Sometimes confusion is just the integration phase of learning. Up to a point, it is completely natural and healthy. You have to feel mixed up when learning to combine so much knowledge.

But always consider the possibility that you are suffering a mild amount of burnout. After 15 years of coding I had a two year stretch when it became difficult for me to organize projects, and I found that taking 5 mg a day of Paxil really helped. Mild problems of concerntration sometimes arise, and you have to ask yourself the basics, are you getting enough sleep, are you getting enough exercise? If yes, consider the possibility of burnout, and pursue treatment.

<comment><USER20> It's irresponsible to suggest that burnout is treated with antidepressants and sleep. Burnout is an occupational health problem whose only solution is in the form of occupational changes.

[https://en.wikipedia.org/wiki/Occupational_burnout](https://en.wikipedia.org/wiki/Occupational_burnout)

If a job is killing you, the solution is not to numb the pain away.

</comment></comment><comment><USER21> (Could do with context: how old are you? Are you doing this as a job? As a student?)

> When I was a beginner I could solve any problem those "coding challenge" > websites, but now I simply can't. I haven't stopped coding since then, I was > doing it every single day and I still got worse. Maybe I am just > overcomplicating things when programming.

How has this happened? Probably you _are_ overcomplicating things. I would say that one good tutorial is better than a thousand bad ones. I would also say to skip video tutorials entirely.

Can you find a mentor or colleague? Or even just fellow learner? Not everyone is an autodidact, it's quite rare.

<comment><AUTHOR> I'm 18 years old, I don't have a job. I am going to school right now (Electrical Engineering).

I live in Bosnia and Herzegovina, it's not a good place to live if you want to pursue an IT career. I don't have any friends that do programming that I can talk to and create programs together. I would love to have a mentor or a colleague to work with me. I've tried learning with other developers, but it didn't work out that well.

I really want to find a open source project that is meaningful to me and is on my skill level. I'm bored of doing stupid todo apps and calculators for learning.

If you know any good open source projects that I can contribute to easily that would be awesome.

</comment></comment><comment><USER22> Whenever I get similar feelings to this it usually means I've been working too much and I'm burning out. After days on a coding binge, code starts to look like spaghetti that I can neither make heads nor tales of. After taking a break and decompressing things start to make sense again. About a year ago, I was working so many hours that I forgot how to program all of a sudden. Taking time off quickly remedied the situation and made me excited to program again. I don't know you or your situation but it sounds like you're burned out.

</comment><comment><USER23> > When I was a beginner I could solve any problem those "coding challenge" > websites, but now I simply can't.

Just something to consider - you might be trying to solve harder problems then what you solved easily in the past. Easy problems can be very similar in structure to hard ones - but are much less complex to solve.

I'm sure that if you'll start with easy problems and move on from there this skill will get back to you. Solving coding challenges is a different skill than your day to day programming.

</comment><comment><USER24> Do it like any other sport: go back to basics and play in a restricted style.

Go through Knuth AOCP. You don't have to work every problem(nobody really does) but the book is there to point you towards fundamental computing concepts.

Strip down your language in the process. If you're used to something bulky like C++, try hopping over to Go or Lua and see how you like those.

Finally, throw out any abstraction and try coding in a primitive way for a while: use basic loops, arrays, and rarely a function call. Hold off even on defining structures with fields. Doing this will get you in the appropriate mindset for solving real problems, because it leaves no room for burying the design underneath the abstraction - you just apply one algorithm after another and rely on good commenting to know what it does.

Aim to read more code from real projects, open-source ones that people are using. Good code that is in production mostly contains necessary complications. It often doesn't do things in a fancy, code-challenge style or a style that takes a performance optimization because it is aiming only towards surfacing the feature as quickly and reliably as possible. That is a good goal to aim for with any real project.

</comment><comment><USER25> You are on the verge of finding the coding nirvana, dont stop! To me it seems you're facing ego depletion due to lack of proper practise, like a musician that does not sit down and tune their instrument and practise tempo. The best solution to this would be to find a great mentor, whose well-crafted mental model you could emulate and in the process learn it yourself.

If this is not possible, try to get feedback in other ways. You have to rearrange your mental pathways just like someone who has bad squatting technique. Go out and work in projects, do code reviews. Try to explain a problem youre facing, and how you think you could solve it to someone. Override your instinct to give up when it gets hard and you dont know what to do. Do something else maybe for a while, then come back to the problem. All in all i wish i could guide you in your workplace but such is life. Do something different, clearly the previous methods have not been working. Try to find the things you like and are good at, and then develop your programming identity on top of that.

</comment><comment><USER26> Maybe in those 2 years the coding challenges you used to solve became harder, in order to remain challenging?

In any case, 2 years is not enough time to become a good programmer, or a good anything. If you feel you're going backwards, perhaps the simplest explanation is that you have only advanced very slowly, which is normal given the steep learning curve of programming.

Be patient. Keep working at it and the mad coding skillz will come. In the meantime, I hope the following will act as a soothing balm upon your troubled soul :0

 _Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967. _

Teach Yourself Programming in Ten Years, Peter Norvig

[https://www.norvig.com/21-days.html](https://www.norvig.com/21-days.html)

Or, to look at a more prosaic source of the same wisdom:

      The Ancient One: How did you get to reattach severed nerves and put a human spine back together bone by bone?
      Dr. Stephen Strange: Study and practice, years of it.

</comment><comment><USER27> Programming is weird. The better I get through experience and painful failure, the more I have tool anxiety. It starts with using a package for everything, now I fear updating my database drivers which tend to be the only code outside the standard lib I use. I have way more fear about exceptions and robustness. Every time I learn something hard ish like recursion I get worse for a while trying to use it all over the place. Then you learn the flaws. Now I feel like I spend all my time data modeling and liberally profiling and logging stuff, the code slinging itself barely takes time at all so I forget how much I've learned.

</comment><comment><USER28> What do you want to achieve? One learns to program by doing. I've never heard of learning to program by watching. No one programs in a vacuum. Programming in general is just a collection of techniques to sustainably build instruction sets to automate hardware. The techniques are as various as the domains they serve. Are you trying to write enterprise banking code? Detect anomalies in satellite imagery? Automate cloud infrastructure for a startup on the cheap? Sequence a genome? Support energy telemetry? Render lifelike images on a consumer desktop computer / gaming console?

Go and do, would be my two cents.

</comment><comment><USER29> Try to create products or services instead of trying to solving coding challenges. They are fine until one point. Puzzles can keep getting harder which might be increasing your frustration.

On other hand, when you solve real life problems (they might not need complex algorithms but you've to figure out a lot) the result is huge reward which is not in case of coding challenge. There's another puzzle harder than the one you solved.

Also the impact of product or service or the optimization that you did might save lot of time and money of others while paying your bills at the same time.

</comment><comment><USER30> Hey,

I've also noticed that my skill seems to be deteriorating a bit. I worry that I may have f'd my attention span. So I decided to run an experiment and see how high I can count in my head. Not out loud. Just count until you lose the thread as some other thought barges in.

I find that I only seem able to get to the low thousands.

I also find that I'm tired all the time. This condition seems to have developed slowly over the past year or so. I don't know when exactly and I have yet to find a doctor who can tell me why.

So I guess my question to you is, how high can you count in your head?

<comment><USER31> I am not a doctor but had some tiredness issues and found that low vitamin d or low thyroid could cause such. Other symptoms include dry skin, depression, inability to focus, muscle pain etc.

</comment></comment><comment><USER32> Perhaps a foundational course in data structures and algorithms would re- ignite your thirst for good engineering. Read a book on the subject or do one of the free courses on Coursera.

</comment><comment><USER33> It sounds like it could be burnout.

Nevertheless I de-facto recommend you read "The Practice of Programming" by Pike and Kernighan. I would also you recommend learning how to learn (there is a good coursera course on it), and also I would recommend finding a good course on learning to search for things.

The last two things are probably more important that having "good knowledge" \-- being able to find the good knowledge, and good sources, and knowing enough to discern bad knowledge from good.

<comment><AUTHOR> Will do, thanks for the recommendation.

</comment></comment><comment><USER34> Is it possible that the anger you are experiencing is due to a fear that you have no other skills you can rely upon other than programming? Maybe you feel pressured to only express your creativity and intellect through programming. Worth considering. You're probably only a few small adjustments to your goals away from being happier.

P.S.

If you're putting in the time, you're probably getting better - plus, you are likely a good judge of whether or not you have _actually_ wasted time.

</comment><comment><USER35> Programming, in my view, is a craft more than anything else. Like blacksmithing or painting. You may learn some specific tricks by watching others but you'll only get good yourself by doing it.

Listen, if you're looking at your code and saying "this is crap", that's good- it means you can now tell crap from quality. So refactor it again and make it better. Fire up the forge and hit the hammer a few more times until it feels right.

</comment><comment><USER36> Pick up a good book and start to do the problems. Examples of good books are Sedgewick, Siena, etc. Stop with all the online videos and blogs.

</comment><comment><USER37> You could refresh your memories from the time before you started to complicate stuff by reading (or rereading) the marvelous book "code complete"

[https://www.amazon.com/Code-Complete-Practical-Handbook- Cons...](https://www.amazon.com/Code-Complete-Practical-Handbook- Construction/dp/0735619670)

<comment><AUTHOR> Thanks, will read it.

<comment><USER37> I have just ordered a copy for myself. I haven't read this book in more than 10 years, but it is the best computer book I have ever read. I have always said, that if I had my own company, then I would place a copy of this book on the table of all new employees. Reading this book should be their first assignment. It is a truly amazing book that anyone, despite experience level, platform of choice, project type and size, will benefit from reading.

You should read it.

</comment></comment></comment><comment><USER38> There have been many times when I have felt I was a much better programmer 4 years ago. One advice is to understand a good, sufficiently complex open source code base. Maybe something you use daily and perhaps wanted to add a feature or fix a bug. Chromium, Sqlite, django, etc. If you have access, discussing solutions with peers also helps.

</comment><comment><USER39> Stop trying so hard? It sounds like you're spinning your wheels and just getting further stuck in a rut. Find another activity, area of study, or topic of interest you can go deep in. The true masters of a given field are known for both depth and breadth. Find something else that sparks your interest that's NOT programming.

</comment><comment><USER40> Give examples of problems and what you find hard.

The more I code the more I realise how hard it is. 20 years later and I can count the good programmers I know on one hand. Most of them think they are terrible also.

Programming is about delivering something that adds value to your clients customer.

If you do that without the latest sexy over complication that's pricey better than most.

</comment><comment><USER41> It's normal. I remember feeling the same way. Remember it takes way more than 2 years to become good at anything. This is a difficult uncharted profession and you are experiencing a transition.

The best thing you can do is to take on a manageable risk and build something. Approach it with an engineering mindset.

</comment><comment><USER42> With about two years of learning you are probably just reaching the stage where you start to understand what you don't know (stage 2 below). Keep at it and you will grow.

Stage 1: Unconscious Incompetence. Stage 2: Conscious Incompetence. Stage 3: Conscious Competence. Stage 4: Unconscious Competence

</comment><comment><USER43> Length of programming means nothing, some people have 1 yr experience 10x over 10 years. You have to continually challenge yourself and build new things. Try building things you use. An editor, your own programming language, a database, servers, games, etc

</comment><comment><USER44> I find i do much worse work under pressure (real and imagined - as pressure is always imagined)

If there is a deadline I do all I can to remove it.

I do better work without the anxiety and i write cleaner code, add more tests, do more B work.

For me i think it is to do with ownership / control

<comment><USER45> I prefer deadline driven as I have an objective and date to meet. It makes it easier to push really hard to get it all done by the date as I always work smarter then. Unbounded causes feature creep and process to drift, in my experience.

</comment></comment><comment><USER46> Can you give an example of what kind of programming challenge or task that you recently had difficulty working on? I think part of your problem is thinking that programming is a mostly monolithic, easily quantifiable kind of skill.

<comment><AUTHOR> In the first few months of programming I was able to create todo lists apps and simple games, but now I have a hard time structuring everything together and I don't know where to start.

</comment></comment><comment><USER47> Forget puzzles! Solve a real problem with code. Read only as little as necessary and then build something you care about. Before you know it you have become a programmer.

</comment><comment><USER48> Simly do what you like. Find some good idea and enjoy doing it as a side project without leaving your current job. Who knows maybe some day it will become a good startup.

</comment><comment><USER49> I'll respond and try to _clean up_ the issue:

Broadly my guess is that the problem is too much advice on how to program, like being told to put your nose to the grindstone, shoulder to the wheel, and ear to the ground and then work in that position!

First, on how we can be "confident", let's make a few very simple points:

In some subjects, we do have some solid information.

E.g.: (1) If you want to be sure of the Pythagorean theorem, then there are many clear, short, rock solid proofs that will remove all doubt. (2) If you want to know when the next solar eclipse is, then basic physics from Newton's laws can give you an astoundingly accurate answer years into the future. (3) If you want to transmit a billion bytes of data over the Internet, then from coding theory there are some codes that can do really well at error detection and correction.

But in some subjects we don't have such clear, solid answers.

E.g.: (1) I recall very well that in high school I didn't know with much confidence what a girl I was dating thought of me, and I suspect, of course don't know for sure, that I was not nearly the first such boy!! (2) Tough to know what the US Federal Reserve will do to interest rates in 2019. We can't predict interest rates nearly as well as solar eclipses. Instead, interest rate predictions are a definite maybe.

Second, as an example, I'll outline how I became a "confident programmer":

I've been programming for a long time, back to Kemeny-Kurtz Basic, assembler, Fortran IV, Algol 60, PL/I F level, C, .... I skimmed through the first three volumes of Knuth's _The Art of Computer Programming_ , paid close attention to radix sort, heap sort, and AVL trees, and learned a lot of applied math and the associated computing. In six weeks while teaching the business school course in computing at Georgetown University, I designed, wrote, and ran some software to schedule the full, planned fleet at FedEx, pleased the BoD and two experts from BoD Member General Dynamics, "solved the most important problem facing the start of FedEx" (F. Smith, founder, COB, CEO), enabled funding, and saved the company.

My Ph.D. dissertation was in stochastic optimal control with computing, e.g., some algorithms to make the computing faster, from about 64 years down to three minutes.

While working in an AI project at IBM's Watson lab, I cooked up some applied math and algorithms to do better than our AI work. I programmed the algorithms and published my work in _Information Sciences_.

I also taught computing in the MBA program at Ohio State University, was named Chair of the college computing committee, etc.

And there was more.

I was self taught. E.g., while I was teaching computing at Georgetown and saving FedEx, I'd never had any courses or instruction in computing. Taught courses? Yes. Taken courses? No! I still have had essentially no instruction, and have had no meaningful instruction, in computing.

Still, now I'm deep into my startup: The software is 100,000 lines of typing, about 24,000 programming language statements. I've plugged together my first server, based on an ASUS motherboard, an AMD FX-8350 processor (8 cores, 4.0 GHz standard clock speed), 16 GB of ECC main memory, etc.

Third, during this work, I heard about various lessons on how to be a better programmer. So, sure, I read _The Mythical Man-Month_ , read lots of stuff about the challenges of writing and documenting _good_ code, saw the interest in APL programming, Prolog and _logic_ programming, the roles of _block structure_ , exceptional condition handling, and scope of names in PL/I programming, saw the rush for Ada programming, saw _structured programming_ , saw object oriented software design and programming, read about Backus and _functional_ programming, did a lot in AI _rule based_ programming, of course studied SQL programming (there's some of it in the code of my startup), etc.

Once I was flatly told that since I had done some Fortran programming, my brain "was forever damaged" for programming.

Lesson: There is a LOT of advice on programming. Yes, that advice is maybe more solid than predicting interest rates in 2019 or what women's Paris fashions will be next fall but, IMHO, not much more solid. Or, advice on programming is nowhere nearly as solid as, say, proofs of the Pythagorean theorem or using physics to predict solar eclipses.

In particular, it's possible, and maybe the best way, to do well at programming while essentially ignoring all the advice and just being self taught. Sorry 'bout that: Such a remark violates some politically correct norms, calls into question the importance of a lot of revered, respected, and coveted undergraduate teaching in computer science, and will rub some fur the wrong way. Sorry 'bout that, but I'm trying to respond to the OP.

IMHO, the important and really useful parts of programming remain a simple subject. Here are the high points: We (i) look at _requirements_ , inputs, and outputs, (ii) get a high level design, likely exploiting the principle of divide and conquer, (iii) find needed algorithms, (iv) define storage, (v) write expressions to do the data manipulations, (vi) wrap the expressions in If-Then-Else, (vii) as a case of divide and conquer form those lines of code in functions/subroutines, (viii) handle exceptional conditions, (ix) design the code so that it will be easy enough to test, (x) test the code, (xi) document the code following "Given the code, without documentation only the programmer and God understand it; six months later, only God." So, write the documentation to explain, clearly, all the important thinking in the work.

I'm confident you can do (i) - (xi), and in that case you should be a "confident programmer".

My view is that the most difficult part of programming and the worst bottleneck to progress in computing is working with tools, e.g., object oriented programming classes, APIs (application programmer interfaces), USB (universal serial bus), etc. that way too often are not clearly documented. E.g., yesterday I was struggling with lack of documentation of Vcore, one of the motherboard voltages. What devices use Vcore? What Wattage is needed? What parts of the power supply provide that voltage and Wattage? But no way is poor documentation about tools a programmer is to use the fault of the programmer. In response, one approach for a programmer, a "confident programmer", is to stay close to old tools, known to be solid, and with many good examples of usage and maybe even some good documentation. E.g., for my first server for my startup, I deliberately went with a motherboard with an old BIOS instead of the newer UEFI.

Most of these lessons are much the same as or follow closely from lessons in projects going way back. E.g., the technique of divide and conquer is really old. How old? For that technique and more, the _art_ goes back at least to military campaigns, designing ships to travel the oceans, construction of palaces, churches, and monuments, e.g., the Pyramids back 4000+ years.

So, for the OP: If you got started in programming, then there should be no good reason for you not to be a "confident programmer". Maybe all you need is what was passed out in the classic movie _The Wizard of Oz_. Or, I hereby confirm on you the title of Confident Programmer First Class with all the honors, rights, and privileges thereunto appertaining. Congratulations, and happy confident, programming.

<comment><AUTHOR> Thank you a lot for sharing your story and giving magnificent advice, I will think of this post the next time I write code.

Thank you for "Confident Programmer First Class". I will add it to my resume now. :P

</comment></comment><comment><USER50> As some have suggested:

Switch to being a producer, not a consumer. Build something. And do it again, and then again.

</comment><comment><USER51> This happened to me after suffering seizure-induced memory loss last January. It was disheartening, but I'm back to normal now. (For reference, a few weeks post-seizure [mid-February], I thought the 2016 Trump/Clinton election was still 6-8 weeks away.)

Read the basics, implement them, understand their tradeoffs, then build cool side projects that require their use instead of worrying about the best way to implement a Red-Black tree.

The basics are tools you use. The projects you build with them dictate which tools will stay fresh in your mind.

If you don't need the tool, remain aware of them, but don't stress over not remembering the low-level details of something you haven't touched in years.

</comment><comment><USER52> have you consider checking your health ? im not kidding, vitamins, brain, etc.

</comment><comment><USER53> You sound burned out.

</comment><comment><USER54> I had faced the same problem 4 years back, while working in a job for 4 years where my programming skill was used in very limited manner. I was pretty good during my college time, but due to lack of practice for 4 years, i was feeling almost the same.

The thing i did to overcome was to force my mind to do it or there is nothing else. This thought came to my mind when I started interviewing in other companies. During interviews you are forced to go into survival mode where solving a problem matters a lot. Interview experience pushed me to take each coding assignment like that only. I will put a pomodoro for 25 mins, and will try to solve it. If I can't, i will look at solution and try to implement in next pomodoro. You need to tell your mind, coding/problem solving is something you love so much that you won't do anything else until this gets done. You will definitely get a kick, atleast worked for me.</comment>


Economists to Obama: Get the Government out of the Banking Business - <AUTHOR> http://sandbox.phonecasting.com/Uploaders/ViewPodcast.aspx?id=3045950 On the eve of Barack Obama''s inauguration as president of the United States, Wharton finance professor Richard J. Herring discussed with Knowledge@Wharton some of the advice offered to the new chief executive by the Shadow Financial Regulatory Committee, a group of economists, former regulators and lawyers, of which Herring is a co-chair. Among the recommendations: As quickly as possible, unwind federal investments that helped keep U.S. banks afloat. Herring also assessed the deepening woes at Citigroup, which this week named board member Richard Parsons as its new chairman, a move intended to provide stronger leadership at the troubled bank. <comment><USER2> First, let's get banks out of the governing business.

<comment><USER3> Agreed. Simon Johnson nailed it in this article:

<http://www.theatlantic.com/doc/200905/imf-advice></comment></comment>


A Sea Change Coming for Water Cooling in Datacenters - <AUTHOR> https://www.nextplatform.com/2018/06/28/a-sea-change-coming-for-water-cooling-in-datacenters/ <comment><USER2> In 1970, Princeton had an IBM 91 computer. It covered the floor of a building. It had two giant racks of bipolar memory (256 bits/chip) with 1 MB in each rack. It had an office for several IBM employees who managed the machine.

On day an IBM tech was bringing up the system using a check-list. He noticed a red light that said "temperature". He noted it in the log and kept going. It turns out he had forgotten to turn the water on. After a short while the room filled with smoke.

The machine was ruined. After the machine was replaced, the IBM office kept one of the old PC boards on the wall. It was curled up like a potato chip.

</comment><comment><USER3> Microsoft has project Natick.

[https://www.naval-group.com/en/news/project-natick-naval- gro...](https://www.naval-group.com/en/news/project-natick-naval-group- collaborates-with-microsoft-to-deploy-underwater-datacenter/)

</comment><comment><USER4> TL;DR Newer hardware has increased cooling requirement compared to previous generations and the increased efficiency of water cooling may be worth the increased cost of installing and operating a it in a some data-centers in the relatively near future.

Despite the pun in the title seawater will have little to do with it.</comment>


Forecast: Android has peaked, Apple's iPhone still growing - <AUTHOR> http://tech.fortune.cnn.com/2013/04/27/apple-iphone-android-yankee/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+fortuneapple20+%28FORTUNE%3A+Apple+2.0%29 <comment><USER2> I can't believe that this was from CNN. I think I would have expected a more thorough analysis. That graph in particular is hilarious, starting at 2013 and going forward. The theory also that "since Apple users have stayed with Apple all these years, that they will do so forever" is fundamentally flawed. Just look at what happened to the Blackberry in the past (and Palm and Winmo6 before that). I suppose there hasn't been a compelling reason to switch from iOS in the past, but that is changing fast. Apple hasn't released anything really special in the last iteration, and they need to really scramble to keep up with the Galaxy line.

</comment><comment><USER3> To someone in Hong Kong, this doesn't ring true at all. iPhone users are abandoning the platform in droves in favour of Android, in particular the Galaxy line.

</comment><comment><USER4> Upvoted for solid analogy. No idea whether it is true or not.

</comment><comment><USER5> This is unlikely for at least three reasons:

1\. Apple will be loathe to give up high margins. I think there will be a lower cost iPhone, but not that much lower cost.

2\. "Other" should do fairly well. Jolla is going to be a credible player. Mozilla has launch partners lined up. Samsung will make a Tizen phone, though I'm pretty skeptical Tizen will thrive with Samsung and Intel having joint custody, and even Ubuntu could make a dent, though I expect that to be more in tablets than phones.

3\. An Android-based onslaught on the low-end is just beginning. There is no reason the cheapest phones won't run Android. Less-than-smartphones will become a specialized market. Touchscreens and chipsets will plummet in price at the low end. Android was initially designed for lo-spec devices, and, except for requiring (and that's not a "hard" requirement) a GPU now, it hasn't bloated too much. Android retains all the technical capabilities that enabled it to stuff a multiprocessing Java-based runtime into a 400Mhz single- core system. Those cheap phones will have much better specs than that.

4\. It is possible some platforms will fail. Windows Phone could fail outright. So could Blackberry.

</comment><comment><USER6> Android has peaked? It has 1.5 million activations per day now, from 1.3 million a few months ago. And iPhone's market share dropped from 20% to 17% globally. Android's potential for growth is so much bigger globally than iPhone's.</comment>


WebFaction joins forces with GoDaddy - <AUTHOR> https://community.webfaction.com/questions/21806/webfaction-joins-forces-with-godaddy <comment><USER2> I've been with Webfaction since 2010 or so. Between all the shared hosting cookie-cutter sites out there, they really stood out. SSH access by default. Knowledgeable support. Generally good availability.

I was recently so happy that webfaction finally added letsencrypt certificates, as a (long overdue) step to improve their service. But this acquisition is definitely a bad direction.

Funny that the email landed in spam, and was sent by some kind of a marketing mailer mta1.sut9.co.uk. I'd hazard a guess that it's the first sign of things going downhill...

Time to look for alternatives :-/

</comment><comment><AUTHOR> I'm now looking for a new email provider.

I hear good things about Rackspace and Fastmail, but I worry about US servers and privacy laws so I'm also considering self-hosting on AWS. Any suggestions?</comment>


Covid-19 simulation is thousands of lines of undocumented C from 13 years ago - <AUTHOR> https://twitter.com/neil_ferguson/status/1241835454707699713 <comment><USER2> To give some context on who this is given the multitude of simulations out there at the moment he is one of the key contributors to the UK's COVID response policy.

> Ferguson is a mathematician and an epidemiologist whose work on the spread > of Covid-19 is informing policy in not only the UK but also France, the US > and other countries as well. The centre he founded with colleagues at > Imperial College, the MRC Centre for Global Infectious Disease Analysis, > collaborates with the World Health Organization.

> The massive shift in the UK response from essentially letting the virus > spread through the population to the wholescale stay-at-home policy now in > place resulted from Ferguson's work, supported by other modellers especially > at the London School of Hygiene and Tropical Medicine.

[https://www.theguardian.com/world/2020/mar/18/neil- ferguson-...](https://www.theguardian.com/world/2020/mar/18/neil-ferguson- coronavirus-expert-who-is-working-on-despite-symptoms)

</comment><comment><USER3> What is the link to github or other repo?

</comment><comment><USER3> Link to github or other repo?</comment>


Huawei to launch high-end phone without Google Mobile Services next month - <AUTHOR> https://www.reuters.com/article/us-huawei-tech-alphabet-idUSKCN1VI240 <comment><USER2> Can't you just side load the google apps? Might be a great price because of that</comment>


Object recognition for robots - <AUTHOR> http://newsoffice.mit.edu/2015/object-recognition-robots-0724

<comment><USER2> endless possibilities</comment>


Customer Service is the New Marketing (Zappos) - <AUTHOR> http://www.fastcompany.com/1583321/zappos-marketing-chief-customer-service-is-the-new-marketing

<comment><USER2> The one thing a company should never outsource is customer service. That's where you meet your customers directly, where you have a chance to make a customer for life, and you put it in someone else's hands? Only someone schooled in mismanagement in some MBA program would think that is a nice place to save some money.</comment>


Ask HN: Anyone want to work through SICP together? - <AUTHOR> I've starting reading SICP but haven't been too good at keeping at it.  Does anyone want to join in to help each other work through the exercises and stay on track? <comment><AUTHOR> Freenode channel ##hn-sicp has been setup for weekly meetups and/or ongoing discussion.

I also set up <http://groups.google.com/group/hacker-news-reads-sicp> for arranging discussion times and any other miscellaneous things if needed.

<comment><AUTHOR> The Freenode channel has been changed to ##SICP

</comment></comment><comment><USER2> Isn't there some Web 2.0 app that organizes book clubs like this?

I have a couple books (signal processing, compilers, programmable logic) that I'd really like to work through with a couple people; what I really want to do is get together every other week or so over beers in Chicago, though.

<comment><USER3> <http://www.booksprouts.com/>

Designed for exactly this kind of scenario, and recently launched.

</comment></comment><comment><USER4> weekly IM chats about material? If we can get at least 5 people I'm in.

<comment><AUTHOR> That's a great idea. We could also set up a google group(or something similar) if people were interested.

<comment><USER5> How about an IRC channel on freenode too.

<comment><AUTHOR> how does ##hn-sicp sound?

</comment></comment></comment></comment><comment><USER6> Might I make a recommendation? Start with "The Little Schemer" and then graduate to "The Seasoned Schemer". Here: [http://www.amazon.com/Little- Schemer-Daniel-P-Friedman/dp/02...](http://www.amazon.com/Little-Schemer- Daniel-P- Friedman/dp/0262560992/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1231703825&sr=8-1)

It takes you more step-by-step than SICP and once you get more practice with those books, SICP will be much more paletable.

</comment><comment><USER7> Since many HN readers are in the CA Bay Area, would it make sense to add a bi- weekly or monthly physical meeting to this as well?

</comment><comment><USER8> This sounds like a good way to keep motivated, having tried and failed to get through SICP on my own. Count me in.

</comment><comment> daniel-cussen I got through it in a sense. I attempted every problem of the first of the five sections, and solved most of them. Then I worked with a tutor who looked through the rest of it and decided to work on something closer to the state of the art. I wouldn't say what I learned was better than SICP, but it was interesting.

</comment><comment><USER9> I've been going through SICP, albeit slower then I would hope so. I'm only into the initial sections and I would definitely be up for something like weekly IM chats at a scheduled time to discuss the book and help each other understand.

That would be great, so count me in if it happens.

</comment><comment><USER10> I want to be in... but I've 5 other courses to deal with...

<comment><USER11> I too want to be in. Have been hanging around in chapter 2 for a very long time. But don't want to start on a new thing now. Have been working on many things lately and want to finish it off.

</comment></comment><comment><AUTHOR> It looks like there is at least a few people interested. Should we all leave a comment with contact info (if it's not in your profile)?

My email is chris.m.conley at the goog.

<comment><AUTHOR> Forget the email thing; we'll set up an irc channel :)

</comment></comment><comment><USER12> Count me in as well. I bought the book as a package deal from amzn with "The little Schemer" and haven't read much of it.

</comment><comment><USER13> I'm certainly interested. I got bogged down in Chapter 2 last year. Time to go again, I suppose.

</comment><comment><USER14> I'm also in! My copy is being shipped at the moment, though. Should arrive around 3th Februar :/

<comment><USER15> <http://mitpress.mit.edu/sicp/full-text/book/book.html> should work fine until then

<comment><USER16> The texinfo SICP (<http://www.neilvandyke.org/sicp-texi/>) is good too, if you're working in Emacs.

<comment><USER15> I am, thanks!

</comment></comment></comment></comment><comment><USER17> Excellent. I just started with SICP. So doing it together with HN folks sounds nice!

</comment><comment><USER18> I'd like to be added to the mailing list ... tom /at/ karlo /dot/ org

</comment><comment><USER19> I just finished chapter 1, but would love to join you guys.

</comment><comment><USER20> I got SICP as a christmas present, I'm in.

<comment><USER21> Same here :) Book club is a go!

</comment></comment><comment><USER22> I'm in. rod at ennobleit dot com

</comment><comment><USER23> i'm in. i'm on chapter 2 right now. i think irc meetings are a good way to go.

</comment><comment><USER5> Sure, count me in.

<comment><USER24> +1 me too

</comment></comment><comment><USER25> Please add me too

</comment><comment><USER26> Cool! I am in.

</comment><comment><USER27> I'm SO in :D:D

</comment><comment><USER28> add me please kunqian at live dot ca

</comment><comment><USER29> Count me in

</comment><comment><USER30> I'm in!

</comment><comment><USER31> In

</comment><comment><USER32> I'm in!

</comment><comment><USER33> In

</comment><comment><USER34> I am in.

</comment><comment><USER35> I am in!

</comment><comment><USER36> I'm in too

</comment><comment><USER37> I'm in.</comment>


The revolution was successful: Egypt abolishes Daylight Savings Time - <AUTHOR> http://www.timeanddate.com/news/time/egypt-cancels-dst.html

<comment><USER2> Is it really that simple? Overthrow your government and you get to cancel daylight savings time? We ought to try that in the USA.

</comment><comment><USER3> Common sense prevails.</comment>


XKCD – I Could Care Less - <AUTHOR> http://xkcd.com/1576/ <comment><USER2> Maybe it's just me, but I always took "I could care less" to be a shortening of "I couldn't care less". Growing up, we always just said "I could care", which has an added "...but I don't" dimension; everyone seemed to understand just fine.

<comment><USER3> It's a Yiddishism, as far as anyone has been able to trace it. There is an implied second half, as if to say that caring less would involve some sort of effort or commitment beyond what is warranted. It comes to us the same way as _already_ playing the part of the German/Yiddish _schon_ does ("Will you hurry up already!").

Unfortunately, the 18th-century idea that English should play by the strict rules of logic on a structure that would make learning serious academic languages like Latin and Greek easier has become pervasive. The grammar textbooks of my youth no longer carried titles like _An accidence to the English tongue, chiefly for the use of such boys and men as have never learned Latin perfectly, and for the benefit of the female sex, also for the Welch, Irish, Scotch and foreigners_ , but the sentiment was largely the same, and the grammar they described were every bit as foreign to the actual grammar of English as Latin itself.</comment></comment>


What Facebook, Google+ and YouTube would have looked like in 1997 - <AUTHOR> http://thenextweb.com/shareables/2011/12/10/what-facebook-google-and-youtube-would-have-looked-like-in-1997/?utm_source=Twitter&utm_medium=share%2Bbutton&utm_campaign=social%2Bmedia Ah the olden days. <comment><USER2> What's the point of this. Just see what they actually looked like [http://www.telegraph.co.uk/technology/6125914/How-20-popular...](http://www.telegraph.co.uk/technology/6125914/How-20-popular- websites-looked-when-they-launched.html)

It's not like the 'fake' ones are particularly funny or anything.

<comment><USER3> The point is to see how technology has progressed in 14 years. Your link is irrelevant as none of the sites in question were live in 1997.

<comment><USER4> Look at the screenshot of Amazon from 1995.

<comment><USER5> That screenshot is NOT from 1995. It has a reference to zShops, which didn't launch until 1999.

</comment></comment></comment></comment><comment><USER6> You know, there were actually good designers in the late 90s and HTML and CSS were reasonably mature.

<comment><USER7> Yeah, these styles seem to be targeting '94, not 97. I have fond memories of imdb around that time in the mosaic browser I think.

<comment><USER8> I'm pretty sure tables had border=0 even in 94.

</comment></comment></comment><comment><USER9> Sites like these always trigger an upswell of nostalgia for me. Looking at these old screenshots I can remember how hip I felt after installing Netscape Communicator and browsing various sites. Perl was the new frontier.

The Internet still seemed like something you could wrap your head around in its entirety, if you tried.

</comment><comment><USER10> Link to a link - Direct source: <http://1x-upon.com/>

</comment><comment><USER11> I love the would-be prankster on the Facebook page, trying to sneak an alert("Delete C:/?") onto the page.

</comment><comment><USER12> What is this nonsense about google? The domain was registered in 97 and launche in 98 <http://en.m.wikipedia.org/wiki/History_of_Google>

[edit: my mistake, google+]

<comment><USER13> It says Google+ not Google.

That said, the 1998 version of Google looked much, much better than their mocked up 1997 version of Google+.

<comment><USER12> Yeah you're right. I'd be interested in seeing some designers at these companies build something using only the layout and styling tools supported by most browsers of the day.

<comment><USER14> Me too, but to be fair, cellspacing="0" was well understood by serious web designers at the time in contrast with these examples.

</comment></comment></comment></comment><comment><USER15> I like 1997 YouTube better.

<comment><USER16> The choice of codecs and container formats gave me a giggle. It's easy to criticize Flash, but web video was an out and out pain prior to Flash video players.

<comment><USER17> It should say "RealVideo", too, actually, as that was the format of the day.

</comment></comment></comment><comment><USER18> Since others are handling the arguments over technical and stylistic aspects, I will comment on another problem with the Facebook dedesign:

Pokemon was not yet popular in 1997. The anime scene was all about Ranma, Slayers, Evangelion, Techni Muyo, and whatever movie had aired on the Sci-Fi channel the past Saturday. Sailor Moon was running on TV and was very popular but we tried to forget about that. Of course, the user could be from Japan where Pokemon had been running for half a year, or they could have gotten a sub off Usenet, but Pokemon did not get popular in the English-speaking world until the dub was aired later in the decade.

</comment><comment><USER19> The real name policy was a defining feature of Facebook. A site that doesn't have that can hardly be called the same thing.</comment>


The Difference Between API Gateways and Service Mesh - <AUTHOR> https://konghq.com/blog/the-difference-between-api-gateways-and-service-mesh/ <comment><USER2> The sidecar pattern has always looked too complex to me, back in the days of using consul over docker swarm. I was just happy once I managed to get the consul DNS server to respond to service queries, and that's when I stopped, once I realized maybe I did not need that complexity, even though it made many things transparent.

I wonder how that complexity has changed over the last, let's say, 3-ish years?</comment>


Ask HN: Flask Application Structure - <AUTHOR> Hi,
I will appreciate your feedback with regards a Flask Application structure, which is logical, practical and easily adaptable to vertical scalability.
I will also like to find out your personal experience and thoughts about the following Flask Boilerplate templates:
1.Cookiecutter Flask 2.Cookiecutter Flask Pythonic 3.Flask Foundation
Cheers <comment><USER2> [https://github.com/realpython/flask- skeleton](https://github.com/realpython/flask-skeleton)</comment>


Twitter thread of T-Mobile Rep arguing for the case of plaintext passwords - <AUTHOR> https://twitter.com/c_pellegrino/status/981409466242486272 <comment><USER2> "What if this doesn't happen because our security is amazingly good?" [0]

So your security is good enough to store _passwords in plaintext_?

Jesus Christ.

[0]: [https://mobile.twitter.com/tmobileat/status/9821879190613032...](https://mobile.twitter.com/tmobileat/status/982187919061303296)</comment>


Stealing Mona Lisa - <AUTHOR> http://www.vanityfair.com/style/features/2009/05/mona-lisa-excerpt200905?currentPage=all

<comment><USER2> Excellent story. Makes it that much more exciting that I was just in Paris and got to see it in person.</comment>


Driverless Car Accident Reports Make Unhappy Reading for Humans - <AUTHOR> http://techcrunch.com/2015/10/09/dont-blame-the-robot-drivers/?ncid=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29&utm_content=FaceBook&sr_share=facebook <comment><USER2> >human drivers' tendency to take risks and cut corners, and well, that, in itself, might indicate driverless cars' risk aversion is an accident waiting to happen (at least when human drivers are also in the mix).

You can try all you want, but there is absolutely no way to spin people rear- ending a stopped car as anything but human error.

<comment><USER3> > You can try all you want, but there is absolutely no way to spin people > rear-ending a stopped car as anything but human error.

That's true, as stated. But it also may be that a significant mix of driven and driverless cars increases the likelihood of human at fault accidents, because we have learned to anticipate how other humans drive. We are, after all, not robots.</comment></comment>


WhatsApp suit says Israeli spyware maker exploited its app to target 1,400 users - <AUTHOR> https://arstechnica.com/information-technology/2019/10/whatsapp-suit-says-israeli-spyware-maker-exploited-its-app-to-infect-1400-users/ <comment><USER2> Already discussed in #3 on the front page right now [https://news.ycombinator.com/item?id=21392564](https://news.ycombinator.com/item?id=21392564)</comment>


Microsoft says don't use PPTP and MS-CHAP - Suraj-Sun http://www.h-online.com/security/news/item/Microsoft-says-don-t-use-PPTP-and-MS-CHAP-1672257.html

<comment><AUTHOR> Here's Moxie Marlinspike's blog post about the MS-CHAPv2 vulnerabilities: [https://www.cloudcracker.com/blog/2012/07/29/cracking-ms- cha...](https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/)

Bruce Schneier also wrote about MS-CHAPv2 vulnerabilities back in 1999: <https://www.schneier.com/paper-pptpv2.html>

</comment><comment><USER2> I don't see anywhere in the KB article advising not to use PPTP. MS only recommends switching tunneling tech as an alternative to using more secure authentication method with PPTP (ie PEAP).

Besides incorrect title, the final remark about OpenVPN is bit trollish imho.

<comment><USER3> Yeah - why would MSFT suggest an open source solution when they have their own tech? When have you ever seen MSFT suggest an open solution?

<comment><USER4> You may be surprised to hear that there's lots of stuff happening with open source here at Microsoft. ASP.NET MVC, the Azure SDKs, and F# are all open source. Check out this blog for more: <http://blogs.technet.com/b/port25/>.

</comment></comment></comment><comment><USER5> Does anybody have more information on the claim in this article that WPA2 is insecure too?

<comment><USER2> It's only insecure if MS-CHAP is used for authentication, ie when used in WPA2-EAP mode. More commonly WPA2-PSK is used, which remains unaffected.

<comment><USER6> In English this means that if you're using the standard "share a single password for the wifi network" mode that all consumers understand, you're fine. If you're in an enterprisey environment where you use your own wifi password that is the same as your login password elsewhere, you're in trouble.

<comment><USER7> You _may_ be in trouble. There are other forms of EAP that do not use MS-CHAP, like EAP-TLS.</comment></comment></comment></comment>


Netflix's Bill Gates Documentary Reveals a Restless Mind Still Hard at Work - <AUTHOR> https://thenewstack.io/netflixs-bill-gates-documentary-reveals-a-restless-mind-still-hard-at-work/ <comment><USER2> Bill Gates is (was?) a talented programmer and a greedy, ruthless businessman. That's it. That's all. To think that some people consider him some kind of philosopher, visionary, or elder statesman is sad. If I'm not mistaken, most of the initiatives of his foundation have worked out poorly.

<comment><USER3> Most startups fail, so it's not surprising many of his initiatives have also failed. Regardless of his career path, at least he's now _trying_ to do something worthwhile with his wealth.</comment></comment>


Location related question - <AUTHOR> So being that English is not my first language this might be a bit difficult to explain.
Is it possible tooooo turn your personal internet at home into a proxy? By this I mean, wherever I go, I would like my IP location or whatever one calls it (my apologies as I am not tech savvy) to always show my home's IP, even though I might be on the other side of the country.
I don't know if that explains well in enough, to put it simply I always want to appear on my homes IP address even though I'm somewhere else, does that make sense? I know proxies are usually used to make it appear that you are somewhere else, but I want to do the opposite.
Thank you. <comment><USER2> You can use a VPN, e.g. [https://en.wikipedia.org/wiki/OpenVPN](https://en.wikipedia.org/wiki/OpenVPN), to tunnel all your requests through a server in your home. And a server can also be a router (see picture on [https://en.wikipedia.org/wiki/DD- WRT](https://en.wikipedia.org/wiki/DD-WRT)) or an old lower-powered computer since the software consumes little to no RAM. On the road, e.g. your mobile phone, you set the proxy to be that VPN.

</comment><comment><USER3> You can do this with a VPN or with ssh tunneling. You will need a computer at home that is always on, could be a Raspberry Pi.

</comment><comment><AUTHOR> Thank you very much for the quick responses!</comment>


Music Piracy Down As Streaming Services Take Over - <AUTHOR> http://techcrunch.com/2011/09/29/music-piracy-down-as-streaming-services-take-over/

<comment><USER2> So, it wasn't necessarily that people would no longer pay for music and that the record industry was dead, it was the reluctance of the industry to adapt to technological advancement as well as social behavior trends. Spotify, and to a lesser degree, Pandora, identified this trend and bridged the gap between piracy and the record labels. I wonder what Lars Ulrich from Metallica thinks...

</comment><comment><USER3> I stopped pirating in exchange for a Zune pass. They have the vast majority of what I've looked, for the missing stuff I'll just eBay the album and then pirate a digital copy.

</comment><comment><USER4> Most Spotify users are free users, and would probably instantly switch back to pirating/YouTube if their free plan ever disappears or becomes too limiting.

</comment><comment><USER5> I stopped pirating 5 years ago because of all of the streaming services out there (grooveshark, last.fm, pandora), and somethimes youtube.</comment>


Show HN: A million dollars isn't cool...you know what ISN'T cool? Facebook. - <AUTHOR>

It has been time for me to start a blog. So I did. I wanted to share and get HN's thoughts. I wrote about Facebook and how it isn't cool. I think we should make something different. Check it out here: http://jmjerlecki.posterous.com/a-million-dollars-isnt-coolyou-know-what-isnt <comment><USER2> Interestingly enough, I started thinking about the "What would you do with Myspace" post (from a week or so ago) this morning, and the thing that came to mind was "Kick out all of the old / uncool people, refocus on music and cool activities. Make a site focused on people who are in bands, or go to live shows, people who are into extreme sports, etc., etc." In short, make something "cool" as opposed to a site full of people's moms and aunts and grandmothers, etc.

But since I'm 37, there's a part of me that wants to tell me (and the OP) to "go f!%# yourself, with your 'kick out the old people' crap." :-)

Seriously though, I don't think it's age per-se that matters, it's just about attracting people who are cool, for some value of "cool" regardless of age. A site with no Farmville, no middle aged housewives (well, maybe, if they're MILFs and up for some fun), and no grandmothers, no boring ass Uncle George types, could possibly gain some traction. Maybe.

<comment><AUTHOR> You are right. Maybe it's not age that matters. Maybe its mindset. Me being 23 authoring this is naive enough to think its age.

F*^&k Farmville. :)</comment></comment>


Startup L. Jackson Speaks Out About Diversity, Products, and the People He's Not - <AUTHOR> http://techcrunch.com/2015/01/20/startup-l-jackson-speaks-out-about-diversity-cool-products-and-all-the-people-hes-not/

<comment><AUTHOR> As a long-time follower of the mysterious and opinionated Startup L Jackson, we had a fun time chatting with him on the podcast.</comment>


Ask HN: Help? Problem taking credit card info before start of 30 day free trial. - <AUTHOR>

I am using Authorize.net and they recommended Cybersource for my Merchant Service Provider. I thought I was good to go, then today I got this email:<p>"On your web site you offer a 30 day trial period.  No credit card information can be taken before a trial period is over.  You will need to remove the 30 day trial period or not take any credit card information until the 30 day trial period is over."<p>It seems like a common web app practice to take credit card information then not charge until the 30 day trial is over, but the MSP isn't letting me.  What do I need to do in order to make this happen? <comment><AUTHOR> Talked to my vendors and I'm just updating this thread in case someone runs into the same problem and finds it.

1\. Its NOT an Authorize vs Braintree issue. Your gateway doesn't care at all. It has everything to do with your Merchant Service Provider.

2\. Different merchant service providers have different rules. For reference, Cybersource (a Merchant Service Provider, and Authorize.net's parent company) does not allow you to take a credit card payment at the beginning of a software trial period. They require you to give the trial, THEN ask for the cc info and begin the recurring payments immediately after taking the information.

Cybersource claims that this is what they are supposed to do: when you take cc info online to charge, you pass that information to visa/mastercard/whatever credit card company, who then authorizes the transaction. There is an auth code associated with this transaction, and the auth code expires eventually.

They've told me that the rules from visa/mastercard are fairly clear that you're supposed to charge once you take the info, but some Merchant Service Providers aren't very strict on that.

tldr: Cybersource won't let you take credit card info until you charge the card. You'll have to find a different MSP.

</comment><comment><USER2> Switch to Braintree

<comment><AUTHOR> my understanding is that braintree is a gateway, and replacable by authorize. either way, its independent of my merchant service provider, which is the problem here.

if you think this is incorrect and switching to braintree solves this problem, please explain further.

<comment><USER3> If you go to Braintree, you see this on the web site:

[http://www.braintreepaymentsolutions.com/services/merchant-a...](http://www.braintreepaymentsolutions.com/services/merchant- account) Bundled Services – Merchant Account, Payment Gateway, Credit Card Storage and Recurring Billing

Meaning they do offer some competitive, wrapped merchant account. I haven't used Braintree - anyone have comments on these guys being good vs. bad?

</comment></comment></comment><comment><USER4> Switch to a different merchant service provider. They probably won't give you an exception unless you already have a history with them, and high volume.

<comment><AUTHOR> any recommendations for a merchant service provider?</comment></comment>


Codecademy and the Future of (Not) Learning to Code - <AUTHOR> http://www.hackeducation.com/2011/10/28/codecademy-and-the-future-of-not-learning-to-code/#.Tqw6dBzo7gw.hackernews <comment><USER2> I find this to be incredibly short-sighted.

Educational tech pundits are so quick to judge new ways of learning based on the content they have _right now_. I'm incredibly excited by things like Codecademy (and obviously Khan Academy) _because_ what we're seeing is the very beginning.

From the article: "If you were to sit me down in front of a blank IDE and ask me to build something, I wouldn't have any clue how to begin. (And the fact that I know what an IDE is probably sets me apart from a lot of novice would- be programmers.)

I can set a variable..."

Go find either A) a bunch of college freshman who just took their first couple programming classes or B) a bunch of self-learners who just read their first chapters of a programming book, and I bet you'll find similar feelings.

I don't know if it'll be Codecademy or any other product that exists right now, but I do know that a tool that helps anyone learn how to program is something that's worth the chase. Let 'em get started.

<comment><USER3> I guess I don't understand the Author's sense of entitlement here. Someone took time to build a tool to help her learn to code, and she found it difficult. Different people learn in different ways. For some (many?), making it fun and adding badges is a way to keep the motivation going when things are confusing. I don't think the Codeacademy guys are trying to build the perfect tool for everyone, they're trying to build something that works really well for some people.

<comment><USER4> What sense of entitlement? She's only expressing that she would like to be easier and clearer. Are these not valid wishes? I did not interpret her text like you at all... Oh well

<comment><USER5> I think she's expressing her desire for it to be even more in depth. Not necessarily easier and clearer. Founder said it's coming though :)

</comment></comment></comment></comment><comment><USER6> I'm one of the cofounders of Codecademy. I posted this on Audrey's blog, but I'm posting it here as well. Thanks!

I'm glad you're learning to code. In fact, I was in the same position a few years ago. Since then, I've tried everything - books, college classes, videos and more. For me, and for hundreds of people we've talked to, none of these traditional approaches, though useful for learning history or literature, helped it 'click' for us in learning to program. My cofounder, Ryan, has spent the past couple of years helping developers at Columbia learn how to apply their theoretical computer science skills to actually programming. He's taught hundreds of Columbia students the basics (and beyond).

Before I start, I just want to point out that Codecademy is new. We started working on the project in the middle of August and released it a few weeks later. The money we raised is not just a show of support for what we have - it's a sign that people are excited about the future.

I've been very upfront with everyone we've spoken to so far about what you can learn on Codecademy. At the moment, the "Getting Started with Programming" course is indeed very basic. It's meant to show people that programming can be fun. As you said, you won't come out of one course as an awesome developer (as I can sadly attest). Then again, you won't come out of a freshman computer science course with the ability to be an awesome developer. It's a long road, and that's why developers are a hot commodity nowadays.

We only have three courses up right now. We're working on hundreds more in other languages and at various skill levels. While you can't learn the full stack from Codecademy now, you will be able to shortly.

Lastly, our experience has been that the badges and other aspects are a crucial part of the experience we're creating on Codecademy for most of our users. If you ask most people what stopped them from reading their entire programming book (and we've talked to hundreds of people), it's almost always that they aren't motivated enough. In school, learning is motivated by report cards and teacher expectations. We hope we can build a motivational experience that pushes anyone to program - not just the stereotypical developer. We've made a conscious effort to reach out to underrepresented demographics who are interested in learning to program. You'll see the fruits of those efforts in coming months.

Above all, we're open to feedback as we grow. I just hope you'll look at what we're doing as a first attempt - not the final one. Please let me know if you have any other feedback.

<comment><USER7> > If you ask most people what stopped them from reading their entire > programming book (and we've talked to hundreds of people), it's almost > always that they aren't motivated enough. In school, learning is motivated > by report cards and teacher expectations. We hope we can build a > motivational experience that pushes anyone to program - not just the > stereotypical developer.

Badges and achievements are awesome when done right, but will only go so far with motivation. Real, intrinsic motivation will come from realizing that you can create something with the skills you've learned. If you could somehow capture this in Codecademy I think you could score a decisive advantage against the traditional tutorial/book learning model of learning to program.

Context: I'm currently working on a spaced repetition app that schedules Japanese vocab/sentence flashcards for you. While it has achievements/badges for behaviour that's conducive to your Japanese learning, it also finds native content on the internet that you're likely going to be able to read 90% of (based on the vocab cards you've done well on). Realizing that you can actually read Japanese content for native Japanese (i.e. you can actually _use_ the skill you're learning here) is the biggest rush of motivation I've experienced. It pushes you to go on and see how much more you could do, way more than any badge or achievement could.

<comment><USER8> Sounds great, where can I find this app?

<comment><USER7> Still in development, but we'll be starting a closed beta around January. <http://blog.japanalicious.com> for updates.

</comment></comment></comment></comment><comment><USER9> I'm teaching myself to code right now, and have tried 3 different introductory courses/guides, including CodeAcademy. The problem I've faced with each one is I'd learn the same thing (methods, arrays, variables, conditional statements, etc) but was never able to piece together the practical use. I'd get what if/then clauses mean, and what arrays do, but never could grasp their broader functionality or use case in an actual program.

I recently started taking Stanford's CS106A class online, and its the only thing that's really clicked for me so far. The first few weeks teach you the same thing as other guides, but they create an introductory program for you to test out the basics, and help you learn the methodology of programming.

From there is where I realized what's lacking in most "learning-to-code" intro courses: they'll give you the tools to code, but don't help you learn the methodology of coding. I realize now its a very different mindset, and if you don't actually solve problems with those tools, its difficult to learn conceptually.

Hopefully CodeAcademy can crack this issue of helping people learn how to think like a programmer, and not just show the tools that programmers use essentially.

<comment><USER10> Here's the little secret: Find something you want to create, and build it. It's as simple as that, bmahmood. You have to have that inner fire to build something.

If you're interested in web applications, check out <http://ruby.railstutorial.org/> It's free and an excellent resource for a curious learner like yourself. At the end of it, you will have created a tangible web application that you could even show your friends.

Best of luck!

</comment></comment><comment><USER11> _I've opted to learn JavaScript, mainly because I think it's one of the essential building blocks of the Web._

I would say that JavaScript is (Not) essential, not essential at all.

The building blocks of web software are the agnostic components of LAMP (operating system + web server + database + backend CGI processor.) And, we're even removing some (all?) of those building blocks. For the front-end apps on the web browser platform, maybe start by painting, then learning HTML, then CSS, then JavaScript. Use JavaScript sparingly for special effects and extra help, but not as the main line of your story.

The most useful code, is code that is not even written because you don't need to (especially if you're not sure how to code in the first place), and code that gets removed is even better. And, interfaces that don't show themselves are a big improvement too.

My advice would be learn how (Not) to Code. Still, be persistent and learn how to code, but go even further and learn how not to code.

</comment><comment><USER12> I've given codecademy a try and must say while it's fun to get through the task as a non-programmer who's trying to learn it's confusing. Often I can complete a task but then not really understand what I just did.

I'm trying to teach myself how to program for Android and find that pretty difficult. I do know HTML and CSS but when it comes to finding current, good information on Android I'm having trouble. I've ended up having to resort to purchasing books.

With HTML and CSS I learned at the P2PU <http://p2pu.org/en/groups/all/?school=school-of-webcraft> which I think is terrific if you get a good group and instructor.

</comment><comment><USER13> i mostly agree with this. the way you learn how to code is the same way you learn anything else: by doing it. that is, you want to know so bad that you try to do it or someone forces you to do it. that's 80% of the battle.

mentorship, tools, and pedagogy (and badges!) probably make up the other 20% of the battle, though. codeacademy fits there. i don't know if what they have is effective or not, but surely they are smart enough to know that whether their courses are effective is very important to their business. hence, they will tweak, iterate, and improve to enhance that.

<comment><USER14> I first seriously(?) learned how to code by finding a used Pascal book and reading it thoroughly. That was some time after getting my first computer and not knowing where to find a compiler! (I'm not counting forgotten Logo from summer class long ago or using elaborate triggers in a MUD.) I had serious learning problems getting far past that unguided. Finally learning C from some lecture notes was a growth spurt though I had looked at some C before that. Trying to calculate the fewest coins to add up to a sum and finding optimal new coin took like a couple weeks! LOL

</comment></comment><comment><USER15> I am kind of surprised by this, especially given all of the positive comments. It took Audrey's post to make me realize that if I were reading HN, a lot of those positive comments would be, well..technical people.

So now I'm torn. My girlfriend is a graphic designer who wants to learn to code, and I'll probably have her give CodeAcademy a shot. And then maybe CodeSchool, since I have a subscription.

How have the non-CS/programmers of HN learned to code? I learned programming in a CS context, so I don't really know how to tell people where to start.

<comment><USER16> I taught myself to code (HTML, CSS, and a small amount of PHP — Wordpress) while I was doing a Graphic Design ND. I think the hardest part for me, like Audrey, was trying to understand what a lot of the terms mean and also the concepts behind them.

I distinctly remember following a basic HTML & CSS tutorial and not being able to work out how to get the CSS to style the HTML. The example code worked fine, but the relationship between the two wasn't explained so when I wrote my own it didn't work.

I only learned of semantics 12 months after starting with HTML + CSS. It would have made a massive difference if someone had pointed me to a beginners guide (online & free, of course) that explained the way the web was born and how HTML is a way of assigning meaning to a document.

I think a lot of the problem is the people writing the tutorials and resources for this kind of stuff want to teach people something, while the people looking for this stuff want to learn it. Perhaps this is why a lot of Google's results for these kind of things are forum threads and other discussions (usually filled with outdated or plain wrong information, I might add).

<comment><USER5> I find myself saying this a lot and I mean no offense but HTML and CSS aren't code. If you can't build a binary search and sort then it doesn't count ;)

<comment><USER5> I will never understand why some things are downvoted. Anyone with the power to do so knows that HTML is not a programming language and not indicative of hacker prowess.

</comment></comment></comment></comment><comment><USER17> That read a bit like a kid reading how to do math, but never actually practicing it, and then complaining how text book doesn't actually teach you math.

</comment><comment><USER18> I have to agree. This is _not_ how you learn to code, and I'd say the reason this is only coming out now, is because others knew better.</comment>


Ask HN: Is bike rental now a VC thing? - <AUTHOR> I am holidaying with my wife and kids in NYC and I cannot move without getting someone shoving a bike rental flyer at me or holding a board aloft.
I am assuming there is a lot of VC money being burnt here - but till I walked out I had never heard of this as a thing (and I can't work out the economics - seem really bad even as a tourist trap)
Is this a VC cash burn? And if so does my VC/tech/industry radar need an upgrade? <comment><USER2> They are small businesses, promoted by hourly workers. What does that have to do with VCs?

<comment><USER3> I'm struggling to grasp the relevance also. In NYC, you'll have Subway sandwich flyers and comedy club flyers thrown your way also, but I don't think those have anything to do with VC. Why do bikes rentals strike you as a "VC cash burn?"

<comment><AUTHOR> It just surprised me I guess - without looking deeply at it I saw at least two "levels" of street workers, along with some smatreringnof online and mobile booking that smelt of enough tech to "qualify" for VC, with a lot of competition in an industry that does not strike one as profitable - new bikes being rented with what looks like an eye on turnover not profit just "smelt" VC.

Clearly my radar needs updating

<comment><USER4> Specifically though, are you talking about like literally local mom-and-pop bike rental shops for tourists? Or are you talking about the shared bike service with stations at every other street corner, popular in many cities nowadays?

If it's the latter, I can understand why you thought they were VC-backed startups.

<comment><AUTHOR> The latter - these are clearly not mom & pop setups. I'm impressed if they are actually profitable day to day.

<comment><USER5> > The latter

You mean the ones that have "CITI BIKE" plastered all across each bike and every station? hmm, I wonder what company could be behind that? Citi? naahh, probably a VC...

wat?

<comment><AUTHOR> I will answer this even though the spirit of your post was not looking for an answer

No these are no the citi sponsored rent a bikes. They are (seemingly) tourist focused rentals, with a large street presence and in one case I tracked down renting or owning large retail units one street down from central park (hence my "cannot work oit the economics" \- I mean renting a retail space a stones throw from Central Park as a bike storage place, seems a stretch for any profit)

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Same question here but food delivery services. Too many!

<comment><USER7> am doing quite a bit of consulting with numerous food delivery startups in last 6 months. all modes and manners too</comment></comment>