Tell HN: Hello - <AUTHOR> Hello All,
My name is Mohamed, and I am a jail guard!
After a year or so reading HN, I finally made an account! This place is overwhelmingly full of smart people, and I sometimes feel out of place! I have learned a great deal from all of you. With this said, I am embarking on a two year journey to apply to YC in FALL of 2017. I have given myself this arbitrary timeline to motivate myself.
You see, I am a total noob. I'm about to enroll in an online coding bootcamp. This is to grasp enough CS/coding experience so I can graduate from the proverbial 'I'm looking for a technical co-founder' dilemma, and to build the MVP on my own. What I become, for better or worse, is how I will attract the right people to tell my story and grow a company together. In the meantime, I am working on myself first and learning each day from all of you. I am excited to begin this marathon I call starting a startup. <comment><USER2> Mohamed let me tell you about my little sister. She was the opposite of me in that she hated school. Truly hated it. She said she'd never set foot in school again after graduating high school.

But, she wanted to be a police officer, and that required college. So she put herself through school by being a prison guard. My little 5'3" sister running around bossing grown men like it was nothing.

She made it through school and got hired as a police officer. She spent the next five years as a dispatcher. Nobody wanted to put her on the streets. But she persevered and eventually she won the day and became a patrol officer. I dare say except for getting married it was the happiest day of her life.

Don't let anything stop you, man. Smart isn't everything: perseverance counts for a great deal.

<comment><USER3> Great story expect the last part. Where you're sort of implying that all smart people are coders and others that do other types of jobs aren't.

I met _a lot_ of people that were _a lot_ smarter than most "startup developers" and it didn't require them to sit in front of a computer most of the day.

<comment><USER4> I read it as, one can be smart, but the drive and perseverance to pursue your dreams and desires are really a major key to achieving one's goals.

<comment><USER5> _The_ major key. Hard work and perseverance can make up for just about any deficit in natural ability, but it doesn't work the other way around.

<comment><USER6> Eh, this'll end up being a metaphysical debate, but I think that's much too strong.

If someone is of average or higher natural ability, yes, hard work and perseverance will be the biggest determinant of outcome. But someone who's genuinely pretty dumb, wholly socially incompetent, or exceptionally disabled or ill will have massive difficulties being successful regardless of their perseverance.

Which isn't to say that hard work is useless to the people on the lower end of the spectrum: far from it, a stupid hard-worker not only can find themselves with a decent enough job but will usually be able to keep it. It's just they lack the ability to set themselves up for good opportunities like that and to limit downside risk from one-off events. Luck of the draw will end up dominating outcomes.

(Obviously, most people who comment on internet forums, particularly a specialized forum like HN, are not only likely to be average or above but also to have extremely limited contact with people significantly below the mean, so if you're reading this, your life outcomes probably are determined by your own work ethic. On that note, cheers to a productive Sunday!)

</comment></comment></comment></comment></comment><comment><USER7> _" My name is Mohamed, and I am a jail guard!"_

G'day, Mohamed don't make the mistake of defining yourself by your job. You are much, much more than that. You work (and survive) in a Jail? That now makes you 10x better than most nerds on HN in understanding and handling people. Scan HN and the general press and you can see how badly Startups and their users are hurt by this and you'll realise this is a desirable skill. Start from there.

<comment><USER8> ~"Don't make the mistake of defining yourself by your job, just know that your job makes you better than these other people with a different job"

<comment><USER9> > ~"Don't make the mistake of defining yourself by your job, just know that > your job makes you better

>> in understanding and handling people

> than these other people with a different job"

you can't ignore the middle, as that is the defining part of his sentence. every sentence is hypocrisy if you remove important parts

<comment><USER10> > ~"You can't ignore the middle, every sentence is hypocrisy."

</comment></comment></comment></comment><comment><USER11> Welcome, Mohamed..

A little word of advice that I hope will save you a lot of time and frustration:

\- Don't wait to complete your training to _start_ your project. Start with the knowledge you have and tweak it over time. If you have no knowledge right now, start by sketching in English. It seems stupid but just the fact of abstracting human needs that seem obvious to us and formalizing them into logical steps will help you tremendously.

\- Write code about random stuff you think about. It will be ugly and you'll laugh at it, but you will be lightyears ahead than if you wait when you _finish_ your training to _start_ writing code. It doesn't need to be great, awesomely useful or something.

\- Compare yourself with yourself. "..wrote 3,000 lines of Python in a day to build a Segway" made me hate myself. Fight that urge. I know I still am. Reading biographies of great people, seeing what people are actually doing and building makes me feel miserable, incompetent and good at nothing.

\- Understand that the points above are for you just in part, they are mainly for myself :)

Here's something to make you feel less inadequate:

