Mark Needham

markhneedham.com · Personal blog · on HN since 2009

Mark Needham, a software developer, writes about programming, data tools such as Neo4j, ClickHouse and Wikidata, and lessons from his work.

What HN saysHN commenters link it as a reference for microtypes, querying Wikidata, ClickHouse column summing, and a UTF-8 byte order mark bug.
26HN people shared it
11linked it in comments
23stories submitted
37story points
3 years agolast shared
2009people per year2026

Most-shared posts

  1. 1
    Oo micro types
    2 people · first shared 2019
  2. 2
    Newbie guide querying wikidata
    2 people · first shared 2021
  3. 3
    Domain driven design anti corruption layer
    2 people · first shared 2015
  4. 4
    Think a little, code a little...
    1 people · 5 points · first shared 2009 · 1 comments on HN
  5. 5
    Neo4j: Graphing the ThoughtWorks Technology Radar
    1 people · 4 points · first shared 2016 · discussion on HN
  6. 6
    Tcpdump: Learning how to read UDP packets
    1 people · 2 points · first shared 2012 · discussion on HN
  7. 7
    A new year’s idea: Share what you learn
    1 people · 2 points · first shared 2013 · discussion on HN
  8. 8
    Vim: Copying to and retrieving from the clipboard
    1 people · 2 points · first shared 2011 · 1 comments on HN
  9. 9
    Pair Programming: The disadvantages of 100% pairing
    1 people · 2 points · first shared 2011 · discussion on HN
  10. 10
    Python: Creating a skewed random discrete distribution
    1 people · 2 points · first shared 2015 · discussion on HN
  11. 11
    Gamification applied to software
    1 people · 2 points · first shared 2012 · discussion on HN
  12. 12
    The Curse Of Knowledge
    1 people · 2 points · first shared 2012 · discussion on HN
  13. 13
    PostgreSQL: ERROR: column does not exist
    1 people · 1 points · first shared 2014 · discussion on HN
  14. 14
    Parsing an RSS feed using Clojure
    1 people · 1 points · first shared 2009 · discussion on HN
  15. 15
    Ferengi Programmer and the Dreyfus Model
    1 people · 1 points · first shared 2009 · discussion on HN

What HN people wrote when they linked it

OJFord · 2021-08-18
Well, it's worth noting that it's not intending to be specifically for publications, it's not like Google Scholar or ORCID for example. The reason it's interesting / useful for things like 'knowledge panel' is perhaps clearer if you look at a more complete entry, such as for 'apple': https://www.wikidata.org/wiki/Q89 and something on using the SPARQL API, such as https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial or https://www.markhneedham.com/blog/2020/01/29/newbie-guide-querying-wik… As I say, I haven't actually got around to using it at all myself, but that's why I hold it in higher regard than 'not great'. :)
richraposa · 2023-11-15
ClickHouse just reads the values from the one column being summed: https://www.markhneedham.com/blog/2023/11/15/clickhouse-summing-column…
foobarian · 2021-11-19
Maybe there is a dollar sign or backslash or something in the title/description. Or a rogue UTF8 byte order mark [1] throwing off some comparison :-) [1] https://www.markhneedham.com/blog/2012/09/03/a-rogue-357273277-utf-8-b…
kaba0 · 2021-05-31
What about running a freely query-able database https://www.markhneedham.com/blog/2020/01/29/newbie-guide-querying-wik… Or hosting all the images? Or paying developers, devops, managers? Like sure, some middle manager may be unnecessary but a big company will have inefficiencies. Also, it is a good decision to not stop accepting funds once a monthly quota is reached since donations are fickle. An article like this may suddenly cause an outage in donations, they have to have reserves for such cases.
dmux · 2021-05-15
Similar to the idea of "microtypes" (I've most often seen it used in Java circles): https://www.markhneedham.com/blog/2009/03/10/oo-micro-types/
vbernat · 2020-04-25
There were some serious complains around upstart. Notably, jobs may get stuck in a bad state, difficult to recover. This was never fixed. See https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/964207, https://bugs.launchpad.net/upstart/+bug/406397 and http://www.markhneedham.com/blog/2012/09/29/upstart-job-getting-stuck-…
rzzzt · 2019-11-08
I've heard "micro-types" being mentioned in this context: https://markhneedham.com/blog/2009/03/10/oo-micro-types/
bonesss · 2018-01-18
Kubernetes, along with an architecture informed by the salient points the GP, also provides cloud provider mobility while opening up an on-premise story to match. As with all dependencies, though, you either manage them or they manage you... My systems generally wrap their usage of third-party components with internal facades -- an interface that I control that provides a clear contract for replacing the component, generally as part of an AntiCorruption Layer [0]. The more costly the replacement, the more need for abstraction, so I can't imagine why I would treat multi-system communication with Googles or Microsofts cloud-ESB as something less prone to change, replacement, or parallel requirements than whatever PDF-generator we're using this week. - [0] - http://www.markhneedham.com/blog/2009/07/07/domain-driven-design-anti-…
maxdemarzi · 2012-04-20
I wrote one of the Ruby bindings (Neography Gem) and write about Neo4j on my blog http://maxdemarzi.com . Also ThoughtWorks is using it and writing about it: http://www.markhneedham.com/blog/2012/04/20/neo4j-searching-for-nodes-…
utnick · 2009-04-07
Found the blog post I was referring to: http://www.markhneedham.com/blog/2009/04/04/functional-c-the-hole-in-t… Also has a link to buy a pre-release version of the book
ArtB · 2015-12-30
> Some validation only makes sense on a specific operation. The object you constructed, due to some business rule, may be invalid to delete but valid to update for instance. These are two different concepts I feel you are mixing up. An object may be valid, but that doesn't mean it's valid for all operations. For example there is basic validation that a file object is valid if it exists, but if you only have read access to it .append("foo") will fail on it. But it's still a valid file. Your constructor should be checking for the first kind of validity, and your methods for the second. > What if you receive, from a webservice or something, a valid object format-wise but invalid from the business rule perspective? That is what you need an [anti-corruption layer](http://www.markhneedham.com/blog/2009/07/07/domain-driven-design-anti-… for. The object makes sense within that other services domain but not within yours. That domain may be closely related to yours, but it isn't you. You need a separate object for that (a simple struct ought to suffice usually). Then you act as a gatekeeper only allowing conforming objects into your system. Basically filter out the shit, and make sure if it makes it past your gate it is clean. Otherwise you might want to use the [state pattern](https://en.wikipedia.org/wiki/State_pattern) to allow for different validation rules of the same object (eg legacy accounts might not have an email address but all new ones must). > What if…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close