HNHacker News
TopNewBestAskShowJobs

mleonard

72 karma · joined November 8, 2016

submissionscomments
mleonard··on Google Kubernetes Engine is introducing a cluster management fee on June 6
I appreciate that. Thanks for being available on hackernews and helping relay feedback.
mleonard··on Google Kubernetes Engine is introducing a cluster management fee on June 6
Additional comments: You could limit the number of nodes in the always-free-tier clusters. Above n nodes the free tier clusters aren't free.

With the new pricing, I can't choose to use GKE instead of app engine/cloudrun and get the same availability (by this I mean multiple zones) without having to pay for both the nodes and the new control plane cost. Those managed products run over multiple zones in a region. It's disappointing that even just one multi-zone cluster is charged. I'd be very happy to see you include at least a single multi-zone cluster control plane in the free tier.

mleonard··on Google Kubernetes Engine is introducing a cluster management fee on June 6
It's a good program. I'm currently in the stage one step before that program. Would your team consider tweaking the pricing as I mentioned, with the goal of helping early stage startups choose GCP? GKE/kubernetes is increasingly not just for big enterprise. Personally I find GKE as easy as app engine or cloud run but much more future proof and more flexible/powerful... the real heart of a GCP to rival AWS. Just this week I set up Config Connector to provision a global load balancer and other GCP resources used by two clusters. An always free tier of two or three (ideally multi zone clusters) would I think go a long way to earn the trust and belief of many devs and early stage startups. As would coming back in the next few days with tweaked pricing based on community feedback.

Edit: Additional comments: You could limit the number of nodes in the always-free-tier clusters. Above n nodes the free tier clusters aren't free.

With the new pricing, I can't choose to use GKE instead of app engine/cloud run and get the same availability without having to pay for both the nodes and the new control plane cost. Those managed products run over multiple zones in a region. It's disappointing that even just one multi-zone cluster is charged.

mleonard··on Google Kubernetes Engine is introducing a cluster management fee on June 6
Very disappointed. Not by the price increase per se... but by the lack of a reasonable 'always free tier'. I think you should strongly consider tweaking the pricing to provide one or two or three multi-zone clusters for free instead of one single-zone cluster. Let us see the power of GKE without the extra charge and grow on your platform. This would allow new companies to choose gcp over aws/azure and start out with a proper highly available cluster or two/three in different regions and grow to more clusters over time. With the new pricing you're forcing them to choose between a single zone cluster or $70 per month per cluster (or another cloud). Please consider tweaking the new pricing to enable a lower price ramp up for newer companies... why not offer three multi-zone same-region cluster for free and then charge more established enterprises using more than 3 clusters? I appreciate the money is in the big customers... but why scare away the small customers who want 1-3 highly available clusters behind a gclb to provide higher availability and lower global latency. The mindshare of developers will move away from gke if you're not careful... both to aws/azure and others like DO kubernetes.

I believe the community is keen to engage with you on this based on the comments in this thread. If your team would like to talk to a disappointment (very small but hoping to grow) customer I'd be happy to jump on a call. I hope others here would be happy to do the same.

mleonard··on Miranda released as free software
Anyone know of any available-online courses that teach functional programming using Miranda?
mleonard··on Go 1.14 release notes
Hey. Interesting blog post! Quick bit of feedback for you... I find the code snippets quite hard to read on mobile as the lines wrap. Could you enable horizontal overflow scrolling do you think? overflow-x:scroll
mleonard··on Show HN: Ciid – Chronological Image Identifier, Written in Rust
Great idea! I didn't know I needed this :)
mleonard··on Show HN: A free landing page builder to launch your next creative project
Hi Nathan. Congrats on the launch of the page builder!

I was looking through the css of the 'abbey' page https://demo.ck.page/abbey and noticed a problem: the spinner doesn't show correctly on the submit button. More specifically, it does show, but the word 'Subscribe' is over the top when it should be hidden, so you can't see the spinner properly. The problem is an easy fix, it's just a small misalignment between the css selector and html structure :)