[http://carlcheo.com/fascinating-posts-from-tech-founders- who...](http://carlcheo.com/fascinating-posts-from-tech-founders-who-changed- the-world)

Work to get better. When the itch presents itself, you'll have the skills to scratch it.

Good luck.

<comment><USER12> > Reading biographies of great people, seeing what people are actually doing > and building makes me feel miserable, incompetent and good at nothing.

Wow, that's something I totally have as well. At the same time, I _want_ to be (and am, many times) inspired by other people who are already more successful than me. After all, they did struggle, maybe with other things, but their success proves that it is possible to reach it / to achieve something awesome.

The struggle with a feeling of worthlessness is such a mystery. Why do I have it? Why so many people in general? What is the cause, what can be done? I try many things, fall flat on my nose, and then try to get up again. Sometimes, it's a hellish nightmare.

</comment></comment><comment><USER13> Before you do this, consider the following question: would you rather spend your time learning to build the Uber app, or learning the skills to build _Uber_ (the company)? Those are two truly different skill sets, and the latter is far more rare and valuable. The ability to raise money, build teams for a variety of functions, budget, and execute on an audacious vision is far outside the realm of most software engineers.

Unless coding is truly your passion, hire someone or find a technical co- founder. Spend your time learning how to plan and build stable, scalable businesses and teams. Your goal should be to build an organization that can employ all of the software engineers necessary to carry out the vision for your business - not to be able to write all of the code yourself.

<comment><USER14> In my opinion, learning the skills to build "Uber the company" will get you nowhere without a compelling product first, whereas if you have a compelling product you can be a complete idiot when it comes to business and still have a chance to learn and make something out of it.

By all means don't focus solely on development if your goal is to build a startup, and in particular be aware you need to attract users once you launch; but don't focus on learning the intricacies of raising money or leading a team without a product either.

<comment><USER13> If you have business skills, you can always find/team up with people that have a compelling product, or team up with others others to bring _your_ compelling product to life through code while you build the business. In this case, it appears that OP has an idea and wants to build the product himself, starting from scratch with no coding knowledge. I am saying that he should team up with someone to accomplish the actual coding, and he should focus on the business.

BTW, I am saying all of this as a fairly accomplished software engineer that has grown to understand that business skills are far more important than the programming skills I have spent nearly 20 years working on. I find myself agreeing more and more with this statement from Chris Sacca, who is a billionaire that knows a thing or two about successful tech startups [1]:

 _"...most of the value is created by the execution, not the idea itself."_

[1] [http://lowercasecapital.com/prospecting/](http://lowercasecapital.com/prospecting/)

</comment></comment></comment><comment><USER15> That timeline would be doable, but Spring 2019 wouldn't be bad to shoot for either. Here is an alternate 3.5 year plan:

\- Year 1: Learn to code full time. Later in the year, start applying for jobs as a developer.

\- Year 2: Get a job as a full stack dev. Devote nights and weekends to improving your development skills as much as possible.

\- Year 3: Get a cofounder, and work nights and weekends on your project.

\- Year 4: Go full time, and work for 6 months to launch the product and get enough traction to do YC.

The problem is that if you don't spend any time actually working as a developer, you'll be limited to only doing very simple projects. And also, it's much more likely to work if you can find a cofounder and work with them part time for a while before going full time.

As someone else already said, you'll also need the skills required to create a good product and build a good company, both of which are entirely different.

<comment><AUTHOR> Thank you Alex. This is very good. Two years may not be enough as I am starting from scratch, so I may just consider this.

</comment></comment><comment><USER16> All the best. My advice to you would be to try and think how you can provide real value to people (which rules out 90% of "startups" in Silicon Valley) and make a positive change in their lives.

This does not mean you have to solve world hunger, it can be as simple as having identified a loophole which allows for corruption in jails and you use technology to close that loophole.

<comment><USER17> Or fix that exploitative phone call system in jails.

<comment><AUTHOR> Also the canteen they order, way overpriced. There are numerous inefficiencies in the prison system, and Pigeonly seems like they picked one area, phones, to attack first.

<comment><USER18> Maybe there's some area for profit involving all the inmates doing useful desk jobs.

</comment></comment></comment></comment><comment><USER19> I hope your MVP will be catering to prison guard or prison management. You probably got some unique insights there that few developers have.

<comment><USER20> Not to mention the prison industry is overdue for some serious upsets.

</comment></comment><comment><USER21> Hey Mohamed! I'm really glad you're making a startup. When I started my first startup, I had no idea how to make "mywebsite.com" link up to my actual website - the whole process was a mystery to me. It was like wandering around in a dark room and bumping into the furniture and walls.

I got the business started with just a simple Bootstrap template and PHP form, and it worked great! After around 6 months of learning new things every day through the Internet, chat rooms, etc, all in an effort to improve the website, I felt like one of those days I just found the light switch, and the whole room was illuminated.

Nowadays I can work on my own schedule on coding projects that I truly enjoy doing. Two years ago, I didn't even know what I was capable of building. There were certainly those days where it all feels a bit overwhelming, but like another great commenter pointed out here, perseverance is key.

<comment><AUTHOR> Thank you for the encouraging words.

</comment></comment><comment><USER22> Good luck with your endeavors! Regarding learning to code, I'll just reiterate what others have said that Python is an excellent language to learn with (that said, it's not ideal for everything, but it is a great learner's language).

Also, if you haven't already, I'd suggest switching to Linux or OSX and get used to working on the command line. Most developers in the start-up scene will be working on OSX or Linux, and learning how to use the command line will benefit you enormously.

</comment><comment><USER23> Hey Mohamed, My name is Kabir Narain. I started programming in Jan 2014 and recently launched my first app (www.almostfamous.club). Start by making simple websites or apps for the phone that you use. Its daunting at first but in around one year you should be feeling pretty confident of yourself. My email is email@example.com Mail me if you need any assistance. Good luck!

PS- i did not go to college or attend any programming courses so believe me, you CAN do it! (i was training as a sea navigator on board merchant ships before that)

</comment><comment><USER24> Welcome Mohamed.

"This place is overwhelmingly full of smart people, and I sometimes feel out of place!"

Don't feel out of place. You may just be suffering from Dunning-Kruger effect.

[https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect)

The smartest people for me are those who can drop all pretensions and learn as much as they can. You're well on your way.

<comment><USER25> The Dunning-Kruger effect is grossly overestimating one's own skill. I think that's the opposite of what you meant.

<comment><USER26> They probably meant Impostor syndrome[0] instead.

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

<comment><USER27> I have thought about and battled with impostor syndrome a LOT! So much so that I wrote this incredibly long article about it. I hope it's useful.

[http://www.geekmindfitness.com/mindfulness/how- mindfulness-m...](http://www.geekmindfitness.com/mindfulness/how-mindfulness- meditation-stopped-me-feeling-like-a-fake/)

</comment></comment></comment></comment><comment><USER28> > This place is overwhelmingly full of smart people, and I sometimes feel out > of place!

You and I both- I commend you on your humility and look forward to your success.

</comment><comment><USER29> Intelligence doesn't matter as much as you think:

[http://www.paulgraham.com/founders.html](http://www.paulgraham.com/founders.html)

Comparing yourself to others is always a losing game. Compare yourself to where you were when you started this journey, and you'll see that you've come pretty far.

Get ready for the rollercoaster (emotionally) ride, and good luck!

<comment><USER30> Sadly money appears to matter though:

[http://qz.com/455109/entrepreneurs-dont-have-a-special- gene-...](http://qz.com/455109/entrepreneurs-dont-have-a-special-gene-for- risk-they-come-from-families-with-money/)

However, doesn't mean you can't simply ignore that and just go for it.

</comment></comment><comment><USER31> You've given yourself two years -- that's good, realistic. May I ask what level of knowledge skill in what areas you're aiming for by fall of 2017, and how much time you plan to devote per, say week, for the exercise?

Also, good luck. If you need to be pointed in the right direction, I'm sure a lot of people here (including myself) would be happy to do so during this period.

</comment><comment><USER32> I urge you to read this article before you decide to take the entrepreneurial plunge [http://qz.com/455109/entrepreneurs-dont-have-a-special- gene-...](http://qz.com/455109/entrepreneurs-dont-have-a-special-gene-for- risk-they-come-from-families-with-money/?utm_source=parCM)

<comment><AUTHOR> This is very interesting. I don't have the pedigree mentioned in the article that, according to the article, leads one to Startup success. So, should I just give up or keep going?

<comment><USER33> Just read your own quote earlier in this thread:

"By learning to code, my desire is to get to a stage where: a. I can converse with tech people who have been at this their whole live, b. gain the proficiency to build the mvp, c. become a team member with attributable skill set when company is formed, etc. Hiring someone is inevitable down the line, but I need to create the map for him/her to paint first."

Ignore that asinine article. Don't judge your success based on whether you started a startup or not. Base it on what you wrote above: Learning to code, having technical conversations, and being a better person than you ever thought possible.

</comment></comment></comment><comment><USER34> How about working as an employed programmer first - learn from colleagues - and then after three years reconsider founding a company.

I mean sorry, but if you worked so far as a jail guard then you probably don't have enough experience for you ambitious dreams yet.

Honestly though ... this text seems so generical and naive that I have trouble believing its authenticity ...

<comment><USER35> I don't think the experience is necessary. He wants to found a company not be an excellent engineer. That means as long as he can get a prototype out, it doesn't matter if it's all spaghetti code. It's startup code and it will be shitty. He can then hopefully raise money and hire people with at least a few years experience to build things out properly (hopefully).

I've seen successful startups started by people who could barely code or taught themselves to code to build the business just like the OP is describing. Sure, the code is shitty and there's no architecture, but once you're making money, who cares? This explains the shitty code found at most startups, but if it's temporary and a way to get somewhere, I definitely see its benefits. If this was a proper system, meant to live on for years, that's different. Hopefully the OP will have enough wisdom to realize when it's time to switch between the two mindsets. Most startup CEOs don't (even if they started out like the OP because they quickly get disconnected from engineering), and that's the real problem, IMO, but by then you've already started a company and raised money.

<comment><USER34> he worked in a prison you funny person ... what qualifies him to found tech company? right - nothing!

and spaghetti code that turns useful requires even more experience to maintain.

<comment><USER36> > _what qualifies him to found tech company?_

What qualifies a programmer (even a good programmer) to found a tech company? Starting any company requires so many more skills than just programming knowledge, it becomes very unlikely that a random programmer is qualified. In fact, many programmers I know are the _least_ qualified people I can think of to found a company -- they lack the ability or desire to sell an idea, manage a team, or motivate people. If you think "I'm a good programmer, and that makes me qualified to run a company," you'll be disabused you of that notion very quickly. It may turn out that you have the qualifications, but it won't have anything to do with your coding ability.

The truth is, there are _many_ boxes you need to check, and technical knowledge is just one of them. It's very rare that a single individual can check all those boxes. That's why VCs generally prefer companies founded by multiple people with complementary skill sets.

That's also why the OP should seriously consider finding a technical co- founder. He may be qualified to found a tech company (perhaps he can manage people, sell an idea, or use his prior experience to enter an underserved market), but it's unlikely he's qualified to found a tech company _alone_.

</comment></comment></comment></comment><comment><USER37> Hi Mohamed , all of the people here given you great advice on the language to learn and tools to use. I think this will be helpful for you [https://github.com/ripienaar/free-for-dev](https://github.com/ripienaar/free- for-dev)

<comment><AUTHOR> Amazing. I've added this to my collection of web dev favourites. Thank you.

</comment></comment><comment><USER38> Hey Mohamed.

I am interested in how someone who is not an engineer/investor/etc even came to hear about Hacker News?

<comment><AUTHOR> This is not in any way meant to sound snarky, but I don't live under a rock. Hacker News will come to you or you will go to it when you question the trajectory of your life.

<comment><USER39> Your reply reminded me of the Mohammed/Mountain quote[1] :-)

All the best to you.

[1] "If Mohammed will not go to the mountain, the mountain must come to..."

<comment><AUTHOR> Nice. I didn't know about this quote.

</comment></comment></comment></comment><comment><USER40> Dear Mohamed,

do you think you'll be able to use your specific insight into the prison system as a basis for your idea? I bet there are many problems waiting to be solved.

Prisons are big money, especially in the US.

Greetings and all the best for your journey to YC

<comment><USER41> He is already profiting from the US prison system. Also I would not recommend tangling with prison guard unions for his first project, tackle something unrelated and revisit it when more experienced.

<comment><USER40> Profiting from the system by being employed there? That's not what I had in mind.

There are many opportunities outside of prison guard unions for innovation regarding the overall institution/process of incarceration in America.

Domain expertise will only be built by tackling a problem in that domain. How could one possibly decide against pursuing a topic without trying it at all?

Tough, seemingly entrenched markets often prove to be the most interesting: SpaceX, Uber etc

</comment></comment></comment><comment><USER42> Hi Mohamed

Your goals are admirable, and I think you're on the right path. Do you have some product or company idea in mind already?

The one piece of advice I'd like to give you is, there's no need to rush. There will be plenty more YC intakes, and you'll have tons of good ideas - learning to execute on them by trying a bunch of different stuff is the best way to get there, and to do that you need to give yourself time to learn.

<comment><AUTHOR> Hi atroyn,

Thank for your feedback. I have two ideas in mind. One is about a process I would like to streamline using technology at my current job, and the other one deals with ESL and learning a new language. Many of the ESL or learn a language methods out there are so boring, and I think I have a way to make it less boring and actually learn something. I had this problem when I wanted to learn French. You can sit there and repeat all the French words until the cows come home, but it will be no use to you when you want to converse in real life situations. The idea is about learning a new language in a way that is engaging, not learning from a CD and tucked away in your bedroom.

</comment></comment><comment><USER43> > This place is overwhelmingly full of smart people, and I sometimes feel out > of place!

Rule 1: Don't confuse intelligence with experience.

Technological and critical thinking skills can be learned by everyone given enough time and effort. A lot of people dismiss any possibility of becoming technically minded by saying "only smart people can do that", even though they have the potential to gain the same skills.

</comment><comment><AUTHOR> Mohamed here....

Wow. Seriously? I wrote this after coming back from work, and went off to sleep (it was around 2AM). I don't know what to say, but thank you to all for taking the time to respond and upvoting this thread. I have never expected this to happen. I will respond to each commentor who specifically asked a direct question as time allows, but for now, I will jot down more about me and why I have the career that I have.

To start, I earned my BSc in Public Health and Safety. After few years in the field, I became disgruntled with my career choice and felt miserable going to work each day. I felt trapped in a rat race full of fake smiles. I had to decide that I will either do this for 30 or so years and retire, or just leave. Well, the decision was made for me and I was fired...ahahah. I wish they could also fire my student debt. The annoyance I felt working in such environment where I was not being challenged enough and not learning much was oozing from every pore on my body, and managers could smell it.

Fast forward, I went off to Africa for vacation and the basic life necessities we enjoy every day such as clean water, electricity and food safety were non- existent. Everything in many parts of Africa are run by NGO's. There were rules that prohibit people from planting their own food! The NGO's want to supply you the food from their end. Being self sufficient is not part of the game for these NGO's. Anyways, I could go on forever about the dire situations in Africa and the corruption from within the nation and from outside agencies, but it will be too long for one post.

Fast forward some more, and I came back home. No job. No savings. My cousin told me to apply for a corrections job. I got it. And guess what? I love it. I use my natural verbal judo skills and empathy to get the job done. It is scary, but ultimately, you either get yourself in hot water or stay out of the hot water as a jail guard. I chose the latter. Long story short, I really enjoy my job and there are multiple ideas and what if's I come up with when I am there. I was always around entrepreneurs. The best entrepreneur I know of personally is my mother. I learned from her the idea that create something people want. In her case, it was order what people want. I always wondered why my mother would order only ladies clothing and jewelry and perfume for women only. Why not men? Because my mother understood these women and their inherent need to change clothes all the time, and she satisfied this by purchasing everything they needed as a wholesale from Middle East. She never bought even once what men want. She stuck to her believe and made a lot of money doing it by satisfying her core customers: housewives. I think we can all learn from people in our lives that made a silent contribution to push you to entrepreneurship, and for me, it was my mother.

I have declared this little blurb last night because I can't stand being the idea guy anymore. I have countless ideas, but I understand the need to learn and become a sufficient partner when I do find a co-founder. The idea I will work on with the online coding bootcamp is from my workplace. I would like to streamline something so redundant that I do every day using technology. There are multiple things I could work on, but I have to start from somewhere first. Off to work for now, again, I will respond to direct questions from certain commentors. Again, thank you.

</comment><comment><USER44> Awesome Mohamed! Start small, and use the free resources - try the Learn the Hard Way series. Python is a great language to start with, JavaScript is a little more difficult but you can do more things. Attend meetups too, they'll inspire you and it's nice to be able to speak to people in real life about this stuff.

<comment><AUTHOR> Thank you sir. I have recently downloaded the online version of Zed Shaw's Learn Python the Hard Way ebook with accompanying lessons. Taking this along with Udacity's Intro to Comp Science course which uses Python. Basic JS under my belt from team treehouse and udemy course.

</comment></comment><comment><USER45> _I 'd like to say_ that everything about coding is not startup. There is a life for code outside startups.

</comment><comment><USER46> This is an awesome post & I'm excited to see the support from HN.

I like how you're giving yourself a solid goal and plenty of time to achieve it.

Quick question - you mention that you'd like to build an MVP yourself, do you know what product you'd like to build or what market you're interested in serving?

<comment><AUTHOR> Hi ramykhuffash,

I've just started learning the core web dev fundamentals - HTML, CSS, JAVASCRIPT. I am also taking a Ruby course on Udemy, and as mentioned, starting The Firehose Project in September. Two ideas so far: a. idea from my job (jail) b. ESL idea I always had even before starting the career as a jail guard.

Things change so fast, so I will see what happens when one of these ideas makes contact with customers.

</comment></comment><comment><USER47> Congratulations! The journey is long and challenging but totally worth it. Approach the startup world with the intellectual curiosity of a visitor in a foreign country. There are some great ways to learn how to code. Instead, I've found it beneficial to Learn How to Do X to Accomplish Y. There are numerous programming languages, APIs, platforms, devices, technologies, methodologies, etc. Focus on the X that helps you do Y. Udacity, Khan Academy, Coursera, and W3Schools.com offer a great start (some are free) for programming. A good start is learning front end development: HTML, Bootsrap. CSS, Javascript.

Find some like-minded individuals. You can join tech meetups, Google Developer groups, etc. Good luck on your journey my friend! Keep building!

</comment><comment><USER48> MS Access - Learn it first!

Why?

The first few reasons that come to mind:

1) To quote a friend of mine, "If a 50 year old boilermaker can work it out, then anyone can."

2) MS Access will more than likely be installed on your computer at work.

3) Almost all "startup" type programs will need databasing of some sort.

4) It has macros and modules (VBA - Visual Basic for Applications)

5) As you start to learn Visual Basic for Application you can use this to potentially automate things at work as it available across Word and Excel.

Read these to get started:

Database basics [1]

This article provides a brief overview of databases -- what they are, why you might want to use one, and what the different parts of a database do.

Database design basics [2]

A properly designed database provides you with access to up-to-date, accurate information.

Learn the structure of an Access database [3]

Becoming familiar with the tables, forms, queries, and other objects in a database can make it easier to perform a wide variety of tasks, such as entering data into a form, adding or removing tables, finding and replacing data, and running queries.

[1] [https://support.office.com/en-us/article/Database- basics-2C5...](https://support.office.com/en-us/article/Database- basics-2C57449A-4232-44BD-B090-EF01058ED1F1)

[2] [https://support.office.com/en-gb/article/Database-design- bas...](https://support.office.com/en-gb/article/Database-design-basics- eb2159cf-1e30-401a-8084-bd4f9c9ca1f5)

[3] [https://support.office.com/en-us/article/Learn-the- structure...](https://support.office.com/en-us/article/Learn-the-structure-of- an-Access-database-6A95097A-F95C-45BF-BE9B-A3F8D7D61C1D)

<comment><USER49> This is... some pretty weird advice. Learn MS Access first? Really?

First, it's just a database system coupled with macros. That's not the most important thing you'll want to learn if you want to build a startup. The frontend and/or backend logic are the most interesting, not "macros" to run on your database.

Then, VBA is pretty horrible for a beginner and he's probably going to want to deploy his service at some point (and MS solutions are not exactly the easiest to deploy for a beginner)

<comment><USER48> > This is... some pretty weird advice. Learn MS Access first? Really?

Yes, really.

He needs to learn the fundamentals. Read my post again and see the points I made.

> Then, VBA is pretty horrible for a beginner and he's probably going to want > to deploy his service at some point (and MS solutions are not exactly the > easiest to deploy for a beginner)

I've was able to deploy an MS Access database on Sharepoint in about 5 minutes.

</comment></comment></comment><comment><USER50> Mohamed - I would recommend learning about basic software engineering practices but NOT building your own app. It takes years to become good enough to do that successfully. Instead, learn how to hire and manage developers, especially overseas developers on upwork.com (formerly odesk), how to share equity (read Slicing Pie book) and most of all how to design the user experience, and market yourself to investors (create an online portal for investors that works on mobile and desktop browsers.) Use invisionapp or something similar to show your app to others, and iterate THAT. Your first customers are actually investors and developers!

<comment><AUTHOR> Thank you. This is good. I will definitely take this into consideration.

</comment></comment><comment><USER51> Hi Mohamed, Good luck for your journey. It would be really exciting to know more about your journey, I hope you will have time to maintain blog or post more here :)

Again, if you need any tech help, feel free to ping me at @naveensky (twitter) or email in my profile :)

ATB

<comment><AUTHOR> Thank you. I will tackle setting up a blog and writing my first blog post sometime this week. Thank you for the offer. I will be in touch.

</comment></comment><comment><USER52> From Mohamed to Mohamed, i own my iOS app and i can help you with anything iOS. i teach iOS and Swift to non-programmers and CS graduates. I'm not in the U.S. but if you ever need anything hit me up on Twitter @moubarak

</comment><comment><USER53> Wow, Mohamed, this is great. I'm glad I stayed up late enough tonight to see your post. Please feel free to give me a shout via the email address in my profile - I'd be more than happy to kick around any ideas to help you get started.

What kind of computer do you use - Windows, Mac, Linux? I'd like to give you some suggestions for programming tools (mostly free, some you might pay for), but of course the details will depend on which OS you're using.

I second nailer's suggestion that you may want to start with Python for some of your initial learning. It's an easy language to get started with, but also very powerful. Even if you end up using another language later on, your Python skills will remain valuable - it's great for writing anything from little scripts up to large apps.

Ruby is also really nice, you wouldn't go wrong with that either. And of course you'll want to learn JavaScript eventually too, regardless of what else you do. You could start with any of these really, but Python is probably the easiest to begin with. What you really want to start out doing is to get the basic _concepts_ of programming down - and these carry over from language to language.

One suggestion I'll make right away: in every language you work with, find and learn how to use a good debugger. For JavaScript, every browser has a nice built-in debugger. (I like the one in Chrome, but they are all pretty good.) For Python or Ruby it will depend to some degree on which OS you use.

And a good IDE with built-in syntax checking, autocomplete, and all that is really great to have.

Some people will tell you not to use IDEs and debuggers and things like that, as if it were a sign of weakness to use good tools. Or that if you follow Test Driven Development you should never need to use a debugger. Don't listen to them!

I see so many people asking questions on Stack Overflow that they could have answered for themselves in a few minutes if they only knew how to _debug_ their code. Testing is important and you should learn all about it and do it, but debuggers are for more than just fixing bugs. They help you explore and learn how your code works, and what the APIs you're calling really do, in an interactive and visual way.

Here's a Stack Overflow post of mine from a couple of years ago with screenshots of a few Python debuggers:

[http://stackoverflow.com/a/16474706/1202830](http://stackoverflow.com/a/16474706/1202830)

Don't worry if there's a lot of stuff in those screens; it will all make sense as you get into it.

You'll also want to get into version control sooner rather than later. Most people use Git these days, although Mercurial is very good too. I recommend avoiding the Git command line though, at least at first. You have enough to learn as it is without having to deal with that arcane system. But there are some nice visual interfaces to Git. I like SmartGit a lot and recommend it. It's free for noncommercial use. Or you may want to start with something even simpler like one of the free clients from GitHub.

Again, let me know what OS you're on and I'll make some specific suggestions for various kinds of tools.

p.s. Top of Hacker News on your first post! Not too shabby...

<comment><AUTHOR> I am glad to have witnessed someone like you who's so generous of their time, and knowledge. Sir, thank you.

OS - Windows. Saving for a Macbook (too expensive). I am already on Udacity's Intro to Computer Science and Python is used to teach this course. Plus going through Learn Python the Hardway by Zed Shaw. Taking a Ruby course on Udemy.

IDE - I use Sublime Text for front-end development lessons (team treehouse, udemy), and Cloud9 for the Ruby course I am taking through Udemy.

So much to learn! What is your email?

</comment></comment><comment><USER54> You have experience with Jails and guarding things? I would ask you to figure out some type of problem that requires the protection of some type of asset.

</comment><comment><USER55> Welcome! With your background you might be interested in the YC startup Pigeon.ly. Maybe you could apply to work/intern for them to gain experience. [http://blog.ycombinator.com/pigeon-dot-ly- yc-w15-a-startup-f...](http://blog.ycombinator.com/pigeon-dot-ly- yc-w15-a-startup-focused-on-serving-the-us-prison-population-joins-y- combinator)

</comment><comment><AUTHOR> EDIT......

As suggested, here it is....

Blog at FAVORTEXT.com. I've used Wordpress to generate this blog. It looks weird and things are out of place, but I will tackle this bit by bit as time goes on. This is where I will jot down my journey on learning coding, business development and going from an idea to an MVP prototype.

I wish everyone here who took the time to respond a glorious and wonderful life.

</comment><comment><USER56> I would take these two free classes: 1.) [http://startupclass.samaltman.com/](http://startupclass.samaltman.com/) 2.) [https://www.coursera.org/course/startup](https://www.coursera.org/course/startup)

<comment><AUTHOR> Hi trg2,

I am already taking No. 1, and will now add No. 2 to my favorites. Thank you.

</comment></comment><comment><USER57> Hey Mohamed!

I doing a coding challenge where I'm building 6 apps in 60 days. Take it one day at a time. The smartest person in the a game isn't always the person who ends up winning. The person who doesn't give up usually wins. You should check out codeschool.com. They have great courses.

<comment><AUTHOR> Thank you. I'm on Team Treehouse at the moment for Web Dev track. I will check out codeschool too.

</comment></comment><comment><USER12> Hello Mohamed. I'd be very interested to hear about your journey starting today, whatever you end up doing, whether you persevere (what I hope) or not, no matter.

Would you start a blog someplace and post a link here so we can be part of your adventure?

</comment><comment><USER58> Do you already have a business idea or two floating around in your head? Just curious.

</comment><comment><USER59> I agree. HN is really unique in the web landscape. A lot of smart and nice people here. It's a great community that inspired you to take that challenge and that's amazing. Good luck.

</comment><comment><USER60> Awesome man!! Your humility just inspires me. Ping me (@vjdhama) if you need any kind of help with coding or any aspect of learning for that matter.

I'd be more than happy to lend out a hand.

<comment><USER61> I might have to take you up on that offer myself. ;-)

</comment></comment><comment><USER62> maybe your MVP will actually matter to lots of people and become useful for humanity since you are working for this specific sector that innovation is rare.

</comment><comment><USER63> Awesome. If you ever wanna chat about coding or so. discuss geeky stuff. I'm always idling on IRC (freenode) on the nickname `arianvp`.

<comment><USER64> Always extending a helping hand :) Muhammed: arianvp serious chief geek, and a very helpful/resourceful one!

</comment></comment><comment><USER65> Good luck dude. I am sure you will rock. Independent of the outcome, your journey is going to be glorious!!

<comment><AUTHOR> Dude!! You are an awesome human being!

<comment><USER65> :)

</comment></comment></comment><comment><USER66> Eid Mubarek Mohamed. Reach out if I can help with anything product/tech related :)

