Need Advice: Quitting Job to Learn to Code... (and start my business) - <AUTHOR>

Hey everyone.
So, I've been contemplating this for a while and really need some advice. I'll try to be brief, but I apologize if I drag this on.
I work full time at a job I hate. Although it pays pretty well... I work until 9+ PM 25% of my time (like this week). It will be like that throughout January and February, for instance. Additionally, my commute (which varies due to where I have to be) is often two hours a day.
Ultimately, all of this time kills my ability to really learn code and focus on my business. I lose out on hours AND on mental stamina. It sucks. I'm all for working hard and would easily work 10+ hours (and can stay focused fairly easily) per day on something I am passionate about (this would include coding as 1. I know it'll help me create my business and 2. I think I'll enjoy it)
Currently, I have designed a website mockup, landing page, reached out to potential customers, and now I know I need to create. I consider myself competent on both the business and design side of things. I've been making small attempts to find tech co-founder, but it's difficult with no real traction (and no friends who do any programming at all, although one who is willing to learn... but that's another story).
So, I am at a crossroads. I am incredibly dedicated when I want something. I love learning. And I really want my business to succeed, not just for my benefit even, but because I truly believe my vision can make a great impact.
At this point, it looks like it will be very difficult to find a tech co-founder. Most are already doing their own thing, working for a startup with traction, or looking to work for a startup with traction. Someone like me, understandably so, is last on the list. Even if I find someone interested, I will be a difficult judge of talent. Additionally, we will need to work well together, have visions that fall in line, and so on... the perfect match is probably impossible. Even finding a reasonable match is incredibly difficult. It could take weeks, months, over a year...
In all that time/effort spent looking for someone, I am confident I can learn to code and develop something. I don't expect to be incredibly proficient, but be able to create something useable I hope. My idea isn't rocket science here. It's taking common internet technologies and combining them together. Ultimately, it's an idea and business that hasn't really hit its stride yet. I'm betting on the fact that it will and I want to be the business that is a part of (or the reason for) that.
I just don't know what to do. Fortunately, I am living at home for now and stay put if need be. That eliminates some obvious costs. However, having an income is helpful. Additionally, I definitely don't want to "waste" time. I'm one of those people who is always moving and doing something... I account for all my time internally. I want to make sure if I do leave my job it's the right thing to do and that I don't spend months without an income and end up with nothing to show for it.
So, if you guys could give me your thoughts, suggestions, anything you want to say, I'd greatly appreciate it. I would approach advice regarding the decision itself (i.e. "Leave your job! Go for it!" or "Stay there! Don't leave!") or advice on how to approach the situation after a decision is made (i.e. "If you leave, approach learning to code by reading X, Y, Z..." or "If you stay, look for a tech co-founder by trying X, Y, Z or use your salary to outsource a minimum viable product"). Or anything else you want to say! Please!
Last thing... I just want to say this forum is awesome and I love reading through the threads and great news articles everyone posts. I'm glad I found it. <comment><USER2> Sound like you are on the right track, and increasing your technical chops is definitely a good way to get to where you want to be or to at least give a better impression to potential future partners.

That said, sounds like from this line:

>I want to make sure if I do leave my job it's the right thing to do and that I don't spend months without an income and end up with nothing to show for it.

..that you are not ready to quit your job yet. It's a fairly high probability that this is exactly what will happen. If you aren't comfortable with that fact, then you don't have the risk tolerance necessary to go for this. At the least though, I can say that if you do go through with it, no matter the outcome, I highly doubt you will think you 'wasted your time'. If you look at the report-backs on HN of those who have failed, almost everyone has learned some skills and life lessons that made up for the experience.

<comment><AUTHOR> Hmm... I guess I have to just think about what I meant by "nothing to show for it" to really think as to if I'll be okay leaving my job now and then looking back at what I accomplished. I think the way I worded it was too vague.

I realize I won't be raking in money or something. Hell, perhaps I won't even have my MVP close to implemented after those months. However, I'm completely content if I feel that I've made good progress in terms of my learning to code and being close to my goal of creating an MVP (which is really my main goal right now, learning to code being the path to that).

I guess I just want advice from you guys, as hackers, to someone who can just do HTML and CSS. Is it worthwhile to leave my job to learn code. Can I ever be proficient enough for a future tech co-founder or investor to care?

I guess if I learn enough to create MVP and gain traction, then that answers my question. Thanks for that reply, it helped me think that phrase through a little clearer. If I decide to leave, I'll have to keep my expectations on my accomplishments reasonable.

</comment></comment><comment><USER3> jaypreneur,

1) I wish you the best of luck. 2) As Buffett said, "Invest in what you know." 3) Hire the best you can afford to help you with the tech issues.

Regarding 3: You go and learn all you can, write some code, etc. The more you learn the more you will realize you are in over your head (I hope you learn that). Besides the security issues you have never heard of, or the scaling issues, or the caching issues, you are not a Developer!

To paraphrase Buffett, "Stick with what you know." If you have a good, marketable, revenue-generating idea then you are doing well. You can generate good ideas, that is great! Show your idea/attempt/mockup to potential tech co- founders. If the basics are sound any reasonable techie will see ways to improve it for you and take the bite.

I am sure that you did not mean to insult all of the techies out here by saying you can learn to code in a year a two, but there is much more to our craft than banging keys or struggling with memory leaks...we have experience that you will never have if you part-time half-ass it. Either become a "coder" full-time, or find someone that has. I am known to be a hard ass, so please forgive me, but you don't have to code the solution/vision yourself...in fact, please don't. Reading your post I see a lot of 'impossible' statements. jay, if you want your idea to move forward with realistic performance, hire someone. If you don't have the money, search for the money, if you can't do that, search for the talent. If you believe in your idea and can convince a techie to believe in your idea, well, your search is over. I am sure you have heard this before but "Ideas are a dime a dozen." It is true, even with mockups, but if you need a tech co-founder, I think you came to the right place.

Read 1) 2) 3) again.

FateCarver