mleonard··on Show HN: Mobile Self Checkout with QR Codes and NFC Tags
Cool idea best of luck with it!

I haven't seen the QR code design on your homepage before. Did you custom make it yourselves? If so, could you share any links on how to do that? I have a QR code education app idea and I'd like to explore if it's possible to make more visually appealing branded QR codes :)

mleonard··on Show HN: World's Biggest Crossword App
Just sent it to my crossword loving grandparents :)
mleonard··on Single-page app – an undervalued website performance booster
I was using Chrome on Android (Pixel 3a) in case that's helpful :)
mleonard··on Single-page app – an undervalued website performance booster
When I click a link far down in the article, read that for a bit, and then hit the back button I find it quite jarring that I end up back at the top of the original article rather that where I was. See if you can store scroll position on navigation.
mleonard··on Show HN: Unifrost – Stream PubSub Messages to the Browser
You mentioned Twitter uses server sent events. Do you have a link you car share about that? I'm interested in learning more about how they use SSE.
mleonard··on Apache Guacamole – Clientless remote desktop gateway
Interestingly Ctrl W can actually be captured in Chrome now (on desktop) if the application is fullscreen and they make use of the keyboard lock API. I'm away from my desktop at the moment - can you try it on Chrome? (if you were using another browser). If it doesn't work we should file an issue and suggest they look into the keyboard lock API!
mleonard··on Graph database reinvented: Dgraph gets $11.5M to pursue unique, opinionated path
Working on standardising dgraph's graphql? Or working on a managed cloud version?
mleonard··on Oh shit, git (2016)
Thanks really very helpful!

When you hoping to have git restore in the official git release?

mleonard··on Ask HN: What overlooked class of tools should a self-taught programmer look into
Your other top CS book out of interest?
mleonard··on Oh shit, git (2016)
Hi. Interesting to know thanks!

Would you mind giving the current commands to achieve the three things you just listed?

That way I learn the future restore command along with the current approach and you description. T

mleonard··on Soul – A language and IDE for audio coding
Cool :)
mleonard··on Soul – A language and IDE for audio coding
Thanks. Just clicked through to the ChucK site.

For anyone interested apparently there's a free MOOC in may: https://www.kadenze.com/courses/introduction-to-programming-...

And a TED talk: https://www.ted.com/talks/ge_wang_the_diy_orchestra_of_the_f...

mleonard··on Soul – A language and IDE for audio coding
Hi. Quick fly-by suggestion for you: look into the language server protocol by Microsoft if you haven't already.

In the golang community for example Google has recently decided to build and officially support a language server (called 'gopls'). How it works: You build a language server once and get features like typecheck errors, auto complete, go to definition, code peaking, documentation on hover, etc... in all editors/IDEs that support the protocol.

LSP Website: https://microsoft.github.io/language-server-protocol/ Recent golang talk: https://youtu.be/bNFl7HcyDao?t=354

mleonard··on Soul – A language and IDE for audio coding
Hi. Great talk. Basically introduced me to audio development! Given you're experience and the future you're talking about with Soul or a similar language being how audio development is done... what resources and approaches would you recommend someone completely new to the domain study?
mleonard··on Principles and Techniques of Data Science
Me too. Thanks for replying.
mleonard··on Principles and Techniques of Data Science
The data-8 videos are online. Are the data-100 videos online too? Thanks.
mleonard··on Cadence: Uber's Workflow Orchestration Engine
The way I think about workflow engines is as follows. Please comment and correct me. Keen to discuss.

Workflow engines like Cadence essentially work by letting you write regular-looking procedural logic for your workflow. This looks and feels very much like writing an async function with async-await in javascript or C#.

The state in your workflow is then implicit in your code instead of explicit. Here's what I mean by that:

Usually you would explicity serialise your state between each incoming event and do an atomic-compare-and-set operation on an external database to store the new state.