<comment><AUTHOR> Eid Mubarek to you too. I am grateful for the offer and will reach out to you when I get my thoughts together!

</comment></comment><comment><USER67> Please create a blog and share your progress with outer world. It can help you alot!

</comment><comment><USER68> Join Github.com, show up, create something, dont tell; show.

</comment><comment><USER69> Good luck Mohamed! There's nothing stopping you :)

<comment><AUTHOR> This is medicine. Right here. When a total stranger believes in your dreams!

</comment></comment><comment><USER70> Hi Mohamed – what bootcamp are you joining?

<comment><AUTHOR> Hi Darrell,

I am joining The Firehose Project on Sept. 21st, 2015.

</comment></comment><comment><USER71> Become an entrepreneur instead. You work in a jail, possibilities for content creation in such environments are endless.

</comment><comment><USER72> My daughter and I were in the same position around 18 months ago. Neither of us knew any coding, but we wanted to do a startup. I have an mba and another professional degree and wanted to do a startup, so in theory, I could have tried to find a tech cofounder, but in the end, felt I would be in a better position if I learnt to code. As usual, paul graham says it better than I can, "anyone reasonably smart can probably get to an edge of programming (e.g. building mobile apps) in a year. Since a successful startup will consume at least 3-5 years of your life, a year's preparation would be a reasonable investment. Especially if you're also looking for a cofounder."