<comment><AUTHOR> Thanks for the reply! (as well as your other one, which I've responded to in the wrong order, ha)

I think my other reply regarding outsourcing vs doing it myself frames what you have said here perfectly.

Ultimately, I do not at all think I can learn to code in a few months or a year or even 2 (well, be as proficient as I want to be and should be anyway). I know for that a fact, just based upon myself researching and learning about all the different languages, frameworks, terminology, and so on. Even that tiny amount shows the immensity of what there is out there. To be proficient, it takes YEARS. I don't underestimate it all.

As a result, I do ultimately believe I have 2 choices: outsource or do it myself. I'm honestly leaning towards outsourcing at this point since if I need a technology guy regardless than why not get an MVP put together sooner (and better) by outsourcing?

I guess it plays off what you've quoted: "invest in what you know" and I don't know coding, so perhaps I should hire what I can afford and ultimately look for someone to join forces with myself once I've created an MVP and traction and have something to really show for myself.

I might not have the technical know-how to bring to the table, but I believe I have other valuable qualities and a great idea and vision.

Thanks for wishing me luck and I appreciate the advice.

Thank you for all the posts from everyone thus far! I really needed to have the conversation, get opinions, etc. It is so helpful.

</comment></comment><comment><USER4> \- How many months of savings do you have?

\- How much selling do you have to do to break even?

\- How long do you have until you get that much selling?

That gives you the numbers.

Coding is not as easy as some make it sound (nor as hard as other make it sound). If you get the functionality working to a degree where customers are paying for it and sticking around, you probably can find a techie to revamp it.

Personally, I am sufficiently risk averse that for most products I've thought of, I'd have to see cash incoming before I quit my job.

<comment><AUTHOR> Thanks for the questions. I will be asking myself those questions and analyzing the answers.

A question they bring up in my mind though would be the opportunity cost of creating it myself vs. outsourcing.

If I ultimately plan on finding a tech co-founder to come on board and revamp it, hopefully playing the part of CTO, then it seems wise to compare the costs of getting there via my own work vs. outsourcing, no?

DO IT MYSELF

Benefits

1\. I learn skills that will help when doing simple iterations (before having tech partner on board), assessing future tech partner, and attracting tech partner.

2\. I hate my job and would rather learn to code and build my business.

Costs

1\. The time it takes to learn is time I can't be earning a salary. This could be up to 6 months or more. Let's say this costs me 30k.

OUTSOURCING

Benefits

1\. I keep my salary (even though I hate my job) while MVP is created. This could be positive 30k+.

2\. Outsourcing the MVP is likely far faster, let's say 2 months. This also means I can potentially get to customers faster and gain traction (maybe find partner faster as well)

Costs:

1\. Of course, the outsourcing itself over those 2 months could very well be 250 hours of work. At 50 dollars an hour (reasonable?), that's 12.5k. Let's assume 10-15k range.

2\. Unfortunately, I lose out in terms of learning, which helps in terms of iterating (before having tech partner) and finding and evaluating potential tech partner.

To me, it looks like outsourcing has the potential to save me in both time (a couple of months, at least) and money (15 - 20k). I guess I need to assess if learning to code myself extensively if worth that cost if I don't plan on really becoming incredibly proficient (as I recognize it takes years).

Any opinions on that analysis of the situation?

edit* I just wanted to mention I don't claim that my above analysis is accurate. It could very well take an entire year to develop a useable MVP myself, which would be 60k in opportunity cost. Additionally, the outsourcing estimate of 15k and 2 months could be 30k and 4 months, or more. I am not expert on the implementation and realize that. Please consider that and take the idea behind the analysis into consideration rather than the numbers themselves.

<comment><USER3> How old are you? Outsourcing? To where? Part of the problem is a "Tech Co- Founder" is already making $300k+ a year. If you want someone to throw a few hours your way, you need to sweeten the pot and step up the talk a bit. Some "Tech co-founders" would actually have to use their time spent on your idea as a write-off. jay, I'm not trying to smackdown on you but what do you have to offer your tech co-founder? Even if you learn to code, what can you offer? Will you need a Marketing VP too? Or legal advice? Or accounting help?

<comment><AUTHOR> I'm 24.

In regards to "where" for outsourcing. That is something I have not looked into in detail, but potentially anywhere as long I received quality code.

But anyway, to your other question directed at me (and no need to think your trying to smackdown because I agree entirely with your sentiment), what do you offer...

The things I offer:

1\. Vision - I know, to some this (like an idea) means very little

2\. Design - I am competent with UI/UX, as well as designing using photoshop and illustrator.

3\. Sales/Marketing - I can sell. I'm a good orator and I'm passionate and persuasive (or so I've been told and experienced). In regards to marketing, I've read and learned plenty about it and am always learning more, although I won't claim to be an expert.

4\. Accounting/Business - I'm an accountant (well, auditor with CPA) so I do bring that to the table as well. Ultimately, along with accounting, I have a good deal of knowledge on finance and general business issues as well.

Now, perhaps I'm naive to think the above is enough to offer a potential future tech co-founder. However, it's what I've got and, above all, I am incredibly passionate and hardworking. I know that would matter a lot to me in choosing someone to work with (perhaps more so than raw talent/skills), so I can only hope the same can be said the other way around.

Anyway, you also bring up a good point about the problem about the "tech co- founder" in that they have far more opportunity (a good one anyway) than I might offer, so why me? It's the reason I have made this post and offer up the decision to code things myself or outsource. I know where I have a weakness, even if I learn to code, I still won't be as proficient as I need to be. So, I will need someone.

I guess my hope is that by actually creating something and having customers, that traction (along with the list of things I believe I have to offer) will entice a "tech co-founder" to come join up with me.

<comment><USER3> A CPA! Kudos. I know that is not easy, my fiancee just tested for her CPA...but I would hate to see the code she would write : ) This is way before your time, but Kenny Rogers had a lyric, "Got to know when to hold 'em, and know when to fold 'em" which can extrapolate to your perceived need to do everything. You can do everything, or anything, but where do you draw the line? Janitor? QA testing? Chief Bottle Washer? I'd "hold" on running the company, but "fold" on writing the code.

If you do decide to "outsource" do you mean offshore? Perhaps Rent-a-coder isn't a bad idea, but just make sure the coder(s) are available after they write the code, have them sign a non-compete, and possibly outsource a second coder to review the code if you are not getting the warm and fuzzies from the first team. Ask for well-documented code including an overview explanation, approach, architectural considerations, and lots of comments. Ask for their best work. Again, I wish you the best and I hope that once you get your prototype up you let us all know so we can kick the tires with you.

One last thing: Stop worrying about the tech co-founder and get this project in the bag! Heck, the more you type the less likely a Tech Co-founder is going to want to come on board! Get 'er done!

<comment><AUTHOR> Thanks Fate. Good luck to your fiancee, I know it's tough. If she needs any advice on the exams, let me know.

You are right. I will just have to get it done. At this point, I'll go with outsourcing, which doesn't necessarily mean offshore, but it could. I want quality work. I will have to do my research about it but will look into sites like rent-a-coder, odesk, elance, etc. I'll approach it as you said, I appreciate the help.

I still will try to learn to code on a basic level to converse and not be entirely blind to what's going on, but I'm not sure if it's a good choice to try and program when it would take a significant time commitment. I'm not against a time commitment, but by saving that time, it frees me to focus on other areas of the business.

ANYWAY! I will stop with the typing.

It seems my choice is to stay with my job (although I might leave to find one that is less all-consuming of my time) and outsource the initial development. Obviously it would have been ideal if I already knew how to code or had a good friend who could code and wanted to join me. Unfortunately, neither is the case... and I'm not sure creating the MVP myself is the best proposition.

If someone thinks otherwise, let me know though. Perhaps I'm missing something here.

Lastly, any advice on outsourcing development would be appreciated. Thanks.

<comment><USER3> Just had this pop up on my reader: [http://appicurious.com/2011/10/26/inglorious- applications/#....](http://appicurious.com/2011/10/26/inglorious- applications/#.TqiFepud77k)

Like another poster alluded to, save up some money (keep your job). Interview 5+ developers with entrepreneurial tendencies, pick one, thank the others, hire the one you picked, tier their compensation on milestones.

You already founded this, so looking for a co-founder is fairly moot. Hire someone, give them a chance to shine, bring them in as a partner. If trying to force the "tech co-founder" isn't working, try something else. As for outsourcing...I think it is a silly word that means "not committed". You're not committed to them, they are not committed to you...in the end you have your prototype, but know far less about it then if you hired someone, even an intern, and had them walk you through their process and the code...most outsourced help would probably not do that for you. A less risky move is to hire someone on 1099 for the project...you probably know more about those rules than most.

If you _waste_ too much time fretting over the details, you'll never get it off the ground. Check your balls, take the leap. You will never be 100% correct (you damned accountant! : ) so take your best shot and learn what you are made of.

Post an email link or phone number in your about and I'll give you a call and a swift kick in the ass if you need it.

<comment><AUTHOR> I appreciate the link. It's good to hear someone say that design is important. I've read similar sentiments here and there, but it's often touted that the code is far more important (especially here, understandably so). I think there definitely must be a balance and hopefully that means my talents are valuable.

Anyway, I appreciate the advice about hiring someone. I will have to consider a way to go about doing that, it's tough though... being that I cannot hire/pay someone for too much of an extended period of time. I just don't have that money.

However, it is definitely a better route than outsourcing for the reasons you mentioned. I guess I'll just have to see if I can find a way to make it happen, the intern example is a possibility.

I'll try not to waste too much time on the details and trying to be 100% correct (lol, you've got me with that one). I'll be making the leap, soon.

I have added my email to my "about me" so feel free to shoot me an email and give me a hard time if I'm not getting going!

Anyway, thanks again. I truly appreciate the feedback.

<comment><USER3> You, and I and most of HN, see this conundrum every time we want to start something. In your case, since you don't have the geek chops, you have the following choices:

1) Get lucky and find a TCF willing to work for equity. 2) 'Hire' a company/freelancer to build your MVP 3) Hire someone to grow with you and build your MVP 4) Do it yourself

My opinion is that if your product is actually worth all of this fuss then you have to put your money where your mouth is. I would keep the job, read more about development, save some money, and figure out how you are going to hire someone on a project basis (1099/freelancer)...there will come a time, MVP or not, that you will have to make that leap. Sure, today is not the day. Let's say you get your MVP created, its a hit, and then what? What about hosting it on EC2 or dedicated servers? What about some marketing? What about some legal reviews? What about incorporating (kinda need that to realistically spread equity to partners and investors)? If you did outsource the MVP how are you going to get your new dev team up to speed when you do hire...and what if it needs to be rebuilt from the ground up because the outsourced dev did not take scaling, security, or authorization into account? What about the other 10,000 things that are going to hit you?

