Hacker News new | past | comments | ask | show | jobs | submit login
Hexwords: Hex colors that are similar to words (hexwords.netlify.app)
792 points by cialowicz on June 8, 2022 | hide | past | favorite | 164 comments



I built something very similar a few years ago https://hex-colours.netlify.app/


You mean identical? Seems like OP likely got inspired by your page :)


Since yours hold a lot more uncommon words (by virtue of simply having many more words) a feature, if you are in the mood for updating, could be to sort by word frequency along with alphabetical sorting.


yours lacks #B00B1E though.


Nice, hexwords only has 1000 words, compared to your 3500


Lots of the 2,500 don't seem very recognisable, possibly from another language?


Fesses is from French, for instance.


But common in informal English as a shortening of confesses.


I've only seen that as 'fess up'


In my head, it's a conjugation of "fess", which is a shortening of "confess". (Until I thought of it that way I was thinking "I've never seen this before", despite the word being in my vocabulary.)


Feature idea for you and OP: add the visual swatch of color which the hex color represents. Makes it much more meaningful


So which of these actually spell the color they represent (or something closely related)? From a quick glance, I have no found any. Do color-words like that exist in other languages maybe?


#1C1E57 (ICIEST) is dark blue, which could hold true in certain contexts!

#DEBA65 (DEBAGS) is brown, much like de color of de bags made of de paper.

And on a related and exceptionally juvenile note, it should be very possible - and frankly obligatory, for those in fashion tech companies reading this - to create and sell a #B00B1E colored bra.


Tangentially related, and equally juvenile, I own the telephone number in Australia: 08 80087355

Still gives me a chuckle. Grow up.


I just called, why didn't you pick up?


Voicemail not enabled and no SIP client logger in.

Should have connected for a few giggles this arvo.


RIP your voicemail


It's 2022: RIP the concept of voicemail


You think the concept of people leaving audio messages to one another is dead? That seems like something that will never die out.


The concept of people leaving audio messages _with a reasonable expectation that someone will listen to them_ is (thankfully) dying out, at least among my social circles.

You can leave a message if you want, I'm not going to listen to it. The only entities that make unexpected phone calls are scammers and bots.


I get spam calls but I never get spam voice mails. As such I never pick up unexpected calls but I do listen to messages.

Might be a regional thing?


Given that I never get ham voice calls, it is reasonable for me to assume that any voice mails that I receive are therefore spam (but, no, you're right, I don't recall ever noticing a spam voice mail. But then I wouldn't notice one, whether it existed or not, because I don't check them)


> I never get spam voice mails

You must not be in the United States then. Pretty much guaranteed every phone number in the US has received at least one “automobile extended warranty” voicemail.


in my circle its common to email mp3 attachments


OB(viously) BOOBLESS?


(EXTREMELY minor spoilers for Everything Everywhere All At Once) .

.

.

.

.

.

.

My inner child chuckled to see 55378008 displayed on a calculator near the end of that movie.


#D0661E - a nice brown doggie.

#CA771E - brown cattle.

#C10ACA - a purple cloaca.

#C017A1 - coital, similarly purplish pink.

Lots of blues and greens starting with #5EA... (Sea...). #5EABED (Seabed), #5EABEE (Seabee), #5EAD06 (Seadog) and #5EA by itself.