I would advise against the bootcamp (unless it's free?), you don't need one as long as you have one or two buddies who code, who can advise you on what to learn and help you when you get stuck, the response to your post suggests that you will have a lot of people who would be willing to help! It might be a good idea to put an email in your HN profile, make it easier for folks to get in touch.

We started with python (udacity cs101), lisp/scheme using the free 'simply scheme' book ( [https://www.cs.berkeley.edu/~bh/ss- toc2.html](https://www.cs.berkeley.edu/~bh/ss-toc2.html) ) together with learning some of the tools like unix command-line/vim/git, then a course on web programming (udacity cs253), while she was doing college full-time, and I was working full-time.

We then started learning rails and working almost full-time on the startup around Oct 2014, and launched v1 of our web app in March 2015. Still working on getting more customers :). Don't be in too much of a rush to leave what you do now: I think it's definitely a good idea to have a 'day job' that pays the bills, while you work on little projects that are interesting to you and help you learn the various technologies, you may well find one of them turns into something a lot bigger.

We also applied to yc (unsuccessfully), which may have been good for us: I think the value of the advice they can give is high, but I now think it's kind of a waste of the opportunity if you're not raising money at the end. We are still figuring out 'what users want', and in hindsight, raising money would have been both difficult to resist, and a terrible idea for us at that time.

Most of the advice yc gives is 'open source', for example, paul graham's essays and books, jessica livingston's book, the yc startup school etc, so you don't need to get into yc to learn what they have to say.

I now think that the best time to go through yc would be after you've internalized what they teach, have made something users want, are growing, and now need funding so you can grow even faster. I think YC fulfilled a different role in the early days when it was so small, but is now so competitive, it's best to think of it a bit like hiring an investment bank when looking to IPO. In theory, they take a chunk of equity in exchange for good capital markets advice that will get you a much better valuation: as far as investment banks go, this is usually self-interested bullshit, but I think would be an accurate description of the value of yc.

Best of luck, and get in touch by email, it would be good to chat!

<comment><USER72> And by a weird coincidence, this is announced the following day: [http://blog.ycombinator.com/yc-fellowship](http://blog.ycombinator.com/yc- fellowship)

<comment><AUTHOR> This is great. Doing YC remotely sounds like a good plan for founders with children and a job that won't allow them to take time off.

</comment></comment></comment><comment><USER73> Good luck Mohamed. With your perseverance I'm _absolutely_ certain you'll make it!

</comment><comment><USER74> Fingers crossed for you man, have a fun learning this is nice motivation.

</comment><comment><USER75> All i can say is "Best of Luck"

</comment><comment><USER76> Good luck man you can do it!

</comment><comment><USER77> Good for you! Best of luck.

</comment><comment><USER78> Good luck Mohamed.

</comment><comment><USER79> Good luck!

</comment><comment><USER80> Hellllloooo

</comment><comment><USER81> Jail guard that must be interesting

</comment><comment><USER82> Good luck my friend!

</comment><comment><USER83> Hello. good luck. i will be watching you. haha

</comment><comment><USER84> Good luck man, wish you all the best in this journey.</comment>


A proof of concept MongoDB clone built on Postgres - <AUTHOR> https://github.com/JerrySievert/mongolike

<comment><USER2> You can turn a Postgres db into an API with PostgREST, and it supports jsonb to retrieve json properties.

[https://github.com/begriffs/postgrest](https://github.com/begriffs/postgrest)

<comment><USER3> This is a really cool project. Thanks for pointing it out.

</comment></comment><comment><USER4> How are JSON updates handled?

For those who aren't aware, Postgres currently lacks support for doing updates to JSON fields via SQL[1]. For many this isn't a problem, but I'd imagine that people expecting a MongoDB clone would need it.

[1] _But even though you can individually address the various fields within the JSON document, you can't update a single field. Well, actually you can, but by extracting the entire JSON document out, appending the new values and writing it back, letting the JSON parser sort out the duplicates._ [https://blog.compose.io/is-postgresql-your-next-json- databas...](https://blog.compose.io/is-postgresql-your-next-json-database/)

<comment><USER5> Write a function in PLV8?

<comment><USER6> Or Python, or any language that has a PL in PostgreSQL. Unfortunately a lot of people consider that a hack, and they're not wrong.

If we can address fields with operators (->, ->>, etc.) then why can't those operators modify, too? It works for everything else, after all. It's fairly counter-intuitive from a dev perspective.

That, and PLV8 still doesn't support JSONB. With JSONB being so much more efficient, faster, and so on, not being able to interact with it using the most logical procedural language is an EPIC oversight.

<comment><USER7> > If we can address fields with operators (->, ->>, etc.) then why can't those > operators modify, too? It works for everything else, after all. It's fairly > counter-intuitive from a dev perspective.

It certainly doesn't work for "everything else". You can update individual "parts" of arrays and record types, that's it. And those exception are hard- coded, so someone would either have to hard-code similar exceptions for JSON values (ugly, inflexible, generally a bad idea) or generalize support for custom operators on the left-hand side of assignments in UPDATE. All this while trying to push out a release which was already late by _months_.

You can call everything an oversight, but with very limited resources available and the need to cut a release at some point, this is far from the truth in this case.

<comment><USER8> Why is special-casting json or jsonb worse than special-casing arrays?

</comment></comment></comment></comment></comment><comment><USER9> DB2 also implements the MongoDB query language: [http://www.ibm.com/developerworks/data/library/techarticle/d...](http://www.ibm.com/developerworks/data/library/techarticle/dm-1306nosqlforjson4/)

So does CouchDB: [https://cloudant.com/blog/couchdb-and-mongodb-let-our- query-...](https://cloudant.com/blog/couchdb-and-mongodb-let-our-query-apis- combine/#.VTT4YpTF-0o)

<comment><USER10> FWIW, I've recently been implementing the MongoDB query language as well:

[https://github.com/zumero/Elmo](https://github.com/zumero/Elmo)

In F#. Not even remotely close to usable or production-ready.

The approach here is somewhat different, as this implementation is built on SQLite, which it treats as a simple key-value storage layer.

<comment><USER11> Thanks for posting that, it's interesting and instructive to see examples of f# code 'out in the wild'. Much appreciated!

</comment></comment></comment><comment><USER12> Álvaro here from ToroDB.

Check out ToroDB (github.com/torodb/torodb). It is a Mongo implementation based on PostgreSQL that transforms JSON documents into relational tables. This has many advantages like significant storage reduction, less I/O required and it allows for updates (a concern raised on some comments below). Please check it out! :)

</comment><comment><USER13> I was going to post that this would have been cool a year ago, but now that MongoDB has interchangeable backends there's not much to gain from a high level project like this.

But then I saw that this project started two years ago, and the last commit was a year ago.

<comment><USER14> | MongoDB has interchangeable backends

Do you have a source on this? I can't find anything at the moment but it sounds familiar.

<comment><USER15> The feature is called "pluggable storage engine", if you want something to Google.

<comment><USER14> Yup, found it: [http://docs.mongodb.org/manual/release- notes/3.0/#pluggable-...](http://docs.mongodb.org/manual/release- notes/3.0/#pluggable-storage-engine-api)

</comment></comment></comment></comment><comment><USER16> I've been working on something similar for the last while, but using jsonb and plpgsql instead of plv8.

So far, the basic crud stuff works and there's a python driver with decent test coverage. Progress is slow, but it's fun!

[http://bedquiltdb.github.io](http://bedquiltdb.github.io)

</comment><comment><USER5> Something else that provides a simple API for working with JSON in Postgres: [https://github.com/robconery/massive- js](https://github.com/robconery/massive-js) (node.js)

<comment><USER15> That looks pretty awesome, although fairly orthogonal to this discussion. I submitted it as a story on its own. [https://news.ycombinator.com/item?id=9407782](https://news.ycombinator.com/item?id=9407782)

</comment></comment><comment><USER15> At the bottom of the README it says "Follow along at [http://legitimatesounding.com/blog/"](http://legitimatesounding.com/blog/"), which 404's. I want to follow along! Please fix. Thanks.

<comment><USER17> Fixed.

</comment></comment><comment><USER18> Interesting experiment! How does it compare in performance, cpu and memory footprint?

</comment><comment><USER19> There's also Mongres which was inspired by this project.

[https://github.com/umitanuki/mongres](https://github.com/umitanuki/mongres)

</comment><comment><USER20> I thought MongoDb:s main selling point was the simple scale-out model? At least that's what stuck with me. I'm well aware about the non-robustness properties of Mongo, but to me it seems like calling this a clone without the scale-out capabilities would be missing the point.

<comment><USER21> It's a proof of concept. The author's essentially saying, "here, it can be done, this is one way of doing it." It would need more bits and pieces and more tuning to be useful in a production case, but this shows that it at least can work.

<comment><USER20> I think you missed my point. The USP of MongoDb in my view is the simplicity and its scalability model. At least these are the things which are interesting to me and what is hard to implement. They have cloned a subset of the functionality - the subset which is easy - and left the hard parts. I don't agree that this proves anything.

</comment></comment></comment><comment> luke-stanley Python has a nice non-SQL style interface to SQL engines too, called Dataset: [http://dataset.readthedocs.org/en/latest/](http://dataset.readthedocs.org/en/latest/)

</comment><comment><USER22> Benchmarks please! Response times, mem usage, disk usage.

Does it use HSTORE?

Nice project!

</comment><comment><USER23> Makes sense they're porting MongoDB to Postgres, given that:

"As of version 9.4, PostgreSQL benchmarks faster than MongoDB for both inserting and querying JSON data." :P

</comment><comment><USER24> ELI5 does this essentially mean I can use the Mongo API to work with Postgres?

</comment><comment><USER25> Why?

<comment><USER15> I suspect there are lots of people who built applications on top of MongoDB who would like to transition away from Mongo onto a different database, or would at least like the option to be able to to. This may provide a good mechanism for a transition.

Which leads to a question for the OP: does this work with mongoose.js?

<comment><USER26> Could be interessting for meteor.com, the mongodb only usage prevent me to use it.

<comment><USER27> problem : meteor relies on a specific mongodb feature,ie polling the db for any change. I heard there is experimental support for PG but it seems to rely on a complex hack using triggers ... So the issue isn't really about mongo queries, but whether it is possible to track db edits from third parties or not.

<comment><USER28> There's infrastructure for that in postgres, since 9.4. See

[http://www.postgresql.org/docs/devel/static/logicaldecoding....](http://www.postgresql.org/docs/devel/static/logicaldecoding.html) for the (somewhat low level) description of the feature. You'd have to write an output plugin that formats the output as json, but that should be pretty easy.

Disclaimer: I'm the author of the feature ;)

<comment><USER12> That specific MongoDB feature is "tailing the oplog", where the oplog is the capped collection with the idempotent commands that represent the changes in the database. This is what Meteor uses to receive (be pushed) changes (not polling).

Certainly, logical decoding provides the necessary infrastructure to implement it (and also normal tailable cursors): thank you Andres, really nice work! :) But some work is also needed to transform the representation you are using in PostgreSQL into MongoDB's oplog entries.

This is definitely what we are using in ToroDB to emulate it (currently, under development).</comment></comment></comment></comment></comment></comment>


Python on Ice - <AUTHOR> http://wordaligned.org/articles/antipep

<comment><USER2> I've used Python 3.1 since it was released. I think most of the changes made in Py3k were good ones, so it seemed like the right thing to do. Now though, I'm sad to say I'm likely going to switch to Python 2.7. Ugh. Think of the version control diffs :(

Every single library I've gone out to use wasn't compatible, and likely won't be this year. I've ported a couple, which wasn't hard, but silly that I had to do it. I've worked around the needs for others, but it's just not a reasonable way to work. Plus, when I've sought help, everyone balked at me using 3.

SciPy (NumPy) was the straw that broke my back. They've just recently started looking at the upgrade. I can't even go through RPy to do calculations in R instead... because it's not available for 3.x yet either.

I really hope Python doesn't get hamstrung like Perl did. I switched to Python on purpose. Ruby, Scala, Haskell, Clojure, etc all have their pluses, but overall they'd be a step back for my work.

</comment><comment><USER3> When I first heard about UnladenSwallow I cheered. Then read that it was not targeting Python 3, and realized that this is really throwing a wrench into the works for Python 3.

I mean, switching to Py3k for the clean-ups and features is nice, but it's going to be hard for many to migrate if they've got to leave a 5x improvement in speed behind.

The people behind UnladenSwallow certainly must realize the repercussions for Python 3, no?

<comment><USER4> Yes, the Unladen Swallow people know that Py3k is the future. They also know that Google has a shit ton of Py2.X code that it's their job to make fast. That's why they're developing against Python2.X and then when it's time to merge back into CPython it will be merged in trunk (2.X) and then forward ported into Py3k.

</comment></comment><comment><USER5> Let's think of Python 3 as Perl 6 that got done on schedule. There may be many good reasons to use Python 3 today, but it is not like Python 2.x is not good enough as-is or it is standing still.

With Guido's recent focus on not adding new semantics to the language, it's clear that he wants people to focus on getting stuff working on 3.x without changing more stuff in the core.

Optimizations to the language via unladden swallow, rewriting standard libararies etc., are a right step in that direction.

<comment><USER6> > Let's think of Python 3 as Perl 6 that got done on schedule.

That seems silly to me. Guido announced that he'd start working on Python 3000 part time in early spring 2000; that's eight and a half years.

Now compare the goals of Python 3 to the goals of Perl 6. Python 3 didn't really change much over Python 2, in comparison. Sure, Python 3 came out a little bit sooner than Perl 6, but it was also a lot less work to produce.</comment></comment>


SIMD for C++ Developers [pdf] - Const-me http://const.me/articles/simd/simd.pdf <comment> Const-me Wrote a programmer's guide about x86 SIMD intrinsics. The documentation available on the internets only has reference of individual instructions. There're no high-level articles telling why and how to use them.</comment>


You Don't Hate Monopoly, You Just Suck at It - <AUTHOR> http://nymag.com/daily/intelligencer/2014/05/you-dont-hate-monopoly-you-just-suck-at-it.html

<comment><USER2> Is trading allowed in the rules though?

<comment><USER3> Yes, see page 7 of [http://www.hasbro.com/common/instruct/00009.pdf](http://www.hasbro.com/common/instruct/00009.pdf)</comment></comment>


Large doses of aluminum found in autistic brains - <AUTHOR> https://www.youtube.com/watch?v=SmkVv8pcVhc <comment><USER2> This is great to know if the study is scientifically accurate. Hopefully we will start to get some clarity around the causes of autism and the role vaccines have played.</comment>


Edmission – Personalized college admission advice via chat and sms - <AUTHOR> https://www.edmission.us <comment><USER2> Cool stuff to help high school students and parents!</comment>


Supercomputers surprisingly link DNA crosses to cancer - <AUTHOR> http://www.deepstuff.org/supercomputers-surprisingly-link-dna-crosses-to-cancer/

<comment><USER2> I wonder if there are scientists trying to understand why certain genes are correlated with cancer thinking that it has something to do with proteins being made, but in the end it's the result of those genes affecting the physical stability of the DNA strand. Pretty crazy.

<comment><USER3> Certainly there are such scientists. There is a very strong incentive for researchers to be novel and make discoveries "out of the box" \- how much of these discoveries will be published, and will stand the test of time is a very different thing. Almost every single cancer case we see in our clinical sequencing effort has one or more mutations in a limited set of the "usual suspects" <500 protein coding genes. We are at a stage, where it is more difficult to find a new oncogene or tumor suppressor gene than to suggest an "out of the box" mechanism based on pre-clinical data.

<comment><USER4> The pursuit of novelty in research drives me crazy. You don't get published as easily with replications and tiny iterative developments. I wish they'd incentivize those kinds of research...

<comment><USER5> We certainly undervalue replication (or refutation) in the pursuit of novelty.

What is more of a problem is that scientists are being pushed by the system to get their results out as fast as possible so they are not doing the hard work of carefully checking their own work before publication. The incentive is to publish if an experiment works once or twice and hand-wave away the other dozen times it didn't. Combine that with the enormous pressure PostDocs and PhD students are under to generate results it is amazing anything of value comes out of the lab these days.

<comment><USER6> The number of people capable of producing good science, is much less than the number of people in science. The pressures emerge because of it.

<comment><USER5> Even the people capable of producing good science are pushed into bad situations. The basic problem is we have more good scientists than the funding to support them - when the success rate of grants is less than 15% then the pressure gets extreme and also sorts of bad behaviour results.

As a bit of an aside grant reviews were apparently brought in initially to help scientists avoid working on bad areas. The idea was that everyone would get funded who put up a reasonable grant and they just wanted to help screen out the bad ideas so people didn't waste their time.

We have since twisted this into the current system where we try to determine which of the top few percent of grants are the best. Of course the whole ranking process is so noisy that it is little better than chance for anyone in the top 25%.

A much better system would be to rank the grants as worth funding or not and then put all those worth funding into a lottery to choose who gets funded. At least this way even the losers would know they were on the right track and they were just unlucky. It would save an enormous amount of grantmanship and other activities that are the antithesis of everything science should be about.

</comment></comment></comment></comment></comment></comment><comment><USER7> I'd love to work on the computational side of problems like this.

<comment><USER8> Subscribe to the right mailing lists; once in a while there are job postings for things like this.

(e.g. this one: [http://listserv.uni-heidelberg.de/science-jobs- de/sjd-e.html](http://listserv.uni-heidelberg.de/science-jobs-de/sjd-e.html) , and subscribe for IT and biology/medicine - I'm sure there are tons more of these lists out there.)

</comment></comment><comment><USER9> This would really work better implemented in an FPGA. You could construct a circuit that exhaustively searches for all repeats within a maximum distance rather than just checking a relatively small number of random sequences.

</comment><comment><USER10> Hm. Surprise is not really my response, but "huh. Neat. Makes sense."

</comment><comment><USER11> I wish people would stop using the term 'supercomputer' for large scale batch processing on clusters. This seems like just the sort of problem that could be run more cheaply using EC2 spot instances.

<comment><USER12> I work for a supercomputer company. There is almost no way you'll get anywhere near the performance you need on EC2.

Supercomputers today are built to transfer data between nodes using locality of the node as well as its physical location. Ok EC2 could do the same thing or similar sure, but, it won't have fibre optic links that allow direct DMA of memory from one node to another.

The interconnects and the overall use of a supercomputer is drastically different than what you have on EC2. Additionally, your process is just that, another process running on a bare metal system. No hypervisor to get in the way.

Keep in mind that some compiled code can care about if an avx instruction is used or not. A tiny detail like that means things like a 5% reduction in cpu cost. When your job/process overall takes months to run, this is a significant reduction.

Supercomputers exist because they're more economical than regular hardware. No really, it is true. These things can generate terabytes of data a second and shunt it around efficiently. Until you can demonstrate the same on EC2 you might want to read up on the architectures of modern supercomputers.

As a fun note, today cpu power is mostly a gimme, now most simulations care more about memory. For the memory you need you effectively get the cpu for free.

<comment><USER13> You can roughly mimic the Oakridge Titan cluster (#2 in the world) by using AWS: 4 GPUs / node, 10 GE across nodes, and you can spin up a _lot_ of them. Best of all, you don't need $60 mil.

This is what we're pushing towards at graphistry ;-)

Edit: link: [https://en.wikipedia.org/wiki/Titan_(supercomputer)](https://en.wikipedia.org/wiki/Titan_\(supercomputer\))

<comment><USER12> Mimic sure, but it won't be quite the same. I won't deny you can't do a one off job possibly cheaper on aws. The thing is, these simulations run for weeks or months on end and these clusters are run and setup to run at 100% at all times.

They really are efficient power wise, which is the true test for things like this. I'm hitting towards nda things but needless to say keep an eye out for gpu technology in supercomputers. As well as what that top 500 chinese supercomputer has.

Note, its at the top mostly due to its accelerator cards. Most simulations don't need those.

I know 60 mill seems like a lot but when it runs for 5 years it really isn't that expensive. For a one off job sure go with aws, it'll take longer, but i'm not kidding when you get down to the detail of the cpu architecture and keep track of things like how cache misses affect a program.

It really is night and day difference in how things run. The avx comment is not a joke, reducing even cpu cost by 5% over months is a huge deal. These are just a few of the differences in how supercomputers operate. It is far less to do with the cpu and memory and more how they communicate amongst themselves. One node may compute a value, but another adjacent node then takes on that output to calculate more. This is the key differentiator, and if you aren't compiling fortran (not joking), its likely its not a very great simulation.

If you'd like to know more, i'd recommend getting a job at a supercomputer company. They've solved a lot of the overall cluster problems aws has many years ago. And it is really fun stuff where details matter. Something I can't say about most aws deployments. PS: I'm working on something that will make Titan look like a kid. :) Every 2-3 years this stuff gets pushed aside its fun.

<comment><USER13> We handwrite PTX ;-)

Cost-wise, public cloud destroys traditional supercomputers, and the gap will just keep increasing. However, the economics enabling it, e.g., sufficiently non-interfering multitenancy, are only now reaching the needs of HPC. Likewise, only recently did public clouds embrace non-wimpy hardware: SSDs, multiGPU, starting to have FPGAs, etc. Exposed interconnects are 10 gige, so not the best, but like you said, scale requires designing for minimizing communication to beginwith.

RE:long jobs, we focus on interactive exploration (< 100ms). Spark etc. give up latency to ensure resiliency on long jobs.</comment></comment></comment></comment></comment>


A Pamphlet against R - <AUTHOR> https://panicz.github.io/pamphlet/ <comment><USER2> So, are there out of the box libraries to estimate a zero inflated negative binomial regression model in guile? How about to create multi-faceted plots with < 10 lines of code?

I would _LOVE_ to do my statsing with any lisp variant, but the reality is that R has a killer ecosystem of statistical and visualization packages. Python had an enormous uphill battle but now has a really great story to tell in part because it hitched itself to the rising fortunes of Bayesian stats.

Any discussion of languages has to include amount and maturity of libraries for the purposes at hand.

This PDF has some good content. But I feel a somewhat harsh response is warranted if your starting premise is positioning yourself against an existing solution that many individuals use.

<comment><USER3> There's RCL which is a lisp interface to R.

[https://common-lisp.net/project/rcl/](https://common-lisp.net/project/rcl/)

A bit long in tooth but might get you what you want.

<comment><USER2> Cheers! Though my personal, someday dream, is to port R to Racket such that I can freely interop. It shall be called "Arket" and verily be googleable. If someone beats me to my nerdy, nerdy dream, so much the better.

</comment></comment></comment><comment><USER4> If we talk about the Lisp family of languages (Lisp, Scheme, Racket, Logo, Dylan, ISLisp, Picolisp, MDL, etc. etc.), then R is actually a Lisp dialect. From the past. R's basic technology is rooted in the Lisp's of the 70s. Even Fexprs are back.

<comment><AUTHOR> It is mentioned on page 2: "However, the case of the R programming language is particularly interesting, because initially it was just a harmless implementation of Scheme; but then as a result of the irresponsible experiments of mad scientists it mutated into a monster [3].", where [3] is the link to [https://www.stat.auckland.ac.nz/~ihaka/downloads/JSM-2010.pd...](https://www.stat.auckland.ac.nz/~ihaka/downloads/JSM-2010.pdf)

<comment><USER4> R turned into a language which used older Lisp features. It no longer resembles Scheme, but both older and then newer Lisp systems. It even provides OOP derived from CLOS. It's really a vey strange language which provides/uses a lot of features, which can make it difficult to maintain (my guess having read about the language, but have not used it). For example a mix of lazy evaluation and fexprs can make understanding and predicting the behavior of code very difficult.

</comment></comment></comment><comment><USER5> Before R there was a somewhat healthy LispStat ecosystem, more recently there is: [http://www.cliki.net/common-lisp-stat](http://www.cliki.net/common-lisp- stat)

</comment><comment><USER6> An 85 page pamphlet.

</comment><comment><USER7> Someone is rediscovering literate programming where the code is so meaningful it serves as documentation of itself.

I vote for a troll disguising a boring scheme tutorial in a satire.

But it is very metaphysical à la Artistote or Giodarno Bruno ... I would say like almost any stuff written by the functional programming adepts. I am not sure if FP is mathematics or philosophy sometimes. I like them like some weird religious monks producing free beers. I drink the beer, I avoid the church.

But I would say that even if I do not like scheme, I value meaningful code too.

</comment><comment><USER8> This is performance art.

</comment><comment><USER9> Awesome! I am going to read this pdf.

<comment><USER10> I'd love a summary when you're done. It looks interesting but intimidatingly long.

<comment><USER11> TLDR; Has nothing to do with R (barley mentioned, pamphlet title is clickbait). Advocates (and teaches) Scheme for computational intelligence. Might be satire, or might be a tutorial on Scheme ... I honestly don't know. Ends with the line "$ chmod -R 666 /" making me lean towards satire/intelligent trolling. Is nicely typeset.</comment></comment></comment>