You'll be fine. I see a lot of people that have the best of intentions that are not fiscally capable of starting a business. You at least have a job. Some of these stories of creating the next whiz-bang site with 10 Million users on the first day and only $1.57 in startup capital are definitely the exception and not the rule. If you compare yourself to that success, then you are being unfair on yourself and on your future team. All of this lean startup talk ticks me off because some times you do need some capital to make it happen. That is where outsourcing may help a bit, but what ask yourself if losing the knowledge of the code is worth it? Fate's word of the day: Conundrum.

<comment><USER3> jaypreneur's head must have exploded. : )

<comment><AUTHOR> Nope. Fortunately, no explosion. :) I actually just had a late day at work so haven't gotten a chance to come back to this.

But in regards to your reply. It really sums everything perfectly and I can't thank you enough for your help. It has given me a lot to think about and figure out... and ultimately start accomplishing. I think the route of hiring someone to freelance and not just have it outsourced and part ways is a far better strategy. If they can guide me through what they are doing, why they are doing it, and even be there after completion as well... it'd be 100 times better than being left with a cheaper site but being a bit more blind to what's going on and when going forward.

Again, I can't thank you enough for your help.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> you already know the answer. you just want us to give it to you in better sounding words.

we don't have crystal balls. fact of the matter is. if you have nothing to lose and everything to gain. go for it. calculate whats the most viable way and don't wast time .

<comment><AUTHOR> Ha. When I think about it... that is exactly what I want. It's just a tough decision. Even if I know I ultimately want to leave and pursue this full time, being that I've never done something like this before, it's nice to get some on it thoughts, whether reassuring or against what I'm thinking, just to help me.

Ultimately, what I have to lose is just potential income. My job is one that (especially in NYC) is in demand and I have the qualifications to get another job if things went south, so I'm not really afraid of being out of a job if I needed money.

To be honest, I really never want to go back to what I'm doing anyway. I don't know if anyone else feels like this at times, but every moment I slave away I think about how much I could be accomplishing if I could use my time how I wanted to use it. The job sucked before I had that nagging thought... now it becomes unbearable at times.</comment></comment>


Ask HN: Getting a job on a different technology - <AUTHOR>

Hi everyone,
I am a developer with 5 years of experience: The first 3 years of my career I worked as web developer using very popular frameworks, however I have spent the last 2 years working on a niche backend technology (not very popular) building enterprise applications.
I'd like to switch jobs and get back to web development since I realized that is what I really feel passion for, however I am afraid I have lost some web skills. I have neither side projects nor many references to provide to future employers but I still think I have experience enough for "senior" (or at least not junior) position.
Do you think I should start working on my web skills (side projects, github...) before applying for web development jobs or should I just start applying right away?
I would really appreciate your opinion on this. Thanks <comment><USER2> Well it depends on how soon you want to change jobs and whether you "have to" change now.

An immediate refresh of web skills, especially in the areas that you already have experience, but not up to date, is a very good idea. Always a neat idea to focus on UX, etc stuff that doesn't age as fast as the framework du jour.

If you want to change jobs sooner, then why not start applying as well as refreshing your skill set. That way, even if you don't land anything straight away you are on track to be more up to date with the passing of each week.

<comment><AUTHOR> I appreciate the advise. I plan to switch jobs shortly (within 2 or 3 months) so I should probably start refreshing my web skills and applying for positions now. I guess I should not worry about github/portfolio in a short term, since it will take a while to build something solid.</comment></comment>


We are seeing issues with regards to clients connecting and receiving messages - <AUTHOR> https://status.slack.com/2015-04/b4007a8e4c0c6f00

<comment><AUTHOR> slack.com is reachable, login has not been possible for some time.</comment>


Why is Chrome so important to Google? It's a 'locked-in user' - <AUTHOR> http://www.zdnet.com/blog/btl/why-is-chrome-so-important-to-google-its-a-locked-in-user/47295

<comment><USER2> It takes 3 clicks to change my search provider to Bing. IE ships with Bing, Ubuntu ships with partnered Google search, Verizon phones launch with Bing, even on Google devices.

Anyone can change their search provider. What's impressive is that Chrome have gained the market share that it has without having to ship on any systems. (oops, except the Cr-48)

<comment><USER3> Yeah, it's impressive how much marked share Chrome has gained. I wonder how much is that because of Google's advertisement of Chrome if you using any other browser to go to any Google product/webapp?</comment></comment>


Implementing and Understanding Type Classes (2014) - <AUTHOR> http://okmij.org/ftp/Computation/typeclass.html <comment><USER2> I've looked at this page and some other documents since I wanted to implement type classes in Juniper (a FRP language for the Arduino). It turns out that the dictionary passing is only necessary if you want to support polymorphic recursion. In all other cases, the call to a function that is part of a type class can be monomorphized.

Hindley-Milner has problems with inferring types in the presence of polymorphic recursion, and a user provided type annotation is usually necessary. Polymorphic recursion does allow some cool things such as arbitrarily nested lists. This is a feature that users from a dynamically typed language might miss.

<comment><USER3> > arbitrarily nested lists

"Cool" as it might be, please don't inflict it on others.

<comment><USER4> I'm not aware of the specific type features the commenter was mentioning, but that doesn't sound too different than a tree or graph data structure.

<comment><USER5> I believe the commenter may have been talking about what I've seen called fix- point recursion, and it is exactly as you say, it is for representing arbitrarily nested tree structures in a statically typed way.

For example in scala, maybe you have data about Users

      case class User(id: Long, name: String, friends: List[User])

However, this structures is kinda inflexible, you don't always want to deal with an entire tree of users at a time. Maybe, you just want to have the friend userids, so you can introduce a type parameter for the recursive data

      case class User[Friend](id: Long, name: String, friends: List[Friend])

and then you can have a User[Long] which contains the friend ids, or User[String] which contains the friend names. However, if you want to go back and have the list be of Users themselves, you would have to know statically how deep the tree you're returning is. For example, this type would include full user information down to the grandchild level, but then terminate with the ids:

      User[User[User[Long]]]

This is actually very useful! Sometimes we may want exactly this deep of a structure. If we want to get an arbitrarily deep tree of users, we would need to have an infinitely nested type like

      User[User[User[User[User[User[...]]]]]]

which is of course impossible. So instead, people have a work-around using higher-kinded types, called `Fix`:

      case class Fix[F[_]](unfix: F[Fix[F]])

This signature may look scary, but if you apply it to User you get

      Fix[User](unfix: User[Fix[User]])

