here you goThings I’ve made, read and saved — shared here.

Archive

9,684 entries: 91 from X, 8,928 from Pinboard, saved 1998 to 2026.

Browse by tag, site, author, folder or language

Tags

Sites

Authors

Folders

Languages

Showing 3,701–3,750 of 9,684

2020

My code in books

btbytes.github.io

Someone put one of my "classroom assignment" implementation of Particle Swarm Optimization using numpy from 11 years ago in a book ;)

btbytes.github.ioPinboardPermalink

Google Groups

groups.google.com

@santalum_aurum "The single most powerful jolt we have experienced in all our poetry reading", is what this connoisseur calls the verse.

The jolt is no less powerful in the translation, showing the simple mother's voice effervescent, and the learned son's voice trailing.

groups.google.comPinboardPermalink

Reading | Austen Allred

austenallred.com

I finally had someone put all the memos you should read into unified PDFs then put them all on one page.

  • Berkshire Hathaway shareholder letters

  • Amazon shareholder letters

  • Constellation Software president's letters

All in single downloadable PDFs

austenallred.comPinboardPermalink

GitHub - gladimdim/smalltalk-to-dart

github.com

So I can compile #smalltalk classes to @dart_lang . But now I want to generate markdown documentation of my resource economy from the same @pharoproject classes! In this way docs will be always up to date with real code!!!

github.comPinboardPermalink

SQL

SQL Words
SQL Words (via)
## On SQL

Learning resources

Select Star SQL "... is an interactive book which aims to be the best place on the internet for learning SQL. It is free of charge, free of ads and doesn't require registration or downloads. It helps you learn by running queries against a real-world dataset to complete projects of consequence. It is not a mere reference page — it conveys a mental model for writing SQL". Very nicely laid out (credits M. Buttrick of "Practical Typography").

SQL Teaching - The easiest tutorial to learn SQL

SQLBolt - Learn SQL - Introduction to SQL ... a series of interactive lessons and exercises designed to help you quickly learn SQL right in your browser. Related website - regexone

Advanced SQL window functions quiz

SQL style guide by Simon Holywell

How Does a Database Work? | Let’s Build a Simple Database

Learn SQL while solving crimes! SQL Police Department

SQL for Data Scientists in 100 Queries

SQL visualization/query/notebook tools

Redash -- can be self hosted.

Franchise: a sql notebook -- runs local proxy on your system. the UI itself is on franchise.cloud website. Can also run locally.

apache/incubator-superset: Apache Superset (incubating) is a modern, enterprise-ready business intelligence web application

forbesmyester/esqlate -- Build minimum viable admin panels quickly with just SQL. uses node.js proxy behind nginx. template queries are written using JSON and the "holes" are filled by user to get the results back. Users can also add new records.

The Log File Navigator --

  • An advanced log file viewer for the small-scale
  • Watch and analyze your log files from a terminal.
  • No server. No setup. Still featureful.
  • Many logging tools, like Splunk, provide great features but are optimized for large-scale deployments. They require installing and configuring servers before they can be effectively used. There is still a need for a robust log file analyzer for the terminal.
  • Just point lnav to a directory and it will take care of the rest. File formats are automatically detected and compressed files are unpacked on the fly.
  • Log files are a wealth of information, lnav can help highlight the parts that are important and filter out the noise.

Editors / IDEs

Command line tools

Translation tools

Frameworks

LLM

A Survey Paper (Shi et al. 2024)

Text-to-SQL parsing solves this issue by converting natural language queries into SQL queries, thus making database access more accessible for non-expert users. To take advantage of the recent developments in Large Language Models (LLMs), a range of new methods have emerged, with a primary focus on prompt engineering and fine-tuning. This survey provides a comprehensive overview of LLMs in text-to-SQL tasks, discussing benchmark datasets, prompt engineering, fine-tuning methods, and future research directions.


See also Query Languages

References

notes#database#sql

Super

super.so

@DmytroGladkyi Question.

I've seen UI elements like this on some of your game screenshots. Is that something Flutter ships? or a UI library?

super.soPinboardPermalink

(404) https://www.whatsapp.com/unsupportedbrowser

whatsapp.com

RT @hamsanandi: To attend my Kannada Chandassu talk/tutorial this Sat, May 2nd (8 am-9.00 am PDT, which is 8.30 pm-9.30 pm IST )-may extend by 30 min, pls join this group:

