714 karma · joined May 5, 2016
hn@zak.knill.dev
It comes with a parser you run on your machine which generates a graph of your code. On the site you can use the filter syntax to dig into the code.
I find it hard to understand how code fits together in the traditional file-tree viewer that you get in GitHub or IDE, so the tool helps a lot in code review or exploring code.
I've made $0 from it. But I suspect that's because no one really knows how it works or how to use it.
I built this tool to help me understand the unfamiliar: https://packagemap.co
There's a parser that extracts all the classes and methods from the java code and a site that renders these in a directed graph. I use a kind of query syntax to filter the graph, and added features based on how I want to explore the code.
The nodes in the graph carry an name like: "my.company.package.MyClass.myMethod"
Then I can filter by wildcards: *MyClass*
Or see just the classes with a line terminator: *.MyClass$
Or see the code that leads up to, or away from a method/type: ->*MyClass, *MyClass->
I've found making the problem visual has massively improved how I navigate the code. In code review I spot things that are very hard to see in an IDE or file-tree review UI (like github). Things like; where abstractions are being broken/leaking, or where types are being mis-used across packages.
I wrote a summary of the common cases I find using this tool in a blog post[0]
[0] https://blog.packagemap.co/posts/common-code-coupling-mistak...
You can mail me hello@ <productname>.co
I built PackageMap to help me visualise the codebase, and see where the natural seams were -- or should be.
I use the tool to build a directed graph of the type and method usages, and to see which code is grouped into which packages. The code is rendered in a graph diagram that I can see, query, and filter. It really helps me when I'm doing code review or working on a part of the code I'm not too familiar with.
I'm currently still in the free-tier. But I'd be perfectly happy to pay for the product. It's super easy to use, and the happy path of the cli tool is well designed.
The various configs for the fly.toml file could be better documented, as could some of the more advanced cli commands like sftp and ssh into your machine.
I think fly really shines when you design your app intending to run it close to users. If you just want to host an app, there are other hosting products. But fly is particularly good at hosting and scaling into different regions and presenting those regions as a single app. Trying to do the same on AWS is messy.
It's also nice to see them investing in the database problems you get when trying to run at the edge. (Like the db being in one region, which defeats some of the value of running close to your users).
I do a bunch of code review, particularly in github. The code review UI is great, but I found that I was only reviewing the content of the files. I was missing how those files fit together. I found it hard to see from a file-tree, in an IDE or in Github code review, how the types are used across an application.
As the applications I reviewed got larger, I wanted to check if the code was being packaged by domain — to be cohesive. I wanted to check that the code that is related to each other is in the same package, and that there were few cross-package imports.
To solve the problems I had with code review, and to see how code fits together, I built https://packagemap.co. Packagemap is made of two parts. The first part is a java parser (hopefully other languages to come) that builds an AST of your code, to work out which classes are using which other classes. The parser runs on your machine, so the source files stay on your machine. The second part is the https://packagemap.co site. On the site you can filter and explore the “maps” (directed graphs of the code’s imports).
You can filter and explore maps by prefix, like “com.example.package” or by wildcard “*.package.MyClass”
You can play with the example here: https://packagemap.co/map/f8bbec2a-d7e7-459e-b08e-ea813bb0de...
Personal site with blog posts on work, code, teams, orgs
We're redefining how companies do market research. Market research methods are stuck in the past, and haven't changed since the 60s. We're fixing this with an event driven data layer that will underpin all our customer's insight. You'll be collaborating on and solving some of our hardest tech, data, and architecture problems to help our customers get real value from our product.
Around $34million stolen, 483 users affected. If the funds were spread evenly, then each user would have lost about $71k. But the funds won't be evenly spread (average). It's likely some users will have lost much more, and some much less.
From the announcement, it looks like Crypto.com is making the users whole again;
> No customers experienced a loss of funds.
This means that (in some cases) Crypto.com was on the hook for much more than $71k / user. The WAPP appears to put a series of conditions on the user, and introduce an upper limit to the amount that Crypto.com will return in the future.
> WAPP restores funds up to USD$250,000 for qualified users; terms & conditions apply.
> Enable Multi-Factor Authentication (MFA) on all transaction types where MFA is currently available,
> Set up an anti-phishing code at least 21 days prior to the reported unauthorized transaction,
> Not be using jailbroken devices,
> File a police report and provide a copy of it to Crypto.com; and
> Complete a questionnaire to support a forensic investigation.
This looks more like a mechanism to limit Crypto.com's exposure to future events than it does a policy to protect users.
We're redefining how companies do market research. Market research methods are stuck in the past and haven't changed since the 60s. We're fixing this with an event driven data layer that will underpin all our customer's insight. You'll be collaborating on and solving some of our hardest tech, data, and architecture problems to help our customers get real value from our product.
In your first six to twelve months you’ll be directly involved in slowly migrating our architecture to use Kafka, while also delivering new features using it.
We champion our people in their entirety. With our team of Attesters, we take a human-first approach, optimising for joy and adventure, ingrained in everything we do.
We’re a flat, friendly, non-hierarchical team, and value putting people (our team, clients and consumers) first; honesty, curiosity, empowerment and leadership are core to our team working style.
Our tech stack is: Go, Java, Kafka, Kuberentes, Postgres, GRPC, linkerd2, elasticsearch https://jobs.lever.co/attest
We’re Attest: a market and brand intelligence scale-up. Our mission is simple: to ensure that data is put at the heart of decision-making.
In your first six to twelve months you’ll be directly involved in slowly migrating our architecture to use Kafka, while also delivering new features using it.
We champion our people in their entirety. With our team of Attesters, we take a human-first approach, optimising for joy and adventure, ingrained in everything we do.
We’re a flat, friendly, non-hierarchical team, and value putting people (our team, clients and consumers) first; honesty, curiosity, empowerment and leadership are core to our team working style.
Our tech stack is: Go, Java, Kafka, Kuberentes, Postgres, GRPC, linkerd2, elasticsearch
We’re Attest: a market and brand intelligence scale-up. Our mission is simple: to ensure that data is put at the heart of decision-making.
In your first six to twelve months you’ll be directly involved in slowly migrating our architecture to use Kafka, while also delivering new features using it.
We champion our people in their entirety. With our team of Attesters, we take a human-first approach, optimising for joy and adventure, ingrained in everything we do.
We’re a flat, friendly, non-hierarchical team, and value putting people (our team, clients and consumers) first; honesty, curiosity, empowerment and leadership are core to our team working style.
Our tech stack is: Go, Java, Kafka, Kuberentes, Postgres, GRPC, linkerd2, elasticsearch https://jobs.lever.co/attest
We’re Attest: a market and brand intelligence scale-up. Our mission is simple: to ensure that data is put at the heart of decision-making.
In your first six to twelve months you’ll be directly involved in slowly migrating our architecture to use Kafka, while also delivering new features using it.
We champion our people in their entirety. With our team of Attesters, we take a human-first approach, optimising for joy and adventure, ingrained in everything we do.
We’re a flat, friendly, non-hierarchical team, and value putting people (our team, clients and consumers) first; honesty, curiosity, empowerment and leadership are core to our team working style.
Our tech stack is: Go, Java, Kafka, Kuberentes, Postgres, GRPC, linkerd2, elasticsearch