Lucidchart's engineering team writes about programming topics such as null, TypeScript migration, HTTP/2, JSON, and package management.
HN mostly mentions Lucidchart as a diagramming tool that commenters like; a company engineer also discusses diagram needs and monolith lessons.
Salt Lake City, UT -- Lucid Software (http://www.golucid.co)
Lucid Software is building world class graphical applications in the browser and on mobile devices. Our first product, Lucidchart (http://www.lucidchart.com), is an online diagramming application with 1M+ users. We recently launched our second product, Lucidpress (http://www.lucidpress.com), which is an online layout and design application.
Lucid is a startup founded by Karl Sun, a former Google exec, and Ben Dilts, our CTO. We're profitable and rapidly growing in every dimension of the business and need people to join our team. For fun we raft river rapids on company retreats, have Friday BBQs, and eat lots of pizza. Talent and ability to learn are more important than specific skills.
BACKEND SOFTWARE ENGINEER (all experience levels) -
Lucidchart and Lucidpress run with various decoupled services in a Linux environment using Scala, MongoDB, AWS, and MySQL. At Lucid your responsibilities would include enhancing existing services, building new services, integrating with 3rd party applications and ensuring services are highly available, secure, and scalable.
Requirements: - Talent - BS degree
Recommended experience: - Building large products / applications - Scala or Java - MySQL or other relational database - NoSQL databases - Cloud computing (AWS)
FRONTEND SOFTWARE ENGINEER (all experience levels) -
Lucidchart and Lucidpress are powered by one of the largest Javascript codebases on the Internet (about 250k…
> 1. No citation needed. I can take rust and do unsafe things in it. I can’t in a GC language. Rust allows you to use unsafe.
That's not what you originally claimed though. You made some claims about 'risk of future unsafety' and I'm not sure what that means?
For the second half of your claim, Rust's safety guarantees extend well past memory safety - and a collector doesn't guarantee memory safety at all. Yes, most GC'd languages are memory safe too. However, you can just strap the Boehm GC to C or C++ [2] and that doesn't suddenly, magically, make it memory safe.
> 2. No. It is not at the expense of safety. Again, Rust allows you to do unsafe things using the “unsafe” keyword. GC languages simply will not allow it.
Safety means a lot of different things. GC isn't a replacement for safe Rust. Rust offers many kinds of safety, memory safety is just one. And yeah, unsafe is a tool for implementing certain things that cannot be expressed in safe Rust, but it's extremely rare that you would dip into it in production code. It's more for library authors who wrap unsafe APIs in safe ones.
If you're curious what 'safe' rust really means and why the GC doesn't subsume all its features - and the difference between safe and unsafe Rust - I'd recommend [1].
> 3. Strong reference counting memory leaks is not easy to track down. Many embedded systems have been taken down by them.
Sure in embedded it can be hard, but on a PC you can just use valgrind or the leaks tool. If you're…
Salt Lake City, UT - Lucid Software (http://www.golucid.co)
Lucid Software is building world class graphical applications in the browser and on mobile devices. We're currently looking for experienced software engineers to take our two products to the next level. Our first product, Lucidchart (http://www.lucidchart.com), is an online diagramming application with 5M+ users. We recently launched our second product, Lucidpress (http://www.lucidpress.com), which is an online layout and design application. Lucid is a startup founded by Karl Sun, a former Google exec, and Ben Dilts, our CTO. We're profitable and rapidly growing in every dimension of the business and need people to join our team. For fun we raft river rapids on company retreats, have Friday BBQs, and eat lots of pizza.
BACKEND SOFTWARE ENGINEER (experienced) - Lucidchart and Lucidpress run with various decoupled services in a Linux environment using Scala, MongoDB, AWS, and MySQL. At Lucid your responsibilities would include enhancing existing services, building new services, integrating with 3rd party applications and ensuring services are highly available, secure, and scalable. Requirements: - Talent - BS degree Recommended experience: - Building large products / applications - Scala or Java - MySQL or other relational database - NoSQL databases - Cloud computing (AWS)
Apply here: https://hire.jobvite.com/j?aj=oa2cZfw7&s=Hacker_News
FRONTEND SOFTWARE ENGINEER (experienced) - Lucidchart and Lucidpress are…
Salt Lake City, UT. - http://www.lucidchart.com
LucidChart is an HTML5 diagramming application that proves web apps don't need to be pale imitations of their full-featured desktop counterparts. Real-time collaboration and full versioning history aren't our only advantages; users tell us they like LucidChart because it's faster, easier, and smoother than Visio and Omnigraffle.
We need great engineers who want to work in a Silicon Valley startup, but would rather live 15 minutes from the ski resorts in Utah. We have one of the largest Javascript codebases on the Internet supporting LucidChart's client, and are using Scala, PHP, node.js, MongoDB, and MySQL to power our servers. Experience in one or more of these areas is helpful, but we're most interested in people with inhuman problem solving skills.
We currently have 14 full-time employees, including 8 engineers. That ratio reflects the focus of our organization -- we are a software company, and we live or die on the strength of our engineering team. We think we have the strongest engineering team in Utah, and want to add at least 3-5 people this year.
All hires are made by unanimous decision of the current team. If you join us, you can know that everyone here wants you here.
Send resumes, github profiles, or whatever else might be relevant to jobs at lucidchart dot com.
Yes, in the following cases:
1. for non-trivial business logic which is confusing/unclear
2. when I need to explain or present it to others
3. when I need to explain it to myself (similarly to Rubber duck Debugging [1])
4. when starting working on a new codebase, especially if it's poorly-documented and/or legacy
Also, you don't need to create flowcharts for the entire program/application, only for the difficult parts. Likewise there is no need to document the non-functional parts, i.e. stuff done by the framework or common libraries.
BTW: flowcharts are less useful in general and can be easily replaced by pseudocode. IMO the most useful diagrams in Software Engineering are MSD (Message Sequence Diagrams), then Call Graphs [2] (sometimes can be created automatically with profilers/intrumentation/tracing tools), then dataflow diagrams.
State Machine diagrams and ERDs[3] are also useful when applicable.
--
1. https://en.wikipedia.org/wiki/Rubber_duck_debugging
2. https://en.wikipedia.org/wiki/Call_graph
3. https://www.lucidchart.com/pages/er-diagrams
Google did a bit of work on converting Closure annotated JavaScript to TypeScript. It's called Gents and it's part of the Clutz project https://github.com/angular/clutz/tree/master/src/main/java/com/google/javascript/gents
We used it at Lucid when we converted our codebase from Closure annotated JavaScript to TypeScript. https://www.lucidchart.com/techblog/2017/11/16/converting-600k-lines-to-typescript-in-72-hours/
Google has support for using TypeScript in Closure annotated JavaScript via Clutz: https://github.com/angular/tsickle
It also has support converting TypeScript to Closure annotated JavaScript via tsickle: https://github.com/angular/clutz
Before we converted all of our codebase to TypeScript we used both Clutz and tsickle. It was complicated to setup, but it worked. Now we just use tsickle. It's great to get the optimization of the Closure Compiler while using TypeScript.