ಛಂದೋಬದ್ಧ ಪದ್ಯ ಬರೆಯುವುದು ಹೇಗೆ?

Meeting link shared in the grp.🙏

#ಕನ್ನಡ #ಛಂದಸ್ಸು #ಪದ್ಯ RT pls

whatsapp.comPinboardPermalink

Software Engineering

A Senior Engineer's CheckList - Little Blah


Learning

Software carpentry - Our Lessons Over the course of the workshop, instructors teach our three core topics: the Unix shell, version control with Git, and a programming language (Python or R).

Paper reviews

Done as part of CSCI 50400 class under Dr. Hill at IUPUI.

No Silver Bullet by Fred Brooks

(Brooks 1987)

This paper by Fred Brooks addresses the inherent difficulties involved in the construction of software. The author distinguishes between the accidental difficulties, which affect the process of development but are not inherent to the final system and essential difficulties, which are inherent to the system. The progress in hardware technology, development of new, higher level programming languages and constructs help in mitigating the accidental difficulties. Of the silverbullets proposed, some have influenced the direction of software development (eg: Ada, OOP), others like program verification, IDEs, cheap & abudant processing power have managed to affect the accidental complexity to a large extent. Expert systems, AI, automated & graphical programming are of little help in deciding and defining what the software should do. The author identifies complexity, conformity, changeability and invisibility as the essential properties of the system. Developing and distributing reusable software components in place of custom development has the benefit of reduced costs via cost-sharing, improved documentation and generalisation of features required by the cross-section of the users. Rapid prototyping allows the clients to narrow down the scope of their requirements in faster fashion and also helps in understanding the capabilities of software systems in an iterative process. Moving beyond the idea of writing software to growing software boosts the morale of engineers and stakeholders alike. All of these proposed methods have to championed by great designers who are trained in sound design methodoligies, have the ability to distinguish between good and great designs and over time develop the capability to deliver structures that are efficient, simple and effective. Managing the entropy generated by the interplay of people, software, hardware is at the core of software engineering. The success of RAD tools has given credence to the rapid prototyping approach. Practicing software construction as an ongoing activity encourages the designers to make choices that address the essential problems instead of getting lost in the accidental aspects, which in practice demand significant attention. Many recent software development methodologies such as continuous integration, agile programming, emphasise the importance of the engineers, and customers having access to the software as it is built. This allows all the stakeholders to get familiar with the system capability from top-down and consequently influence the direction of software development. The idea of software a living, growing entity is a powerful one and one that encourages the desiger to make decisions that are congruent with that expectation. The pervasive adoption of component vendors and Open source software development model has proven that the "buy over build" approach has succeeded spectacularly. reviewed: Aug 22, 2012

Quantitative evaluation of software quality by Boehm

(Boehm et al. 1976)

Software quality evaluation deals with fundametal issues such as: defining characterstics of software quality that are measureable and non-overlapping, how well one can measure overall software quality and how can this information be used to improve the software life-cycle process. The paper concludes that the desireable qualities of a product are not universal and there is no single metric that can universally rate software quality. However, a useful approximation is achievable through checklists and priorities. Even then, the overall rating is suggestive than conclusive and lessons from one product cannot wholly transposed on to a new product. Quality metrics should be used to indicate the presence of anomalies and as guides to develop, test, acquire and maintain software products. Software quality is a fuzzy phrase. This paper does an excellent job of enumerating the characterstics that any proposed metric that claims to improve quality should have. Many metrics have been considered and methodically analyzed to evaluate their efficacy in achieving goals identified for the product. Metrics which are specific, help in tracking errors over the life-cycle and are amenable to automation are considered to be higher value. It is important to develop a catalog of software quality metrics that transcend individual projects. Selecting which metrics to apply for a given project should be an important part of any software project planning. Reviewed: Aug 27, 2012

NAOMI -- An Experimental Plaform for Multi-modeling

(Denton et al. 2008)