and all this means is that now we can deal with Fix[User] which means the same thing as User[User[...]]. You can construct one such Fix[User] differing levels like so:

      Fix(
        User(
          id = 1L,
          name = "Josh",
          friends = List(
            Fix(
              User(
                id = 2L,
                name = "John",
                friends = List(
                  Fix(
                    User(
                      id = 3L,
                      name = "Stacey"
                      friends = List.empty
                    )
                  )
              )
            ),

            Fix(
              User(
                id = 4L
                name = "Mary"
                friends = List.empty
              )
            )
        )
      )

</comment></comment></comment></comment><comment><USER6> As an F# developer (no type classes), I found this very informative. Thank you. I'm looking forward to the day when .NET languages (including C#) support type classes.</comment>


Screensharing your talk slides is skeuomorphic - <AUTHOR> https://blog.plover.com/talk/slide-download.html <comment><USER2> I stopped reading after "sent out slides before my talk." As if my presentation is ever ready to be sent out before I start presenting :-)

More seriously, the author makes their point, but it read like they were impeaching skeumorphic as "bad". The counter argument is that "slides" (what ever you want to call them) are a visual summary of the conversation at the current moment. This lets you get both your eyes and your ears into the talk, and for visual topics can be a real help for the mentally visually challenged[1].

The challenge with having the listener manage their own visual aids is that now you have part of their brain working on "what window was that in? What slide/page? up arrow or down arrow? ..." and that can make it hard to listen thoughtfully while they are thinking about how to operate the visual display tool.

[1] Amazing as it seems to me sometimes I have known people who cannot construct and then "see" a 2D or 3D representation of what you are describing in their head while you are talking. These illustrations are critical for them to follow along, and even for folks who have this skill it avoids a mismatch of what you think you have described versus what they have heard you describe.

<comment><USER3> I personally prefer when slides show what is being talked about, instead of just summarizing the speaker's points. My problem is, I can't read the text on the slides and listen to the speaker talking at the same time.

The way I try to do it is to use slides for code examples or charts, and then discuss them as they're shown, highlighting the relevant areas. I try to include _pauses_ there, so that people have time to focus on the image without me talking. When audience size is small enough and isn't transient (e.g. a small lecture, not a conference), I give out handouts with the code & charts from slides printed on real paper - paper is much higher resolution than the screen, and it helps the people further out in the room to stay engaged.

<comment><USER4> Any time I build a high-stakes presentation that uses slides only for visuals, higher-ups coach me into putting the text back in. They frame this feedback in two ways:

a) The listener may zone out and lose track of what you're saying. The slides should be there to pull them back in. Otherwise you risk losing them completely.

b) The slide deck as a standalone artifact is expected to communicate the substance of the talk. No one is going to watch the video. But my skip lead, your promotion committee reviewers, etc. will probably flip through the slides. If it's a mystery what they're looking at, that's not good.

<comment><USER3> > _The slide deck as a standalone artifact is expected to communicate the > substance of the talk._

Curiously, this is the exact opposite of most advice for delivering public speeches (then again, most of that advice is for sales talks, not informative talks, so one has to filter it anyway). Slides aren't suited for effectively communicating a message outside of the context of a talk; at that point, it's better to just write a document. But I imagine the "principle of least effort" is what leads to slides being used the way you described in b).

<comment><USER5> Public speeches are about making listeners feel good about your speech so you get hired to speak again. They are not meant to convince or teach and no part of it matters for the future.

<comment><USER3> I would think people become less susceptible to such parasites over time. I mean, I've outgrown listening to TED talks years ago. At some point you have to realize that the speaker only making you feel good is just wasting your time.

</comment></comment></comment></comment></comment></comment><comment><USER6> Off-topic HN rant: I think this is an unfortunate definition of skeuomorphism: "an incidental feature of an object that persists even in a new medium where the incidental feature no longer makes sense".

It is good to understand the origins of features, but it's not a good idea to apply a value judgement to it based on their origin.

The "official" (i.e. trivially googlable) definition doesn't have this value judgement: "an object or feature which imitates the design of a similar artifact made from another material" and "an element of a graphical user interface which mimics a physical object".

I would encourage people to more clearly separate the idea of porting ideas from other mediums and the concept of a "vestigial property" of some feature.

That said, I think these are valid usability concerns for presentations, but depending on the context of a presentation, you may want to more tightly control the flow.

I've worked with executives who insisted the slides get sent out before the presentation, which IMHO is an antipattern because it takes away your tools for clearly presenting the information and encourages bikeshedding. (The other antipattern is making slide decks for executives.)

It might be cool to have presentation software that isn't "slide" based exactly, but still lets you go BACK but not FORWARD, and also adjust the text size and other aspects of the presentation. Ideally also you'd limit the "creativity" available in the presentation format to make it so people cannot make terrible slide decks.

<comment><USER3> > _slides get sent out before the presentation, which IMHO is an antipattern > because it takes away your tools for clearly presenting the information_

I sort of disagree with this. I'd argue that having complete control over information transfer is desirable only if you're trying to manipulate someone, not when you're trying to inform them. I.e. when you're a salesman, not a scholar. Having slides available beforehand lets one prepare, keeping a cache of points of interest their head. Having slides available for random access lets one focus better and catch up in case the speaker went too fast past a slide. Having slides available after the talk is essential to not forgetting everything 5 minutes after the talk ends.

<comment><USER6> I understand your point, but I don't think it changes the manipulability – you could just manipulate the messaging on the slides. But the problem is that the slides aren't necessarily perfectly formatted so as to be consumable on their own.

For example, perhaps important context was forgotten about a chart, but someone reading it ahead of time without the author present will get the wrong idea and focus the whole meeting on that. Or you increase the workload of preparing the deck because now you're trying to make it suit two purposes.

So I think the author should present the information the way they intended, have follow-up in realtime or shortly after, and make the slides available during or afterward for reference.

</comment></comment></comment><comment><USER7> > It didn't take me long to get in the habit of saying "Next slide, #18" or > whatever as I moved through the talk. If you try this, be sure to put > numbers on the slides!

Slide numbers are an atrocious skeumorphism. I've given several presentations where I click several times to advance the state of a conceptual "slide," before it eventually moves to the next conceptual slide.

Some examples:

1\. First show a misconception, discuss it, _click_ strike out the misconception and show the truth.

2\. Freeze-frames in an animation: each click advances to the next portion. Sometimes you'll want to breeze through on the first pass, and then jump around to highlight different features.

3\. Slides with complex information. Gray out the whole thing but for one piece. each click grays out the previous focus and brings the next section into focus. Finally, show the entire slide in its full glory.

4\. This one's big. Sometimes I share my _screen_ , not some dinky slides, to show off an interactive interface.

The author suggests that humans should communicate through external channels, reduplicating the effort of transmitting presentation materials. Furthermore, this wastes valuable speaker time and effort on communicating slide numbers, and similarly, distracts audience members as they fidget with their interface to stay in sync. To what end?

> The audience can see the speaker.

Yeah, okay. That's legit. But, for example, Zoom allows the audience to change their view. If they dislike the disembodied voice, they can arrange their views to make the speaker's face visible in addition to the shared screen. If they want to be immersed in your slides, they can do that, too. Other tools allow for a picture-in-picture mode (which might require you to tweak your presentation; annoying IMO).

</comment><comment><USER8> A few counter points... Screen-sharing the slides facilitates recording. For my team's presentations, we typically have as many people watching the recording after the fact as attending live. Yes, I could record just the voice and make them download the slide deck separately, but I'm not sure that's any easier - my goal is to get information about our work out to our consultants, support staff, and sales team quickly (respecting their time).

Zoom displays the speaker and shared content at the same time, so no disembodied voice. I do agree that I like to see the speaker - I'm not a fan of people who disable their webcams. But, I also know people who are the opposite - they don't care about seeing the speaker at all.

The author is correct about point #1 - if each attendee controls their own copy, screen resolution is not longer a problem. That said, I don't run into that as a problem very often. Sometimes, early in a meeting, somebody will ask the presenter to zoom a bit, which they do, and we move on.

<comment><USER9> > Zoom displays the speaker and shared content at the same time, so no > disembodied voice.

So does Jitsi, which the author used for his talk.

</comment></comment><comment><USER10> If you're presenting slides, you want your audience to see which slide you are on - you don't want to hope that they manage to navigate to the right place in their copy of your slides.

Secondly, skeumorphism isn't a dirty word. Sure, the flat-ui crowd have tried to make it dirty, but it has value. Even though it is by design an artificial representation of a real world thing, that doesn't mean there is no value in helping the viewer auto-associate it with the real world thing. Although it is out of style, I daresay it is more effective than the current UI situation we are in these days.

Minimalist (and but not necessarily flat) UIs often give the viewer almost nothing to go on. The skeumorphic designs of the 2000s at least helped the user have a clue what the thing was about.

<comment><USER11> > If you're presenting slides, you want your audience to see which slide you > are on - you don't want to hope that they manage to navigate to the right > place in their copy of your slides.

Isn't this addressed by the following?

> Some co-workers suggested the drawback that it might be annoying to try to > stay synchronized with the speaker. It didn't take me long to get in the > habit of saying "Next slide, #18" or whatever as I moved through the talk. > If you try this, be sure to put numbers on the slides! (This is a good > practice anyway, I have found.) I don't know if my audience found it > annoying.

<comment><USER10> It may depend somewhat on the speaker as well as the audience, but in my experience audience members zone in and out during meetings.

The mostly-passive attendee may have little interest, but if the slides are changing automatically (by your action), then it's possible a new slide my grab their attention.