(I used https://hex-colours.netlify.app/, which looks like it was the original from another comment, and allows you to search pieces of words.)


#C0A575 (coasts) is a sandy-brown beach color.

#6E0DE5 (geodes) definitely has that deep purple color you think of.

And my favorite, #5A6E57 (sagest) is about as close to the color sage as you can get.


#B00B00 (dark red) was my favorite


Great color for errors!


Good question. I thought of an algorithm to find the hex word colors that most closely match the color they represent...

Basically: get the color of the _word_ by doing an image search and extracting the dominant color from the first image result. Then compare that color to the hex color (in CIELAB color space) to get the color difference. Track the hex words with lowest difference.

Here's a rough impl in Python:

  import sys
  import os
  import heapq
  
  import requests
  from google.cloud import vision
  
  from colormath.color_objects import sRGBColor, LabColor
  from colormath.color_conversions import convert_color
  from colormath.color_diff import delta_e_cie2000
  
  from bs4 import BeautifulSoup
  
  def download_image_for_query(query):
      search_key = os.getenv("GOOGLE_CUSTOM_SEARCH_ENGINE_KEY")
      search_engine_id = os.getenv("GOOGLE_CUSTOM_SEARCH_ENGINE_ID")
      resp = requests.get(
          f"https://www.googleapis.com/customsearch/v1?key={search_key}&cx={search_engine_id}&q={query}&searchType=image"
      )
      img_url = resp.json()["items"][0]["link"]
      img_content = requests.get(img_url).content
      return img_content
  
  def dominant_rgb_colors(image_content, num_colors=1):
      vision_client = vision.ImageAnnotatorClient()
      image = vision.Image(content=image_content)
      response = vision_client.annotate_image({"image": image})
      return [
          (int(c.color.red), int(c.color.green), int(c.color.blue))
          for c in response.image_properties_annotation.dominant_colors.colors
      ][:num_colors]
  
  # class to store hex word and calculate the difference from "true" image, based on image search
  class HeapibleHexWord:
      def generate_rgb_version(self):
          return tuple(int(self.hex_version.lstrip("#")[i:i+2], 16) for i in (0, 2, 4))
          
      def __init__(self, hex_version, english_version):
          self.hex_version = hex_version
          self.english_version = english_version
          self.rgb_version = self.generate_rgb_version()
          self.delta_from_true = float("inf")
          
      def calculate_delta_from_true(self):
          true_rgb = sRGBColor(*self.rgb_version)
          query = self.english_version
          img_content = download_image_for_query(query)
          test_rgb = sRGBColor(*dominant_rgb_colors(img_content)[0])
         
          # via http://hanzratech.in/2015/01/16/color-difference-between-2-colors-using-python.html
          delta = delta_e_cie2000(
              convert_color(true_rgb, LabColor),
              convert_color(test_rgb, LabColor)
          )
          self.delta_from_true = delta
          
      def __lt__(self, other):
          return self.delta_from_true < other.delta_from_true
  
  # scrape words from hexwords site
  hexwords_url = 'https://hexwords.netlify.app/'
  
  hexwords_page = requests.get(hexwords_url)
  soup = BeautifulSoup(hexwords_page.text, 'html.parser')
  
  buttons = soup.find_all('button', class_='svelte-1m9ptdb')
  
  hex_words = []
  for button in buttons:
      if button.text == '':
          continue
      hex_version, _, english_version = button.text.split("\n")
      hex_words.append((hex_version, english_version.replace("(", "").replace(")", "")))
  
  # iterate over the hex words, calculating the color diff between the word's hex
  # color and the "true" color based on image search
  
  hex_words_heap = []
  heapq.heapify(hex_words_heap)
  
  NUM_WORDS = 10 # looks like throttled at some point
  
  for i, hex_word in enumerate(hex_words[:NUM_WORDS]):
      print(f"working on {i}: {hex_word}")
      heapible_hex_word = HeapibleHexWord(*hex_word)
      heapible_hex_word.calculate_delta_from_true()
      heapq.heappush(hex_words_heap, heapible_hex_word)
  
  # popping from the min heap yields hexwords with smallers difference from true color
  heapq.heappop(hex_words_heap).english_version


I sometimes wish HN had the equivalent of Reddit Gold. Well done.


Alas, I'm gonna bet a lot of images are an object in the center and plenty of white or other background around it.


awesome! Agree with previous comment, this is cool


A couple more I spotted:

#ACAC1A is a shade of green and Acacia is a type of tree.

#57061E (stogie) is dark brown, and a stogie is a cigar.


#CABB1E is kind of like a taxicab yellow


#A55E55 (asses) is brown. Oh... wait.


There is a large population of brown asses in the world.


The issues isn't the color of the asses, but rather that the word spelled is assess. As in, the tax assessor is coming to assess our property now that we put on that addition. I expect our assessment to go up.


just make sure you're wearing brown pants when you read the bill


#AC1D1C is red, just like its PH test- that was the most satisfying one to me at first glance.


maybe #5EABED, which is a shade of blue?


Kind of a stretch, but #B05535 (bosses) and #BE57ED (bested) are both sort of purplish colors that looter games like Borderlands sometimes use for "pretty rare, but not unique" items (which would typically be dropped by a boss monsters when you defeat them).


How many colors do you typically identify or would be willing to accept? Somewhere between 10 and 25 would be sufficient… not every word will have a color association, but many will have more than one.

I think you need to be pretty strict to not find a match after 50 words.


#ACCE55 is green and #F1A5C0 is pinkish red, great colors for a login prompt


And then #1060FF for logoff.


5EABED (a blue) and B00B00 (blood red) were the best matches I found


Similar things in a number's value v/s its number of characters I think is called True Number, & only 4 is a true number like 4 value & FOUR has exact 4 letters.


My children definitely have clothes in colors close to #BAB1E5. #B00B00 kind of looks like blood.


A bit of a stretch, but I remarked upon #ACE71C (acetic), which is an oily, vinegary green


SEABED - blue CASSIS - purplish pink berry color


#C0C0A5 (COCOAS) Is brown


And also three-digit color codes, such as #BAD. And for non-hex colors, we have this: https://stackoverflow.com/questions/8318911/why-does-html-th...


#DEAD set (four with alpha)


I was thinking #000 or #0FF


Hexspeak[0] is a time-honoured tradition, with constants like 0xDEADBEEF used to mark uninitialised memory. Fun to see it applied to colours.

0. https://en.wikipedia.org/wiki/Hexspeak


Yeah B16B00B5 and CAFEBABE are 2 of my favorite funnier ones Ive used a bunch of times. They make for more interesting placeholder values than "foo" and "bar" anyway.


Without commenting on the reasonability of it, you may want to be aware that a growing population of vegetarian and female tech workers may find these offensive.


Beef dies in the wild too so DEADBEEF should not, I do not care if they want to use B16D1CC instead :) I can't see why CAFEBABE would be offensive though.

