Do things, tell people (2012)
carl.flax.ie
carl.flax.ie
I wrote this article a little over a decade ago, when I was still in college, and I knew almost nothing about the world. (I still don't, but I didn't then, either) It's fun to see that it still resonates with people despite the naivety and the slight sense of "I am headed for success" that makes it hard for me to re-read.
My initial reflection on the article was that I had fallen off the "do things, tell people" wagon a little bit, having let go of my twitter account and with it much of the easiest path to doing things and telling people. I still work in tech but I haven't created anything I'm particularly excited about in a good while, so I felt that I was failing my own ideal.
Then, of course, I remembered that I hiked all of Ireland's long-distance trails (https://toughsoles.ie) and have a reasonably successful, if niche, youtube channel (https://youtube.com/toughsoles). Funny that my mindset, especially regarding this article, is so tech-focused that I automatically discount something I've been doing for five years.
All that said, I'm starting to look for new opportunities in the larger-than-startup space. Shoot me an email at carl@flax.ie and let's chat.
Seriously though, I like your advice, I am someone who thinks the same way. I have artistic daughters that I have tried to instill this in since they were young. Publish or perish is another way I put it.
Or it will manifest itself as, "Got a good idea for a novel or video game? Cool, write it. Because you better believe that nearly everyone you meet every day also has a great idea for a novel or video game (or movie, etc.). The difference between Ray Bradbury and everyone else is that Bradbury sat in front of a typewriter every day." (It's possible too of course that Ray had some pretty good ideas though that not all of us had.)
That also points to the sad reality that I have found (now in my 50's BTW, no college undergrad). So many people are not motivated to "do",
I think that first came home to me when I was writing shareware games and sending floppy disks of the source code to people that would write me (send me a check).
My thought was that, having been handed compilable sources, each one of these people would have read the code, gutted it, refactored it, added their own art/sounds and started putting out their own games. That it was just the "how to" they were missing.
Not so as you might (now) imagine. Taking that step to create really is a difficult one for a lot of people. Further, going beyond "demo" and adding scoring, game completion, configurable controls, high scores, about box.... Very few put in that extra (and frankly tedious) effort.
This is the smallest feedback loop of intentional development.
Damn, you’re good.
As an avid hike, Ireland was not in my bucket list. will definitely add it to the list.
The best career results (promotions) I have seen came from people who built a prototype of some sort then evangelized it, even if it wasn’t necessarily a complete product, often just a good prototype.
First example: This guy took the Intel Edison and built a pretty cool project and brought it to our maker faire events. He ended up in conversation with the CEO of some company and ended up landing a $500K exec job. Just from building a skateboard hack and trying to tell people about it.
Second: I knew a guy who built this neat prototype of a compute service and then did a keynote talk at a Meetup. It didn’t really work as a product but the website was convincing. It was enough to “get bought” by a major tech co and land him a CTO job.
Another time I saw a guy leave a FAANG and build a compelling IoT type project in three months. Again, he ended up with a CTO level job after a few months.
My take away is if you want an executive job, build something somewhat cool, even as a prototype, and go try to sell it for real. Even if you don’t raise any money or make it work as a business it is often way better than submitting resumes.
There is something much more powerful about creating something that generates a lot of engagement and conversation, even if it is only half baked but looks decent and your storytelling is compelling.
This isn’t interviewing it’s auditioning.
I asked around some ex-colleagues and as far as anyone knew, all they had were some fancy PowerPoint decks and a very rough implementation in PHP.
After getting bought, everyone still continued doing the same old body work jobs, except now for the parent company’s other subsidiaries. The website still mentions blockchain.
Fake it till you make it.
It wasn't like the investors were really even being scammed, because nobody could succinctly articulate why blockchain was better for these particular use cases in the first place. All I ever heard was some marketing speak that sounded like it was from a markov chain generator, but it apparently had the effect of hypnotizing investors so they'd add a few zeros to the end of their checks.
- Crypto / Blockchain / NFT / Web3
- Machine Learning / AI
- VR / AR / XR / Metaverse
- Cloud / Serverless / Microservices
- IoT
- Big Data
- Quantum Computing
- SaaS / IaaS / PaasNon-tech people don't know what it takes to make a blockchain viable, but they do know that you have to have licenses to operate a FinTech company.
I would class that story as deception.
Yeah, sure, I'll get right on that
On top of that, it's idyllic to imagine their tech skills were the only reason these three people got the great job. Did their class and heritage line up at all?
I really dislike this argument. Surely, the world is not that simple and there are many variables into ones success (and failures).
However, what is there to be gained by attributing their success to all the forces that they can't control.
Instead, take it as it is. A story, from the perspective of one person, that you may or you may not learn from.
We become better by sharing with the collective.
Supposing for a moment that there is truth to what the parent comment says, we would gain a better knowledge of how the world actually works instead of perpetuating old myths.
That said I agree with GP, there is not much to be gained from focusing on systemic biases. Just because a narrative is truthy does not make it definitive; the map is not the territory and all that. As an individual focus on what you can control and you have the possibility of achieving outcomes unique to you.
What were the factors involved in ones outcomes? - Was it his "class"? - Skin color? - Family connections - Country? - Education? - Genes? - Moon's gravitational pull? - A butterfly flapping's it's wings?
Not saying it's not relevant, i'm saying it's not practical. If there's any lesson to be learned from the story, it's definitely not from the X factors that cannot be controlled.
The only outcome of such discussions would be to complain.
Speaking of perpetuating myths, people attributing the success of other people to anything else other than competence would be up there.
If you wish to ignore these things, that is entirely your prerogative, but your thesis isn't convincing.
I didn't mean to say, don't try unless you're a certain race. I tried to say, understand the factors that work in your favour and the ones that don't.
Implicit in this argument is that you need to build the right thing and talk to the right people.
I've been to industry events where I've seen people give "career limiting" presentations on something awful they've built. And I've seen great people stuck in a corner with the worst kind of industry fraudster.
Sure, you've got to kiss a lot of frogs to meet your prince. But you also have to remmeber that you might end up kissing a poisonous one in the meantime.
It's only survivorship bias if you're talking about an unrelated factor that doesn't have any influence on the outcome.
Which is basically the process of gradient descent, aka learning!
Your argument is that it is necessary.
My argument is that it is not sufficient.
These are two different arguments.
> Implicit in this argument is that you need to build the right thing and talk to the right people.
Implicit in this argument is that if you build nothing and tell nobody, you chances of building the right thing to show the right people are 0
> I've been to industry events where I've seen people give "career limiting" presentations on something awful they've built.
Well of course. What you can't see are all the people who build nothing and told no one. Because they do not present.
> And I've seen great people stuck in a corner with the worst kind of industry fraudster.
Easy workaround: Don't try to defraud people.
As for your last point, how can someone tell if they're talking to the right person?
Sure. I don't think the author would claim that this approach is the only way to get noticed and/or a job. I certainly won't. But this one is cool, because at the very least you did something and you honed other important skills along the way.
> As for your last point, how can someone tell if they're talking to the right person?
What I meant and could have made clearer was: As the ones building and showing, it's entirely our choice to be honest about it. When it comes to spotting someone who is not, having more experience in doing and showing also helps on that front.
Some people have circumstances or attitude where they prefer to get paid to build things. One can find oneself in demand by being good at networking, a capable and creative engineer, able to work autonomously, a good communicator and a pleasure to work with. I know some people like that.
If we are talking about valuable hires landing jobs, relevant qualities seem completely orthogonal to the inclination of building things as a hobby—if anything, the latter may imply a degree of unsustainability and/or tendency to flaunt responsibilities if it results in neglect of one’s personal life or previous job.
I've just been so tired trying to feed + shelter myself and escape abuse that my building urge was completely extinguished until the last year.
I always beat myself up for it, but it turns out that I just couldn't get into the flow state needed to build things when I was constantly stressed-out, hungry, cold, and scared.
Not to take away from people building things - I love seeing what people come up with! It's just a pleasure to know that not everybody will consider those decades as me being lazy.
Took me way too long to realise this, at least first two failed companies were as a result of over indexing on product. We do not have perfect market intelligence and inexperienced entrepreneurs most common mistake is relying on how good their work / product / service is. It's a business killer as not enough customers will ever find it.
It actually makes more sense to build distribution first, so that your product (however good or bad it is) gets an opportunity for as much exposure as possible. Somebody will buy, if enough people see it
Distribution explains Meta's and Google's powress (in the consumer market), that's literally unmatched right now.
Distribution ("Install Chrome" prompts on the Google homepage) is how Chrome rose to dominance, and distribution is why Google pays Apple billions to be the default search engine on iOS.
The other 3Ps (product, price, positioning) [0] of the marketing mix matter too (more so for consumer-grade products than enterprise where sales is takes precedence), but of course distribution (place) is king.
How would you say that's the best strategy to build this distribution?
This is full time for me though, so the above approach may not be suitable for everyone. The idea of building audience though, is relevant no matter what you do
A couple decades ago I made a Tarot deck. https://egypt.urnash.com/tarot/ Sadly you can’t get a copy right now, I really need to get a reprint happening. It’s got spot gloss on the cards so that’s kind of complicated to do.
Then I went on to draw a comic book about a robot lady dragged out of reality by her ex-boyfriend. https://egypt.urnash.com/rita/ It managed to get cover quotes from Phil Foglio, Charlie Stross, and Peter Watts. You can buy a copy of the printed collection if it tickles your fancy.
Now I’m working on a space opera comic. https://egypt.urnash.com/parallax/ It’s still in progress, you can’t buy a copy. But you could support me on Patreon if you have a lot of money from your software job.
I don't know if it is the blocker but makeplayingcards.com has a `high gloss` finish and does print on demand.
Finding places that does it can be tricky. I remember going down this road a few times in the past, too.
Writing about software I’m building, errors I run into, and situations I get into (and often stumble through) has been huge for my own development and my career (https://vadosware.io).
Doing this has led me to habitually bite off more than I can chew which seems to be the only way to really grow:
- A managed services provider for smaller clouds/infrastructure providers called NimbusWS (https://nimbusws.com), which came out of all my blogging about Hetzner and kubernetes.
- LoginWithHN.com from how often I write about cool stuff on HN that was built for HN
- A salary sharing site for Accountants (https://nomorepizzaparties.com), which came about due to trying and investigating Baserow and NocoDB.
Outside of tech there’s awesome collectives like MoonMusiq (https://moonmusiq.com/), a collaboration of musicians that I was made aware of via HN actually -- its obviously an outlet for people to do these two things, in that order. Make cool shit, share it.
Looks like you’ve just given me my next rolling TODO item. Somehow I don’t think it’s even occurred to me.
For now please use google search with site:vadosware.io :
https://www.google.com/search?q=site%3Avadosware.io+YOUR+QUE...
[EDIT] for those like me on the DDG default train:
https://duckduckgo.com/?q=site%3Avadosware.io+YOUR+QUERY+HER...
The same principle applies to a startup/side-project. At supabase we call this “ship and shout”, which is about as simple as it sounds (Ant wrote about our full “process” here: https://supabase.com/blog/2021/11/26/supabase-how-we-launch )
The other one that took us some getting-used-to was being repetitive on platforms with a short “half-life”, like Twitter. It made me uncomfortable at the start since the general advice is that “reposting is annoying”. But any given tweet probably reaches only 1% of the audience i thought it would, so not many see the repost. Sometimes we will talk/tweet about something we shipped months ago and we still have developers commenting that they just learned about it from the tweet.
But since they don't tell people, they often end up building useless shit. I've experienced this a few times when I spent weeks or even months working on a feature, then showing it to customers, and realising that they don't get it, or that it doesn't fix their problems, etc. I try not to get too attached to my ideas, so if something doesn't work, I throw it away and try a different approach.
So I think doing things and telling people after the fact when you are done is not going to lead to success. You need to tell people early, so you can adjust what you're doing to make sure it's actually something interesting.
So it is not only techies.
One of company owners for example did not understood market our company is in and mandated that we built in Stripe integration. Well it was useless burning of money and he did not read "do things that don't scale", where our market worked you have high touch sales and send invoices and no one ever signed for payments, I removed the code last year and we are growing with customer base.
> If you you don't have any marketable skills, learn some. It's the future.
> Then make something that you can talk about. Make something cool.
> Next, find events where the people you want to work with are.
> Then get a drink into you (or don't) and talk to them about it.
I might add a Henry Rollins quote at the end of "(then) say yes to everything but make it work for you."
Then maybe one final step of, get super lucky and keep trying until you cant anymore.
> If you you don't have any marketable skills, learn some.
This seems like "rest of the owl" where it leaves out a ton of critical steps. Become good at marketing is a lucrative career if you are good at it. So excuse me for being jaded when "learn marketing" seems as helpful to me as "sell profitable services". Sure, but how?
The post recommends Khan Academy, Wikipedia, and Code Academy. Only Wikipedia has info on marketing, but reading it is not the same as learning how to do marketing.
When I see the jib "they skipped a bunch of steps", it tells me that the person who received the advice needs to work on creating their personal learning system. Ideally, you feed your system a topic or idea, and it walks you through the exploration and work of understanding and applying that knowledge. It's not necessarily a piece of software. It can be a checklist, a journal, doodling on whitebords, blogging, whatever. Ultimately, all human knowledge is accessible through language. Whether that is true or not, if you act from that frame, there's nothing you can't learn with the right support and systems in place.
I think one of the keys here is that you can manufacture a certain amount of luck. Perhaps you've heard of the micromort[0] a fascinating statistical tool many countries use to determine how they spend money in healthcare. The general idea is to measure all activities in their chance to add/remove the probability of death even by very tiny amounts, this is applicable to luck.
When you go to a some event that's a networking opportunity, chances are nothing will come of it. You might go to a dozen with no good outcome but your lifetime chances of a good outcome go up once you decide to try to network, it's conceptually useful to think of these events as giving you a few points of "microluck", attending while following the author's advice even more.
Unfortunately I don’t remember who to attribute it to.
In the spirit of the post, a thing I did last year is build a minimal video editor (https://getrecut.com) focused almost exclusively on cutting out silence. And then lately I’ve been building a cross-platform version of it with Rust and Electron.
‘Round here a lot of people dislike Electron, and I kinda count myself among that crowd, so it’s been a fun challenge to build an app like this that defies the idea that Electron apps have to be slow. Turns out you can get a lot of performance out of it if you write most of the heavy lifting in native code, pay attention to the algorithms, make things cache-friendly, keep an eye on the profiling and optimize as you go. So far the Electron app is on par with or faster than the native Mac app, which is exciting to see! Hopefully I’ll have something out in the next month or two.
I started in 2017 and today I make all my money with technical writing and open-source development.
I haven't searched for clients in ages, everyone I currently work for approached me.
I wrote a book, but it's so much easier to write articles.
You get money after 4 pages of text, it's still marketing, and you usually make the same or more money with articles, depending on your rate.
But its really dented any marketing/sales skills, and now I wish I spent more time honing those (as I want to make some of my own things)
Don't look for opportunities, try to to become an opportunity.
Taylor swift didn't get the opportunity to make a record, the record company got an opportunity to make a record with her. Be Taylor.
If it's not your parents' wealth, it's your upbringing, or your genes, or the people you happen to know, or where you happen to live, or the time at which you come up with an idea.
Doesn't mean that the success is undeserved.
I figured to get in the spirit of sharing I'd share a little passion project I've been working on for sometime now: https://github.com/thebigG/Tasker
It's an app that allows you to accurately track your commitments via hardware hooks(audio, mouse and keyboard). The UI can definitely use some work, but figured some people might find it as useful as I do.
I tried building a break enforcing app once: Locks the screen. Asks you what goal you want to accomplish and how much time you need. Then unlocks the screen for the requested duration. I stopped using it because of the very issues you mentioned. Pure time based solutions just aren’t practical.
I am yet to find a small project I regretted sharing with people.
You spend weeks working on something that never leaves a GitHub repo. Then, 3 years later, you see someone else, implementing a similar idea and sharing it. "this could've been me, if I wasn't such a coward", "my project was better because of x and y", or: "I'll never get anything done in my life" are the usual types of rumination that kick in. I know will resonate with some of you.
So, now to keep myself in check I try to:
1. build toys, things that are too small to overthink them (https://sonnet.io/posts/reactive-hole/)
2. have a place where I keep intentionally shitty, unfinished drawings(important meeting notes): https://potato.horse
The point of 1) is to build things that just give me joy, they don't have to solve a particular problem. The point of 2) is to get more comfortable with things that are messy, broken. It feel more honest when I put unfinished doodles there. I don't care if people think they're ugly. (spoiler: people like my shitty drawings more than anything I try to make look perfect)
With 1 and 2 it's just easier for me to get things out there, talk to people, learn that besides some parts of HN or Twitter, people are more likely to be excited about whatever the thing you're doing is, instead of judging you. I wish I had this mindset 20 years ago.
----
[*] which is somewhat ironic as I used to train people in prototyping and love hackathons
I think it’s a nice post. Makes sense.
There’s probably a lot more to it, though. How we tell people is fairly important. I like the author’s self-effacement.
Some people are so good at "telling people," that they don’t need to actually do anything (but they still work just as hard).
I do both, but I’m not so good at self-promotion. I suspect that people feel that my "tell people" is empty boasting. I'm not a fan of the "humblebrag." If I say something, it's a fact; usually accompanied by links to resources that prove it. I won't make claims that I'm not ready to prove, but I will also mention what I can do.
I’m often told that I’m lying, or inflating, by someone that never even followed the link that I provided in my statement (that proved what I stated). Getting that from prospective employers, was infuriating, and a big factor in my deciding to stop looking for work. I don't like being called a liar.
I have three Twitter accounts (a personal one, and two corporate ones, for each of my companies), but I seldom use them. Social media is hard work, and I prefer to budget my hard work for the "do things." Pretty much all my social media interaction happens right here.
I don’t especially care, anymore. It’s bemusing to have someone hit me with an insult[0], where they could have avoided embarrassing themselves, simply by clicking a link. It’s amazing that we are so focused on attacking others, that we jump at every opportunity to do so. Not sure what it buys us. There was a post, yesterday, about the "tone" of HN. I haven’t been here long enough to know whether or not it has declined, but this joint is Sesame Street, compared to a lot of other venues.
I write about React (same as thousands of other developers) at https://maxrozen.com, get 10k readers a month now
I started an uptime monitoring service despite 200 others already existing (https://OnlineOrNot.com), getting around 75 users a month.
Now about to do the same with feature flags at https://deploywithflags.com - writing is everything.
I've been pushing https://concise-encoding.org/ for awhile now, and it's a LOT harder to attract people than it has been with my other projects.
Probably the nature of it is part of the issue. After all, who gets excited over a data format? The big security scandals recently have helped somewhat since people are starting to take security more seriously, and this format is all about security. But still, it's fighting against inertia, and the going is slow...
I can write text-formatted Protobuf in any text editor, convert it to efficiently encoded binary, and parse it in dozens of languages with both first- and third-party libraries. Protobuf also has a JSON encoding for use in browsers, an ecosystem of tools such as linters and formatters, and the continued support of a large commercial entity. For use cases where Protobuf is too slow, there is Cap'n Proto and Flatbuffers.
Why would I switch to your format, which seems to have extremely limited language support (Go only?), is significantly more complex (look at all those built-in data types!) and is supported by a single person?
1) It wasn't obvious what you are offering until I scrolled down to the examples. You stress that you offer something secure before you show what it is.
2) Why is JSON not good enough? I can also encode trees in JSON. What's the advantage of your format?
0. To me "data format" makes me think of things like PNG, or the DWARF debug symbols format, or the MPEG transport stream, not general purpose text formats like JSON and XML (I'm not a web person).
1. A secure data format. OK, weird. I thought it was always the programs/libraries that dealt with the data formats that were guilty of the security bugs, not the format itself.
2. All the bullet points under simple and efficient are already true for all the data formats I know/use/care about. So already I've dismissed your project as interesting - ie the "simple" and "efficient" are already solved and I don't believe "secure" is a real problem. But I'm aware I might be jumping to conclusions, so I keep reading.
3. I skipped straight to "Security - Protecting your data". I thought the sentence explaining why security matters was superfluous - your audience already knows why security matters.
4. "The existing ad-hoc data formats are too loosely defined to be secure, and can't be fixed because they're not versioned". OK, this looks like the meat. I click the link.
5. "There are many vectors that attackers could take advantage of when they control the data your system is receiving, the most common of which are induced data loss, field omission, key collisions, and exploitation of algorithmic complexity". If the data is from an attacker, data loss and field omission sound like good things - I don't want their data or fields because they are an attacker.
6. '"change user" command with a group of admin\U+D800'. I'm still confused. It still sounds like the "admin\U+D800" string is processed by my program. Your data format doesn't know whether that is a valid string or not. Telling your data format is no easier than telling my program. Oh! Maybe it is. Because you only need to specify it in the data format, not in every program/library that implements the format. Is this the point of the system?
I'm not sure what nomenclature I could use besides "data format" to describe what this is, any more than one could describe JSON as anything other than a data format...
The security aspect is where I'm having the most trouble communicating, because it's just not a well known issue. The problem comes from the different ways that codecs deal with the data they receive (for example Java Codec A vs Golang codec B vs Python codec C vs Python codec D, etc). If the spec isn't strict enough, a conformant codec could behave in ways that are insecure when coupled with other systems.
Security really does start at the specification, in that the spec has to define what a codec can and cannot do. For example:
"A codec MUST reject invalid characters. It MUST NOT truncate them or replace them with the Unicode replacement character".
A rule like this would prevent the admin\U+D800 vulnerability because a codec is not allowed to behave this way (truncating or replacing). With JSON, this isn't specified, so systems where the same data is parsed by multiple subsystems are vulnerable.
Specifically regarding the admin\U+D800 problem:
Any sufficiently complex system will have multiple subsytems.
So say you have a user-facing system that accepts a "new account" request in JSON. The attacker passes in "admin\U+D800" as the group (meaning the 5 character "admin" plus the unicode character D800, which is invalid).
Your account creator's JSON decoder ignores bad characters, so when it checks the group vs its blacklist, it finds that "admin\U+D800" != "admin". Validation passed, it sends the new user info to the account storage subsystem (as a JSON message).
Your account storage subsystem's JSON decoder silently strips bad characters, so your account subsystem only sees "admin", not "admin\U+D800".
Now this new user is an admin, thanks to a privilege escalation vulnerability brought on by a lax JSON spec (all codecs involved were conformant).
If the JSON spec had specified that "A codec MUST reject invalid characters. It MUST NOT truncate them or replace them with the Unicode replacement character", this kind of vulnerability could not happen with a conformant codec.
Thanks for the feedback!
Yeah, I don't know either. I see that the Wikipedia page for JSON describes it as a "data interchange format". Maybe that helps. I'd probably side-step the problem by having your home page start with "Like Protocol Buffers but more secure", followed immediately by the example you just gave me.
I guess I need to revamp what is emphasized and in what order. It's going to have to hammer on security all the way. Everything else is incidental and a "nice-to-have".
First, the need for tight and precise specs, not allowing optional or under-defined behaviors or too many features, and what goes wrong if a data format doesn't do that (I'll see if I can simplify the admin example or maybe do a $0 cost purchase exploit example).
Next, versioned documents and why that's important: Without it you're limited in how you can update the format to deal with emerging threats as they come along. Otherwise you get deprecations, loss of code space, and the possibility to get permanently stuck with an unfixable problem.
Then talk about fundamental type support and why we need so many: If you don't do that, everyone has to make their own encodings for common types (like dates, media etc), which won't be compatible or as carefully thought out, opening up security holes again.
The trick is how to make security sound sexy enough for people to take notice...
- You ask for a review on your site but that just links to the github project page. Have you done a show-hn by the way?
- I believe schema representation and encoding should be two separate things; In other words, a good data manipulation tool should support several schema formats and several encoding formats
- I personalty prefer the types to be a little less opinionated (for instance, there are many legitimate definitions for a "date" so I do not want the data layer to favor one over the others, although I reckon having some support for dates is convenient) - having a type for markup is particularly suspicious.
- You do not mention extensibility in the features list, which is a very important topic when a data format is used for RPCs in a distributed system, for instance
- Are strings UTF-8? UTF-8 only?
- Why do you need specific types for edges and nodes?
- No type for records/structures apart from the top-level one??
- No sum types? How do you handle nulls?
- Lists are of heterogeneous types? Can we have a type for "lists of some type"
- How come comments ended up being types?
- The front-page should display a comparison in encoding and decoding speed and encoded size compared to the major contenders (which are protobuf and json, I guess)
- It should also display the corresponding go code for each presented schema examples
> - You ask for a review on your site but that just links to the github project page. Have you done a show-hn by the way?
I'm asking for a review of the specifications, which is what the main github page is for. There's also a reference implementation, but that's in a seprate repo. I've done a show HN in the past. It might be time for a fresh one since it's been a couple of years.
> - I believe schema representation and encoding should be two separate things; In other words, a good data manipulation tool should support several schema formats and several encoding formats
The schema representation will not be tied to the encoding. I'm leaning towards maybe https://cuelang.org/ as the officially endorsed schema format, but there's nothing stopping someone from using something else.
> - I personalty prefer the types to be a little less opinionated (for instance, there are many legitimate definitions for a "date" so I do not want the data layer to favor one over the others, although I reckon having some support for dates is convenient)
I put a date in there because it's such a fundamental data type that everyone wants one, and if it's not specified in an opinionated manner, everyone comes up with their own (likely incompatible) interpretation, which is what I want to avoid. The idea is that a user of the format shouldn't have to worry about HOW to encode their data unless they're using exotic types.
> - having a type for markup is particularly suspicious.
I'm still not 100% decided on whether markup will stay or go. I've already tried and dropped dozens of other types already so it might go before I release...
> - Are strings UTF-8? UTF-8 only?
Yes, UTF-8 only.
> - Why do you need specific types for edges and nodes?
Because nodes can't represent weighted or other complex or non-directed graphs, and edges are by their nature too bulky for representing trees.
> - No type for records/structures apart from the top-level one??
Not sure what you mean? structures are represented using the map type and a schema.
> - No sum types? How do you handle nulls?
Null is allowed. You can pass {"result" = 500} or {"result" = null} or {"result" = [1 2 3 4]} if you want. Sum types would be enforced by the schema.
> - Lists are of heterogeneous types? Can we have a type for "lists of some type"
This would be the job of the schema. There are typed arrays for primitive types like int and float since that's a fairly common use case and would be too bulky otherwise.
> - How come comments ended up being types?
Comments are "types" in the sense of what types of data a document can physically contain. They aren't "types" in the sense of actual data to be passed to applications (although an application could listen for it - for example a CTE reformatter or sanitizer).
> - The front-page should display a comparison in encoding and decoding speed and encoded size compared to the major contenders (which are protobuf and json, I guess)
Encoding and decoding speed would depend on the implementation. This is just the specification.
> - It should also display the corresponding go code for each presented schema examples
Not sure how useful that would be since every single example would be cbe.Marshal(myobject, stream) and myobject = ce.Unmarshal(mytype, stream)
1. A project to help people start businesses. The idea is to give founders the structure they typically lack. https://cxo.industries.
2. An automated crypto trader based on technical analysis. https://tradecast.one
Both are built on Flutter/Nim/Postgres. I actually also want to build an NLP project too, which I started on, but it's such a huge endeavor that I can't figure out an MVP which won't take 10 years! Plus I can't do too much at once.
I'm trying to figure out what to do with this part, because it could be useful for others. I'm thinking part Open Source and part commercial, maybe what Qt does. It could work with any back-end, e.g. Python, in theory.
If you want to be notified of when I do release something, please email me (see my HN profile).
I'm building a tool called MicroKeys. It's a macro program, for Windows right now. It uses MicroPython as the script engine to let you register hot keys that do things. It's very much a work in progress right now.
I'm writing it to fill a very specific niche I have, but if it's useful to others, I'd love to hear feedback on what it could do to be better to help it come to fruition.
"Tests done since 1933 show that people who talk about their intentions are less likely to make them happen.
Announcing your plans to others satisfies your self-identity just enough that you’re less motivated to do the hard work needed.
In 1933, W. Mahler found that if a person announced the solution to a problem, and was acknowledged by others, it was now in the brain as a “social reality”, even if the solution hadn’t actually been achieved.
NYU psychology professor Peter Gollwitzer has been studying this since his 1982 book “Symbolic Self-Completion” (pdf article here) — and recently published results of new tests in a research article, “When Intentions Go Public: Does Social Reality Widen the Intention-Behavior Gap?”
Four different tests of 63 people found that those who kept their intentions private were more likely to achieve them than those who made them public and were acknowledged by others."
You are criticizing “tell people, do things.”
“Not long since, a strolling Indian went to sell baskets at the house of a well-known lawyer in my neighborhood. “Do you wish to buy any baskets?” he asked. “No, we do not want any,” was the reply. “What!” exclaimed the Indian as he went out the gate, “do you mean to starve us?” Having seen his industrious white neighbors so well off—that the lawyer had only to weave arguments, and, by some magic, wealth and standing followed—he had said to himself: I will go into business; I will weave baskets; it is a thing which I can do. Thinking that when he had made the baskets he would have done his part, and then it would be the white man’s to buy them. He had not discovered that it was necessary for him to make it worth the other’s while to buy them, or at least make him think that it was so, or to make something else which it would be worth his while to buy."
- "Walden", Thoreau
I might film a location, spend ages editing content from that location and upload it somewhere, but until I share that location, it doesn't count for much. It won't lead to sales, win new clients or build my profile. I often find myself going through the process and sharing the link with a friend or one client, and sitting back satisfied as though I'm finished. Have to then remind myself that I reached all of one person when I need to reach hundreds.
I need a dashboard tracking visitation to projects on the web, how often I talk about them on Twitter, or post examples on Instagram, etc.
It takes a lot of patience to do both the things and the telling to people but I think the latter actually takes more patience than the former even though it seems to be the other way around.
Here's what I did recently: https://gateway.pinata.cloud/ipfs/QmeVYAP75GAvY8Q8iSfMoWMGgT...
I can see the college version of myself in the post. Use to think the same.
As I grew older, I realised leading a richer life is much better than just aspiring for professional success.
Previous discussion from when it was published, a couple of weeks shy of a decade ago: https://news.ycombinator.com/item?id=3614640
Then you will discover that there are other people who are also interested in X. Also you'll discover that what you consider obvious info isn't obvious to others -- and they are smart people too.
I used to be shocked by some posts that made the front page: "that's just trivial stuff everybody knows". That was pure snobbery on my part: I only knew that stuff because I'd been exposed to it decades ago (and there's of course tons I don't know, and never will). And the posts that made it to the front page were good explanations -- and many started with "I didn't know this at all so I looked into it and this is what I learned"
You'll be amazed what support and interest you get from simply showing up.
And don't bother to try to have a readership in the instagram-influencer zone. Better to have a group of people who are interested because they are interested in things you also are.
Unless you're not talking about the self-improvement path outlined in the post, but rather a startup. In that case things get a little more difficult.
Dont worry if you are crap at it. Find something you like doing. Even if it is just silly Dont worry if you are crap at it.
Once you do, keep doing it for as long as it is fun.
If you wish to learn more and see if you can improve, do so Dont let it act as a stressor. Do it for you, to relax.
You dont have to show it to anyone.
Dont spend all your time on the career / money treadmill.
If you learn how to do this it will enrich your life, help you to laugh at yourself and make you a healthier person
So I’ve started my substack for fintech folks like me: https://fintechmeetscrypto.substack.com
People like to say "survivorship bias" but those people usually aren't doing things and telling people about them.
The unbelievable amount of opportunities I see people say no to put of insecurity in their abilities, out of social pressure, out of image concerns, etc… is absolutely baffling to me.
Say yes more. Be smart, keep your wits about you, but say yes more.
My guess is there is a short supply of the later, which makes the existence of such a site unlikely, but I'd rather ask anyway.
There was an analogy about the area of a rectangle where one axis was doing things and the other was talking about things.
Can anyone find it and link these parallel discoveries together?
This is also the kind of articles the HN should be used for.
What the author wrote just works and it transcends technology world. Works in almost all contexts.
In part because I've frequently built extremely esoteric projects, the sort of thing that's made even some technically minded people squint and go "huh, what?", real Terry Davis-tier stuff. Although these were mostly to scratch my own itches.
Even now when I'm building stuff that's more widely appreciable and aimed at the enrichment of lives, it still feels unnatural to promote my work.