If you leave it up to them, some of them will never flip past the first slide on their own.

</comment></comment></comment><comment><USER12> I understand the author's preference, but as a seasoned presenter and veteran audience member I must say I do not share his opinion.

Sharing slides before a talk _can_ be useful, but only if the slides are mostly bullet points and diagrams. If otoh you use a more empathic/media journey style of presentation materials, there is little point in doing this or even negative value.

The most boring form of video presentation I can imagine is a talking head. Trust me, you are not that pretty, nor do you have the facial gymnastic entertainment level that I want to look at you for half an hour in closeup while you command me to turn pages. Show me something interesting on the screen, maybe cutting to you for 10-30 seconds when you want to emphasise something.

Get a greenscreen and OBS if you want to go a bit further. Overlay yourself on the presentation if you want.

If you are presenting, you are not just 'relaying information', just write up a briefing/memo/paper or email if that is your goal.

In a presentation you have to capture your audience, entertain, and yes, inform.

<comment><USER13> >Get a greenscreen and OBS if you want to go a bit further. Overlay yourself on the presentation if you want.

Is this just an idea or have you done it? How hard was it?

I see there are greenscreen tutorials for OBS and this seems pretty exciting.

<comment><USER14> For $40 you can buy software that eliminates the need for a greenscreen [https://www.xsplit.com/vcam](https://www.xsplit.com/vcam)

(xsplit is a competitor to OBS and used to be very popular (as a step up from fraps))

</comment></comment></comment><comment><USER15> > I don't know if my audience found it annoying.

No user feedback…

> If you're giving a talk over videoconference, > consider trying this > technique.

but want others to follow course.

As I read through I thought, as an audience member, I would not like this approach and other tools (e.g. Zoom) allow feeds of both the presenter and their slides/screen. I frequently flip back and forth depending on the context. I often like a printed slide deck to write notes on during a talk, but for virtual talks, screenshots allow me to capture a slide I might want to come back to.

<comment><USER9> > other tools (e.g. Zoom) allow feeds of both the presenter and their > slides/screen

So does Jitsi, which the author used for this particular talk.

It just sounds like he has a personal preference for how he prefers to attend video conferences and decided to use his own experience to push others into following it, even though, as you correctly pointed out, he has no idea whether the audience actually prefers it.

</comment></comment><comment><USER16> Are there JavaScript libraries that can keep the presentation in sync with the presenter? (or show some indication of the current slide)

At a high level, if we assume a majority of people are following along and you chose a font size that works for them, having to turn the pages seems like a net negative, a return to printed presentations before video projectors were common in conference rooms.

<comment><USER17> Almost 10 years ago I wrote sttp

[http://info.iet.unipi.it/~luigi/sttp/](http://info.iet.unipi.it/~luigi/sttp/)

plain javascript + markdown variation, allows receivers to sync with the presenter using AJAX (that was the name, at the time ?) long polls.

20 years ago I extended Magicpoint to send (and receive) content and commands over RTP

30 years ago... I still used a overhead projector.

I realize it's been 10 year since I last worked on the subject, and this days I use a mix of high tech and low tech solutions

[http://info.iet.unipi.it/~luigi/document- camera/](http://info.iet.unipi.it/~luigi/document-camera/)

</comment></comment><comment><USER18> I teach public speaking and I agree with him to a degree. I think there is room for a slide presentation platform that is responsive like a web site so that each slide would take advantage of the user's screen. I also think there is room for something less linear and more interactive than powerpoint. Prezi pitched itself as something like that but it ended up being all about swooping in and out. I haven't tried Prezi in years but it was also time consuming to make all that swooping in and out happen.

However, I disagree with handing the slides out ahead of time because that means that it is easier for the audience to ignore the speaker and just flip through the slides at their own pace. Now, that isn't inherently a bad thing but that isn't a speech.

He wrote: >With the screenshare, everyone is stuck with whatever I have chosen. If my font is too small for one person to read, they are out of luck.

If your font is too small for someone to read then your font is too small. Except in rare situations you should make your fonts as large as possible.

>The audience can see the speaker.

That is a disadvantage but there can be things like picture-in-picture.

>Haven't you had the experience of having the presenter skip ahead to the next slide before you had finished reading the one you were looking at?

If you have too much for your audience to read before you go on to the next slide you have too much text on your slide. Less text is better.

</comment><comment><USER19> Microsoft and Google both offer a feature where the audience can follow along on their device. I've only used the Microsoft version personally... you can watch the slides on your screen, get a translation into the language of your choice, and go backwards in the presentation if you missed something (but not ahead of where the speaker is). If you go backwards and want to get back to where the speaker is, there's a button for that. Seems like the author just needs to RTFM.

</comment><comment><USER20> I feel as though screensharing the slides keeps everything in one neat location. If I have to load your presentation slides separately, I have to look back and forth between the slides and your video. Additionally, if I don't have a second monitor I now can't see either very well. Finally, despite his argument to the contrary, the synchronization is annoying. Having to say "next slide, #18" after each slide just breaks the flow.

<comment><USER21> It seems like it would be ideal to synchronize with tech. Have an official "slide we're on" that the presenter advances, but also allowing people to navigate independently of that when they care to.

"Could you go back three slides?" also breaks the flow.

</comment></comment><comment><USER22> If slides are on a website, the site site can advance slides automatically for everyone based on a signal from the server (e.g. via server-sent events).

</comment><comment><USER23> I find that a lecture given on a blackboard, where the speaker writes symbols and draws pictures while telling a story, is often a better way of explaining maths and physics. There is something about the visual and audio being "in- sync" that really helps listener to understand.

<comment><USER24> I once worked at a company where the bulb in the projector burnt out. For some reason that bulb became a weird symbol of thrift so the bulb was never replaced.

The company would do a summary of the financials for the year for the employees. Since there was no projector the president rounded up all the whiteboards, uncapped a marker and just started writing. Since he was intimately familiar with the numbers he could talk as he wrote about what what they meant with respect to what was happening both inside the company and in the external business environment the company existed in. It was the best presentation of that type I had ever experienced.

So not just maths and physics...

<comment><USER25> Matthias Poehm essentially made this his personal brand: [http://www.anti- powerpoint-party.com/](http://www.anti-powerpoint-party.com/)

</comment></comment></comment><comment><USER26> Good presenters weave speech, gestures, emotions, and--last but not least-- visual props into a cohesive experience. If the slides are fundamental to your talk you need to control the flow to avoid disruption.

If they aren't, why do you have slides in the first place?

</comment><comment><USER27> If you have enough text on your slides that your audience needs to adjust the text size... they aren't listening to you and you're writing a textbook not giving a presentation

</comment><comment><USER28> John Madden was the best screensharing presenter of all time.

He did it in real time, and every week during football season. He was incredibly good at explaining _why_ a play worked or did not work.

In my view, more people should present like that instead of having tons of words on their slides. It has _nothing_ to do with having control of the slide deck.

I mean, imagine if Steve Jobs sent his presentation out before his WWDC events. Not. A. Chance.

</comment><comment><USER29> Why not do both? Do the screenshare so it's easier to follow along _and_ share the presentation beforehand.

</comment><comment> david-cako I prefer slides-only to watching a talk, but the spoken content often supplements and extends what is on screen with detail and examples. People who like the spoken content will gain "new features" by having it skeuomorphicized (i.e, "made more familiar").

</comment><comment><USER30> By his definition, isn't a "talk" skeuomorphic as well?

</comment><comment><USER31> I am not sure how to say this: the article is not wrong, but the argument as a whole is kinda pointless.

</comment><comment><USER32> [deleted]

<comment><USER33> Bottom of first paragraph: "That is a skeuomorph: it's an incidental feature of an object that persists even in a new medium where the incidental feature no longer makes sense."</comment></comment>


Dissecting "Tiny Clouds" - <AUTHOR> https://blog.demofox.org/2017/11/26/dissecting-tiny-clouds/ <comment><USER2> I wonder if the hacker news algorithm looks at the people who make the post to know if it should be promoted or not?

One thing I have noticed is that when you post things, they get a lot more attention than when I do hehe.

Thanks for that (:</comment>


Retrospective: Writing an O'Reilly Book - <AUTHOR> http://www.r-chart.com/2014/05/retrospective-writing-oreilly-book.html <comment><AUTHOR> Also see [https://www.igvita.com/2013/09/29/retrospective-high- perform...](https://www.igvita.com/2013/09/29/retrospective-high-performance- browser-networking/) for a more disciplined approach to amassing data related to writing a book.</comment>


Eve:  My Concerns - <AUTHOR> http://robmoff.at/2016/01/13/all-about-eve/ <comment><USER2> I thought this was a great article when he posted it and it's always really exciting to see people engage with us about the research we've done. He links to it at the bottom, but here's a link to my followup [1].

We've learned a ton over the past couple of years and we've finally settled on a path forward. That means we're starting to move out of research mode and starting to execute on all of this knowledge gathering. To that end, we're going to be doing a public alpha release in the next few weeks for people to play with. :) It ought to be interesting to the folks here to see how crazily different our work could be - the latest version of Eve is better likened to Medium's content editor or Dropbox's paper than it is to Visual Studio. It's been a long road (with around 30 versions of Eve at this point), but there are some really exciting times ahead.

Happy to answer any questions! Though I imagine there'll be plenty of discussion when we do the release :)

[1]: [https://gist.github.com/ibdknox/2b185fcb8e5d1de68796](https://gist.github.com/ibdknox/2b185fcb8e5d1de68796)

<comment><USER3> Here's a question for you, then. Has any thought been given to the accessibility story for Eve and tools like it?

As a blind developer, I always get a bit nervous when the future of programming is discussed in terms I've read used to describe Eve. It seems like a very useful way of developing apps, but one that can easily exclude a subset of the population if a11y issues aren't thought through in advance.

Also, part of me is tempted to dismiss Eve because I suspect we'll always have the current way of developing software to fall back on. But when I consider it more, I don't find that line of thinking productive for me. For instance, lots of folks might be tempted to dismiss GUIs for blind users because graphics, but there are actually huge advantages to representing UIs as trees of objects that can be introspected and interacted with. I can write code that scans the accessibility hierarchy for a specific element and reads it, for instance. In a command line interface, that code would need to either scan for a non- specific set of characters that a curses app might use to draw a thing that looks like a button and make a guess at its contents, and even then that logic would be very brittle. So even if Eve and whatever comes after derives lots of its power from rendering concepts visually, the underlying primitives needed to do so might have beneficial a11y implications and shouldn't be discounted because the end goal happens to look nicer than a wall of text.

Anyway, would be nice to see that on the roadmap if it isn't already. Even if only 20% of programming is like this in 10 years, that's still a substantial subset that might exclude me by virtue of the accessibility story not being thought out first.

<comment><USER2> Amusingly enough, I actually started thinking a bit about this just the other night after being told about a talk given at Dropbox about accessibility. To be up front, we know very little about it and the other night was the first time I'd ever tried to use a screen reader, so it's something we aren't likely to be good at right of the gate, but it is something we've been setting ourselves up for completely by accident.

Many of the previous versions of Eve would be pretty completely inaccessible, so your dismissal would definitely be warranted. The version we've decided to run with though basically has three parts: a document editor, embedded spreadsheet cells, and a fancy plain english search. All three of which have a history of accessible solutions, so that makes me much more optimistic that we can provide something nice here. Along the way, another thing we've been very cognizant about is making sure no matter what form of input you prefer, Eve should be efficient and useful to you whether you're using a keyboard, a mouse, or touch. Many of the interaction issues we'd need to solve to better work with screen readers popup when trying to support complete keyboardability, but I have no delusion that there will be plenty more to solve there. Another interesting aspect of this version of Eve is it's really easy to imagine a voice interface to since virtually everything is done using plain english queries - it'd be kind of like having Jarvis in your google docs.

Admittedly, we don't know what we're doing when it comes to accessibility, but it is something we've been thinking about indirectly and it's something I think we can at least do more naturally than the code editors of the world.

Thanks for raising the issue and it's something I'd like to have a more concrete answer for in the future.

<comment><USER3> Cool, glad to know this is on the radar! Out of curiosity, what are you using to render the current GUI? Toolkit/framework choice unfortunately has pretty significant a11y ramifications.

<comment><USER2> It's all HTML at the moment.

<comment><USER3> HTML rendered via what? nw.js? Electron? I feel like the former is a bit more solid by virtue of having been around longer, but unfortunately both ecosystems are such a mess a11y-wise that I haven't really delved into them. In any case, it's probably a safer bet than something like GTK/QT which is either entirely or mostly inaccessible. But HTML rendered in a browser at least has the potential to be highly accessible, and one workaround for poor a11y implementation of nw.js/Electron would be exposing the HTML to another browser over a local port with functions callable via JS over the server port.

<comment><USER4> Eve is served as remotely as a webapp, and it'll run in all modern browsers. Presently it's supporting Chrome first; but support for FF, IE Edge and others is on the map. Along the way, we're looking forward to gathering feedback on how we can improve user experience across the board, so please drop us a few issues on how we can make things better if you get the chance to try it out.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> > Also, if programming in Excel is so awesome, why am I not developing banking > software using it?

Well, if you took away Excel, the banking system would collapse. It might be old and clunky, but it can do anything you need it to. It might not be "real programming", but near enough anyone is able to get a spreadsheet up and running much faster than a POC app that's been built in a proper programming language.

<comment><USER6> Oh it's real programming, as far as I'm concerned. My problem with Excel is that it has the worst tooling out of any application platform I've ever encountered, and it's subject to the hideous whims of Microsoft on the quality front.

When one imports a CSV into Excel, Excel has a nasty tendency to actually change the data based on formatting rules. When you open up a CSV file in Excel, it silently corrupts the information. You need to back up your file before doing any work on it.

Excel refuses to do proper Unicode, or at least I haven't found the right way to reliably get a Unicode CSV out of it that won't break in third-party tools.

Excel does not do versioning natively, and you have to rely on a buggy mishmash of Microsoft-based solutions to do file-based version management. Excel files tend to get emailed around everywhere, and so there's never a single source of data. It has the worst properties of a decentralized architecture without any of the benefits.

Data belongs in a relational database. You can use a spreadsheet to manipulate it, but the manipulated data needs to go back into the database. The spreadsheets that do this are programs and they need to be managed as code, going into version control systems.

<comment><USER7> Countless, _countless_ businesses use Excel and they all suffer from what you correctly put as the "worst tooling out of any application platform". They're suffering every day and yet where is the desire to alleviate their pain? It doesn't exist. I would expect to see hundreds of competing projects. I see just a few and they're all crippled in some form.

I think it's a failure of venture capital. What's funded is often what looks good rather than what is needed. That's my guess but I don't know.

<comment><USER8> Nobody ever got fired for buying Microsoft Office. I honestly think that's as far as it goes for most people.

I've felt the exact same pain as you - having the non-technical people work in Excel and moving it back and forth to a database is a nightmare. I've started creating Flyway migrations for each import/export sequence just so we can keep track of what's live in our DB. If you were working in CSV you could even script an import as part of a build process or something.

In some cases better products even exist. For example LaTeX is a fantastic tool - you can create complex layouts (not just for documents, but also Illustrator-type tasks), automagically manage cross-document references/citations and generate tables-of-content and bibliographies, lay out images and tables and formulas, modularize documents (eg by chapter) and best of all the documents are a plain-text "source" that you can easily check into revision control or merge between multiple simultaneous users. _Zero_ adoption outside the academic world and certain publishing niches (eg math textbooks).

Side note: one unfilled niche I've noticed is that there isn't a good word- or character-level diff tool that's appropriate for LaTeX. Ideally you would want to be able to type natural paragraphs and have the diff pick out changes by word instead of line (but preferably also identify command tokens more greedily up to a line). You can break a paragraph across several lines, but if you're making heavy revisions it just ends up being a solid block of line changes.

One more question: is there a "worksheet" or "notebook" concept in something like Mathematica that might be a better model for the type of work you're considering? I know Mathematica has a pretty complete feature set, it very well might have database hookups and an appropriate workflow for that type of thing.

<comment><USER7> I think I was accidentally unclear: it's not pain I'm experiencing but pain that I've noticed. My project, Kayia.org, is working to alleviate it but I'm surprised at the lack of enthusiasm for ways to mitigate something so clearly painful.

</comment></comment></comment></comment></comment><comment><USER9> I admire what you're doing, but I can't help but see gaping holes in your card wiki idea.

1\. Your examples all seem to suffer from the same problem all of Bret Victors ideas do too; they don't scale. Sure I would like interactivity, no I don't want to re-eval my entire codebase on every keystroke, and no I don't want to recreate my vertex data every frame in the Draw method just so I can scrub a tree's bendiness.

2\. The card wiki is too reliant on perfect structure. What if I need to change the structure at some point (refactor), then all my queries break. They'll break even worse too if my queries just says 'get the salaries per department', but then I modify the structure to have two sets of employees per dept (perhaps current and ex-employees), which changes the meaning of the query, yet the computer would plod along and now wrongly sum both groups I presume, if working in this automated way.

3\. Performance. Sure it's easy to re-calculate an equation based on dependencies. Want to do 'a = b + c'? Then obviously re-calc 'b' and 'c' dependencies before performing the equation. But the hard part is when to do the re-calculation? Perhaps store an 'isDirty' bool? Or cache the value? Or just re-calc everytime it's needed? Human programmers make this decision based on how the result is used, how many times it is used, framerate, memory consumption and performance heuristics. There isn't a one size fits all, it's highly contextual.

4\. You say 'we know Wikipedia works'. But have you tried scraping data from Wikipedia? Computers get stuck on all sorts of dumb stuff. Wikipedia is obviously meant for human consumption, where visual data and the English language rule, and the only structure we need is a 'top to bottom' layout. Programming is way more specific that this, so I can't see how combining the two ideas is any good.

5\. Organisation. Perhaps you're still working on this, but you switched back and forth between a single card at a time, but given 20+ cards I'm not going to remember where stuff is. Code editors throw a bunch of stuff into one document, have tabs, and an explorer, and intellisense and search etc - and I still lose stuff all the time!

Hopefully when you do this release you'll include some complex samples, like you said you could build a compiler with these cards? So perhaps I'll be proved wrong.

<comment><USER10> Yes, reminds me of CASE (Computer aided software engineering) systems from the 90's. In 10 years there'll be no programmers, then the web happened, and it all started again.

</comment></comment><comment><USER11> I like the part where he's talking about the programming study he got to do at Microsoft with a one way mirror, where he observes that programmers who say they never use the mouse, use the mouse 50% of the time they are programming.

Use your awareness and ask yourself: Is this person primarily optimizing programming, or is she/he primarily optimizing their social status as a programmer? (Maybe doing the latter is more rational? Doing the latter likely results in higher pay and a more secure job.)

 _> The lesson from this was apparently, that just fixing the IDE wasn't enough. Programming itself suffers from the problem that it is indirect and invisible, beleaguered with accidental complexity and unobservable._

These are the two deepest sentences about programming I've read in a while.

Here's the video in a nutshell:

        1 - Chris Granger asks a deep question
        2 - He observes people
        3 - He tries some lateral paradigm
        4 - It's interesting
        5 - It's bootstrap implemented in only a few lines of code
        6 - It's not the right answer, repeat from step 1

Iterate that about a half dozen times.

<comment><USER12> I don't know if the statements about the keyboard can be attributed to dishonesty. But when you ask a programmer what they /do/ most of the time, the first thing they think of is programming, and that usually uses the keyboard. But programming is a tiny fraction of what a programmer actually does. Reading, searching, browsing, experimenting, navigating file systems and build systems, running things -- the actual coding is a tiny part at the end, in reality, but it completely dominates the entire activity in our mental model of what it is.

<comment><USER13> You forgot "trying to understand WTF the clients need built".

</comment></comment></comment><comment><USER14> This article was great, as well as the video and Chris's response. It reminded me of 2 problems I've encountered time and time again that I'd love (for someone) to solve.

1\. Often presentations, reports, etc. rely on calculated data from e.g. an Excel spreadsheet. Whenever data gets updated it's really tricky to make sure everything that uses that data reflects the latest state. Too often have I heard the phrase in meetings "Oh that graph? Yeah, that's still based on last month's data."

2\. I've had very smart colleagues who couldn't program, but could bend Excel to their will. Eventually they'd hit the limits of what's possible in Excel though. It always struck me that a) Excel is basically an FRP system and that therefore b) these people already have most of the skills to program if they had slightly different tools.

I always had an inkling that these two problems were somehow related, but I couldn't put my finger exactly on how they are related or what the solution would be. I'm really excited to see that EVE seems to go a long way to solving these things. I can't wait to see where they take it next. At the same time I also take some solace from the fact that, based on the number of iterations, people who are clearly much smarter than me also struggle with defining and solving this problem.

<comment><USER15> For 1) hopefully Eve, or a tool like it, can let you do things like: \- Show me all the graphs which don't include this months data, and why / what they are using instead \- Show me the graphs that will change (and/or the ones that won't) when I add this months data Basically searching forwards and backwards to find where issues are, with enough info/context to resolve mistakes 'bugs'.

And then ideally it would be possible to state an invariant 'this graph must include this months data' and have the system automatically verify it for you.

</comment></comment><comment><USER16> _My first thought on watching the demo was: This seems a lot like Lotus Notes._

The author claims this is a compliment, but generally Notes has a terrible reputation as one of the most over-architected and misused software solutions of the '90s.

You can check it out (in excruciating detail) at this Interface Hall of Shame article from 1999:

[http://hallofshame.gp.co.at/index.php?file=lotus.htm&mode=or...](http://hallofshame.gp.co.at/index.php?file=lotus.htm&mode=original)

It starts off with: "We wish we found IBM's Lotus Notes a long time ago. This single application could have formed the basis for the entire site."

Maybe there was an elegant core to Notes that was hidden under all the insane GUIs built using the tools? Would be interesting to hear more.

<comment><USER17> I would like to counterpoint. I knew quite a few people I trusted who sang the praises of Lotus Notes.

It was the IBM buyout that started the big downfall.

> all the insane GUIs built using the tools?

Remember VB6 and all the shitty applications written in that? Uh, yeah. And don't get me started on the disasters that people perpetrated on us from the web. And how about the pile of dogshit that was Gtk v1? <shudder>

In addition, this was also still the time of "look and feel" lawsuits.

 _Everybody_ had insane GUI's in the 1990's, so singling out Lotus Notes is far from fair.

</comment></comment><comment><USER18> I actually find it funny when Eve is discussed on Hacker News as most people on Hacker News are programmers, so they look down at Eve in the same way that C++ programmers used to look down at Basic Programmers in the 1990s (you had to be a programmer in the 1990s to know what I mean).

Yet a simpler model did prevail, and now we use so called toy languages like Javascript all the time. Eve's time will come, and in 10 years most of us who frequent hacker news today will be like the C++ developers of the 1990s in that we will be the minority. And languages like Eve and other similar projects will be considered normal programming languages. Java, Python and other languages will just be considered special purpose languages, much as C++ is considered "special purpose" today for high performance computing and operating systems

</comment><comment><USER19> I think Chris and his team's goals now are more to build a programming tool primarily for the non-programmer rather than try to be all things to all people, and also cater for professionals. So I doubt it's going to have a huge impact on how professional developers work for the issues mentioned, but I do have high hopes this can create something that is more approachable for everyone else, and also a more gentle introduction to programming than I had with learning Pascal. Anything that brings new ideas to the table, such as Eve, Bret Victor's original talk that inspired Light Table, and Light Table as a whole are good for the industry. Apple already used a lot of those ideas when building Swift, which likely wouldn't have happened otherwise.

</comment><comment><USER20> My first impressions from the talk is that it looks a lot like Wolfram's programming lab [0]. Which is great because while I really like the idea of WPL the cost is rather prohibitive. More competition in this arena is definitely necessary.

What will programming look like in 10 years? My guess is that it will look much the same as it does now. We'll have better languages for expressing temporal logic and consistency but it might not be radically far off from where we are now.

Text is still useful and certainly notations could improve but that's about it.

The idea of programming from tables using declarative or logic programming is certainly not new but very powerful. k comes to mind... which is probably at the extreme opposite end of usability. Never the less even COBOL had a sense of this.

Looking forward to where Eve goes next. My ideal environment is one where I can freely mix hand-drawn "symbols" to data and express relations using familiar mathematical notations in a single free-form canvas. I sort of do this on paper presently but I have to translate this artifact into a programming language to insert values and explore the various dimensions. It'd be nice to have a system that could recognize my notations and let me hook them up to data.

[0] [https://www.wolfram.com/programming- lab/](https://www.wolfram.com/programming-lab/)

 _update_

Well... not quite like Wolfram Language; but the connection to knowledge, queries, and building new knowledge from queries. The interface is quite flexible too.

<comment><USER21> If you delve into the documentation of Xerox PARC (Cedar, Interlisp-D, Smalltalk) and later Lisp Machines vendors, their environments already offered many of the Wolfram features.

This is why I like it so much, even if it is commercial. After all I used to pay for my compilers.

</comment></comment><comment><USER22> I didn't even realize Eve has a public release (as of a few months ago).

[https://github.com/witheve/Eve](https://github.com/witheve/Eve)

And there's a blog post describing the features of version 0.

[http://www.chris-granger.com/2015/08/17/version-0/](http://www.chris- granger.com/2015/08/17/version-0/)

<comment><USER2> I don't suggest playing with that version much as it's being completely replaced by experimental/cardwiki in the next month.

</comment></comment><comment><USER23> So, I'd like to know others' opinions. Is computer programming today primarily: A form of communication? Arts n' crafts? A virtualized form of assembly/construction? None of the above?

I'm in the arts n' crafts camp. Craftily building up abstractions and playing them off each other -over time- seems to be what we're doing here.

I think any program representation should fit your use case. If Excel or SQL fits for data simulations, use that to program, if C++ and Assembler fits for your systems coding, use that, etc...

I'm not a fan of CASE tools, BPEL, instarepl, naked objects, or any other visual or visual/textual modes of coding for general programming work. I agree with the scalability and productivity issues others have mentioned with visual programming systems. Visual probably has a relevant place somewhere in effective software development, but they're just not general purpose enough because the visual bits and bobs tend to muddle the abstractions and are generally too fiddly.

I intuitively agree/sympathize with the myth that less lines of code == less bugs. I think we should seek for languages and libraries that require less lines of code to get stuff done.

Before we can bravely board our starships and chat with our sentient computers in order to program them, we'll need people to write less buggy code with existing systems. For me, that requires:

* TDD which allows everyone to verify their work

* Employing Agile teams to encourage robust communication and to reduce YAGNI, and

* Establishing software architectures where tools and libraries are chosen -primarily- for their ability to promote developer productivity

</comment><comment><USER24> Eve == ACPU platform. Same things. [http://acpul.org/](http://acpul.org/) PS: I'm looking for help with my project, peoples who like same things. I made that project at 2012, too much things collected for this day. I made LiveComment for save this collection, because this is future of programming.

</comment><comment><USER25> As a side note, it is fascinating to see many parallels in the referenced Chris Granger talk and the one that Alan Kay gave on the history of the Dyna book in 1986 [1].

[1] [https://www.youtube.com/watch?v=GMDphyKrAE8](https://www.youtube.com/watch?v=GMDphyKrAE8)

<comment><USER2> Huh, thanks for the link, I hadn't seen this talk of his. We take a ton of inspiration from the work done the 70's and 80's before we decided exactly what "computation" meant. There were so many great ideas that elevated what we could do with computers, it's sad that 40 years later we're sitting here trying to rediscover them.

<comment><USER21> I get that thought every time I do archaeology on the work of memory safe systems programming languages (Burroughs B5000), the Cedar/Interlisp-D/Smalltalk environments at Xerox PARC, Oberon environments at ETHZ and other similar research.

The programming world would look much different (for the better) if Lisp Machines had succeed instead of UNIX workstations.

</comment></comment></comment><comment><USER26> Perhaps in 10 years we'll have a wider variety of ways to tackle problems by computing, some more suitable to certain problems than others, and we'll acknowledge all such as programming.

</comment><comment> j-pb I'm a huge fan of datalog, reactive programming, interactive working with a knowledge base and ontologies, and the current iteration of eve has all of these.

However, since these systems have been shown to be somewhat limited by the boundaries of efficient computation or even computability in general I'm hard to convince on this.

I think the only way they can truly convince people that this is feasible is by implementing the system in itself.

</comment><comment><USER27> Make sure you read through Chris Granger's response at the bottom.

</comment><comment><USER28> Well, programming in 10 years will look just about the same. Development speed is extremely slow.

I don't think I have to summon Lisp to illustrate my point in a Hacker News Thread...

<comment><USER29> Not only will it look the same, but we'll be working with a lot of the same code :) Android didn't exist 10 years ago, but it's based Linux, C++, Java, strung together with Makefiles, shell scripts, etc. All this stuff was well over 10 years old when Android was created.

Likewise, iOS is one biggest changes in the last 10 years, but based on old technology.

</comment></comment><comment><USER30> I DO think "programming" in 10 years will look quite a bit different than today.

For that to come, a paradigm shift would need to happen. Now what could cause that shift? In my opinion its blockchain technology.

I think one of the platforms which allow to run Code on blockchain will reach critical mass, here is a nice intro talk to one of them: [https://www.youtube.com/watch?v=U_LK0t_qaPo](https://www.youtube.com/watch?v=U_LK0t_qaPo)

You may ask but what about my beloved javascript, c++, python or java? Well there is plenty of that used in the implementation of ethereum. And they even try to make their language look like javascript a lot ( look for solidity) to attract developers. But those are just aesthetics which come due to bootstrapping.

And bootstrapping is THE key issue here which eve doesn't even begin to deal with, which would deal with interesting questions like:

How many programs/functions/snippets would a blockchain need to become "liveable" by itself? 10000? 100000? more?

People today think but I do this great "app" and people cando such cool things with it. But the point is, very much as Alan Kay also says, apps are just the wrong thought. Appstores are a JOKE for the end user, you can buy what you want , genius, but can you combine two programms to make it do soemthing interesting? No you can't, you would need files and formats , but ahh.. that war has been lost way long ago. We need maximal flexible programs, code, snippets. Write something on your own, include something here, send a message there and so on. Something like a giant gloabal object or actor space.

Digital Identity, no user EVER wants to log in, remember? So just get that working, it can be solved with the crypto infrastructure in place. Scaling to millions of users? Scaling to billion of users?

Most of the solutions, which try something today, including eve, try to do something which is based on a webbrowser. But the point of these "future" things should be how to bootstrap OFF the current browser (technical AND content wise) mess we have today.

So no I'dont see eve giving anything of interest, I don't see it capable to grow into a network. If eve tries to "solve" programming I can't see it, I made some notes about other interesting approaches here: [https://gist.github.com/AndreasS2501/30ffda6d10b1c7ac53b1](https://gist.github.com/AndreasS2501/30ffda6d10b1c7ac53b1)

</comment><comment><USER31> Not going to lie I thought this was going to be about the Eve Online VR release when I opened it.

<comment><USER32> It's also strangely appropriate in the context of the article, given Eve Online is essentially space-themed Excel.

o/

</comment></comment><comment><USER33> Hey Everyone,

I'd really like to know what you think about our alternative to to something like Eve, but less low-level.

Well suited to typical database apps and workflows.

I'd really appreciate any feedback.

We've currently positioned it as a "Build your own CRM" but you can use it build any process.

[https://taskputty.com](https://taskputty.com)

There's a partial user manual here [https://taskputty.com/user- manual](https://taskputty.com/user-manual)

Which will give you good idea of the flavor of TaskPutty.

It's not for "build any kind of app" (like Eve is trying), just a fast way to automate any typical business process, drag and drop your own custom forms, drag and drop some rule logic.

Could also be a really nice CRM or process automation tool for any startup.

I'm mostly curious, do you guys think we should persist and build it out, or do you think we should pivot?

At the moment, it is positioned as a "Zero-code" tool.

We've applied several times to YC with no luck. We get a couple of signups every month, and have a hand full of paying users.

What do you guys think: full steam ahead, kill it, or pivot??

Andries

<comment><USER34> This is probably being downvoted because it's off-topic in the thread. You'd be better off making your own Show HN post that links to your site and then includes the above text as a first comment in the thread.</comment></comment>