HNHacker News
TopNewBestAskShowJobs

addcn

260 karma · joined March 11, 2017

building dev tools
submissionscomments
addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
We have a registry with a frontend coming soon.

You can also resolve them locally by putting them in your optic.yml file

You can add a skill and containing as many transformations and lenses as your want.

It’s explained at the bottom of these docs https://useoptic.com/docs/authoring/writing-skills

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
Thank you. You can find the code for that here: https://github.com/opticdev/marvin

The objective of the training is bootstrappig a prettier. String template (pattern in the code) for each node type.

So we can learn things like arguments are separated by “, “ but if the total # of chars of all of them is greater than X it’s more common to use “,\n”. Stuff like that.

We had LSTMs for a while but they performed worse than a decision tree with a few key features as input.

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
Great ideas. We’ve experimented with doing version migrations before and I think it’s definately something we will have good support for in the next several months.

If you haven’t read about our Optic Markdown it’s designed for what you’re describing. A team could specify their conventions and best practices in Markdown and Optic will use the example code in the generators.

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
JavaScript is the first language we have stable support for. I should have made that more clear up front.

Do you see any other areas this kind of tool would be useful? Happy to chat about our roadmap for supporting other languages.

Thanks!

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
Thanks! That's a really cool use case. We have another AI company using Optic for something similar and I hope they share their on their blog work soon.

If you can put together an example of the kind of code you want Optic to write for each module I'm happy to help you guys create Optic skills around it. There's also information in our docs on how to do this yourself. If you generated the routes with Optic you'd also be able to consume them easily and keep all your code synced as you update the input your models require.

How often do you find your team writing these microservices / tests?

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
All you have to do is pick an existing parser that works well and map the output AST to Optic's AST. I'm exploring building an Antlr extension so any grammar in their library could output in Optic's AST but that's still not implemented. Every AST have a notion of type, range, and properties which can either be primitives, arrays of child nodes, or individual child nodes. We have Python and Ruby on our roadmap for the next couple of weeks.

1. We've been exploring migrating one Optic skill to a newer version. So far it seems promising for the cases you'd expect a code-mod to help with, but if you completely change the API and deprecate some stuff it can point out the changes but won't be able to help you -- no magic here.

2. I looked into language servers (lsp) but the implementation was a lot more involved and I found bugs in some of the IDEs that claim to have full lsp support. As the protocol matures and we add more functionality to Optic I expect to see lsp become our main avenue for IDE/Optic interactions.

