41554 blogs · [ { "id": "01a087a0-5df7-704d-98e6-3abafb53b04d", "title": "Node.js: Minifying JSON documents", "url": "https://www.markhneedham.com/blog/2023/05/30/nodejs-minify-json-documents/", "published_at": "2023-05-30T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafbe771ae", "title": "DuckDB: Ingest a bunch of CSV files from GitHub", "url": "https://www.markhneedham.com/blog/2023/05/25/duckdb-ingest-csv-files-github/", "published_at": "2023-05-25T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafc70e55d", "title": "DuckDB/SQL: Create a list of numbers", "url": "https://www.markhneedham.com/blog/2023/05/24/duckdb-sql-create-list-numbers/", "published_at": "2023-05-24T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafd187a41", "title": "Arc Browser: Building a plugin (Boost) with help from ChatGPT", "url": "https://www.markhneedham.com/blog/2023/05/23/arc-browser-creating-boost-plugin-with-chatgpt/", "published_at": "2023-05-23T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafd98afec", "title": "Venkat - An inline code snippet execution extension for VS Code (Made in GPT-4)", "url": "https://www.markhneedham.com/blog/2023/05/17/venkat-inline-code-snippet-execution-vs-code-execution/", "published_at": "2023-05-17T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafdbe93eb", "title": "Cropping a video using FFMPEG", "url": "https://www.markhneedham.com/blog/2023/05/15/cropping-video-ffmpeg/", "published_at": "2023-05-15T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafe63b769", "title": "Python: Naming slices", "url": "https://www.markhneedham.com/blog/2023/05/13/python-naming-slices/", "published_at": "2023-05-13T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abafeed2404", "title": "Python 3.10: Pattern matching with match/case", "url": "https://www.markhneedham.com/blog/2023/05/09/python-pattern-matching-match-case/", "published_at": "2023-05-09T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abaff4f585d", "title": "DuckDB/SQL: Get decade from date", "url": "https://www.markhneedham.com/blog/2023/04/20/duckdb-sql-decade-from-date/", "published_at": "2023-04-20T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abaff76009a", "title": "DuckDB/SQL: Convert epoch to timestamp with timezone", "url": "https://www.markhneedham.com/blog/2023/04/05/duckdb-sql-convert-epoch-timestamp-timezone/", "published_at": "2023-04-05T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb006fcde0", "title": "Tennis Head to Head with DuckDB and Streamlit", "url": "https://www.markhneedham.com/blog/2023/03/31/tennis-head-to-head-duckdb-streamlit/", "published_at": "2023-03-31T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb00eaf420", "title": "DuckDB/Python: Cannot combine LEFT and RIGHT relations of different connections!", "url": "https://www.markhneedham.com/blog/2023/03/20/duckdb-cannot-combine-left-right-relations/", "published_at": "2023-03-20T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb015fd201", "title": "Apache Pinot: Geospatial - java.nio.BufferUnderflowException: null", "url": "https://www.markhneedham.com/blog/2023/03/10/apache-pinot-geospatial-buffer-underflow/", "published_at": "2023-03-10T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0173060f", "title": "DuckDB: Join based on maximum value in other table", "url": "https://www.markhneedham.com/blog/2023/02/01/duckdb-join-max-value-other-table/", "published_at": "2023-02-01T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb01b7d661", "title": "Flink SQL: Could not execute SQL statement. Reason: java.io.IOException: Corrupt Debezium JSON message", "url": "https://www.markhneedham.com/blog/2023/01/24/flink-sql-could-not-execute-sql-statement-corrupt-debezium-message/", "published_at": "2023-01-24T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb02657961", "title": "Flink SQL: Exporting nested JSON to a Kafka topic", "url": "https://www.markhneedham.com/blog/2023/01/24/flink-sql-export-nested-json-kafka/", "published_at": "2023-01-24T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb028f0550", "title": "Exporting CSV files to Parquet file format with Pandas, Polars, and DuckDB", "url": "https://www.markhneedham.com/blog/2023/01/06/export-csv-parquet-pandas-polars-duckdb/", "published_at": "2023-01-06T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb02b8fbb6", "title": "kcat/jq: Reached end of topic at offset: exiting", "url": "https://www.markhneedham.com/blog/2022/12/06/kcat-jq-reached-end-of-topic-exiting/", "published_at": "2022-12-06T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb039e579a", "title": "Python: Sorting lists of dictionaries with sortedcontainers", "url": "https://www.markhneedham.com/blog/2022/12/02/python-sorting-lists-dictionaries-sortedcontainers/", "published_at": "2022-12-02T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb042b56c6", "title": "Blogging for Google: Why I write about error messages", "url": "https://www.markhneedham.com/blog/2022/11/22/blogging-for-google-error-messages/", "published_at": "2022-11-22T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb04ab731e", "title": "Apache Pinot: Inserts from SQL - Unable to get tasks states map - ClassNotFoundException: 'org.apache.pinot.plugin.filesystem.S3PinotFS'", "url": "https://www.markhneedham.com/blog/2022/11/18/apache-pinot-inserts-sql-unable-get-tasks-states-map-classnotfoundexception-s3pinotfs/", "published_at": "2022-11-18T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb05378c9e", "title": "Apache Pinot: Inserts from SQL - Unable to get tasks states map - No task is generated for table", "url": "https://www.markhneedham.com/blog/2022/11/18/apache-pinot-inserts-sql-unable-get-tasks-states-map-no-task-generated-for-table/", "published_at": "2022-11-18T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb05a765c9", "title": "Apache Pinot: Inserts from SQL - Unable to get tasks states map - NullPointerException", "url": "https://www.markhneedham.com/blog/2022/11/18/apache-pinot-inserts-sql-unable-get-tasks-states-map-nullpointerexception/", "published_at": "2022-11-18T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb06176595", "title": "Diffing Apache Parquet schemas with DuckDB", "url": "https://www.markhneedham.com/blog/2022/11/17/duckdb-diff-parquet-schema/", "published_at": "2022-11-17T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb06a8d562", "title": "Apache Pinot: Unable to render templates on ingestion job spec template file", "url": "https://www.markhneedham.com/blog/2022/11/14/apache-pinot-unable-to-render-templates/", "published_at": "2022-11-14T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0756cc20", "title": "Java: FileSystems.getDefault().getPathMatcher: IllegalArgumentException", "url": "https://www.markhneedham.com/blog/2022/11/11/java-file-systems-path-matcher/", "published_at": "2022-11-11T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0838e013", "title": "Vercel: Redirect wildcard (nested) paths", "url": "https://www.markhneedham.com/blog/2022/07/27/vercel-redirect-wildcards-nested-paths/", "published_at": "2022-07-27T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb092b4fa6", "title": "Apache Pinot: Import JSON data from a CSV file - Illegal Json Path: $['id'] does not match document", "url": "https://www.markhneedham.com/blog/2022/07/21/apache-pinot-import-json-data-csv-file-illegal-json-path-does-not-match-document/", "published_at": "2022-07-21T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb097d24e6", "title": "Docusaurus: Side menu on custom page", "url": "https://www.markhneedham.com/blog/2022/07/11/docusaurus-side-menu-custom-page/", "published_at": "2022-07-11T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0a3733c9", "title": "Apache Pinot: Skipping periodic task: Task: PinotTaskManager", "url": "https://www.markhneedham.com/blog/2022/06/23/apache-pinot-skipping-periodic-task-pinot-task-manager/", "published_at": "2022-06-23T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0a3b9c64", "title": "docker exec: Passing in environment variables", "url": "https://www.markhneedham.com/blog/2022/06/16/docker-exec-environment-variables/", "published_at": "2022-06-16T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0aa01556", "title": "Dash: Configurable dcc.Interval", "url": "https://www.markhneedham.com/blog/2022/04/23/dash-configurable-dcc-interval/", "published_at": "2022-04-23T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0b945969", "title": "Apache Pinot: Speeding up queries with IdSets", "url": "https://www.markhneedham.com/blog/2022/04/08/apache-pinot-speeding-up-queries-id-set/", "published_at": "2022-04-08T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0c2c75ca", "title": "Apache Pinot: Lookup Join - 500 Error - Unsupported function: lookup with 4 parameters", "url": "https://www.markhneedham.com/blog/2022/04/05/apache-pinot-lookup-join-internal-error-unsupported-function/", "published_at": "2022-04-05T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0d0ad182", "title": "Apache Pinot: Failed to generate segment - Input path {} does not exist", "url": "https://www.markhneedham.com/blog/2022/03/17/apache-pinot-failed-to-generated-segment-input-path-does-not-exist/", "published_at": "2022-03-17T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0d37ad12", "title": "Apache Pinot: Deleting instances in a bad state", "url": "https://www.markhneedham.com/blog/2022/02/21/apache-pinot-delete-instances-bad-state/", "published_at": "2022-02-21T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0de94d17", "title": "Streamlit: Overwrite previous value in a loop", "url": "https://www.markhneedham.com/blog/2022/02/19/streamlit-overwrite-previous-value-loop/", "published_at": "2022-02-19T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0e1d597b", "title": "Apache Pinot: Resetting a segment after an invalid JSON Transformation", "url": "https://www.markhneedham.com/blog/2022/01/31/pinot-resetting-segment-invalid-json-transformation/", "published_at": "2022-01-31T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0e679036", "title": "Kafka: Writing data to a topic from the command line", "url": "https://www.markhneedham.com/blog/2022/01/22/kafka-writing-data-topic-command-line/", "published_at": "2022-01-22T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0f044cee", "title": "Apache Pinot: Sorted indexes on real-time tables", "url": "https://www.markhneedham.com/blog/2022/01/20/apache-pinot-sorted-indexes-realtime-tables/", "published_at": "2022-01-20T02:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0f1c9287", "title": "Apache Pinot: Sorted indexes on offline tables", "url": "https://www.markhneedham.com/blog/2022/01/19/apache-pinot-sorted-indexes-offline-tables/", "published_at": "2022-01-19T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb0ff887b2", "title": "Strava: Export and interpolate lat/long points for an activity", "url": "https://www.markhneedham.com/blog/2022/01/18/strava-export-interpolate-lat-long-points-activity/", "published_at": "2022-01-18T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb1072a868", "title": "Python: Generate WKT from Lat Long Coordinates", "url": "https://www.markhneedham.com/blog/2022/01/14/python-generate-wkt-lat-long-coordinates/", "published_at": "2022-01-14T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb11222e15", "title": "Apache Pinot: Checking which indexes are defined", "url": "https://www.markhneedham.com/blog/2022/01/13/apache-pinot-which-indexes-are-defined/", "published_at": "2022-01-13T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb11f300d1", "title": "Apache Pinot: Exploring range queries", "url": "https://www.markhneedham.com/blog/2021/12/07/apache-pinot-exploring-range-queries/", "published_at": "2021-12-07T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb12b65bf7", "title": "Apache Pinot: Copying a segment to a new table", "url": "https://www.markhneedham.com/blog/2021/12/06/apache-pinot-copy-segment-new-table/", "published_at": "2021-12-06T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb131befdc", "title": "Apache Pinot: Convert DateTime string to Timestamp - IllegalArgumentException: Invalid timestamp", "url": "https://www.markhneedham.com/blog/2021/12/03/apache-pinot-convert-datetime-string-timestamp-invalid-timestamp/", "published_at": "2021-12-03T00:44:37+00:00" }, { "id": "01a087a0-5df7-704d-98e6-3abb136ef535", "title": "Apache Pinot: Exploring indexing techniques on Chicago Crimes", "url": "https://www.markhneedham.com/blog/2021/11/30/apache-pinot-exploring-index-chicago-crimes/", "published_at": "2021-11-30T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439983674e", "title": "Apache Pinot: Importing CSV files with columns containing spaces", "url": "https://www.markhneedham.com/blog/2021/11/25/apache-pinot-csv-columns-spaces/", "published_at": "2021-11-25T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b4399ffb11f", "title": "Apache Pinot: org.apache.helix.HelixException: Cluster structure is not set up for cluster: PinotCluster", "url": "https://www.markhneedham.com/blog/2021/11/23/apache-pinot-helix-exception-cluster-structure-not-set-up/", "published_at": "2021-11-23T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439a3fa77a", "title": "Apache Pinot: BadQueryRequestException - Cannot convert value to type: LONG", "url": "https://www.markhneedham.com/blog/2021/07/16/pinot-bad-query-request-exception-cannot-convert-value-long/", "published_at": "2021-07-16T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439ae81a26", "title": "Apache Pinot: Analysing England's Covid case data", "url": "https://www.markhneedham.com/blog/2021/06/22/pinot-analysing-england-covid-cases/", "published_at": "2021-06-22T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439b04927c", "title": "Apache Pinot: {'errorCode': 410, 'message': 'BrokerResourceMissingError'}", "url": "https://www.markhneedham.com/blog/2021/06/21/pinot-broker-resource-missing/", "published_at": "2021-06-21T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439b44246c", "title": "jq: Select multiple keys", "url": "https://www.markhneedham.com/blog/2021/05/19/jq-select-multiple-keys/", "published_at": "2021-05-19T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439bc82cd3", "title": "Pandas: Add row to DataFrame", "url": "https://www.markhneedham.com/blog/2021/05/13/pandas-add-row-to-dataframe-with-index/", "published_at": "2021-05-13T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439c1faf6b", "title": "Altair/Pandas: TypeError: Cannot interpret 'Float64Dtype()' as a data type", "url": "https://www.markhneedham.com/blog/2021/04/28/altair-pandas-cannot-interpret-float64dtype-as-data-type/", "published_at": "2021-04-28T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439c43dc43", "title": "Pandas: Compare values in DataFrame to previous days", "url": "https://www.markhneedham.com/blog/2021/04/21/pandas-compare-dataframe-to-previous-days/", "published_at": "2021-04-21T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439ce7765c", "title": "Vaccinating England: The Data (cleanup)", "url": "https://www.markhneedham.com/blog/2021/04/17/england-covid-vaccination-rates-the-data/", "published_at": "2021-04-17T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439d3c968f", "title": "Pandas - Format DataFrame numbers with commas and control decimal places", "url": "https://www.markhneedham.com/blog/2021/04/11/pandas-format-dataframe-numbers-commas-decimals/", "published_at": "2021-04-11T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439d719922", "title": "Pandas - Dividing two DataFrames (TypeError: unsupported operand type(s) for /: 'str' and 'str')", "url": "https://www.markhneedham.com/blog/2021/04/08/pandas-divide-dataframes-unsupported-operand-type-str/", "published_at": "2021-04-08T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439d7ecf66", "title": "Altair - Remove margin/padding on discrete X axis", "url": "https://www.markhneedham.com/blog/2021/04/02/altair-discrete-x-axis-margin-padding/", "published_at": "2021-04-02T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439e3164b5", "title": "Pandas: Filter column value in array/list - ValueError: The truth value of a Series is ambiguous", "url": "https://www.markhneedham.com/blog/2021/03/28/pandas-column-value-in-array-list-truth-value-ambiguous/", "published_at": "2021-03-28T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439ebdd3b2", "title": "Neo4j Graph Data Science 1.5: Exploring the Speaker-Listener LPA Overlapping Community Detection Algorithm", "url": "https://www.markhneedham.com/blog/2021/02/08/neo4j-gdsl-overlapping-community-detection-sllpa/", "published_at": "2021-02-08T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b439f3df387", "title": "Neo4j Graph Data Science 1.5: Exploring the HITS Algorithm", "url": "https://www.markhneedham.com/blog/2021/02/03/neo4j-gdsl-hits-algorithm/", "published_at": "2021-02-03T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a0052a73", "title": "Materialize: Creating multiple views on one source", "url": "https://www.markhneedham.com/blog/2021/01/28/materialize-multiple-views-one-source/", "published_at": "2021-01-28T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a0240430", "title": "Materialize: Unable to automatically determine a timestamp for your query; this can happen if your query depends on non-materialized sources", "url": "https://www.markhneedham.com/blog/2020/12/31/materialize-unable-automatically-determine-timestamp-query/", "published_at": "2020-12-31T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a083bb3b", "title": "jq: How to change the value of keys in JSON documents", "url": "https://www.markhneedham.com/blog/2020/12/30/jq-change-value-multiple-keys/", "published_at": "2020-12-29T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a173a153", "title": "Materialize: Querying JSON arrays", "url": "https://www.markhneedham.com/blog/2020/12/29/materialize-json-arrays/", "published_at": "2020-12-29T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a25c7fbe", "title": "Strava: Export all activities to JSON file", "url": "https://www.markhneedham.com/blog/2020/12/20/strava-export-all-activities-json/", "published_at": "2020-12-20T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a2fcb44c", "title": "git: Ignore local changes on committed (env) file", "url": "https://www.markhneedham.com/blog/2020/12/18/git-ignore-local-changes-committed-env-file/", "published_at": "2020-12-18T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a3df9e0b", "title": "Materialize: Querying JSON files", "url": "https://www.markhneedham.com/blog/2020/12/17/materialize-querying-json-file/", "published_at": "2020-12-17T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a4abba53", "title": "Strava: Authorization Error - Missing activity:read_permission", "url": "https://www.markhneedham.com/blog/2020/12/15/strava-authorization-error-missing-read-permission/", "published_at": "2020-12-15T00:44:37+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a5169fe7", "title": "Neo4j: Cypher - FOREACH vs CALL {} (subquery)", "url": "https://www.markhneedham.com/blog/2020/10/29/neo4j-foreach-call-subquery/", "published_at": "2020-10-29T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a5dcb170", "title": "Unix: Get file name without extension from file path", "url": "https://www.markhneedham.com/blog/2020/08/24/unix-get-file-name-without-extension-from-file-path/", "published_at": "2020-08-24T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a6b9e073", "title": "pipenv: ImportError: No module named 'virtualenv.seed.via_app_data'", "url": "https://www.markhneedham.com/blog/2020/08/07/pipenv-import-file-no-module-named-virtualenv/", "published_at": "2020-08-07T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a7a15acc", "title": "Google Docs: Find and replace script", "url": "https://www.markhneedham.com/blog/2020/05/12/google-docs-find-and-replace-script/", "published_at": "2020-05-12T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a8778866", "title": "QuickGraph #7: An entity graph of TWIN4j using APOC NLP", "url": "https://www.markhneedham.com/blog/2020/05/05/quick-graph-building-entity-graph-twin4j-apoc-nlp/", "published_at": "2020-05-05T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a91a6a20", "title": "Python: Select keys from map/dictionary", "url": "https://www.markhneedham.com/blog/2020/04/27/python-select-keys-from-map-dictionary/", "published_at": "2020-04-27T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a93ea566", "title": "QuickGraph #6: COVID-19 Taxonomy Graph", "url": "https://www.markhneedham.com/blog/2020/04/21/quick-graph-covid-19-taxonomy/", "published_at": "2020-04-21T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43a9a407eb", "title": "Python: Find the starting Sunday for all the weeks in a month", "url": "https://www.markhneedham.com/blog/2020/04/18/python-starting-sundays-in-a-month/", "published_at": "2020-04-18T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43aa50c59f", "title": "React Semantic-UI: Adding a custom icon to open link in a new window", "url": "https://www.markhneedham.com/blog/2020/04/13/react-semantic-ui-custom-add-icon-open-new-window/", "published_at": "2020-04-13T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43aa841a4b", "title": "Streamlit: multiselect - AttributeError: 'numpy.ndarray' object has no attribute 'index'", "url": "https://www.markhneedham.com/blog/2020/03/31/streamlit-multiselect-numpy-no-attribute-index/", "published_at": "2020-03-31T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43aac3a2bf", "title": "SPARQL: OR conditions in a WHERE clause using the UNION clause", "url": "https://www.markhneedham.com/blog/2020/02/07/sparql-or-conditions-where-union-query/", "published_at": "2020-02-07T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43ab8590e5", "title": "Neo4j: Enriching an existing graph by querying the Wikidata SPARQL API", "url": "https://www.markhneedham.com/blog/2020/02/04/neo4j-enriching-existing-graph-wikidata-sparql-api/", "published_at": "2020-02-04T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43ac3c310c", "title": "Neo4j: Cross database querying with Neo4j Fabric", "url": "https://www.markhneedham.com/blog/2020/02/03/neo4j-cross-database-querying-fabric/", "published_at": "2020-02-03T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43acc5a126", "title": "Querying Wikidata: SELECT vs CONSTRUCT", "url": "https://www.markhneedham.com/blog/2020/02/02/querying-wikidata-construct-select/", "published_at": "2020-02-02T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43acdda274", "title": "Neo4j: Finding the longest path", "url": "https://www.markhneedham.com/blog/2020/01/29/neo4j-finding-longest-path/", "published_at": "2020-01-29T15:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43ad531627", "title": "A newbie's guide to querying Wikidata", "url": "https://www.markhneedham.com/blog/2020/01/29/newbie-guide-querying-wikidata/", "published_at": "2020-01-29T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43adc43759", "title": "Neo4j: Performing a database dump within a Docker container", "url": "https://www.markhneedham.com/blog/2020/01/28/neo4j-database-dump-docker-container/", "published_at": "2020-01-28T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43ae5060e1", "title": "Neo4j: Exporting a subset of data from one database to another", "url": "https://www.markhneedham.com/blog/2020/01/27/neo4j-exporting-subset-database/", "published_at": "2020-01-27T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43aede7e7c", "title": "QuickGraph #5: Australian Open", "url": "https://www.markhneedham.com/blog/2020/01/23/quick-graph-australian-open/", "published_at": "2020-01-23T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43af6663d7", "title": "Creating an Interactive UK Official Charts Data App with Streamlit and Neo4j", "url": "https://www.markhneedham.com/blog/2020/01/16/interactive-uk-charts-quickgraph-neo4j-streamlit/", "published_at": "2020-01-16T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b00b7271", "title": "Python: Altair - Setting the range of Date values for an axis", "url": "https://www.markhneedham.com/blog/2020/01/14/altair-range-values-dates-axis/", "published_at": "2020-01-14T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b0e5ea56", "title": "Python: Altair - TypeError: Object of type date is not JSON serializable", "url": "https://www.markhneedham.com/blog/2020/01/10/altair-typeerror-object-type-date-not-json-serializable/", "published_at": "2020-01-10T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b0f23ba9", "title": "QuickGraph #4: UK Official Singles Chart 2019", "url": "https://www.markhneedham.com/blog/2020/01/04/quick-graph-uk-official-charts/", "published_at": "2020-01-04T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b18b838b", "title": "Spotify API: Making my first call", "url": "https://www.markhneedham.com/blog/2020/01/02/spotify-api-making-my-first-call/", "published_at": "2020-01-02T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b209b492", "title": "QuickGraph #3: Itsu Allergens", "url": "https://www.markhneedham.com/blog/2019/12/23/quick-graph-itsu-allergens/", "published_at": "2019-12-23T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b2f778cd", "title": "QuickGraph #2: Guardian Top 100 Male Footballers", "url": "https://www.markhneedham.com/blog/2019/12/22/quick-graph-guardian-top-100-male-footballers/", "published_at": "2019-12-22T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b345aa18", "title": "React React Router: Setting parent component state based on route change event", "url": "https://www.markhneedham.com/blog/2019/12/19/react-reach-parent-event-route-change/", "published_at": "2019-12-19T00:21:00+00:00" }, { "id": "01a087a0-5df8-73f3-a865-7b43b3516881", "title": "Elasticsearch: Importing data into App Search", "url": "https://www.markhneedham.com/blog/2019/11/24/elasticsearch-import-data-appsearch/", "published_at": "2019-11-24T00:21:00+00:00" } ] posts Claim your blog
Back to markhneedham.com
Blog · corpus.blog/blogs/markhneedham.com/posts

markhneedham.com

markhneedham.com

2023

2022

2021

2020

2019