For a new incoming event: (1) fetch the state, (2) marshal into an object in your programming language (ie a java class or golang struct), (3) given the current state, process the event and perform any external actions like sending an email. These external events need to be ok with being done with at-least-once semantics. Update the state object ready for the next incoming event. (4) serialise the state, (5) store the state in the database (atomically update with a compare-and-set operation). (6) Repeat on each event. Do everything with at-least-once repeat-on-failure semantics.

In a workflow engine like cadence, what is persisted to the database is the entire history of events instead of a single state object as described above.

In Cadence the code you write looks very much like async-await style code in languages like javascript or C#. The workflow logic is in some sense an async function that pauses at await statements and picks up again where it paused when the next event comes in.

Remember that cadence stores the entire history of events for a workflow. It does this so that it can rerun the workflow from the beginning, this time with the new incoming event on the end of the history.

Notice that you need to be careful about your workflow being deterministic.

Optimisations: (1) it knows when it is replaying already-seen-events and doesn't redo external events such as sending emails. (2) it tries to resend events to the same worker node each time. It caches events at worker nodes. (3) at the macro level everything is highly-available and repeat-on-failure-with-backoff to ensure progress and at-least-once-semantics. (4) it supports repeating workflows and child workflows (5) monitoring, tracing, other things you'd expect (6) etc

Importantly: notice that there is still in some sense a single state object. The state is just implicit: it is deep down in the internal state machine of the language you wrote the workflow function in (java, golang). Instead of serialising state such as 'time-since-last-email' in a state object to a database... you have 'time-since-last-email' as a local variable in the scope of the workflow function. Similarly your programming language is tracking the call stack and current execution position of the function... normally you'd keep track of progress through the workflow in the state object and condition on this state when receiving a new incoming event.

Thinking about state as explicit (state object approach) versus implicit (replay-history approach) helps me when thinking about cadence and similar workflow engines.

....................................................... Thanks for reading so far. I'd love to hear from users of cadence at uber or elsewhere:

(1) why do you choose to write workflows with implicit state (by replaying history) instead of storing the state explicitly as a serialised state object in the database?

My guess: developer productivity of writing and maintaining the workflows. Having a common approach and single observable system for many different workflows.

(2) how do you reason about long-running workflows where the business logic needs to be updated? Would this not be much easier if the state object (say a serialised protobuf) was stored explicitly in the database?

(3) wouldn't non-determinism be much easier as well if you stored the state explicitly?

mleonard··on Cadence: Uber's Workflow Orchestration Engine
Hi I watched the Cadence talks and read through the golang code a while back and love what you're doing with cadence. Really glad to see you're moving from Thrift/TChannel to protobuf/grpc - that was a blocker before.

If anyone could help me understand the following I'd appreciate it...

I understand that the event history is cached at worker nodes and the whole history of events is only delivered to workers if needed (ie if out of cache) and that normally cadence manages to deliver events for the same workflow to the same worker.

My question relates to what exactly happens within a single worker process.

On each new event, does the worker process loop through all events in the history - starting from the beginning - in order to get back its internal state, and then process the new event, and then shutdown ready to repeat this for the next event.

Or... does cadence keep the internal state around by keeping the goroutine alive waiting on a channel midway through it's workflow logic and waiting for the next event to continue execution.

Thanks

mleonard··on JSON to Protobuf?
https://godoc.org/github.com/golang/protobuf/jsonpb
mleonard··on Teaching rigorous distributed systems with efficient model checking
Anyone know if the solutions and/or lecture videos are available? After a quick search I think the answer is no but thought I'd double check.
mleonard··on Traffic Director: Traffic management for open service mesh
Can someone tell me what is the pricing going to look like? Will it be utility-like pricing (like the load balancer for example) or a larger enterprise price (like spanner, big table etc). Thanks
mleonard··on Cloud Run – Newest member of our serverless compute stack
Great good to know. Thanks.
← PreviousPage 2 of 3Next →