- Using boolean queries to improve search relevance in Elasticsearch (May 1, 2020)
- Using slow logs in Elastic Cloud Enterprise (Apr 26, 2020)
- Using Elastic machine learning to detect anomalies in derivative values (Apr 21, 2020)
- Enriching Elasticsearch documents with CSV data (Mar 21, 2020)
- Converting CSV to JSON in Filebeat (Mar 17, 2020)
- Enriching data with the Logstash translate filter (Mar 6, 2020)
- How to create maintainable and reusable Logstash pipelines (Feb 26, 2020)
- Using Logstash and Elasticsearch scripted upserts to transform eCommerce purchasing data (Dec 17, 2019)
- Emulating transactional functionality in Elasticsearch with two-phase commits (Dec 5, 2019)
- Converting local time to ISO 8601 time in Elasticsearch (Oct 16, 2019)
- ES Local Indexer – Desktop search powered by Elasticsearch (Aug 7, 2019)
- Counting unique beats agents sending data into Elasticsearch (Jul 18, 2019)
- How to keep Elasticsearch synchronized with a relational database using Logstash (Jun 20, 2019)
- Improving the performance of Logstash persistent queues (Jun 15, 2019)
- Improving the performance of high-cardinality terms aggregations (May 9, 2019)
- Debugging Elasticsearch and Lucene with IntelliJ IDEA (Feb 2, 2019)
- A step-by-step guide to enabling security, TLS/SSL, and PKI authentication in Elasticsearch (Nov 5, 2018)
- How to tune Elasticsearch for aggregation performance (Oct 2, 2018)
- Deduplicating documents in Elasticsearch (Jul 23, 2018)
- Using Logstash to drive filtered data from a single source into multiple output destinations (Aug 31, 2018)
- Using Logstash prune capabilities to whitelist sub-documents (Aug 28, 2018)
- Trade-offs to consider when storing binary data in MongoDB (Mar 2, 2017)
- How to generate unique identifiers for use with MongoDB (Jan 30, 2017)
- How to manually perform a point in time restore in MongoDB (Jan 25, 2017)
- Financial implications of exercising share options (Jul 27, 2019)
- How to mitigate hangovers (Jul 31, 2019)
The publications listed below have been cited 2407 times as of July 2019, according to Google Scholar.
- Architecture and CAD for Deep-Submicron FPGAs (Mar, 1999 — The Springer International Series in Engineering and Computer Science).
- Cluster-Based Architecture, Timing-Driven Packing and Timing-Driven Placement for FPGAs (Apr 1999 — National Library of Canada).
- The Stratix II Logic and Routing Architecture (Nov 2005 — ACM/Sigda 13th International Symposium on Field-Programmabel Gate Arrays).
- The Stratix Routing and Logic Architecture (Feb 2003 — ACM/Sigda International Symposium on Field-Programmable Gate Arrays).
- Speed and Area trade-offs in Cluster-Based FPGA Architectures (Feb 2000 — IEEE Transactions on VLSI).
- Timing-Driven Placement for FPGAs (Feb 2000 — Proc. 8th. ACM/SIGDA Intl. Symposium on FPGAs).
- Using Cluster-Based Logic Blocks and Timing-Driven Packing to Improve FPGA Speed and Density (Feb 1999 — Proc. 7th ACM/SIGDA Intl. Symposium on FPGAs).
- US patent 8,516,595 – Method and system for estimating the reliability of blacklists of botnet-infected computers
- US patent 7,218,133 – Versatile logic element and logic array block
- US patent 6,970,014 – Routing architecture for a programmable logic device
- ChatSurfing – A full-featured, in-the-browser group chat and peer-to-peer video-conferencing application.
Open source software projects
- ES Local Indexer – Desktop search powered by Elasticsearch – A small desktop search application that runs on top of a local Elasticsearch installation.
- Lexalink – social network (dating website) platform – Full stack of software that was used for hosting several dating websites from 2009 to 2015.
- Verilog to Routing — Open Source CAD Flow for FPGA Research – Author of the original timing-driven placement and timing-driven packing algorithms used for automating the design and layout of electronic circuits.
- Author of three papers that were selected to be amongst the 25 most significant FPGA papers of the past 20 years at the 20th anniversary of the International Symposium on Field-Programmable Gate Arrays in 2012.