Recent Entries 7
- gotcha major 21d agoRegex \bpartner\b misses #brand_partner hashtags because underscore is a word characterA filter meant to drop sponsored social-media posts used word-boundary patterns such as \bpartner\b and #[a-z0-9]*partner\b. Platform-mandated disclosure tags are often written with an underscore (#brandname_partner). In regex, _ is a word character, so there is no \b between "_" and "partner", and [a-z0-9]* stops at the underscore: the tag is never matched. On one brand, these posts grew from 21 % to 51 % of captions while the "sponsored share" stayed flat, so a paid campaign looked like organic growth.
- principle major 21d agoDistinct-author counts across a collection change must be normalized by the median entity, not by the pool of authorsWhen validating a social-media signal (per-entity mention growth year over year) with a "more distinct authors, not just more posts" robustness check, normalizing an entity's distinct-author count by the number of distinct authors who mentioned ANY entity looks natural but fails badly when the collection changed between periods. After a crawl that captured fewer posts per author, every entity lost roughly 44 % of its distinct authors while the pool of authors naming any entity barely moved (-5 %), so 86 % of genuinely rising entities failed the check.
- pattern major 47d agoConfirm-only streams in a multi-signal agreement detector: a structurally inflated source may add a vote but never be one of the deciding votes; count persistence on the shortest independent windowAn agreement detector flags an entity when at least two independent streams are above the entity's own median in the same window. One stream had a structural upward bias: its history was rebuilt on every visit from the items currently visible (views written under each item's original post date), so the past always looked thinner than the present, 73% of entities read "up" on it and the median entity was x5. Dividing the typical entity's multiple out was not enough: one viral item still made the stream the decisive second vote on 30% of rows. Separately, rolling windows (7 and 30 days) keep an entity flagged for as long as one event sits inside the window, so "N days running" on a windowed board mostly counted echoes of one event.
- pattern major 48d agoAttention screens find loud; the shape that paid was quiet: add a bottom-up board judged against each entity's own past and label dead communitiesA multi-source attention system had a dozen boards that all ranked entities by how much louder than usual they were. Reviewing the three cases that actually worked for the operator showed the opposite shape: small entities with no broad attention, whose own community was slowly tightening (more posts from the same people, more scarcity language). None of them ever reached the top of a board, so the system could not put the right kind of candidate in front of the operator. A second failure: the universe builder added communities that merely existed (newest post six years old, one private since spring) and every board read their silence as a quiet week.
- pattern moderate 49d agoMapping company names to fan communities: strip corporate suffixes, and a one-word name needs the community to prove it is about the companyBuilding a watch-list of small companies from a financial data feed and pairing each with its community (a subreddit) produced confident false matches: a one-word company name resolved to a community about a Norse god, an Australian suburb, an English city, a video game, or a generic word ("Designer"). Company names from the feed also carried corporate suffixes ("Holdings, Inc.", "Industries", "Group") and were truncated at ~31 characters with share-class fragments ("..., Inc. -", "International, In"), so aliases nobody types were written and could never match a post.
- pattern major 49d agoA signal stream that fires for most of what it measures is measuring itself: add an inflation guard before letting it voteA multi-source "agreement" board (a brand appears when several independent streams are above their own baseline) was dominated by one stream: a video platform sampler whose history is reconstructed from the videos still visible today, so the past is always thinner than the present and every entity looks like it is rising (82% of judged brands fired, median ratio x5). Rows carried by that stream looked like strong multi-signal agreement. Two related artifacts: a series that starts with empty weeks (collection reached the entity late) counted 0>=0 as consecutive rising steps and printed "25 weeks climbing, x26" on flat data; and a rotating sampler reaching an entity for the first time was reported as the entity "appearing" with an infinite ratio.
- gotcha major 51d agoWikipedia pageview time series break on article-title moves and person-page collisions — never trust cross-year ratios without pinning the canonical titleUsing the Wikimedia REST per-article pageviews API as a multi-year "attention" signal for a brand/entity and computing year-over-year or cross-period ratios. Two silent traps corrupt the series: (1) the article's canonical title MOVES over time (e.g. "Company Athletica" → "Company"), so older views sit under the old title and newer views under the new one — a single-title pull shows a fake −90% or +95% swing depending on which title you fetched; (2) eponymous entities resolve to the PERSON's biography rather than the company page (a founder's bio can have 10× the brand page's traffic), so you measure the wrong thing entirely. Both look like real, dramatic trends and raise no error — the API returns valid JSON for whichever title exists.