...And honestly I guess I don't care? If people are that mad about some levity then I probably do not want to work with them.


If you want levity, why not just use terms that aren't offensive? If you can't think of a joke without being sexist or misogynist, then that's on you - don't blame others for "not having a sense of humor"


[flagged]


From the HN rules:

> Eschew flamebait. Avoid unrelated controversies and generic tangents.


I don't understand how any part of that applies to my comment at all, sorry. (I take it from the way you quoted it at me that you think it does.) "Flamebait" applies to the comment I was replying to, though, I think.


Francophones might not have the same understanding of the distinction as you do.


You might get a pass on #cafebabe if your local baristas don't speak 1337.


Dead beef is offensive (potentially) how?


I'm pretty sure both women and men love big boobs and big dicks...


#FA6607 :)


Shouldn't that be B16?

I'd make a joke about beware of the woke crowd coming for you, but I think even joking about that causes offense nowadays.


No 6 looks like a 'b'. I think closest to 'g' is 9.


But 'B' is already there, and all the other characters are uppercase, so '6' -> 'G' scans easier to my eye.

'619' may be 'big', but it doesn't scan that well. 'B16' looks more like 'BIG'


I remember seeing 0xdeadbeef for the first time in dbx, which was my first experience with seeing uninitialized memory - was really surprised to not see it in the list on the website, since it's rgb+o (red/green/blue + opacity).


I've always wanted to make something like this! This is awesome. Filters to weed out leetspeak words, use only letters/numbers, etc would be great.

It was on my "toy project list" after reading these two very interesting stories/threads:

The famous CAFEBABE story: https://stackoverflow.com/questions/2808646/why-are-the-firs...

Why does HTML think “chucknorris” is a color?: https://stackoverflow.com/questions/8318911/why-does-html-th...


Disappointed to see that C#'s counterpart to Java's 0xCAFEBABE is missing: 0xBADDECAF /s