This paper documents an experimental platform designed to address the challenge of combining Domain Specific Modeling Langauges(DSMLs). The key challenges are capturing interdependencies, maintaining consistency and semantic precision. A version controlled repository is used to store all the artefacts which provides a model registry, constraint-checking, and notifications on model change. The platform provides data exchange between models, executes the models processing input to output and propagates change between connected models. The platform also checks for consistency of attributes, constraints of models and thier interactions. The components of the NOAMI system are: connectors to provide interoperability between models, a manager to orchestrate modelers in integrating and invoking connectors, and an execution engine that determines the order in which the invdividual models are executed. The system is implemented and tested using an experiment that simulates a traffic light. This paper does a good job of documenting the NOAMI project. The authors start by identifying the key challenges that the proposed system should solve. Then they go on to identify the requirements that are captured as testable outcomes. They model the software that provides the functionality required to achieve the desired outcome. Overall, the paper does an excellent job of explaining why the project was necessary, how to they implemented it and tested it. This paper made me aware of the various modeling languages used in various contexts and the problem of interoperability that exists in large projects. However, I was a little disappointed that they did not test this tool on multi-models from a real-life project that could substantiate some of the challenges they faced and validate the results obtained by using this platform. Reviewed: Aug 29, 2012

Where Do Operations Come from? A Multiparadigm Specification Technique

(Zave and Jackson 1996)

In this paper, a multiparadigm technque is discussed to organize and write complex specifications of systems that are event driven and the output of the systems modify the system state. The Z notation is augmented with automata and grammars to map input stimuli to operations and arguments of the Z specifications. The specification is made of partial specifications written in different languages: finite automaton, first-order logic and Z. Partial specifications have vocabularies which are categorised as event class, argument function and a state component.The technique described assumes that the application is restricted to a event-oriented input and the output is state-oriented. The apply this technique to write the specifications for a graphical user interface and a telephone switch. They then show how the multiparadigm specification is checked for consistency. There are many techniques which allow us to write partial specifications, which can then be combined into a complete specification of the system. While it is appealing to use a single paradigm, having multiple, yet cooperating paradigms allows us to use them against each other to check for overall system consistency. Writing formal specifications for real-life complex applications is very challenging. There are different ways of capturing the specifcations formally. I came to know of the existence of the Z system, which is impressively also an ISO specification. Some problems fit naturally with some paradigms (eg: state diagrams for -> state diagrams). Some paradigms are better suited for low level details (eg: first order logic). I'm of the opinion that the entire system should be specified using the same language, preferrably with a full- fledged, standard system like Zed. This allows the designers to get the complete system picture. However, I see that choosing the right paradigm is a judgement call on the part of the designer. So, while the paper demonstrates the use of the multiple paradigms on a real problem, it is not prescriptive for all projects.

Seven Myths of Formal Methods

(Hall 1990)

There are many commonly held beliefs that are hindering the adoption of formal methods in software development. Formal methods cannot guarantee that software is perfect because there is a limit what can be proven to correct and users of the formal system are not immune to making mistakes. However, formal methods can demonstrate correctness of the specification and find errors. Formal methods are often assumed to be useful only for program proving, however in authors experience, they are more useful in writing formal specifications, providing properties, constructing programs by mathematicaly manipulating specifications and verifying programs by mathematical argument. The paper also counters the lament that formal methods are only useful for safety-critical systems by giving examples from development of CASE tools. Formal methods do not need higher level mathematics are often feared. Familiarity with Logic and Set theory in addition to some training in Z system, can bring up the professional software engineer up to speed. The rigour brought by formal methods are claimed to reduce development costs by identifying potential problems early on. Keeping formal specifications in sync with the implementation, it is claimed that life-cycle change will become easier. The author also references the use of formal methods in large, industrial system development. The author has made a sincere effort to address the unsaid, yet often decision-influencing assumptions about formal methods. This paper makes an attempt at identifying some of those commonly held beliefs and provides anecodtal evidence from author's own software development projects. This papers serves as a good starting point to start addressing some of the concerns that formal methods are "not practical" and "too academic" given the splash of mathematical symbols on any material related to formal methods. What this paper lacks in experimental rigour is made up for by author's enthusiasm in urging the reader to take a second look at formal methods by providing convinient exits. The author's emphasis that formal methods are primarily a tool for capturing specifications rings true to me. Since specifications are contracts between the stake-holders and the implementeres, capturing it with utmost rigour is beneficial. There will always be cultural backlash from programmers who resist deviating from their programming language and platform worldview. However, a serious software engineer will welcome the clarity formal methods bring to the table.

Reviewed: Sep 10, 2012

Requirements Engineering in the year 00 -- A research perspective

(Van Lamsweerde 2000)

