- November 30th, 2017: For Thursday's #haskell problem we've published our articles to the PostgreSQL database, now let's extract them as JSON. Today's #haskell solution is a simple SQL query and applying some work from previous exercise to fetch and JSONify recommended articles to print!
- November 29th, 2017: For Wednesday's #haskell problem, now that we've selected the recommended articles, let's save that for review to the PostgreSQL database. For today's #haskell solution, we delete the old recommendations-to-be-published, we insert the new set. Voilà!
- November 28th, 2017: Monday we added articles from a PostgreSQL database using #haskell; Tuesday we delete articles. WHEEEEE! Today's #haskell solution shows that deleting article recommendations is very much like adding recommendations, ... in reverse. WHODATHUNK!
- November 27th, 2017: Monday's problem: "It's not rocket science!" Adding articles to a recommendation set in PostgreSQL with #haskell. A little bit of #haskell; a little bit of #PHP and we have an article-adder-webservice ... thingie!
- November 24th, 2017: Friday's #haskell problem: PostgreSQL database, JSON, Haskell: you've got yourself a webservice. Friday's #haskell solution uses the Brief-structure, this time to show article recommendations.
- November 23rd, 2017: For Thursday, a fun little #haskell JSON-y exercise on Thanksgiving Day from the USA to you! Y'know, Nietzsche says: "Out of chaos comes JSON." ... no ... wait.
- November 22nd, 2017: Wednesday's #haskell problem: given a NYT article index, extract the article full text from PostgreSQL. Simple, eh? ... 'maybe.' Full text of NYT articles archived in PostgreSQL as JSON.
- November 21st, 2017: Tuesday's #haskell problem we slim down the article JSON returned from yesterday by providing article briefs. Today's #haskell solution goes from a set of recommendations from NYT articles to briefs.
- November 20th, 2017: Monday's #haskell problem moves keyword/key-phrase-article retrieval and matching to the PostgreSQL database. Today's #haskell solution: we build our keyword-key-phrase dictionary from SQL and filter articles indexing from those keywords.
- November 17th, 2017: Thursday we linked keywords to key-phrases; for Friday's #haskell problem, we'll upload that linkage information to a PostgreSQL data store. Today's #haskell solution stores 26,000+ keywords, with almost 240,000 cross-references into nearly 10,000 NYT articles. Whoa.
- November 16th, 2017: Thursday's #haskell problem: provide a mapping from unique keywords to key-phrases containing them. Mapping keywords to key-phrases, it's what we do for today's #haskell solution.
- November 15th, 2017: Wednesday's #haskell problem is to parse a CSV file of articles to upload to an article MongoDB. Today's #haskell solution has a little bit of CSVing and a little bit of JSONification to upload article information into MongoDB.
- November 14th, 2017: Tuesday's #haskell exercise is a parsing exercise of a different sort: parsing CSV, but with embedded quote within columns! Ooh! We now can parse CSV files with embedded quotes. YES! Adding that to the old CSV parsing library.
- November 13th, 2017: Indexing articles by keyword and then searching articles by keyword for Monday's #haskell problem. For today's #haskell solution we intersect sets of articles to do fast keyword searches.
- November 10th, 2017: Friday's #haskell exercise is to load the keywords and recommended articles into the PostgreSQL database. Thanks to today's #haskell solution we have articles and keyphrases indexed by keyword.
- November 9th, 2017: Thursday's #haskell problem ties NYT article data stored in PostgreSQL together with the recommended articles from JSON. Today's #haskell solution is reading NYT article recommendations from a PostgreSQL database.
- November 8th, 2017: Wednesday's #haskell problem is to combine article recommendations with their key-phrases to output as JSON. Wednesday's #haskell solution: JSON: GET. (p.s. I love Data.Aeson.Encode.Pretty)
- November 7th, 2017: Tuesday's #haskell problem is to parse JSON of NYT articles and their metadata. Today's #haskell solution: we have articles stored as JSON, and, voilà! we materialize those articles!
- November 6th, 2017: Monday's #haskell exercise is to parse a CSV file of recommended articles from the NYT archive. Today's #haskell solution uses the reads-function to guide the parsing of values from a CSV file.
- November 3rd, 2017: Today is Friday! YAY! Do you know what that means? It's PARSING DAY is #haskell-land! YAY! ... no ... wait. What? TIL that parsing keywords and parsing LISTS of keywords can be very different things for today's #haskell solution.
- November 2nd, 2017: Today's #haskell problem: 'Hello, world' in Haskell. Snark on the side FO' FREE! I don't recall Eliza being this snarky, but today's #haskell solution says differently.
- November 1st, 2017: Wednesday #haskell problem is scan a new archive and update the special character file or correct the new archive. The #haskell solution to replacing special characters... WHAT special characters? They GONE! #ETL
Thursday, November 30, 2017
Saturday, November 4, 2017
sing [x] = Right x
sing (_ : _) = Left "Too many"
valid = sing . nub
go = _1 valid . unzip
in traverse go
Tuesday, October 31, 2017
Tuesday, October 3, 2017
Saturday, September 30, 2017
Tuesday, September 19, 2017
- August 1st, 2017: f :: (Maybe a, b) -> Maybe (a, b) Define points-free.
- August 1st, 2017:
Given f above and f a and f b are mutually exclusive in Maybe monad, define
g :: Maybe (a, b) -> Maybe (a, b) -> (Maybe a, b)
- August 1st, 2017:
Now, let's define the dual of f
f' :: Maybe (a, b) -> (Maybe a, b)
Friday, September 1, 2017
- August 31st, 2017: Today's #haskell exercise is by way of @ahnqir. What are the percentage of facebook users by country? Today's #haskell solution charts FB users by country. GO INDIA!
- August 4th, 2017: For today's #haskell problem we are looking at the caesar cipher as a better rot13. And today's #haskell solution with rot, rot, roslein rot everywhere.
- August 1st, 2017: For today's #haskell problem we are parsing a string into word-tokens and munging/demunging them with rot13! WOOT! Munging plaintext and demunging cyphertext, oh, my!