If anybody is wondering SOBBED (#50BBED[1]) is pretty close to Zima Blue[2].

[1]: https://color-hex.org/color/50bbed

[2]: https://en.wikipedia.org/wiki/Zima_Blue_and_Other_Stories


Reminds me a lot of https://c0ffee.surge.sh


I'm gonna start using #ACCE55 to indicate successful login and #B00B00 on failure.


wow. they're ugly, but that's awesome they map to green and red.


7->T and 6->G is pushing it too far, imho.


Isn't LEET === 1337 pretty standard?


For some reason I used to think that 1337 was LEET upside down.


Bringing up the topic of "leet" actually serves in two capacities: not only is it a prime example of 7=T, but leetspeak's overall orthography [0] is conceptually similar to this "hexwords" site far beyond 7=T.

[0] https://en.wikipedia.org/wiki/Leet#Orthography


But then how am I supposed to turn a slur like #FA6607 into a nice (might I say fruity) shade of orange?


Well, we could be more careful about allowing #B16075 to design website palettes. :)


I'd like to have filters to play with different levels of substitution. Only alpha, only 3 -> e, etc.


2->Z as well. I've been a h4x0r for 25+ years and "21663D" looks nothing like "zigged" to me.


But 2 and 6 are more similar to Z and G than 3 are to E.


i agree, 9 would be better suited as G


It's all capital letters, so 6 = G instead of 9 = g


Where has this been all of my career? Very #BADA55 indeed!


#BADA55 is skin color of kerbals from KSP


Ya'll are missing my favorite one, although I guess its technically two words. "Dad CEO": #dadce0


This should be turned into some hybrid between Wordle and MDN.


Nicely done. This is a fun idea that comes up time and again.

I think I might have made one of the first implementations way back in 2011: https://web.archive.org/web/20111117062015/techbelly.com/sem...

And someone quickly made a better version inspired by it here: http://lexadecimal.pixielabs.io/


Found a slur in the dataset, not sure if these are programmatically generated (I assume so) but may want to consider filtering those out.


It's worth pointing out that they are slurs in the U.S., not globally. One is a type of meatball where I'm from.


Yep. But if your user base is likely to include Americans, then you might want to consider filtering them out. (As it could be shocking to read.)

Note the word consider, by the way. I'm not demanding anything here, I'm saying the author should make a deliberate choice about their inclusion rather than including them just because they were auto generated.


For the curious, I think they mean decimal values 16408693 and 16410119. Which have other archaic meanings but their primary modern meanings are a slur. 16410349 is apparently British slang for exhausted, so maybe gets a pass?


#5A6E57, SAGEST, is interesting because it appears to be the most sage-like color on the board and is therefore autological.


@Godel -- look!


Doesnt work with Firefox

http://0x0.st/oMvf.png



works for me without issues, firefox 101


Pretty broken in 91.10.0esr (64-bit) on Linux


in my last job we used to work #C0FFEE coloured elements into our UI as a little easter egg of sorts.


Nice! I made a hexwords mode on https://www.lazycolor.com/ I haven't really touched the site in a decade... maybe I'll update it next decade.


This is dumb, and I am in love with it. I'll have to use some of these... :)


I have a project named “xidoc”. I spent a long time trying to come up with a logo and a primary color, then I got the cute idea of using the letter ξ (xi) in the color #d0c (which happens to be a quite lovely magenta).


From 2014 http://bada55.io/ includes a much more expansive set considering hex colors do not require all six characters. #101


You can do the same with ipv6 addresses. Something like dead:beef::babe


Would be fun to plot all these on a color wheel to see how non-uniform it is, as a consequence of the distribution in English words (which can be represented this way).


Reminds me about when people had to generate a string of random characters but take anything out that's close to a slur.

Forgot what the end result was, no vowels and numbers?


Yeah, it's a prime example of a sisyphean task. Language is too varied and fluid, and the internet is far too juvenile to be censored for any length of time (not a dig, but you try telling reddit they can't say slurs anymore).


My initial and surname when written as an hexcode make a nice orange colour: Texas rose, according to some website.

Are there more people that can write their name as a hexcode?


Thanks for making an interesting article and only plugging your site at the end. I don't mind submarine ads if I can learn something from them.


Really disappointed #dadb0d didn't make the cut.


You should collaborate with https://colornames.org/


Whenever I give a demo, I always use #BADA55 because I have the maturity of a 12 year old. This will definitely expand my repertoire.


This is simultaneously interesting and useless.


I use d3 for visualization, and my favourite default color for everything is #d3d3d3. Works well in a lot of situations.


I love that "booboo" is blood red.