3. We wanted to make it really natural to ask Optic a question. We thought '///' would be unique and easy to remember, but we're open to changing it. It's nice that '///' also evaluates as a comment too because before we used it sometimes characters in your search would cause the AST parse to fail. We're open to any ideas here -- a lot of users have said it's funky.

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
So we created a markdown flavor called Optic Markdown. We want to meet programmers where they already write about code/styles instead of making them write templates in some dsl. Our markdown relies on HTML comment annotations (so they're hidden) to describe the important parts of a piece of code -- it's kind of like pointing out different parts of a snippet and explaining what they do.

We've been working really hard to build tooling around this because the first few versions were hard to learn/use. Would love to hear any feedback you have on the teaching process. We don't think Optic will take off until we get this just right.

https://useoptic.com/docs/authoring/writing-lenses

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
Our community built plugins for Atom, VSCode, Sublime, WebStorm & JetBrains. Someone started one for vim but it's still unfinished...hope it's done before emacs

All the plugins do is forward the state (col/row and filepath) to the local Optic server so they're usually <70loc. If you wanted to build support for another one we wrote a spec that all the plugin authors relied on during their development https://github.com/opticdev/optic-editor-plugin-spec/blob/ma...

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
Thanks! Appreciate you sharing your ideas. I started out in this space so I love the idea of solving some of these old problems.

Absolutely agree there are some meta-programming applications for Optic. It's always been difficult to build graphical tools that generate code -- everyone basically reimplements string concatenation / static analysis over and over again and then they can't handle even the slightest manual change.

Ideally visual tools would tap into Optic API to parse the code, display it, then press user changes back into code. This would allow users to add custom code as well and not break your abstraction. Our source of truth is code so there's no dsl or model saved on your end anymore.

KloudTrader looks great. Let's chat offline about your requirements and I'll make sure to document / open some of the functionality you'll need.

addcn··on Launch HN: Optic (YC S18) – Automate Routine Programming
Thank you! We have a common AST format we use as the representation of every language we support. You add new languages to Optic by writing a mapper from their AST to ours. It should work with pretty much any context-free AST. Here's what that looks like for JS https://github.com/opticdev/es7-parser/blob/master/src/main/...

We can't translate code between languages but we do the next best thing by moving the meaning of that code around. ie backend is Flask and frontend is JS. We can generate JS code that connects to the Flask API automatically.

Graal is pretty cool, and I'm happy to see a big org backing a polygot tool. I'm most interested in Truffle and looking into ways it can make Optic better. Have any ideas?

Thanks for catching the 404! I'll look into it ASAP

addcn··on Ask HN: Is anyone studying for technical interviews?
One unconventional tip for code challenges comes to mind. A candidate used it on me and it was worth a ton of points in my book.

Instead of just doing the challenge ask the interviewer what they want you to optimize for? Performance? Shortness? Readability? Maintainbility? Make it clear there are tradeoffs to each and that the tradeoffs you choose often matter more than the code itself.

As a plus you also get insights into what the company values.

addcn··on Ask HN: Pros and cons of working at a startup in 2018?
I've thought about the comp issue for a while and came up with a kernel of an idea for a possible solution. Most companies are going to fail which means that most engineers will see their options go to ~$0. The reason VCs make money regardless of this low success rate is that they have a better Beta due to the many concurrent bets they're taking.

It occurs to me that some kind of Startup PEO could be created to help give engineers a favorable Beta too. Startups would hire the PEO by granting them equity and paying the salaries of their team each month. In exchange the PEO would pool the costs for good healthcare and other benefits. They'd also provide placement services to help engineers in their program switch companies whenever they wanted.

Do damn good work and the shared fund will give you upside. You won't be rewarded for picking the winning horse anymore, but instead the quality of your work over years and across several organizations. I'm not going to pretend I have all the incentive management figured out, but I think there's something in there and an ORG like YC might be able to pull it off.

addcn··on Gitlab is not the only GitHub alternative
I caution the community against optimizing for continuity when there are so many other factors that come into play. Sure it sucks to change which tool you rely on every few years but that’s bound to happen anyway for one reason or another.

I mean it’s all Git so switching might take 20 mins a repo, but without some of the great features the most modern (often well funded) companies offer you might lose 10 mins or more a day.

It’s all up to you but I don’t value continuity as much I do productivity.

addcn··on Ask HN: Anyone Building Next Gen IDEs?
I've been working on an open source programming assistant[1]. We use ML to power two way code generation so you can use the tool throughout the lifetime of a project. Since it can read code as well as generate it there are a lot of cool things you can do like transforming one kind of code into another and keeping your backend/frontend in sync automatically.

We're part of the YC S18 batch. Happy to show you more

[1]: https://useoptic.com

addcn··on Reimagining the Code Generator
Hey All, I started working on an open source programming assistant around a year ago. Our goal is to automate tedious parts of programming so developers can focus their efforts on the most important and novel parts of their project.

The major technical barriers we needed to overcome was figuring out how to go beyond a one-shot generator to build something that was useful throughout the lifecycle of a project. I'd love to hear HN's feedback on the approach we're taking.

addcn··on Ask HN: Are you working on interesting technical problems?
I've been in and out of that boat for years. There's something about doing basic work that just drains creative people. I've found some solace in choosing projects that have a social good component associated with them -- CRUD that feels good. I think a big part of personal happiness is learning to shift your source of joy from actions to outcomes they lead to.

I'm also working on an open source programming assistant to help automate that kind of joyless work so developers can focus on the novel parts of their projects. Hoping it helps people like you get back to what you value. https://github.com/opticdev

addcn··on Ask HN: Time management strategies that made the greatest impact on productivity
I find that measuring has a huge impact. Download the Hours app for iOS and make timers for work, family, working out, food, etc.
addcn··on Ask HN: What is your favorite website for posting code snippets?
Yes that's interesting. One thing that's always dogged me is that you can't really encapsulate snippets the same you can code.

For instance - it's easy to find a snippet for Quick sort, but if I want to add a user system to an app (something just as standard), that's like 30 snippets and across 4 files and it might not work.

addcn··on Ask HN: What is your favorite website for posting code snippets?
Related question: what are people looking for in these tools? Anything feel like it's missing?
addcn··on Abuses Hide in the Silence of Nondisparagement Agreements
See above ^. Thanks for the offer, but please do what you think is best. I'm not offended and maybe someone learns from our back and forth
addcn··on Abuses Hide in the Silence of Nondisparagement Agreements
Thanks for both of your comments. Can't reveal much, but I do want to clarify. We never took a cent more than the money we had paid for the agreement. As I said we dropped it as soon as it became clear to the party they wouldn't win.

As for why...I ask myself that everyday. They wanted their options quadrupled and we wanted to fire them immediately, but their medical condition came out and that made it difficult to do anything for HR reasons. Honestly it was a perfect storm.

Hardest weeks of my life. Recognize that. Too often the corporate guy is the big bad wolf until proven innocent. More often it's just a consequence of having to make decisions with people's lives. In this case it was between bad and worse. Not a day goes by that I dont think about that person. But if we hadn't been able to stop them in court they may have hurt 100s of our employees, customers and investors. I mean, a scale of human destruction orders of magnitude greater than the damage to themselves. I don't think any humans are more valuable than others. As a consequence of that I'll do morally difficult things to benefit 100s at the expense of 1.

addcn··on Abuses Hide in the Silence of Nondisparagement Agreements
As someone who has regrettably had to use one of these, I can say I'm happy they exist. They are certainly abused so we had a policy of only using them as part of a legal settlement.

We had someone who became mentally unstable on staff and they mounted a full on campaign against the company online whilst still employed. This included impersonating executives, other employees and key customers on social media and other things meant to damage our image. They got a sum ~30% of their annual salary and we got a non disparagement agreement. They were let go as part of that. 1 month later they were at it again and we were able to get our money back. Right before it bankrupted them...guess what stoped happening. We dropped it without taking a cent of their money (we wouldn't actually do that) Hasn't been a problem.

They can be absused, sure but there are legitimate uses too.

addcn··on Show HN: Codeblox.io – Connect your code with anyone else's via drag and drop
Alan - nice work. I'm impressed with easy encapsulation being included in this on day one. I follow and have also built developer tools at the last 2 startups I've done. People often forget that part but it's really what makes the whole thing scalable IMHO.
addcn··on Codota AI Pair Programmer
What are people's impression of these kinds of tools?
addcn··on Hackers Are Hijacking Phone Numbers and Breaking into Email, Bank Accounts
Wouldn't the easiest solution be to use a landline and use the call options for 2f? Physical access to my home is root access
addcn··on Q – Initiative to build commercially available universal quantum computers
IBMs Mo seems to be jump onto new technologies with name recognition. Make BOLD claims they can't back up. See Watson. See Q. See IBM Blockchain.

This only serves to build distrust with developers but I bet their investors love it, but only since they don't understand it

addcn··on Show HN: Gitorials – Tutorials as Git Repos
With a business like this it's more important to make it easy on the content providers than optimizing the user experience for consumers.

At some mass the algebra changes and it's all about making consumption seamless.

This is the right direction. I encourage the author of this to really think about the experience of making the tutorial for the next few months as the business grows.

addcn··on Interested in joining a support group for founders?
I joined EO a while ago and found the monthly forum to be a very helpful cadence.

It's good that people are really speaking out about founder emotional and mental health. Congrats on the new venture. Sign me up and always happy to help.

addcn··on Ask HN: Best way to equalize founder stakes 2.5 years in?
So everyone here is right, you can issue new shared no problem at all, BUT no one has mentioned tax implications.

If you gift someone shares they have to count them as income. On day 1 when you valuation is arguably $0 this is NBA. 50% of $0 = $0 but today 10% of your business at a conservative 5x multiple is closer to $200k. Might be more, might be less, but that's income and your partner needs to pay taxes on it.

This could be the worst/best gift they receive. Typically what you're describing is done with stock options. That is, granting him the right to buy shares at a future date at a fixed (low price). No matter what people tell you options != equity. You can approximate what the right number to give him are but it'll never be the same as having 50/50. If you want to give him 50% you should issues shares, but make sure you give him a big cash payout (hint: also taxed!) so he doesn't end up underwater.

addcn··on Experimental: Syntax AI with React.js
Well I hope it can be made easier to digest. We've all but confirmed at this point that the knowledge needed to build an effective programming AI is not available in any corpus of source code. There's a lot of information brought out in runtime and understood by humans that's critical to the learning. Without strong collaboration between both humans and bots nothing practical will come of any of these efforts.
← PreviousPage 3 of 4Next →