A user-defined function (UDF) is a function provided by the user of a program or environment, in a context where the usual assumption is that functions are built into the program or environment. UDFs are usually written for the requirement of its creator. == BASIC language == In some old implementations of the BASIC programming language, user-defined functions are defined using the "DEF FN" syntax. More modern dialects of BASIC are influenced by the structured programming paradigm, where most or all of the code is written as user-defined functions or procedures, and the concept becomes practically redundant. == COBOL language == In the COBOL programming language, a user-defined function is an entity that is defined by the user by specifying a FUNCTION-ID paragraph. A user-defined function must return a value by specifying the RETURNING phrase of the procedure division header and they are invoked using the function-identifier syntax. See the ISO/IEC 1989:2014 Programming Language COBOL standard for details. As of May 2022, the IBM Enterprise COBOL for z/OS 6.4 (IBM COBOL) compiler contains support for user-defined functions. == Databases == In relational database management systems, a user-defined function provides a mechanism for extending the functionality of the database server by adding a function, that can be evaluated in standard query language (usually SQL) statements. The SQL standard distinguishes between scalar and table functions. A scalar function returns only a single value (or NULL), whereas a table function returns a (relational) table comprising zero or more rows, each row with one or more columns. User-defined functions in SQL are declared using the CREATE FUNCTION statement. For example, a user-defined function that converts Celsius to Fahrenheit (a temperature scale used in USA) might be declared like this: Once created, a user-defined function may be used in expressions in SQL statements. For example, it can be invoked where most other intrinsic functions are allowed. This also includes SELECT statements, where the function can be used against data stored in tables in the database. Conceptually, the function is evaluated once per row in such usage. For example, assume a table named Elements, with a row for each known chemical element. The table has a column named BoilingPoint for the boiling point of that element, in Celsius. The query would retrieve the name and the boiling point from each row. It invokes the CtoF user-defined function as declared above in order to convert the value in the column to a value in Fahrenheit. Each user-defined function carries certain properties or characteristics. The SQL standard defines the following properties: Language - defines the programming language in which the user-defined function is implemented; examples include SQL, C, C# and Java. Parameter style - defines the conventions that are used to pass the function parameters and results between the implementation of the function and the database system (only applicable if language is not SQL). Specific name - a name for the function that is unique within the database. Note that the function name does not have to be unique, considering overloaded functions. Some SQL implementations require that function names are unique within a database, and overloaded functions are not allowed. Determinism - specifies whether the function is deterministic or not. The determinism characteristic has an influence on the query optimizer when compiling a SQL statement. SQL-data access - tells the database management system whether the function contains no SQL statements (NO SQL), contains SQL statements but does not access any tables or views (CONTAINS SQL), reads data from tables or views (READS SQL DATA), or actually modifies data in the database (MODIFIES SQL DATA). User-defined functions should not be confused with stored procedures. Stored procedures allow the user to group a set of SQL commands. A procedure can accept parameters and execute its SQL statements depending on those parameters. A procedure is not an expression and, thus, cannot be used like user-defined functions. Some database management systems allow the creation of user defined functions in languages other than SQL. Microsoft SQL Server, for example, allows the user to use .NET languages including C# for this purpose. DB2 and Oracle support user-defined functions written in C or Java programming languages. === SQL Server 2000 === There are three types of UDF in Microsoft SQL Server 2000: scalar functions, inline table-valued functions, and multistatement table-valued functions. Scalar functions return a single data value (not a table) with RETURNS clause. Scalar functions can use all scalar data types, with exception of timestamp and user-defined data types. Inline table-valued functions return the result set of a single SELECT statement. Multistatement table-valued functions return a table, which was built with many TRANSACT-SQL statements. User-defined functions can be invoked from a query like built‑in functions such as OBJECT_ID, LEN, DATEDIFF, or can be executed through an EXECUTE statement like stored procedures. Performance Notes: User-defined functions are subroutines made of one or more Transact-SQL statements that can be used to encapsulate code for reuse. It takes zero or more arguments and evaluates a return value. Has both control-flow and DML statements in its body similar to stored procedures. Does not allow changes to any Global Session State, like modifications to database or external resource, such as a file or network. Does not support output parameter. DEFAULT keyword must be specified to pass the default value of parameter. Errors in UDF cause UDF to abort which, in turn, aborts the statement that invoked the UDF. === Apache Hive === Apache Hive defines, in addition to the regular user-defined functions (UDF), also user-defined aggregate functions (UDAF) and table-generating functions (UDTF). Hive enables developers to create their own custom functions with Java. === Apache Doris === Apache Doris, an open-source real-time analytical database, allows external users to contribute their own UDFs written in C++ to it.
Lexxe
Lexxe is an internet search engine that applies Natural Language Processing in its semantic search technology. Founded in 2005 by Dr. Hong Liang Qiao, Lexxe is based in Sydney, Australia. Today, Lexxe's key focus is on sentiment search with the launch of a news sentiment search site at News & Moods (www.newsandmoods.com). Lexxe has experienced several stages of change of focus in search technology: Lexxe launched its Alpha version in 2005, featuring Natural Language question answering (i.e. users could ask questions in English to the search engine apart from keyword searches — this feature has been suspended for redevelopment since 2010). It used only algorithms to extract answers from web pages, with no question-answer pair databases prepared in advance. In 2011, Lexxe launched a beta version with a new search technology called Semantic Key. Semantic Keys enable users to query with a conceptual keyword (or a keyword with a special meaning, hence the term Semantic Key) in order to find instances under the concept, e.g. price → $5.95 or €200, color → red, yellow, white. For example, “price: a pound of apples”, “color: ferrari”. With initial 500 Semantic Keys at the Beta launch, Lexxe became the first search engine in the world to offer this unique and useful search technology to the users. The cost of building Semantic Keys was too heavy though. In 2017, Lexxe launched News & Moods (www.newsandmoods.com), an open platform for news sentiment search, a first step towards sentiment search feature for the entire Internet search in Lexxe search engine. News & Moods also comes with smartphone apps in Android and iOS.
KKday
KKday is an online travel e-commerce platform focused on connecting independent travelers with authentic, curated local experiences, tours, activities, and attraction tickets. == History == KKday was founded in 2014 in Taipei, Taiwan, by CEO Ming Chen, who previously started and led both Star Travel and Ezfly to IPO. In March of 2016, the company raised US$4.5 million in a Series A round led by AppWorks Ventures with participation by 91Capital. The raise allowed KKday to open offices and expand into Hong Kong, Japan, South Korea and Singapore by 2016. By the end of 2016, KKday offered over 6,000 travel experiences across 53 countries and 174 cities, marking early international expansion with its official launch in Singapore in October 2016, accompanied by promotional campaigns to attract regional users. Expansion into Malaysia, Thailand, Vietnam and the Philippines continued throughout 2017 and into 2018, with the company opening offices in Indonesia and mainland China. KKday rapidly expanded its inventory, reaching over 10,000 experiences in more than 500 cities across 80 countries by 2018, with key markets in Taiwan, Hong Kong, and South Korea. In February 2018, KKday raised $10.5 million in a funding round led by Japanese travel giant H.I.S., allowing integration with larger travel networks and further global growth. Forbes reports that by the end of 2018, the company operated in 11 countries and regions, employed around 400 staff, and recorded over 4 million weekly website views with more than 1 million app downloads. A combination of a Japanese and South Korean trade dispute, along with the Covid-19 pandemic in 2020, lead KKday to pivot quickly toward domestic staycations and local experiences while initially raising $70m in their Series C which, was later extended to $95m. The Series C funds were partially used to accelerate and expand Rezio. Launched in 2019, Rezio is KKday's B2B SaaS booking management platform for travel providers, allowing them to track inventory, manage reservations and sell tickets. FineDayClub was launched in 2020 by KKday as a personalized luxury subscription travel service to cater to high end clients. KKday’s CFO, Jenny Tsai pivoted to lead KKday’s new venture. KKday was able to successfully navigate and adapt to travel patterns during the Covid-19 pandemic by reducing user acquisition costs by two thirds and focusing on domestic travel experiences to drive bookings and revenue. KKday was particularly successful in Vietnam, with bookings increased by 2,000% through 2022 and the company's travel operator platform Rezio, onboarding over 1,200 operators inside the country. In 2021, KKday acquired Activity Japan, a domestic focused travel company, founded by Kimiharu Obuchi in 2014. The successful acquisition, a key factor in KKday’s rapid expansion in the Japanese market, was facilitated by H.I.S., a common early investor in both platforms. In 2023 KKday inked a partnership with Rail Europe to create an all-in-one platform for 150 rail lines over 33 European countries with the intent of increasing ridership across Europe. In late 2024, KKday completed its Series D at $70M, bringing the total amount of capital raised to over $250M. The funds are to be earmarked for continued global expansion, artificial intelligence integration and enhanced partnerships, similar to the partnership with Tablelog, which now allows users to book restaurant reservations at 42,000 restaurants in Japan through the platform. == Platform == KKDay is an e-commerce online travel agency operating in 92 countries with over 350,000 travel experiences available for booking. The company started with focus on authentic local travel experiences in the Asian Pacific market and has expanded to a more global focus. KKday connects travelers with travel services and experiences such as attraction tickets, theme parks, cultural experiences, and seasonal events. KKday has positioned itself as an all-in-one travel super app with booking for hotels, rental cars, flights, sim cards, rail passes, dining and tickets. === Rezio === Rezio is a cloud-based SaaS booking management platform developed by KKday specifically for tour operators, activity providers, and attractions in the travel industry. It serves as an all-in-one system designed to help these businesses digitize their operations, particularly those previously relying on offline processes. Features include a mobile app for on-the-go order management, customer information checks, and voucher scanning, as well as channel management, analytics for customer data, and integrations with multiple OTAs and payment providers. Unlike KKday, which is an OTA marketplace for consumer exposure (with commissions), Rezio focuses on backend operations for suppliers, allowing brand independence, operational efficiency, and direct customer relationships while optionally connecting to OTAs like KKday. Rezio supports over 5,000 merchants, 30,000 experiences, and 10 million travelers worldwide, with a strong presence in Asia. One of the brands successful implementations was at the Nikko Toshogu Shrine where Rezio was implemented to help with long lines and wait times due to over-tourism. The shrine was able to implement the inventory management features to allow online booking and cashless payments onsite. === FineDayClub === FineDayClub is a membership-based travel concierge service launched in late 2020 by KKday. It is aimed at families, and organizations seeking customized travel experiences. It offers one-on-one advisory services. === ActivityJapan === ActivityJapan is a Japanese comprehensive online travel site that specializes in authentic Japanese travel experiences. It was purchased by KKday in 2021 but continues to operate independently.
End-to-end encryption
End-to-end encryption (E2EE) is a method of implementing a secure communication system where only the sender and intended recipient can read the messages. No one else, including the system provider, telecom providers, Internet providers or malicious actors, can access the cryptographic keys needed to read or send messages. End-to-end encryption prevents data from being read or secretly modified, except by the sender and intended recipients. In many applications, messages are relayed from a sender to some recipients by a service provider. In an E2EE-enabled service, messages are encrypted on the sender's device such that no third party, including the service provider, has the means to decrypt them. The recipients retrieve encrypted messages and decrypt them independently on their own devices. Since third parties cannot decrypt the data being communicated or stored, services with E2EE are better at protecting user data from data breaches and espionage. Computer security experts, digital freedom organizations, and human rights activists advocate for the use of E2EE due to its security and privacy benefits, including its ability to resist mass surveillance. Popular messaging apps like WhatsApp, iMessage, Facebook Messenger, and Signal use end-to-end encryption for chat messages, with some also supporting E2EE of voice and video calls. As of May 2025, WhatsApp is the most widely used E2EE messaging service, with over 3 billion users. Meanwhile, Signal with an estimated 70 million users, is regarded as the current gold standard in secure messaging by cryptographers, protestors, and journalists. Since end-to-end encrypted services cannot offer decrypted messages in response to government requests, the proliferation of E2EE has been met with controversy. Around the world, governments, law enforcement agencies, and child protection groups have expressed concerns over its impact on criminal investigations. As of 2025, some governments have successfully passed legislation targeting E2EE, such as Australia's Telecommunications and Other Legislation Amendment Act (2018) and the Online Safety Act (2023) in the UK. Other attempts at restricting E2EE include the EARN IT Act in the US and the Child Sexual Abuse Regulation in the EU.[1] Nevertheless, some government bodies such as the UK's Information Commissioner's Office and the US's Cybersecurity and Infrastructure Security Agency (CISA) have argued for the use of E2EE, with Jeff Greene of the CISA advising that "encryption is your friend" following the discovery of the Salt Typhoon espionage campaign in 2024. == Definitions == End-to-end encryption is a means of ensuring the security of communications in applications like secure messaging. Under E2EE, messages are encrypted on the sender's device such that they can be decoded only by the final recipient's device. In many non-E2EE messaging systems, including email and many chat platforms, messages pass through intermediaries and are stored by a third party service provider, from which they are retrieved by the recipient. Even if messages are encrypted, they are only encrypted 'in transit', and are thus accessible by the service provider. Server-side disk encryption is also distinct from E2EE because it does not prevent the service provider from viewing the information, as they have the encryption keys and can simply decrypt it. The term "end-to-end encryption" originally only meant that the communication is never decrypted during its transport from the sender to the receiver. For example, around 2003, E2EE was proposed as an additional layer of encryption for GSM or TETRA, in addition to the existing radio encryption protecting the communication between the mobile device and the network infrastructure. This has been standardized by SFPG for TETRA. Note that in TETRA, the keys are generated by a Key Management Centre (KMC) or a Key Management Facility (KMF), not by the communicating users. Later, around 2014, the meaning of "end-to-end encryption" started to evolve when WhatsApp encrypted a portion of its network, requiring that not only the communication stays encrypted during transport, but also that the provider of the communication service is not able to decrypt the communications—maliciously or when requested by law enforcement agencies. Similarly, messages must be undecryptable in transit by attackers through man-in-the-middle attacks. This new meaning is now the widely accepted one. == Motivations == The lack of end-to-end encryption can allow service providers to easily provide search and other features, or to scan for illegal and unacceptable content. However, it also means that content can be read by anyone who has access to the data stored by the service provider, by design or via a backdoor. This can be a concern in many cases where privacy is important, such as in governmental and military communications, financial transactions, and when sensitive information such as health and biometric data are sent. If this content were shared without E2EE, a malicious actor or adversarial government could obtain it through unauthorized access or subpoenas targeted at the service provider. E2EE alone does not guarantee privacy or security. For example, the data may be held unencrypted on the user's own device or accessed through their own app if their credentials are compromised. == Modern implementations == === Messaging === In May 2026, Meta ended support for end-to-end encryption (E2EE) on Instagram, reversing a previous commitment to expand the technology across its messaging services. The company justified the move as a measure to mitigate fraudulent activity and facilitate the detection of harmful content. The decision highlighted a conflict between digital privacy and online safety; while child protection organizations supported the change to better identify predatory behavior, privacy advocates argued that removing E2EE compromises user security. As of 2025, messaging apps like Signal and WhatsApp are designed to exclusively use end-to-end encryption. Both Signal and WhatsApp use the Signal Protocol. Other messaging apps and protocols that support end-to-end encryption include Facebook Messenger, iMessage, Telegram, Matrix, and Keybase. Although Telegram supports end-to-end encryption, it has been criticized for not enabling it by default, instead supporting E2EE through opt-in "secret chats". As of 2020, Telegram did not support E2EE for group chats and no E2EE on its desktop clients. In 2022, after controversy over the use of Facebook Messenger messages in an abortion lawsuit in Nebraska, Facebook added support for end-to-end encryption in the Messenger app. Writing for Wired, technologist Albert Fox Cahn criticized Messenger's approach to end-to-end encryption, which required the user to opt into E2EE for each conversation and split the message thread into two chats which were easy for users to confuse. In December 2023, Facebook announced plans to enable end-to-end encryption by default despite pressure from British law enforcement agencies. As of 2016, many server-based communications systems did not include end-to-end encryption. These systems can only guarantee the protection of communications between clients and servers, meaning that users have to trust the third parties who are running the servers with the sensitive content. End-to-end encryption is regarded as safer because it reduces the number of parties who might be able to interfere or break the encryption. In the case of instant messaging, users may use a third-party client or plugin to implement an end-to-end encryption scheme over an otherwise non-E2EE protocol. === Audio and video conferencing === Signal and WhatsApp use end-to-end encryption for audio and video calls. Since 2020, Signal has also supported end-to-encrypted video calls. In 2024, Discord added end-to-end encryption for audio and video calls, voice channels, and certain live streams. However, they had no plans to implement E2EE for messages. In 2020, after acquiring Keybase, Zoom announced end-to-end encryption would be limited to paid accounts. Following criticism from human rights advocates, Zoom extended the feature to all users with accounts. In 2021, Zoom settled an $85M class action lawsuit over past misrepresentation about end-to-end encryption. The FTC confirmed Zoom previously retained access to meeting keys. === Other uses === Some encrypted backup and file sharing services provide client-side encryption. Nextcloud and MEGA, offer end-to-end encryption of shared files. The term "end-to-end encryption" is sometimes incorrectly used to describe client-side encryption. Some non-E2EE systems, such as Lavabit and Hushmail, have described themselves as offering "end-to-end" encryption when they did not. == Law enforcement and regulation == In 2022, Facebook Messenger came under scrutiny because the messages between a mother and daughter in Nebraska were used to seek criminal charges in an abortion-rel
Paperless society
A paperless society is a society in which paper communication (written documents, email, letters, etc.) is replaced by electronic communication and storage. The concept was first introduced by Frederick Wilfrid Lancaster in 1978. Furthermore, libraries would no longer be needed to handle printed documents. "Librarians will, in time, become information specialists in a deinstitutionalized setting". Lancaster also stated that both computers and libraries will not always give us the information that other people and living life will. == Literature == Brodman, E. (1979). Review of Toward Paperless Information Systems. Bulletin of the Medical Library Association, 67(4), 437–439. Buckland, M. K. (1980). Review of Toward Paperless Information Systems. Journal of Academic Librarianship, 5(6), 349. Grosch, A. (1979). Review of Toward Paperless Information Systems. College & Research Libraries, 40(1), 88–89. Kohl, D. F. (2004). From the editor . . . The paperless society . . . Not quite yet. Journal of Academic Librarianship, 30(3), 177–178. Lancaster, F. W. (1978a). Toward paperless information systems. New York: Academic Press. Lancaster, F. W. (1980b). The future of the librarian lies outside of the library. Catholic Library World, 51, 388–391. Lancaster, F. W. (1982a). Libraries and librarians in an age of electronics. Arlington, VA: Information Resources Press. Lancaster, F. W. (1982b). The evolving paperless society and its implications for libraries. International Forum on Information and Documentation, 7(4), 3–10. Lancaster, F. W. (1983). Future librarianship: Preparing for an unconventional career. Wilson Library Bulletin, 57, 747–753. Lancaster, F. W. (1985). The paperless society revisited. American Libraries, 16, 553–555. Lancaster, F. W. (1993). Libraries and the future: Essays on the library in the twenty-first century. New York: Haworth Press. Lancaster, F. W. (1999). Second thoughts on the paperless society. Library Journal, 124(15), 48– 50. Lancaster, F. W., & Smith, L. C. (1980c). On-Line systems in the communication process: Projections. Journal of the American Society for Information Science, 31(3), 193–200. Miall, D. S. (2001). The library versus the Internet: Literary studies under siege? Proceedings of the Modern Language Association, 116(5), 1405–1414. Salton, G. (1979). Review of Toward Paperless Information Systems. Journal of Documentation, 35(3), 250–252. Sellen, A. J., & Harper, R. H. R. (2003). The myth of the paperless office. Cambridge, MA: MIT Press. Stevens, N. D. (2006). The fully electronic academic library. College & Research Libraries, 67(1),5–14. Young, Arthur P. (2008).Aftermath of a Prediction: F. W. Lancaster and the Paperless Society LIBRARY TRENDS, 56(4),(“The Evaluation and Transformation of Information Systems: Essays Honoring the Legacy of F. W. Lancaster,” edited by Lorraine J. Haricombe and Keith Russell), pp. 843–858.
Accelerated Linear Algebra
XLA (Accelerated Linear Algebra) is an open-source compiler for machine learning developed by the OpenXLA project. XLA is designed to improve the performance of machine learning models by optimizing the computation graphs at a lower level, making it particularly useful for large-scale computations and high-performance machine learning models. Key features of XLA include: Compilation of Computation Graphs: Compiles computation graphs into efficient machine code. Optimization Techniques: Applies operation fusion, memory optimization, and other techniques. Hardware Support: Optimizes models for various hardware, including CPUs, GPUs, and NPUs. Improved Model Execution Time: Aims to reduce machine learning models' execution time for both training and inference. Seamless Integration: Can be used with existing machine learning code with minimal changes. XLA represents a significant step in optimizing machine learning models, providing developers with tools to enhance computational efficiency and performance. == OpenXLA Project == OpenXLA Project is an open-source machine learning compiler and infrastructure initiative intended to provide a common set of tools for compiling and deploying machine learning models across different frameworks and hardware platforms. It provides a modular compilation stack that can be used by major deep learning frameworks like JAX, PyTorch, and TensorFlow. The project focuses on supplying shared components for optimization, portability, and execution across CPUs, GPUs, and specialized accelerators. Its design emphasizes interoperability between frameworks and a standardized set of representations for model computation. == Components == The OpenXLA ecosystem includes several core components: XLA – A deep learning compiler that optimizes computational graphs for multiple hardware targets. PJRT – A runtime interface that allows different back-ends to connect to XLA through a consistent API. StableHLO – A high-level operator set intended to serve as a stable, portable representation for ML models across compilers and frameworks. Shardy – An MLIR-based system for describing and transforming models that run in distributed or multi-device environments. Additional profiling, testing, and integration tools maintained under the OpenXLA organization. == Users and adopters == Several machine learning frameworks can use or interoperate with OpenXLA components, including JAX, TensorFlow, and parts of the PyTorch ecosystem. The project is developed with participation from multiple hardware and software organizations that contribute back-end integrations, testing, or specifications for their devices. This includes Alibaba, Amazon Web Services, AMD, Anyscale, Apple, Arm, Cerebras, Google, Graphcore, Hugging Face, Intel, Meta, NVIDIA and SiFive. == Supported target devices == x86-64 ARM64 NVIDIA GPU AMD GPU Intel GPU Apple GPU Google TPU AWS Trainium, Inferentia Cerebras Graphcore IPU == Governance == OpenXLA is developed as a community project with its work carried out in public repositories, discussion forums, and design meetings. Some components, such as StableHLO, began with stewardship from specific organizations and have outlined plans for more formal and distributed governance models as the project matures. == History == The project was announced in 2022 as an effort to coordinate development of ML compiler technologies across major AI companies, notably: Alibaba, Amazon Web Services, AMD, Anyscale, Apple, Arm, Cerebras, Google, Graphcore, Hugging Face, Intel, Meta, NVIDIA and SiFive.. It consolidated the XLA compiler, introduced StableHLO as a portable operator set, and created a unified structure for additional tools. Development continues within multiple repositories under the OpenXLA umbrella. It was founded by Eugene Burmako, James Rubin, Magnus Hyttsten, Mehdi Amini, Navid Khajouei, and Thea Lamkin from Google's Machine Learning organization.
Remote scripting
Remote scripting is a technology which allows scripts and programs that are running inside a browser to exchange information with a server. The local scripts can invoke scripts on the remote side and process the returned information. The earliest form of asynchronous remote scripting was developed before XMLHttpRequest existed, and made use of very simple process: a static web page opens a dynamic web page (e.g. at other target frame) that is reloaded with new JavaScript content, generated remotely on the server side. The XMLHttpRequest and similar "client-side script remote procedure call" functions, open the possibility of use and triggering web services from the web page interface. The web development community subsequently developed a range of techniques for remote scripting in order to enable consistent results across different browsers. Early examples include JSRS library from 2000, the introduction of the Image/Cookie technique in 2000. == JavaScript Remote Scripting == JavaScript Remote Scripting (JSRS) is a web development technique for creating interactive web applications using a combination of: HTML (or XHTML) The Document Object Model manipulated through JavaScript to dynamically display and interact with the information presented A transport layer. Different technologies may be used, though using a script tag or an iframe is used the most because it has better browser support than XMLHttpRequest A data format. XML with WDDX can be used as well as JSON or any other text format. Schematic A similar approach is Ajax, though it depends on the XmlHttpRequest in newer web browsers. === Libraries === Brent Ashley's original JSRS library released in 2000 BlueShoes JSRS with added encoding and OO RPC abstractions Simple Tutorials: Javascript Remote Scripting with PHP at the Wayback Machine (archived 2006-04-14) MSDN article