I wonder if there is another base other than 16 that would generate the most beautiful colors with most words.


To me, #CA551A wins it. Looks a lot like cassia tree bark, aka cinnamon.


I like that AC1D1C is red but BA51C is green. Hex code litmus paper.


Love it. Now I need some nice looking/sounding palette phrases :-)


#B00B00 is one of my favorites as a dad with young kids (it’s red). :)


Didn't someone once set the PETA website to #BEEEEF


This would make a pretty cool MIT Mystery Hunt puzzle!


I really don't like this colour: #DE7E57


Badass color is not bad ass at all… :)


What does "alpha" switch do?


Includes longer words to define the alpha (transparency) channnel


is it just for me? the copy icon seems on top of every word obstructing the view... :(


This is amazing, love it!!


ahem, you missed #d00d00


pretty cool, now we need something like a prettier plugin that forces hexes to the nearest hexword to make it useful


No #B00B1E?



I love this


What a fun and fantastic mnemonic tool!


#BADA55 is brown.

Giggle.


I love this <3


This is the kind of quirky, brilliant link I crave from Hacker News. If I was near you creator, I would garland you and rub your feet.


Second sentence escalated quickly.


[flagged]


I think you're both right. It's a fun little page that doesn't actually serve any purpose, like... comedic art?

The practical solutions to this opinion divide are to somehow categorize entries like this as [funny] or whatever so people can skip them informedly, or to simply accept that HN aggregates content that appeals to different minds.


Think you just created old reddit


I personally find it uninteresting, but I don't think it decreases the value of HN or the quality of the community-- people will find novelty in different things. It also seems like the kind of content that the guidelines praise. I appreciate when people deep-dive into niche topics because it fosters (in my subjective view) the best type of discussion.


This is the kind of thing HN is for. That's not to say it's not also great at incubating overly-pedantic technocratic bikeshedding of computing minutiae, which has its place. Don't ever change, HN.


How old are you by chance?

There's a chance younger people simply won't understand or appreciate the interest in DEADBEEF.

Personally I found it kind of neat and wondered if I could design a colour palette out of rememberable code names.

https://en.m.wikipedia.org/wiki/Deadbeef

https://en.m.wikipedia.org/wiki/Hexspeak

Heh looks like this has been done before too: http://bada55.io/


It’s one of those ‘do it because you can’ kind of things. I wouldn’t spend time doing it myself, but happy to see others do it.


Let's keep having threads with 4 comments discussing the latest Haskell library borefest then. Threads like this have their place.


The point is it's a lot easier to remember facade than ffb6c1. Also since when did HN posts need a point?!


Interesting. You consider it a waste of time. So this post from you must be an example of the sunk cost fallacy, as you throw good time after bad.


I have enjoyed this exchange about as much as the original link. Bravo


[flagged]


The hacker news orange is #ff6600. Pretty close.


Yeah, if you sort by closeness, this is the closest word.


You many want to consider a naughty words filter. https://github.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and...


Since the raison d'être of this project seems to be spelling ridiculous things out of hex colors, I think it would lose a lot of its appeal with such a filter.


I understand a lot of those, but why is "beaver cleaver" on the list? I could see how it might be used in a dirty way, but that can't be the most common way it's used, right?


Well it's on the filter list, so someone must consider it more offensive than words not on the list such as "gaping poophole thrusting".


The "dirty" use seems pretty silly (sounds like something out of a crass 80's movie or something), but I can't really imagine using it in a non-dirty manner either. I mean I know people have hunted and trapped beavers, but when the capture them they don't just, like, thwack them with a giant cleaver, right? Would ruin the pelt if nothing else.


Not sure if you're messing with me, but Beaver Cleaver is the name of a famous sitcom character. Awesome show IMO, you can watch the entire series for free on archive.org

https://archive.org/details/leave.it.to.beaver.complete.seri...


TIL. That said, I'm sure if you polled most folks these days, beaver would mean animal or women's genitalia, and not leave it to beaver.

Given the relatively common crass meaning for beaver, beaver cleaver sure sounds like a sexual innuendo to me.


I wasn't -- I was not aware that his last name was Cleaver, haha.


Or better yet, they could ignore this suggestion entirely!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: