AI Email Editor

AI Email Editor — independent reviews, comparisons, pricing and step-by-step guides on Aizhi.

  • Pandas (software)

    Pandas (software)

    Pandas (styled as pandas) is a software library written for the Python programming language for data manipulation and analysis. In particular, it offers data structures and operations for manipulating numerical tables and time series. It is free software released under the three-clause BSD license. The name is derived from the term "panel data", an econometrics term for data sets that include observations over multiple time periods for the same individuals, as well as a play on the phrase "Python data analysis". Wes McKinney started building what would become Pandas at AQR Capital while he was a researcher there from 2007 to 2010. The development of Pandas introduced into Python many comparable features of working with DataFrames that were established in the R programming language. The library is built upon another library, NumPy. == History == Developer Wes McKinney started working on Pandas in 2008 while at AQR Capital Management out of the need for a high performance, flexible tool to perform quantitative analysis on financial data. Before leaving AQR, he was able to convince management to allow him to open source the library in 2009. Another AQR employee, Chang She, joined the effort in 2012 as the second major contributor to the library. In 2015, Pandas signed on as a fiscally sponsored project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. == Data model == Pandas is built around data structures called Series and DataFrames. Data for these collections can be imported from various file formats such as comma-separated values, JSON, Parquet, SQL database tables or queries, and Microsoft Excel. === Series === A Series is a one-dimensional array-like object that stores a sequence of values together with an associated set of labels, called an index. It is built on top of NumPy's array and affords many similar functionalities, but instead of using implicit integer positions, a Series allows explicit index labels of many data types. A Series can be created from Python lists, dictionaries, or NumPy arrays. If no index is provided, pandas automatically assigns a default integer index ranging from 0 to n-1, where n is the number of items in the Series. A simple example with customized labels is: To access a value or list of values from a Series, use its index or list of indices: Series can be used arithmetically, as in the statement series_3 = series_1 + series_2. This will align data points with corresponding index values in series_1 and series_2 (similar to a join in relational algebra), then add them together to produce new values in series_3. A Series has various attributes, such as name (Series name), dtype (data type of values), shape (number of rows), values, and index. They can be used in many of the same operations as NumPy arrays, with additional methods for reindexing, label-based selection, and handling missing data. === DataFrame === A DataFrame is a two-dimensional, tabular data structure with labeled rows and columns. Each column is stored internally as a Series and may hold a different data type (numeric, string, boolean, etc.). DataFrames can be created by a variety of means, including dictionaries of lists, NumPy arrays, and external files such as CSV or Excel spreadsheets: To retrieve a DataFrame column as a Series, use either 1) the index (dict-like notation) or 2) the name of column if the name is a valid Python identifier (attribute-like access). DataFrames support operations such as column assignment, row and column deletion, label-based indexing with loc, position-based indexing with iloc, reshaping, grouping, and joining. Merge operations implement a subset of relational algebra and allow one-to-one, many-to-one, and many-to-many joins. Some common attributes of a DataFrame include dtypes (data type of each column), shape (dimensions of the DataFrame returned as a tuple with form (number of rows, number of columns)), index/columns (labels of the DataFrame's rows/columns, respectively, returned as an Index object), values (data in the DataFrame returned as a 2D array), and empty (returns True if the DataFrame is empty). === Index === Index objects hold metadata for Series and Dataframe objects, such as axis labels and names, and are automatically created from input data. By default, a pandas index is a series of integers ascending from 0, similar to the indices of Python arrays. However, indices can also use any NumPy data type, including floating point, timestamps, or strings. Indices are also immutable, which allows them to be safely shared across multiple objects. pandas' syntax for mapping index values to relevant data is the same syntax Python uses to map dictionary keys to values. For example, if s is a Series, s['a'] will return the data point at index a. Unlike dictionary keys, index values are not guaranteed to be unique. If a Series uses the index value a for multiple data points, then s['a'] will instead return a new Series containing all matching values. A DataFrame's column names are stored and implemented identically to an index. As such, a DataFrame can be thought of as having two indices: one column-based and one row-based. Because column names are stored as an index, these are not required to be unique. If data is a Series, then data['a'] returns all values with the index value of a. However, if data is a DataFrame, then data['a'] returns all values in the column(s) named a. To avoid this ambiguity, Pandas supports the syntax data.loc['a'] as an alternative way to filter using the index. Pandas also supports the syntax data.iloc[n], which always takes an integer n and returns the nth value, counting from 0. This allows a user to act as though the index is an array-like sequence of integers, regardless of how it is actually defined. pandas also supports hierarchical indices with multiple values per data point through the "MultiIndex" class. MultiIndex objects allow a single DataFrame to represent multiple dimensions, similar to a pivot table in Microsoft Excel, where each level can optionally carry its own unique name. In practice, data with more than 2 dimensions is often represented using DataFrames with hierarchical indices, instead of the higher-dimension Panel and Panel4D data structures. == Functionality == pandas supports a variety of indexing and subsetting techniques, allowing data to be selected by label, index, or Boolean conditions. For example, df[df['col1'] > 5] will return all rows in the DataFrame df for which the value of the column col1 exceeds 5. The library also implements grouping operations based on the split-apply-combine approach, enabling users to aggregate, transform, or restructure data according to column values or functions applied to index labels. For example, df['col1'].groupby(df['col2']) groups the data in 'col1' by their values in 'col2', while df.groupby(lambda i: i % 2) groups all data in the whole DataFrame by whether their index is even. The library also provides extensive tools for transforming, filtering and summarizing data. Users may apply arbitrary functions to Series and DataFrames, and because the library is built on top of Numpy, most NumPy functions can be applied directly to pandas objects as well. The library also includes built-in operations for arithmetic operations, string processing, and descriptive statistics such as mean, median, and standard deviation. These built-in functions are designed to handle missing data, usually represented by the floating-point value NaN. In addition, pandas includes tools for reorganizing data into different structural formats, with methods that can reshape tabular data between "wide" and "long" formats and pivot values based on column labels. pandas also implements a flexible set of relational operations for combining datasets. For instance, merge() links row in DataFrames based on one or more shared keys or indices, supporting one-to-one, one-to-many, and many-to-many relationships in a manner analogous to join operations in relational databases like SQL. DataFrames can also be concatenated or stacked together along an axis through the concat() method, and overlapping data can be further spliced together using combine_first() to fill in missing values. Furthermore, the library includes specialized support for working with time-series data. Features include the ability to interpolate values and filter using a range of timestamps, such as data['1/1/2023':'2/2/2023'] , which will return all dates between January 1 and February 2. Missing values in time-series data are represented by a dedicated NaT (Not a Timestamp) object, instead of the NaN value it uses elsewhere. == Criticisms == Pandas has been criticized for its inefficiency. The entire dataset must be loaded in RAM, and the library does not optimize query plans or support parallel computing across multiple cores. Wes McKinney, the creator of Pandas, has recommended Apache Arrow as an alternative to address these performance concerns and ot

    Read more →
  • Full30

    Full30

    Full30 was an American online video-sharing platform primarily dedicated to firearms and shooting sports-related content. The service was established in 2014 by Tim Harmsen and Mark Hammonds as a result of YouTube's increasing restrictions on gun-related videos. == History == After the 2018 Parkland high school shooting, many companies attempted to distance themselves from any association with the firearms industry. As a result, YouTube began demonetizing and sometimes outright deleting firearms-related videos, and in one case, popular YouTube poster Hickok45's channel was completely deleted but later restored. In response, Harmsen, who operates the Military Arms Channel on YouTube, decided to create his own video-hosting website to allow himself and other firearms content creators a platform free from such restrictions; he named the website Full30 — a reference to the popular 30-round STANAG magazine. In July 2020, site representatives announced the site had new ownership. By the end of 2022, the site began to be redirected to a series of other websites. By 2025, it was largely deactivated with the front page replaced by a form to be filled out to receive "updates", with no other explanation. == Contributors == Hickok45 Military Arms Channel Forgotten Weapons Bavarian Shooter Liberty Doll CloverTac

    Read more →
  • WebGL

    WebGL

    WebGL (short for Web Graphics Library) is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background. WebGL programs consist of control code written in JavaScript, and shader code written in OpenGL ES Shading Language (GLSL ES, sometimes referred to as ESSL), a language similar to C or C++. WebGL code is executed on a computer's GPU. WebGL is designed and maintained by the non-profit Khronos Group. On February 9, 2022, Khronos Group announced WebGL 2.0 support from all major browsers. From 2024, a new graphics API, WebGPU, is being developed to supersede WebGL. WebGPU provides extended capabilities, a more modern interface, and direct GPU access, which is useful for demanding graphics as well as AI applications. == Design == WebGL 1.0 is based on OpenGL ES 2.0 and provides an API for 3D graphics. It uses the HTML5 canvas element and is accessed using Document Object Model (DOM) interfaces. WebGL 2.0 is based on OpenGL ES 3.0. It guarantees the availability of many optional extensions of WebGL 1.0, and exposes new APIs. Automatic memory management is provided implicitly by JavaScript. Like OpenGL ES 2.0, WebGL lacks the fixed-function APIs introduced in OpenGL 1.0 and deprecated in OpenGL 3.0. This functionality, if required, has to be implemented by the developer using shader code and JavaScript. Shaders in WebGL are written in GLSL and passed to the WebGL API as text strings. The WebGL implementation compiles these strings to GPU code. This code is executed for each vertex sent through the API and for each pixel rasterized to the screen. == History == WebGL evolved out of the Canvas 3D experiments started by Vladimir Vukićević at Mozilla. Vukićević first demonstrated a Canvas 3D prototype in 2006. By the end of 2007, both Mozilla and Opera had made their own separate implementations. In early 2009, the non-profit technology consortium Khronos Group started the WebGL Working Group, with initial participation from Apple, Google, Mozilla, Opera, and others. Version 1.0 of the WebGL specification was released March 2011. An early application of WebGL was Zygote Body. In November 2012 Autodesk announced that they ported most of their applications to the cloud running on local WebGL clients. These applications included Autodesk Fusion and AutoCAD. Development of the WebGL 2 specification started in 2013 and finished in January 2017. The specification is based on OpenGL ES 3.0. First implementations are in Firefox 51, Chrome 56 and Opera 43. == Implementations == === Almost Native Graphics Layer Engine === Almost Native Graphics Layer Engine (ANGLE) is an open source graphic engine which implements WebGL 1.0 (2.0 which closely conforms to ES 3.0) and OpenGL ES 2.0 and 3.0 standards. It is a default backend for both Google Chrome and Mozilla Firefox on Windows platforms and works by translating WebGL and OpenGL calls to available platform-specific APIs. ANGLE currently provides access to OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11 APIs. ″[Google] Chrome uses ANGLE for all graphics rendering on Windows, including the accelerated Canvas2D implementation and the Native Client sandbox environment.″ == Software == WebGL is widely supported by modern browsers. However, its availability depends on other factors, too, like whether the GPU supports it. The official WebGL website offers a simple test page. More detailed information (like what renderer the browser uses, and what extensions are available) can be found at third-party websites. === Desktop browsers === Source: Google Chrome – WebGL 1.0 has been enabled on all platforms that have a capable graphics card with updated drivers since version 9, released in February 2011. By default on Windows, Chrome uses the ANGLE (Almost Native Graphics Layer Engine) renderer to translate OpenGL ES to Direct X 9.0c or 11.0, which have better driver support. However, on Linux and Mac OS X, the default renderer is OpenGL. It is also possible to force OpenGL as the renderer on Windows. Since September 2013, Chrome also has a newer Direct3D 11 renderer, which requires a newer graphics card. Chrome 56+ supports WebGL 2.0. Firefox – WebGL 1.0 has been enabled on all platforms that have a capable graphics card with updated drivers since version 4.0. Since 2013 Firefox also uses DirectX on the Windows platform via ANGLE. Firefox 51+ supports WebGL 2.0. Safari – Safari 6.0 and newer versions installed on OS X Mountain Lion, Mac OS X Lion and Safari 5.1 on Mac OS X Snow Leopard implemented support for WebGL 1.0, which was disabled by default before Safari 8.0. Safari version 12 (available in MacOS Mojave) has available support for WebGL 2.0 as an "Experimental" feature. Safari 15 enables WebGL 2.0 for all users. Opera – WebGL 1.0 has been implemented in Opera 11 and 12, but was disabled by default in 2014. Opera 43+ supports WebGL 2.0. Internet Explorer – WebGL 1.0 is partially supported in Internet Explorer 11. Internet Explorer initially failed most of the official WebGL conformance tests, but Microsoft later released several updates. The latest 0.94 WebGL engine currently passes ≈97% of Khronos tests. WebGL support can also be manually added to earlier versions of Internet Explorer using third-party plugins such as IEWebGL. Microsoft Edge – For Microsoft Edge Legacy, the initial stable release supports WebGL version 0.95 (context name: "experimental-webgl") with an open source GLSL to HLSL transpiler. Version 10240+ supports WebGL 1.0 as prefixed. Latest Chromium-based Edge supports WebGL 2.0. === Mobile browsers === Google Chrome – WebGL 1.0 is supported on Android as of Chrome 25. WebGL 2.0 is supported on Android as of Chrome 58. Chrome is used for the Android system webview as of Android 5. Firefox for mobile – WebGL 1.0 is available for Android devices since Firefox 4. Safari on iOS – WebGL 1.0 is available for mobile Safari in iOS 8. WebGL 2.0 is available for mobile Safari in iOS 15. Microsoft Edge – Prefixed WebGL 1.0 was available on Windows 10 Mobile.. Latest Chromium-based Edge supports WebGL 2.0. Opera Mobile – Opera Mobile 12 supports WebGL 1.0 (on Android only). Sailfish OS – WebGL 1.0 is supported in the default Sailfish browser. Tizen – WebGL 1.0 is supported == Tools and ecosystem == === Utilities === The low-level nature of the WebGL API, which provides little on its own to quickly create desirable 3D graphics, motivated the creation of higher-level libraries that abstract common operations (e.g. loading scene graphs and 3D objects in certain formats; applying linear transformations to shaders or view frustums). Some such libraries were ported to JavaScript from other languages. Examples of libraries that provide high-level features include A-Frame (VR), BabylonJS, PlayCanvas, three.js, OSG.JS, Google’s model-viewer and CopperLicht. Web3D also made a project called X3DOM to make X3D and VRML content run on WebGL. === Games === There has been an emergence of 2D and 3D game engines for WebGL, such as Unreal Engine 4 and Unity. The Stage3D/Flash-based Away3D high-level library also has a port to WebGL via TypeScript. A more light-weight utility library that provides just the vector and matrix math utilities for shaders is sylvester.js. It is sometimes used in conjunction with a WebGL specific extension called glUtils.js. There are also some 2D libraries built atop WebGL, like Cocos2d-x or Pixi.js, which were implemented this way for performance reasons in a move that parallels what happened with the Starling Framework over Stage3D in the Flash world. The WebGL-based 2D libraries fall back to HTML5 canvas when WebGL is not available. Removing the rendering bottleneck by giving almost direct access to the GPU has exposed performance limitations in the JavaScript implementations. Some were addressed by asm.js and WebAssembly (similarly, the introduction of Stage3D exposed performance problems within ActionScript, which were addressed by projects like CrossBridge). === Content creation === As with any other graphics API, creating content for WebGL scenes requires using a 3D content creation tool and exporting the scene to a format that is readable by the viewer or helper library. Desktop 3D authoring software such as Blender, Autodesk Maya or SimLab Composer can be used for this purpose. In particular, Blend4Web allows a WebGL scene to be authored entirely in Blender and exported to a browser with a single click, even as a standalone web page. There are also some WebGL-specific software such as CopperCube and the online WebGL-based editor Clara.io. Online platforms such as Sketchfab and Clara.io allow users to directly upload their 3D models

    Read more →
  • CU-RTC-WEB

    CU-RTC-WEB

    Customizable, Ubiquitous Real Time Communication over the Web is an API definition being drafted by Bernard Aboba at Microsoft. It is a competing standard to WebRTC, which drafted by a World Wide Web Consortium working group since May 2011. As of 2024, CU-RTC-WEB is still in the drafting phase, with ongoing discussions and contributions from various stakeholders in the tech community. Bernard Aboba, who serves as a co-chair of the W3C WebRTC Working Group, is actively involved in both CU-RTC-WEB and WebRTC, indicating a commitment to advancing real-time communication standards across platforms.

    Read more →
  • Vinted

    Vinted

    Vinted Group UAB is a Lithuanian technology company best known for its online marketplace Vinted. Vinted is the leading second-hand fashion marketplace in Europe and a go-to destination for all kinds of second-hand items. According to the company, its mission is to make second-hand the first choice worldwide. The company operates as an ecosystem of businesses, including the Vinted Marketplace (its peer-to-peer resale platform), Vinted Go (logistics and shipping services), Vinted Pay (in-app payment solutions), and Vinted Ventures (an investment arm supporting the circular economy). Headquartered in Vilnius, Lithuania, it also has offices in Germany and the Netherlands and employs more than 2,200 people. == History == Vinted was co-founded in 2008 by Milda Mitkute and Justas Janauskas in Vilnius, Lithuania. The idea originated when Mitkute was moving house and wanted a way to sell clothes she no longer needed. Janauskas helped her create a website where users could trade clothing items. In 2016, Dutch entrepreneur Thomas Plantenga joined Vinted as a strategy consultant and later became Chief Executive Officer, leading the company through a period of international growth. In 2019, Vinted became Lithuania’s first technology unicorn after raising €128 million at a €1 billion valuation in a funding round led by Lightspeed Venture Partners. In October 2020, it acquired United Wardrobe, a Dutch competitor, and in November 2020 German Kleiderkreisel and Mamikreisel were officially merged into the Vinted platform. In 2024 it acquired Trendsales, a Danish resale platform. According to Vogue Business, Vinted’s revenue grew 61% between 2022 and 2023 and the company posted a net profit of €17.8 million in 2023. Usage of Vinted in the UK has grown from 1.2 million users in 2021, to 8 million in 2023. In 2024, the group reported consolidated revenue of €813.4 million (up 36% from 2023) and a net profit of €76.7 million, up 330% from 2023. As of 2024, Vinted was valued at approximately €5 billion, operating in more than 26 markets worldwide and announcing plans to launch in Ireland, Greece, Latvia, Slovenia, and Estonia in 2025. As of 2025 the company employed more than 2,200 people. In April 2026, Vinted completed a secondary share transaction of €880m, valuing the company at €8bn. == Products and operations == Vinted primarily resells clothing but now supports multiple categories including homeware, kidswear, electronics, books, collectibles, and high-value fashion. Vinted has worked with public figures such as Paul Mescal and Alexa Chung on exclusive wardrobe sales and has also partnered directly with charities including Oxfam on initiatives which promote the social and environmental value of second-hand fashion, such as the Style for Change fashion show at London Fashion Week. In 2025, Vinted produced its first television format, the second-hand fashion competition series RE/Style, hosted by Emma Willis. The show features emerging fashion designers from across Europe creating runway-ready looks from second-hand garments and aired on Prime Video UK. In 2025, Vinted was reported as France’s top clothing retailer by sales volume. == Criticism == Vinted has faced scrutiny from European data protection authorities in France, Lithuania, and Poland following complaints regarding GDPR compliance and account blocking practices. In July 2024, the Lithuanian authority fined the company €2,375,276. The case was coordinated by a dedicated Vinted Working Group under the European Data Protection Board. In early 2024, Swedish police reported around 300 fraud cases linked to the platform, in which users’ bank accounts were targeted by scammers. In October 2024, Channel 4 in the United Kingdom aired a documentary examining safety and privacy concerns related to the platform, including the sexualisation of underage users’ images and risks associated with second-hand baby products lacking safety certification. In November 2025, BBC News reported that Vinted’s update to its sizing system in the United Kingdom led to widespread user criticism. Vinted said the update was intended to standardise sizing across international brands.

    Read more →
  • Temporal resolution

    Temporal resolution

    Temporal resolution (TR) refers to the discrete resolution of a measurement with respect to time. It is defined as the amount of time needed to revisit and acquire data for the same location. When applied to remote sensing, this amount of time is influenced by the sensor platform's orbital characteristics and the features of the sensor itself. The temporal resolution is low when the revisiting delay is high and vice versa. Temporal resolution is typically expressed in days. == Physics == Often there is a trade-off between the temporal resolution of a measurement and its spatial resolution, due to Heisenberg's uncertainty principle. In some contexts, such as particle physics, this trade-off can be attributed to the finite speed of light and the fact that it takes a certain period of time for the photons carrying information to reach the observer. In this time, the system might have undergone changes itself. Thus, the longer the light has to travel, the lower the temporal resolution. == Technology == === Computing === In another context, there is often a tradeoff between temporal resolution and computer storage. A transducer may be able to record data every millisecond, but available storage may not allow this, and in the case of 4D PET imaging the resolution may be limited to several minutes. === Electronic displays === In some applications, temporal resolution may instead be equated to the sampling period, or its inverse, the refresh rate, or update frequency in Hertz, of a TV, for example. The temporal resolution is distinct from temporal uncertainty. This would be analogous to conflating image resolution with optical resolution. One is discrete, the other, continuous. The temporal resolution is a resolution somewhat the 'time' dual to the 'space' resolution of an image. In a similar way, the sample rate is equivalent to the pixel pitch on a display screen, whereas the optical resolution of a display screen is equivalent to temporal uncertainty. Note that both this form of image space and time resolutions are orthogonal to measurement resolution, even though space and time are also orthogonal to each other. Both an image or an oscilloscope capture can have a signal-to-noise ratio, since both also have measurement resolution. === Oscilloscopy === An oscilloscope is the temporal equivalent of a microscope, and it is limited by temporal uncertainty the same way a microscope is limited by optical resolution. A digital sampling oscilloscope has also a limitation analogous to image resolution, which is the sample rate. A non-digital non-sampling oscilloscope is still limited by temporal uncertainty. The temporal uncertainty can be related to the maximum frequency of continuous signal the oscilloscope could respond to, called the bandwidth and given in Hertz. But for oscilloscopes, this figure is not the temporal resolution. To reduce confusion, oscilloscope manufacturers use 'Sa/s' instead of 'Hz' to specify the temporal resolution. Two cases for oscilloscopes exist: either the probe settling time is much shorter than the real time sampling rate, or it is much larger. The case where the settling time is the same as the sampling time is usually undesirable in an oscilloscope. It is more typical to prefer a larger ratio either way, or if not, to be somewhat longer than two sample periods. In the case where it is much longer, the most typical case, it dominates the temporal resolution. The shape of the response during the settling time also has as strong effect on the temporal resolution. For this reason probe leads usually offer an arrangement to 'compensate' the leads to alter the trade off between minimal settling time, and minimal overshoot. If it is much shorter, the oscilloscope may be prone to aliasing from radio frequency interference, but this can be removed by repeatedly sampling a repetitive signal and averaging the results together. If the relationship between the 'trigger' time and the sample clock can be controlled with greater accuracy than the sampling time, then it is possible to make a measurement of a repetitive waveform with much higher temporal resolution than the sample period by upsampling each record before averaging. In this case the temporal uncertainty may be limited by clock jitter.

    Read more →
  • Digital scrapbooking

    Digital scrapbooking

    Digital scrapbooking is the term for the creation of a new 2D artwork by re-combining various graphic elements. It is a form of scrapbooking that is done using a personal computer, digital or scanned photos and computer graphics software. It is a relatively new form of the traditional print scrapbooking. Recent advances in technology now enable the craft to be pursued on tablets and smart devices utilising imaging apps as well as hobby specific apps, some of which have been created specifically by brands for use with their own image products. Digital scrapbooking kits are available to purchase and download at many websites that specialize in the craft. Kits contain graphics and word-art and are usually themed and color-coordinated. They usually consist of a mix of background images and "cut out" [extracted] images containing alpha channels. Once a kit has been downloaded to the computer or device, it can then be used over and over again to make new scrapbook pages (scrapbook layouts) within the software program that one chooses to use, often in combination with the users's own family photographs, scanned keepsakes and other unique personal elements scanned on a flatbed scanner. Scanning is usually done at 300dpi, to make the resulting images suitable for print. == Licensing and Copyright == Kits are sometimes licensed differently from other forms of traditional royalty-free stock images that may be purchased per-item or in sets at online stock photography sites. Some kit packs will be wholly royalty-free, but some kit makers may restrict usage to non-commercial work only. Some may specifically forbid the use of their work in projects for commercial gain, for example greetings cards and gift tags that may be made with their kits. Licensing often varies from kit to kit, even from the same maker. Some kits include derivative works of public domain material. In contrast to stock, creators of digital scrapbooking kits often require a credit or byline to indicate that their image elements have been used in a new creation. == Uses == Some artistic individuals combine digital scrapbooking with traditional scrapbooking to create what's known as hybrid scrapbooking projects. Hybrid scrapbooking involves creating layouts on the computer using digital supplies that will then be printed and combined with traditional supplies such as buttons, ribbons and other elements. Conversely, a hybrid scrapbook project may also be created using traditional paper supplies and augmented with digital elements that have been printed and cut out specifically for use on the project. Journaling may be done within the software programs to accompany images and to create digital storybooks, or scrapbooks, which are then published in photo books via various popular print-on-demand services, printed and added to traditional scrapbooks, burned to CDs or posted on the Web. Digital Scrapbooking may also be done online by uploading photos to a specialist scrapbooking website and utilising their custom built platforms and decorative image elements to complete the projects for print to finished products, for example photo books and holiday greeting cards. == Market Size == The traditional scrapbooking market appeared to decline somewhat in the USA since 2010, probably due to the 2008 financial crisis, and the digital scrapbooking market (being potentially a much cheaper form of scrapbooking) may have increased accordingly. Both markets currently appear to have recovered lost ground and expanded since the beginning of the COVID-19 pandemic as many people sought to productively fill their time during lockdowns, quarantines and self-isolation / stay at home directions. == Digital scrapbooking software == The main software programs that are typically used are Adobe Photoshop, Adobe Photoshop Elements, paint.net (freeware), Filter Forge, Corel Paintshop Pro, and GIMP. Additionally Adobe offer the Photoshop iOS product using the same code base as the desktop version to drive the app version. == Digital scrapbooking supplies == Digital scrapbooking supplies are downloaded from the Internet and then stored on a computer or external hardrive, DVD or CD media, SD cards, or in the cloud, to be used as needed. Both paid and free digital scrapbooking supplies available from numerous designers on their blogs or in e-commerce stores either as solo designers or as part of a wide cohort of designers working cooperatively in large full service e-commerce websites. Usually designed at 300ppi image resolution, digital scrapbooking product offerings and supplies often include: Full coordinated kits containing digital background “papers”, decorative alphabets, and diverse embellishments generally containing a mixture of .JPG and .PNG files; "Quick pages", flattened files containing a completed page layout with transparent photo windows in .PNG file format; Digital templates, fully layered layouts i.e. pages that have had the composition pre-designed ready for use in an imaging program or app, fully customizable for color schemes, kit choices, photographs and other embellishments, generally supplied in either .PSD or .TIF file format; Hybrid “quick pages”, i.e. layouts that are both fully designed and fully layered for customization, generally supplied in either .PSD or .TIF file format; Adobe Photoshop actions, brushes, custom shapes, paths and styles, saved in their respective native Photoshop file formats; and Corel PaintShop Pro equivalent tools.

    Read more →
  • Nitro Zeus

    Nitro Zeus

    Nitro Zeus is the project name for a well funded comprehensive cyber attack plan created as a mitigation strategy after the Stuxnet malware campaign and its aftermath. Unlike Stuxnet, that was loaded onto a system after the design phase to affect its proper operation, Nitro Zeus's objectives are built into a system during the design phase unbeknownst to the system users. This built-in feature allows a more assured and effective cyber attack against the system's users. The information about its existence was raised during research and interviews carried out by Alex Gibney for his Zero Days documentary film. The proposed long term widespread infiltration of major Iranian systems would disrupt and degrade communications, power grid, and other vital systems as desired by the cyber attackers. This was to be achieved by electronic implants in Iranian computer networks. The project was seen as one pathway in alternatives to full-scale war.

    Read more →
  • Gamma (app)

    Gamma (app)

    Gamma is a web-based software platform that uses artificial intelligence to generate presentations, documents, webpages, and other visual content. The platform allow users to create structured layouts and draft text based on prompts or uploaded material. It operates as an online application and provides tools for editing, organizing, and sharing content. == History == Gamma was established in the early 2020s by Grant Lee, James Fox, and Jon Noronha during a period of increased development in artificial intelligence–based productivity software. The platform was introduced as a web-based format designed to present information through structured visual layouts rather than traditional slide-based presentations. Its interface was developed to adapt content to different screen sizes and devices. In later updates, Gamma expanded its functionality to support additional formats, including documents and simple webpages. By November 2025, the company reported that the platform had reached approximately 70 million users. Gamma has raised venture capital funding from a number of technology-focused investors since its founding. == Features == Gamma allows users to create presentations, documents, and webpages by entering prompts, pasting text, or uploading source files. The platform uses artificial intelligence to generate draft text, organize information, and apply structured layouts. Users can edit generated material manually and adjust formatting, structure, and visual elements. The software also supports collaborative editing, allowing multiple users to contribute to and revise the same project. Instead of relying only on fixed slide-based formats, Gamma presents content in scrollable layouts designed for web viewing across different screen sizes. Projects created on the platform can be shared through web links or exported to formats compatible with other software. Gamma also provides integration options and developer access through an application programming interface (API). == Technology == Gamma uses generative artificial intelligence models to interpret user input and generate structured content. The software automates elements of layout selection, formatting, and visual presentation. As with other AI-assisted tools, output produced by the system may require human review and revision to ensure accuracy and appropriate context. == Funding == Gamma has raised venture capital funding from a number of technology-focused investors since its founding. In November 2025, the company announced a Series B funding round that raised $68 million at a reported valuation of approximately $2.1 billion. Investors in the round included Andreessen Horowitz, Accel, and Uncork Capital, among others. == Controversy == In 2025, cybersecurity researchers reported that Gamma had been used in a phishing campaign targeting Microsoft accounts. Attackers shared links to presentations hosted on the platform that redirected users to a spoofed Microsoft SharePoint login page intended to collect credentials. Researchers noted that the incident reflected the broader misuse of legitimate online services in phishing schemes.

    Read more →
  • Digital Cinema Package

    Digital Cinema Package

    A Digital Cinema Package (DCP) is a collection of digital files used to store and convey digital cinema (DC) audio, image, and data streams. The term was popularized by Digital Cinema Initiatives, LLC in its original recommendation for packaging DC contents. However, the industry tends to apply the term to the structure more formally known as the composition. A DCP is a container format for compositions, a hierarchical file structure that represents a title version. The DCP may carry a partial composition (e.g. not a complete set of files), a single complete composition, or multiple and complete compositions. The composition consists of a Composition Playlist (in XML format) that defines the playback sequence of a set of Track Files. Track Files carry the essence (audio, image, subtitles), which is wrapped using Material eXchange Format (MXF). Track Files must contain only one essence type. Two track files at a minimum must be present in every composition (see SMPTE ST429-2 D-Cinema Packaging – DCP Constraints, or Cinepedia): a track file carrying picture essence, and a track file carrying audio essence. The composition, consisting of a Composition Playlist (CPL) and associated track files, are distributed as a Digital Cinema Package (DCP). A composition is a complete representation of a title version, while the DCP need not carry a full composition. However, as already noted, it is commonplace in the industry to discuss the title in terms of a DCP, as that is the deliverable to the cinema. The Picture Track File essence is compressed using JPEG 2000 and the Audio Track File carries a 24-bit linear PCM uncompressed multichannel WAV file. Encryption may optionally be applied to the essence of a track file to protect it from unauthorized use. The encryption used is AES 128-bit in CBC mode. In practice, there are two versions of composition in use. The original version is called Interop DCP. In 2009, a specification was published by SMPTE (SMPTE ST 429-2 Digital Cinema Packaging – DCP Constraints) for what is commonly referred to as SMPTE DCP. SMPTE DCP is similar but not backwards compatible with Interop DCP, resulting in an uphill effort to transition the industry from Interop DCP to SMPTE DCP. SMPTE DCP requires significant constraints to ensure success in the field, as shown by ISDCF. While legacy support for Interop DCP is necessary for commercial products, new productions are encouraged to be distributed in SMPTE DCP. == Technical specifications == The DCP root folder (in the storage medium) contains a number of files, some used to store the image and audio contents, and some other used to organize and manage the whole playlist. === Picture MXF files === Picture contents may be stored in one or more reels corresponding to one or more MXF files. Each reel contains pictures as MPEG-2 or JPEG 2000 essence, depending on the adopted codec. MPEG-2 is no longer compliant with the DCI specification. JPEG 2000 is the only accepted compression format. Supported frame rates are: SMPTE (JPEG 2000) 24, 25, 30, 48, 50, and 60 fps @ 2K 24, 25, and 30 fps @ 4K 24 and 48 fps @ 2K stereoscopic MXF Interop (JPEG 2000) – Deprecated 24 and 48 fps @ 2K (MXF Interop can be encoded at 25 frame/s but support is not guaranteed) 24 fps @ 4K 24 fps @ 2K stereoscopic MXF Interop (MPEG-2) – Deprecated 23.976 and 24 fps @ 1920 × 1080 Maximum frame sizes are 2048 × 1080 for 2K DC, and 4096 × 2160 for 4K DC. Common formats are: SMPTE (JPEG 2000) Flat (1998 × 1080 or 3996 × 2160), = 1.85:1 aspect ratio Scope (2048 × 858 or 4096 × 1716), ~2.39:1 aspect ratio HDTV (1920 × 1080 or 3840 × 2160), 16:9 aspect ratio (~1.78:1) (although not specifically defined in the DCI specification, this resolution is DCI compliant per section 8.4.3.2). Full (2048 × 1080 or 4096 × 2160) (~1.9:1 aspect ratio, official name by DCI is Full Container. Not widely accepted in cinemas.) MXF Interop (MPEG-2) – Deprecated Full Frame (1920 × 1080) 12 bits per component precision (36 bits total per pixel) XYZ' colorspace; the prime mark indicates gamma encoding (gamma=2.6) Maximum bit rate is 250 Mbit/s (1.3 MBytes per frame at 24 frame per second) === Sound MXF files === Sound contents are also stored in reels corresponding to picture reels in number and duration. In case of multilingual features, separate reels are required to convey different languages. Each file contains linear PCM essence. Sampling rate is 48,000 or 96,000 samples per second Sample precision of 24 bits Linear mapping (no companding) Up to 16 independent channels === Asset map file === List of all files included in the DCP, in XML format. === Composition playlist file === Defines the playback order during presentation. The order is saved in XML format in this file; each picture and sound reel is identified by its UUID. In the following example, a reel is composed by picture and sound: === Packing list file or package key list (PKL) === All files in the composition are hashed and their hash is stored here, in XML format. This file is generally used during ingestion in a digital cinema server to verify if data have been corrupted or tampered with in some way. For example, an MXF picture reel is identified by the following element: The hash value is the Base64 encoding of the SHA-1 checksum. It can be calculated with the command: openssl sha1 -binary "FILE_NAME" | openssl base64 === Volume index file === A single DCP may be stored in more than one medium (e.g., multiple hard disks). The XML file VOLINDEX is used to identify the volume order in the series. == 3D DCP == The DCP format is also used to store stereoscopic (3D) contents for 3D films. In this case, 48 frames exist for every second – 24 frames for the left eye, 24 frames for the right. Depending on the projection system used, the left eye and right eye pictures are either shown alternately (double or triple flash systems) at 48 fps or, on 4k systems, both left and right eye pictures are shown simultaneously, one above the other, at 24 fps. In triple flash systems, active shutter glasses are required whereas optical filtering such as circular polarisation is used in conjunction with passive glasses on polarized systems. Since the maximum bit rate is always 250 Mbit/s, this results in a net 125 Mbit/s for single frame, but the visual quality decrease is generally unnoticeable. == D-Box == D-Box codes for motion controlled seating (labelled as "Motion Data" in the DCP specification), if present, are stored as a monoaural WAV file on Sound Track channel 13. Motion Data tracks are unencrypted and not watermarked. == Creation == Most film producers and distributors rely on digital cinema encoding facilities to produce and quality control check a digital cinema package before release. Facilities follow strict guidelines set out in the DCI recommendations to ensure compatibility with all digital cinema equipment. For bigger studio release films, the facility will usually create a Digital Cinema Distribution Master (DCDM). A DCDM is the post-production step prior to a DCP. The frames are in XYZ TIFF format and both sound and picture are not yet wrapped into MXF files. A DCP can be encoded directly from a DCDM. A DCDM is useful for archiving purposes and also facilities can share them for international re-versioning purposes. They can easily be turned into alternative version DCPs for foreign territories. For smaller release films, the facility will usually skip the creation of a DCDM and instead encode directly from the Digital Source Master (DSM) the original film supplied to the encoding facility. A DSM can be supplied in a multitude of formats and color spaces. For this reason, the encoding facility needs to have extensive knowledge in color space handling including, on occasion, the use of 3D LUTs to carefully match the look of the finished DCP to a celluloid film print. This can be a highly involved process in which the DCP and the film print are "butterflied" (shown side by side) in a highly calibrated cinema. Less demanding DCPs are encoded from tape formats such as HDCAM SR. Quality control checks are always performed in calibrated cinemas and carefully checked for errors. QC checks are often attended by colorists, directors, sound mixers and other personnel to check for correct picture and sound reproduction in the finished DCP. == Accessibility == === Hearing impaired audio === A Hearing Impaired (HI) audio track is designed for people who are hearing-impaired to better hear dialog. Moviegoers can wear headphones which play this audio track synchronized with the film. Hearing Impaired audio is stored in the DCP on Sound Track channel 7. === Audio description === Audio description is narration for people who are blind or visually impaired. Audio description is stored in the DCP as "Visually Impaired-Native" (VI-N) audio on Sound Track channel 8. === Sign Language Video === A Sign Language Video track can be included in a DCP to allow for display of sign la

    Read more →
  • Macroelectronics

    Macroelectronics

    Macroelectronics are flexible electronics that cover a large area. The most visible example of macroelectronics is flat-panel displays. Other emerging applications include rollable display, printable thin film solar cell and electronic skin. Flat-panel displays fabricated on glass substrates are fragile so fabricating directly on flexible substrates, such as polymers is being explored. Displays made on thin polymer substrates can be more rugged than glass. In September 2005, Philips Polymer Vision revealed the world's first prototype of a rollable electronic reader, which can unfold to a 5-inch display and roll back into a pocket-size (100×60×20 mm) device. Thin-film devices on flexible polymer substrates can lend themselves to low-cost fabrication processes (i.e., roll-to-roll printing), resulting in lightweight, rugged and flexible macroelectronic products.

    Read more →
  • Vinyl cutter

    Vinyl cutter

    A vinyl cutter is an entry-level machine for making signs. Computer-designed vector files with patterns and letters are directly cut on the roll of vinyl which is mounted and fed into the vinyl cutter through USB or serial cable. Vinyl cutters are mainly used to make signs, banners and advertisements. Advertisements seen on automobiles and vans are often made with vinyl cut letters. While these machines were designed for cutting vinyl, they can also cut through computer and specialty papers, as well as thicker items like thin sheets of magnet. In addition to sign business, vinyl cutters are commonly used for apparel decoration. To decorate apparel, a vector design needs to be cut in mirror image, weeded, and then heat applied using a commercial heat press or a hand iron for home use. Some businesses use their vinyl cutter to produce both signs and custom apparel. Many crafters also have vinyl cutters for home use. These require little maintenance, and the vinyl can be bought in bulk relatively cheaply. Vinyl cutters are also often used by stencil artists to create single use or reusable stencil art and lettering == How it works == A vinyl cutter is a type of computer-controlled machine tool. The computer controls the movement of a sharp blade over the surface of the material as it would the nozzles of an ink-jet printer. This blade is used to cut out shapes and letters from sheets of thin self-adhesive plastic (vinyl). The vinyl can then be stuck to a variety of surfaces depending on the adhesive and type of material. To cut out a design, a vector-based image must be created using vector drawing software. Some vinyl cutters are marketed to small in-home businesses and require download and use of a proprietary editing software. The design is then sent to the cutter where it cuts along the vector paths laid out in the design. The cutter is capable of moving the blade on an X and Y axis over the material, cutting it into the required shapes. The vinyl material comes in long rolls allowing projects with significant length like banners or billboards to be easily cut. A major limitation with vinyl cutters is that they can only cut shapes from solid colours of vinyl, paper, card or thin plastic sheets such as Mylar. The type and thickness of material will vary for each cutter and how much downforce the cutter is capable of. If the material has no backing, a backing sheet, material or cutting mat and a temporary adhesive are needed to allow the cutter to cut through the material. A design with multiple colours must have each colour cut separately and then layered on top of each other as it is applied to the substrate. This is a process that is often applied in stencil art. Also, since the shapes are cut out of solid colours, photographs and gradients cannot be reproduced with a stand-alone cutter. === Design creation === Designs are created using vector-based software like Adobe Illustrator, FlexiSign, EasyCutPro, or other software. Vector artwork is either drawn with lines, shapes and text or images are vectorized thus create vector shapes. Most cutters (also called plotters) require special software to load/edit the artwork and communicate with the cutter. Computer designed images are loaded onto the vinyl cutter via a wired connection or over a wireless protocol. Then the vinyl is loaded into the machine where it is automatically fed through and cut to follow the set design. The vinyl can be placed on an adhesive mat to stabilize the vinyl when cutting smaller designs. === Types of vinyl === Adhesive vinyl is the type of vinyl used for store windows, car decals, signage, and more. Adhesive vinyl is applied with a transfer medium often called "transfer tape" or "carrier sheet". Heat transfer vinyl is the type of vinyl used to apply a design to fabric including t-shirts, tea towels, canvas bags, and more. Heat Transfer vinyl can be applied using a heat press or an iron, though the constant pressure and heat from a heat press is recommended by experts. === Using other materials === In addition to vinyl some cutters are capable of cutting other materials such as paper, card, plastic sheets and even thin wood. The thickness and type of material that can be cut will depend on the model of the cutter and heavily depends on the downforce. Cricut is a popular home cutter used by arts and craft enthusiasts since it allows for a wide use of different materials and is similar in size to a household printer and has strong downforce for its size. === Backing and cutting mat === If you cut material that doesn't have an adhesive backing you will require a cutting mat that you need to attach your material to. Some cutting mats are sticky, others will require you to use a temporary adhesive and/or masking tape to keep the material in place when cutting. === Cutting === The vinyl cutter uses a small knife or blade to precisely cut the outline of figures into a sheet or piece of vinyl, but not the release liner. The process of cutting vinyl material without penetrating it completely is referred to as "kiss cutting". The knife moves side to side and turns, while the vinyl is moved beneath the knife. The results from the cut process is an image cut into the material. === Weeding === The material is then 'weeded' where the excess parts of the figures are removed from the release liner. It is possible to remove the positive parts, which would give a negative decal, or remove the negative parts, giving a positive decal. Removing the figure would be like removing the positive, giving a negative image of the figures. === Transfer tape === A sheet of transfer tape with an adhesive backing is laid on the weeded vinyl when necessary. Heat Transfer vinyl often does not require use of a separate transfer tape. A roller is applied to the tape, causing it to adhere to the vinyl. The transfer tape and the weeded vinyl is pulled off the release liner, and applied to a substrate, such as a sheet of aluminium. This results in an aluminium sign with vinyl figures. == Uses == In addition to the capabilities of the cutter itself, adhesive vinyl comes in a wide variety of colors and materials including gold and silver foil, vinyl that simulates frosted glass, holographic vinyl, reflective vinyl, thermal transfer material, and even clear vinyl embedded with gold leaf. (Often used in the lettering on fire trucks and rescue vehicles.) As the vinyl film is supplied by the manufacturer, it comes attached to a release liner. == Challenges when cutting on a vinyl cutter == Cutting on a vinyl cutter requires careful calibration to achieve clean and accurate results, especially when the goal is to cut through only the top layer of material while leaving the backing intact. One of the most common challenges is setting the correct cutting depth. If the blade is not lowered enough, the vinyl material may not separate properly; if it goes too deep, it can cut through the backing layer and potentially damage the cutting mat. The cutting depth on the vinyl cutter machines typically does not exceed 1 mm. Another frequent issue is the mismatch between the blade and the type of material being processed. Using an inappropriate blade can lead to uneven cuts, premature dulling of the edge, and torn or frayed material. The overall quality of the output also depends on factors such as the cutting speed, blade sharpening and cutting angle, and the material the knife is made of.

    Read more →
  • Saliency map

    Saliency map

    In computer vision, a saliency map is an image that highlights either the region on which people's eyes focus first or the most relevant regions for machine learning models. The goal of a saliency map is to reflect the degree of importance of a pixel to the human visual system or an otherwise opaque ML model. For example, in this image, a person first looks at the fort and light clouds, so they should be highlighted on the saliency map. == Application == === Overview === Saliency maps have applications in a variety of different problems. Some general applications: ==== Human eye ==== Image and video compression: The human eye focuses only on a small region of interest in the frame. Therefore, it is not necessary to compress the entire frame with uniform quality. According to the authors, using a salience map reduces the final size of the video with the same visual perception. Image and video quality assessment: The main task for an image or video quality metric is a high correlation with user opinions. Differences in salient regions are given more importance and thus contribute more to the quality score. Image retargeting: It aims at resizing an image by expanding or shrinking the noninformative regions. Therefore, retargeting algorithms rely on the availability of saliency maps that accurately estimate all the salient image details. Object detection and recognition: Instead of applying a computationally complex algorithm to the whole image, we can use it to the most salient regions of an image most likely to contain an object. the primary visual cortex (V1) appears to be responsible for the saliency map, according to the V1 Saliency Hypothesis. ==== Explainable artificial intelligence ==== Saliency maps are a prominent tool in explainable artificial intelligence, providing visual explanations of the decision-making process of machine learning models, particularly deep neural networks. These maps highlight the regions in input data that are most influential on the model's output, effectively indicating where the model is "looking" when making a prediction. In image classification tasks, for example, saliency maps can identify pixels or regions that contribute most to a specific class decision. Developed for convolutional neural networks, saliency mapping techniques range from simply taking the gradient of the class score with respect to the input data to more complex algorithms, such as integrated gradients and class activation mapping. In transformer architecture, attention mechanisms led to analogous saliency maps, such as attention maps, attention rollouts, and class-discriminative attention maps. === Saliency as a segmentation problem === Saliency estimation may be viewed as an instance of image segmentation. In computer vision, image segmentation is the process of partitioning a digital image into multiple segments (sets of pixels, also known as superpixels). The goal of segmentation is to simplify and/or change the representation of an image into something that is more meaningful and easier to analyze. Image segmentation is typically used to locate objects and boundaries (lines, curves, etc.) in images. More precisely, image segmentation is the process of assigning a label to every pixel in an image such that pixels with the same label share certain characteristics. == Algorithms == === Overview === There are three forms of classic saliency estimation algorithms implemented in OpenCV: Static saliency: Relies on image features and statistics to localize the regions of interest of an image. Motion saliency: Relies on motion in a video, detected by optical flow. Objects that move are considered salient. Objectness: Objectness reflects how likely an image window covers an object. These algorithms generate a set of bounding boxes of where an object may lie in an image. In addition to classic approaches, neural-network-based are also popular. There are examples of neural networks for motion saliency estimation: TASED-Net: It consists of two building blocks. First, the encoder network extracts low-resolution spatiotemporal features, and then the following prediction network decodes the spatially encoded features while aggregating all the temporal information. STRA-Net: It emphasizes two essential issues. First, spatiotemporal features integrated via appearance and optical flow coupling, and then multi-scale saliency learned via attention mechanism. STAViS: It combines spatiotemporal visual and auditory information. This approach employs a single network that learns to localize sound sources and to fuse the two saliencies to obtain a final saliency map. There's a new static saliency in the literature with name visual distortion sensitivity. It is based on the idea that the true edges, i.e. object contours, are more salient than the other complex textured regions. It detects edges in a different way from the classic edge detection algorithms. It uses a fairly small threshold for the gradient magnitudes to consider the mere presence of the gradients. So, it obtains 4 binary maps for vertical, horizontal and two diagonal directions. The morphological closing and opening are applied to the binary images to close the small gaps. To clear the blob-like shapes, it utilizes the distance transform. After all, the connected pixel groups are individual edges (or contours). A threshold of size of connected pixel set is used to determine whether an image block contains a perceivable edge (salient region) or not. === Example implementation === First, we should calculate the distance of each pixel to the rest of pixels in the same frame: S A L S ( I k ) = ∑ i = 1 N | I k − I i | {\displaystyle \mathrm {SALS} (I_{k})=\sum _{i=1}^{N}|I_{k}-I_{i}|} I i {\displaystyle I_{i}} is the value of pixel i {\displaystyle i} , in the range of [0,255]. The following equation is the expanded form of this equation. SALS(Ik) = |Ik - I1| + |Ik - I2| + ... + |Ik - IN| Where N is the total number of pixels in the current frame. Then we can further restructure our formula. We put the value that has same I together. SALS(Ik) = Σ Fn × |Ik - In| Where Fn is the frequency of In. And the value of n belongs to [0,255]. The frequencies is expressed in the form of histogram, and the computational time of histogram is ⁠ O ( N ) {\displaystyle O(N)} ⁠ time complexity. ==== Time complexity ==== This saliency map algorithm has ⁠ O ( N ) {\displaystyle O(N)} ⁠ time complexity. Since the computational time of histogram is ⁠ O ( N ) {\displaystyle O(N)} ⁠ time complexity which N is the number of pixel's number of a frame. Besides, the minus part and multiply part of this equation need 256 times operation. Consequently, the time complexity of this algorithm is ⁠ O ( N + 256 ) {\displaystyle O(N+256)} ⁠ which equals to ⁠ O ( N ) {\displaystyle O(N)} ⁠. ==== Pseudocode ==== All of the following code is pseudo MATLAB code. First, read data from video sequences. After we read data, we do superpixel process to each frame. Spnum1 and Spnum2 represent the pixel number of current frame and previous pixel. Then we calculate the color distance of each pixel, this process we call it contract function. After this two process, we will get a saliency map, and then store all of these maps into a new FileFolder. ==== Difference in algorithms ==== The major difference between function one and two is the difference of contract function. If spnum1 and spnum2 both represent the current frame's pixel number, then this contract function is for the first saliency function. If spnum1 is the current frame's pixel number and spnum2 represent the previous frame's pixel number, then this contract function is for second saliency function. If we use the second contract function which using the pixel of the same frame to get center distance to get a saliency map, then we apply this saliency function to each frame and use current frame's saliency map minus previous frame's saliency map to get a new image which is the new saliency result of the third saliency function. == Datasets == The saliency dataset usually contains human eye movements on some image sequences. It is valuable for new saliency algorithm creation or benchmarking the existing one. The most valuable dataset parameters are spatial resolution, size, and eye-tracking equipment. Here is part of the large datasets table from MIT/Tübingen Saliency Benchmark datasets, for example. To collect a saliency dataset, image or video sequences and eye-tracking equipment must be prepared, and observers must be invited. Observers must have normal or corrected to normal vision and must be at the same distance from the screen. At the beginning of each recording session, the eye-tracker recalibrates. To do this, the observer fixates their gaze on the screen center. The session is then started, and saliency data are collected by showing sequences and recording eye gazes. The eye-tracking device is a high-speed camera, capable of recording eye movements at least 250 fr

    Read more →
  • MIDI Show Control

    MIDI Show Control

    MIDI Show Control (MSC), is a real-time System Exclusive extension of the international Musical Instrument Digital Interface (MIDI) standard. MSC enables all types of entertainment equipment to communicate with each other through the process of show control. The MIDI Show Control protocol is a technical standard ratified by the MIDI Manufacturers Association in 1991, which allows entertainment control devices to talk with each other and with computers to perform show control functions in live and prerecorded entertainment applications. Just like musical MIDI, MSC does not transmit the actual show media - it simply transmits digital information about a multimedia performance. == How MSC works == When any cue is called by a user (typically a stage manager) and/or preprogrammed timeline in a show control software application, the show controller transmits one or more MSC messages from its 'MIDI Out' port. A typical MSC message sequence is: the user has just called a cue the cue is for lighting device 3 the cue is number 45.8 the cue is in cue list 7 MSC messages are serially transmitted in the same way as musical messages and are fully compatible with all conventional MIDI hardware; however, many modern MSC devices now use Ethernet communications for higher bandwidth and the flexibility afforded by networks. Other performance parameters are also transmitted, such as lighting desk submaster settings using MSC SET messages. All cues that a media control device is capable of playing are assigned MSC messages within the Show Controller's cue list and they are transmitted from its MIDI Out port at the appropriate show time, depending on the actions of the user and the show controller's internally timed sequences. All MSC-compatible instruments follow the MSC specification and thus transmit identical MSC messages for identical MSC events, such as the playing of a certain cue on the media controller. Since they follow a published standard, all MSC devices can communicate with and understand each other, as well as with computers that have been programmed to understand MSC messages using the MSC Command Set. All MSC compatible instruments have a built-in MIDI interface and many now follow one of the various MIDI-over-Ethernet protocols. == History == To create the MSC spec, Charlie Richmond headed the USITT MIDI Forum on their Callboard Network in 1990, which included developers and designers from the theatre sound and lighting industry from around the world. It is believed that this was the first international standard to be developed without a single physical meeting of the participants. This Forum created the MSC standard between January and September 1990. This was ratified by the MIDI Manufacturers Association (MMA) in January 1991, and the Japan MIDI Standards Committee (JMSC) later that year, becoming a part of the standard MIDI specification in August 1991. The first show to fully use the MSC specification was the Magic Kingdom Parade at Walt Disney World's Magic Kingdom in September 1991. == MIDI Show Control software ==

    Read more →
  • HTTP compression

    HTTP compression

    HTTP compression is a capability that can be built into web servers and web clients to improve transfer speed and bandwidth utilization. HTTP data is compressed before it is sent from the server: compliant browsers will announce what methods are supported to the server before downloading the correct format; browsers that do not support compliant compression method will download uncompressed data. The most common compression schemes include gzip and Brotli; a full list of available schemes is maintained by the IANA. There are two different ways compression can be done in HTTP. At a lower level, a Transfer-Encoding header field may indicate the payload of an HTTP message is compressed. At a higher level, a Content-Encoding header field may indicate that a resource being transferred, cached, or otherwise referenced is compressed. Compression using Content-Encoding is more widely supported than Transfer-Encoding, and some browsers do not advertise support for Transfer-Encoding compression to avoid triggering bugs in servers. == Compression scheme negotiation == The negotiation is done in two steps, described in RFC 2616 and RFC 9110: 1. The web client advertises which compression schemes it supports by including a list of tokens in the HTTP request. For Content-Encoding, the list is in a field called Accept-Encoding; for Transfer-Encoding, the field is called TE. 2. If the server supports one or more compression schemes, the outgoing data may be compressed by one or more methods supported by both parties. If this is the case, the server will add a Content-Encoding or Transfer-Encoding field in the HTTP response with the used schemes, separated by commas. The web server is by no means obligated to use any compression method – this depends on the internal settings of the web server and also may depend on the internal architecture of the website in question. == Content-Encoding tokens == The official list of tokens available to servers and client is maintained by IANA, and it includes: br – Brotli, a compression algorithm specifically designed for HTTP content encoding, defined in RFC 7932 and implemented in all modern major browsers. compress – UNIX "compress" program method (historic; deprecated in most applications and replaced by gzip or deflate) deflate – compression based on the deflate algorithm (described in RFC 1951), a combination of the LZ77 algorithm and Huffman coding, wrapped inside the zlib data format (RFC 1950); exi – W3C Efficient XML Interchange gzip – GNU zip format (described in RFC 1952). Uses the deflate algorithm for compression, but the data format and the checksum algorithm differ from the "deflate" content-encoding. This method is the most broadly supported as of March 2011. identity – No transformation is used. This is the default value for content coding. pack200-gzip – Network Transfer Format for Java Archives zstd – Zstandard compression, defined in RFC 8478 In addition to these, a number of unofficial or non-standardized tokens are used in the wild by either servers or clients: bzip2 – compression based on the free bzip2 format, supported by lighttpd lzip – compression based on the free lzip format, supported by wget and Links lzma – compression based on (raw) LZMA is available in Opera 20, and in elinks via a compile-time option peerdist – Microsoft Peer Content Caching and Retrieval rsync – delta encoding in HTTP, implemented by a pair of rproxy proxies. xpress – Microsoft compression protocol used by Windows 8 and later for Windows Store application updates. LZ77-based compression optionally using a Huffman encoding. xz – LZMA2-based content compression, supported by a non-official Firefox patch; and fully implemented in mget since 2013-12-31. == Servers that support HTTP compression == SAP NetWeaver Microsoft IIS: built-in or using third-party module Apache HTTP Server, via mod_deflate (despite its name, only supporting gzip), and mod_brotli Hiawatha HTTP server: serves pre-compressed files Cherokee HTTP server, On the fly gzip and deflate compressions Oracle iPlanet Web Server Zeus Web Server lighttpd nginx – built-in Applications based on Tornado, if "compress_response" is set to True in the application settings (for versions prior to 4.0, set "gzip" to True) Jetty Server – built-into default static content serving and available via servlet filter configurations GeoServer Apache Tomcat IBM Websphere AOLserver Ruby Rack, via the Rack::Deflater middleware HAProxy Varnish – built-in. Works also with ESI Armeria – Serving pre-compressed files NaviServer – built-in, dynamic and static compression Caddy – built-in via encode Many content delivery networks also implement HTTP compression to improve speedy delivery of resources to end users. The compression in HTTP can also be achieved by using the functionality of server-side scripting languages like PHP, or programming languages like Java. Various online tools exist to verify a working implementation of HTTP compression. These online tools usually request multiple variants of a URL, each with different request headers (with varying Accept-Encoding content). HTTP compression is considered to be implemented correctly when the server returns a document in a compressed format. By comparing the sizes of the returned documents, the effective compression ratio can be calculated (even between different compression algorithms). == Problems preventing the use of HTTP compression == A 2009 article by Google engineers Arvind Jain and Jason Glasgow states that more than 99 person-years are wasted daily due to increase in page load time when users do not receive compressed content. This occurs when anti-virus software interferes with connections to force them to be uncompressed, where proxies are used (with overcautious web browsers), where servers are misconfigured, and where browser bugs stop compression being used. Internet Explorer 6, which drops to HTTP 1.0 (without features like compression or pipelining) when behind a proxy – a common configuration in corporate environments – was the mainstream browser most prone to failing back to uncompressed HTTP. Another problem found while deploying HTTP compression on large scale is due to the deflate encoding definition: while HTTP 1.1 defines the deflate encoding as data compressed with deflate (RFC 1951) inside a zlib formatted stream (RFC 1950), Microsoft server and client products historically implemented it as a "raw" deflated stream, making its deployment unreliable. For this reason, some software, including the Apache HTTP Server, only implements gzip encoding. == Security implications == Compression allows a form of chosen plaintext attack to be performed: if an attacker can inject any chosen content into the page, they can know whether the page contains their given content by observing the size increase of the encrypted stream. If the increase is smaller than expected for random injections, it means that the compressor has found a repeat in the text, i.e. the injected content overlaps the secret information. This is the idea behind CRIME. In 2012, a general attack against the use of data compression, called CRIME, was announced. While the CRIME attack could work effectively against a large number of protocols, including but not limited to TLS, and application-layer protocols such as SPDY or HTTP, only exploits against TLS and SPDY were demonstrated and largely mitigated in browsers and servers. The CRIME exploit against HTTP compression has not been mitigated at all, even though the authors of CRIME have warned that this vulnerability might be even more widespread than SPDY and TLS compression combined. In 2013, a new instance of the CRIME attack against HTTP compression, dubbed BREACH, was published. A BREACH attack can extract login tokens, email addresses or other sensitive information from TLS encrypted web traffic in as little as 30 seconds (depending on the number of bytes to be extracted), provided the attacker tricks the victim into visiting a malicious web link. All versions of TLS and SSL are at risk from BREACH regardless of the encryption algorithm or cipher used. Unlike previous instances of CRIME, which can be successfully defended against by turning off TLS compression or SPDY header compression, BREACH exploits HTTP compression which cannot realistically be turned off, as virtually all web servers rely upon it to improve data transmission speeds for users. As of 2016, the TIME attack and the HEIST attack are now public knowledge.

    Read more →