This paper covers the milestones in evolution of requirement engineering as a discipline. Existing system can be modeled using ontological questions like why-what-how and reasoning about the model. The scope of requirement engineering also involved identifying the elements of ontology such as goals, viewpoints, data, operations, agents and resources. Goal based reasoning allows us to capture the why questions. Formal frameworks (KOAS methodology) allow us to caputre goal refinements through AND/OR graph structures. Qualitative frameworks (NFR methodology) catpure the soft (and sub)goals. Conflicts betweeen stakeholders' viewpoints are addressed by applying conjuction on pais of viewpoints. Multi paradigm specifications lik OMT capture entiry-relationship, dataflow and state transition which is now popular(!) as UML. To elicit better expression from stakeholders, scenario based "story telling" has proven to be successful. Scenarios capture exceptional cases, abstract conceptual models, requirement validations and generate acceptance tests.

This paper makes a distinction between requirements and software specifications. This distinction is important as stakeholders often think in terms of objects and agents in the real world. Specification are formulated in terms of software objects. I am curious to learn more about goal driven nature of requirement engineering can segue into writing better software specifications. I suspect that the often mentioned screed of "insufficient requirements" can perhaps be attributed to the impedence mismatch between these two vocabularies. Another aspect of requirement engineering that appeals to me is that it has specific methodologies (NFR) to capture non-functional requirements, which is often brushed under the rug.

Reviewed: Sep 12, 2012

Software Architecture Patterns

  • Blackboard architectural model.
  • GBOpen -- a black board system in Common Lisp.

Formal Methods in Software Engineering

Documentation

tutorials, how-to guides, explanation, reference

Research and Development

Misc reading

To read

Software Design X-ray

References

  • Brooks (1987). No Silver Bullet: Essence and Accidents of Software Engineering.
  • Boehm, Brown, Lipow (1976). Quantitative Evaluation of Software Quality.
  • Denton, Jones, Srinivasan, Owens, Buskens (2008). NAOMI--an Experimental Platform for Multi--Modeling.
  • Zave, Jackson (1996). Where Do Operations Come from? A Multiparadigm Specification Technique.
  • Hall (1990). Seven Myths of Formal Methods.
  • Van Lamsweerde (2000). Requirements Engineering in the Year 00: A Research Perspective.

notes

Haskell Programming Language

Why Haskell

via

Why Not Haskell

Learning Haskell

Liquid Haskell

Write Simple Haskell

Read Haskell code

Video lectures and talks

Courses

  • Functional Programming an introductory course on functional programming in Haskell by Graham Hutton.
  • Introduction to Haskell at UPenn by Brent Yorgey, Joachim Breitner et al. This in my experience is the best introduction to Haskell in a classroom format you can find. The lecture notes are self-explantory and written in a conversational, easy to follow manner.
  • CMSC498V -- "Advanced Functional Programming Languages (Fall 2017)" taught by Dr Niki Vazou at UMD.

Developing with Haksell

Resources

Blogs

Blog posts / articles

Meta lists

Editors

  • Haskell idea plugin
  • Haskell for Mac
  • Code.world
  • Haskell-tools A GHC based toolset for Haskell programming. Currently featuring Haskell-tools Refact, a refactoring framework.
  • HyperHaskell -- is a graphical Haskell interpreter (REPL), not unlike GHCi, but hopefully more awesome. You use worksheets to enter expressions and evaluate them. Results are displayed using HTML.

Papers

My Notes

What are some of the low-friction ways of using Haskell?

  • Pandoc -- add custom elements, extract metadata from documents.
  • Hakyll -- build custom site renderers.
  • Shake -- build system where Make isn't sufficient.

If you get can't load .so/.DLL for when installing cabal package: put shared: True in ~/.cabal/config

Cabal

Sandbox:

    cabal sandbox init
    cabal init #to init a new proj.

remember to export HASKELL_PACKAGE_SANDBOX=.cabal-sandbox/x86_64-osx-ghc-7.6.3-packages.conf.d inside the cabal sandbox.

jupyter notebook

See www.btbytes.com/stack.yaml for dependencies.

stack new myproj
cd myproj
stack init
brew install zmq
stack exec ipython -- notebook

Note: iHaskell binary is installed in ~/.local/bin:

Copied executables to /Users/pgowda/.local/bin/:
- ihaskell

(not sure if the above two lines are actually important ...)

Libraries and tools

Haskell Reference

Misc

Links

Projects in haskell

notes#functional-programming#haskell#programming-language