AI Image Generators

Explore the best AI Image Generators — independent reviews, comparisons, pricing and step-by-step how-to guides, curated by Aizhi.

  • Space partitioning

    Space partitioning

    In geometry, space partitioning is the process of dividing an entire space (usually a Euclidean space) into two or more disjoint subsets (see also partition of a set). In other words, space partitioning divides a space into non-overlapping regions. Any point in the space can then be identified to lie in exactly one of the regions. == Overview == Space-partitioning systems are often hierarchical, meaning that a space (or a region of space) is divided into several regions, and then the same space-partitioning system is recursively applied to each of the regions thus created. The regions can be organized into a tree, called a space-partitioning tree. Most space-partitioning systems use planes (or, in higher dimensions, hyperplanes) to divide space: points on one side of the plane form one region, and points on the other side form another. Points exactly on the plane are usually arbitrarily assigned to one or the other side. Recursively partitioning space using planes in this way produces a BSP tree, one of the most common forms of space partitioning. == Uses == === In computer graphics === Space partitioning is particularly important in computer graphics, especially heavily used in ray tracing, where it is frequently used to organize the objects in a virtual scene. A typical scene may contain millions of polygons. Performing a ray/polygon intersection test with each would be a very computationally expensive task. Storing objects in a space-partitioning data structure (k-d tree or BSP tree for example) makes it easy and fast to perform certain kinds of geometry queries—for example in determining whether a ray intersects an object, space partitioning can reduce the number of intersection test to just a few per primary ray, yielding a logarithmic time complexity with respect to the number of polygons. Space partitioning is also often used in scanline algorithms to eliminate the polygons out of the camera's viewing frustum, limiting the number of polygons processed by the pipeline. There is also a usage in collision detection: determining whether two objects are close to each other can be much faster using space partitioning. === In integrated circuit design === In integrated circuit design, an important step is design rule check. This step ensures that the completed design is manufacturable. The check involves rules that specify widths and spacings and other geometry patterns. A modern design can have billions of polygons that represent wires and transistors. Efficient checking relies heavily on geometry query. For example, a rule may specify that any polygon must be at least n nanometers from any other polygon. This is converted into a geometry query by enlarging a polygon by n/2 at all sides and query to find all intersecting polygons. === In probability and statistical learning theory === The number of components in a space partition plays a central role in some results in probability theory. See Growth function for more details. === In geography and GIS === There are many studies and applications where Geographical Spatial Reality is partitioned by hydrological criteria, administrative criteria, mathematical criteria or many others. In the context of cartography and GIS - Geographic Information System, is common to identify cells of the partition by standard codes. For example the for HUC code identifying hydrographical basins and sub-basins, ISO 3166-2 codes identifying countries and its subdivisions, or arbitrary DGGs - discrete global grids identifying quadrants or locations. == Data structures == Common space-partitioning systems include: BSP trees Quadtrees Octrees k-d trees Bins == Number of components == Suppose the n-dimensional Euclidean space is partitioned by r {\displaystyle r} hyperplanes that are ( n − 1 ) {\displaystyle (n-1)} -dimensional. What is the number of components in the partition? The largest number of components is attained when the hyperplanes are in general position, i.e, no two are parallel and no three have the same intersection. Denote this maximum number of components by C o m p ( n , r ) {\displaystyle Comp(n,r)} . Then, the following recurrence relation holds: C o m p ( n , r ) = C o m p ( n , r − 1 ) + C o m p ( n − 1 , r − 1 ) {\displaystyle Comp(n,r)=Comp(n,r-1)+Comp(n-1,r-1)} C o m p ( 0 , r ) = 1 {\displaystyle Comp(0,r)=1} - when there are no dimensions, there is a single point. C o m p ( n , 0 ) = 1 {\displaystyle Comp(n,0)=1} - when there are no hyperplanes, all the space is a single component. And its solution is: C o m p ( n , r ) = ∑ k = 0 n ( r k ) {\displaystyle Comp(n,r)=\sum _{k=0}^{n}{r \choose k}} if r ≥ n {\displaystyle r\geq n} C o m p ( n , r ) = 2 r {\displaystyle Comp(n,r)=2^{r}} if r ≤ n {\displaystyle r\leq n} (consider e.g. r {\displaystyle r} perpendicular hyperplanes; each additional hyperplane divides each existing component to 2). which is upper-bounded as: C o m p ( n , r ) ≤ r n + 1 {\displaystyle Comp(n,r)\leq r^{n}+1}

    Read more →
  • Frederick Jelinek

    Frederick Jelinek

    Frederick Jelinek (18 November 1932 – 14 September 2010) was a Czech-American researcher in information theory, automatic speech recognition, and natural language processing. He is well known for his oft-quoted statement, "Every time I fire a linguist, the performance of the speech recognizer goes up". Jelinek was born in Czechoslovakia before World War II and emigrated with his family to the United States in the early years of the communist regime. He studied engineering at the Massachusetts Institute of Technology and taught for 10 years at Cornell University before accepting a job at IBM Research. In 1961, he married Czech screenwriter Milena Jelinek. At IBM, his team advanced approaches to computer speech recognition and machine translation. After IBM, he went to head the Center for Language and Speech Processing at Johns Hopkins University for 17 years, where he was still working on the day he died. == Personal life == Jelinek was born on November 18, 1932, as Bedřich Jelínek in Kladno to Vilém and Trude Jelínek. His father was Jewish; his mother was born in Switzerland to Czech Catholic parents and had converted to Judaism. Jelínek senior, a dentist, had planned early to escape Nazi occupation and flee to England; he arranged for a passport, visa, and the shipping of his dentistry materials. The couple planned to send their son to an English private school. However, Vilém decided to stay at the last minute and was eventually sent to the Theresienstadt concentration camp, where he died in 1945. The family was forced to move to Prague in 1941, but Frederick, his sister and mother—thanks to the latter's background—escaped the concentration camps. After the war, Jelinek entered in the gymnasium, despite having missed several years of schooling because education of Jewish children had been forbidden since 1942. His mother, anxious that her son should get a good education, made great efforts for their emigration, especially when it became clear he would not be allowed to even attempt the graduation examination. His mother hoped her son would become a physician, but Jelinek dreamed of being a lawyer. He studied engineering in evening classes at the City College of New York and received stipends from the National Committee for a Free Europe that allowed him to study at the Massachusetts Institute of Technology. About his choice of specialty, he said: "Fortunately, to electrical engineering there belonged a discipline whose aim was not the construction of physical systems: the theory of information". He obtained his Ph.D. in 1962, with Robert Fano as his adviser. In 1957, Jelinek paid an unexpected visit to Prague. He had been in Vienna and applied for a visa, hoping to see his former acquaintances again. He met with his old friend Miloš Forman, who introduced him to film student Milena Tobolová—whose screenplay had been the basis for the movie Easy Life (Snadný život). His flight back to the U.S. had a stopover in Munich, during which he called her to propose. Tobolová was considered a dissident and the authorities were not happy with her film. Jelinek asked for help from Jerome Wiesner and Cyrus Eaton, the latter who lobbied Nikita Khrushchev. Following the inauguration of John F. Kennedy, a group of Czech dissidents were allowed to emigrate in January 1961. Thanks to the lobbying, the future Milena Jelinek was one of them. After completing his graduate studies, Jelinek, who had developed an interest in linguistics, had plans to work with Charles F. Hockett at Cornell University. However these fell through and during the next ten years he continued to study information theory. Having previously worked at IBM during a sabbatical, he began full-time work there in 1972—at first on leave for Cornell, but permanently from 1974. He remained there for over twenty years. Although at first he had been offered a regular research job, upon his arrival he learned that Josef Raviv had recently been promoted to head of the newly opened IBM Haifa Research Laboratory, and became head of the Continuous Speech Recognition group at the Thomas J. Watson Research Center. Despite his team's successes in this area, Jelinek's work remained little known in his home country because Czech scientists were not allowed to participate in key conferences. After the 1989 fall of communism, Jelinek helped establish scientific relationships, regularly visiting to lecture and helping to persuade IBM to establish a computing centre at Charles University. In 1993, he retired from IBM and went to Johns Hopkins University's Center for Language and Speech Processing, where he was director and Julian Sinclair Smith Professor of Electrical and Computer Engineering. He was still working there at the time of his death; Jelinek died of a heart attack at the close of an otherwise normal workday in mid-September 2010. He was survived by his wife, daughter and son, sister, stepsister, and three grandchildren, including Sophie Gold Jelinek. == Research and legacy == Information theory was a fashionable scientific approach in the mid '50s. However, pioneer Claude Shannon wrote in 1956 that this trendiness was dangerous. He said, "Our fellow scientists in many different fields, attracted by the fanfare and by the new avenues opened to scientific analysis, are using these ideas in their own problems ... It will be all too easy for our somewhat artificial prosperity to collapse overnight when it is realized that the use of a few exciting words like information, entropy, redundancy, do not solve all our problems." During the next decade, a combination of factors shut down the application of information theory to natural language processing (NLP) problems—in particular machine translation. One factor was the 1957 publication of Noam Chomsky's Syntactic Structures, which stated, "probabilistic models give no insight into the basic problems of syntactic structure". This accorded well with the philosophy of the artificial intelligence research of the time, which promoted rule-based approaches. The other factor was the 1966 ALPAC report, which recommended that the government should stop funding research into machine translation. ALPAC chairman John Pierce later said that the field was filled with "mad inventors or untrustworthy engineers". He said that the underlying linguistic problems must be solved before attempts at NLP could be reasonably made. These elements essentially halted research in the field. Jelinek had begun to develop an interest in linguistics after the immigration of his wife, who initially enrolled in the MIT linguistics program with the help of Roman Jakobson. Jelinek often accompanied her to Chomsky's lectures, and even discussed the possibility of changing orientation with his adviser. Fano was "really upset", and after the failure of his project with Hockett at Cornell, he did not return to this field of research until starting work at IBM. The scope of research at IBM was considerably different from that of most other teams. According to Mark Liberman, "While [Jelinek] was leading IBM's effort to solve the general dictation problem during the decade or so following 1972, most other U.S. companies and academic researchers were working on very limited problems ... or were staying out of the field entirely". Jelinek regarded speech recognition as an information theory problem—a noisy channel, in this case the acoustic signal—which some observers considered a daring approach. The concept of perplexity was introduced in their first model, New Raleigh Grammar, which was published in 1976 as the paper "Continuous Speech Recognition by Statistical Methods" in the journal Proceedings of the IEEE. According to Young, the basic noisy channel approach "reduced the speech recognition problem to one of producing two statistical models". Whereas New Raleigh Grammar was a hidden Markov model, their next model, called Tangora, was broader and involved n-grams, specifically trigrams. Even though "it was obvious to everyone that this model was hopelessly impoverished", it was not improved upon until Jelinek presented another paper in 1999. The same trigram approach was applied to phones in single words. Although the identification of parts of speech turned out not to be very useful for speech recognition, tagging methods developed during these projects are now used in various NLP applications. The incremental research techniques developed at IBM eventually became dominant in the field after DARPA, in the mid-80s, returned to NLP research and imposed that methodology to participating teams, shared common goals, data, and precise evaluation metrics. The Continuous Speech Recognition Group's research, which required large amounts of data to train the algorithms, eventually led to the creation of the Linguistic Data Consortium. In the 1980s, although the broader problem of speech recognition remained unsolved, they sought to apply the methods developed to other problems; machine translat

    Read more →
  • Aravind Joshi

    Aravind Joshi

    Aravind Krishna Joshi (August 5, 1929 – December 31, 2017) was the Henry Salvatori Professor of Computer and Cognitive Science in the computer science department of the University of Pennsylvania. Joshi defined the tree-adjoining grammar formalism which is often used in computational linguistics and natural language processing. Joshi studied at Pune University and the Indian Institute of Science, where he was awarded a BE in electrical engineering and a DIISc in communication engineering respectively. Joshi's graduate work was done in the electrical engineering department at the University of Pennsylvania, and he was awarded his PhD in 1960. He became a professor at Penn and was the co-founder and co-director of the Institute for Research in Cognitive Science. == Awards and recognitions == Guggenheim fellow, 1971–72 Fellow of the Institute of Electrical and Electronics Engineers (IEEE), 1976 Best Paper Award at the National Conference on Artificial Intelligence, 1987 Founding Fellow of the American Association for Artificial Intelligence (AAAI), 1990 IJCAI Award for Research Excellence, 1997 Fellow of the Association for Computing Machinery, 1998 Elected to the National Academy of Engineering, 1999 First to be awarded the Association for Computational Linguistics Lifetime Achievement Award at the 40th anniversary meeting of the ACL, 2002 Awarded the Rumelhart Prize, 2003 Benjamin Franklin Medal in Computer and Cognitive Science, 2005 Doctor honoris causa of mathematical and physical sciences, Charles University in Prague, October 30, 2013 S.-Y. Kuroda Prize of the SIG Mathematics of Language of the ACL, 2013 === Awarded history === On April 21, 2005, Joshi was awarded the Franklin Institute's Benjamin Franklin Medal in Computer and Cognitive Science. The Franklin Institute citation states that he was awarded the medal "for his fundamental contributions to our understanding of how language is represented in the mind, and for developing techniques that enable computers to process efficiently the wide range of human languages. These advances have led to new methods for computer translation."

    Read more →
  • Neuroph

    Neuroph

    Neuroph is an object-oriented artificial neural network framework written in Java. It can be used to create and train neural networks in Java programs. Neuroph provides Java class library as well as GUI tool easyNeurons for creating and training neural networks. It is an open-source project hosted at SourceForge under the Apache License. Versions before 2.4 were licensed under LGPL 3, from this version the license is Apache 2.0 License. == Features == Neuroph's core classes correspond to basic neural network concepts like artificial neuron, neuron layer, neuron connections, weight, transfer function, input function, learning rule etc. Neuroph supports common neural network architectures such as Multilayer perceptron with Backpropagation, Kohonen and Hopfield networks. All these classes can be extended and customized to create custom neural networks and learning rules. Neuroph has built-in support for image recognition.

    Read more →
  • Comparison of raster graphics editors

    Comparison of raster graphics editors

    Raster graphics editors can be compared by many variables, including availability. == List == == General information == Basic general information about the editor: creator, company, license, etc. == Operating system support == The operating systems on which the editors can run natively, that is, without emulation, virtual machines or compatibility layers. In other words, the software must be specifically coded for the operation system; for example, Adobe Photoshop for Windows running on Linux with Wine does not fit. == Features == == Color spaces == == File support ==

    Read more →
  • AI Pair Programmers Reviews: What Actually Works in 2026

    AI Pair Programmers Reviews: What Actually Works in 2026

    Curious about the best AI pair programmer? An AI pair programmer is software that uses machine learning to help you get more done — it combines speed, accuracy, and an interface that just works. Hands-on testing shows real-world results vary, so a short free trial is the smartest way to decide. Whether you are a beginner or a pro, the right AI pair programmer slots into your workflow and pays for itself fast. Read on for hands-on impressions, pricing tiers, and the standout features that matter.

    Read more →
  • AI Video Generators Reviews: What Actually Works in 2026

    AI Video Generators Reviews: What Actually Works in 2026

    Comparing the best AI video generator? An AI video generator is software that uses machine learning to help you get more done — it lowers the barrier so anyone can produce professional output. Privacy matters too: check whether your data trains the model and whether a no-log or enterprise tier is available. Whether you are a beginner or a pro, the right AI video generator slots into your workflow and pays for itself fast. We tested the leading options and ranked them by quality, value, and ease of use.

    Read more →
  • AI Virtual Assistants Reviews: What Actually Works in 2026

    AI Virtual Assistants Reviews: What Actually Works in 2026

    Curious about the best AI virtual assistant? An AI virtual assistant is software that uses machine learning to help you get more done — it combines speed, accuracy, and an interface that just works. Hands-on testing shows real-world results vary, so a short free trial is the smartest way to decide. Whether you are a beginner or a pro, the right AI virtual assistant slots into your workflow and pays for itself fast. This guide breaks down the top picks, their pros and cons, and who each one is best for.

    Read more →
  • Mix automation

    Mix automation

    In music recording, mix automation allows the mixing console to remember the mixing engineer's dynamic adjustment of faders during a musical piece in the post-production editing process. A timecode is necessary for the synchronization of automation. Modern mixing consoles and digital audio workstations use comprehensive mix automation. The need for automated mixing originated from the late 1970s transition form 8-track to 16-track and then 24-track multitrack recording, as mixing could be laborious and require multiple people and hands, and the results could be almost impossible to reproduce. With 48-track recording - synchronized twin 24-track recorders (for a net 46 audio tracks, with one on each machine for SMPTE timecode) - came larger recording and mixing consoles with even more channel faders to manage during mixdown. Manufacturers, such as Neve Electronics (now AMS Neve) and Solid State Logic (SSL), both English companies, developed systems that enabled one engineer to oversee every detail of a complex mix, although the computers required to power these desks remained a rarity into the late 1970s. According to record producer Roy Thomas Baker, Queen's 1975 single "Bohemian Rhapsody" was one of the first mixes to be done with automation. == Types == Voltage Controlled Automation fader levels are regulated by voltage-controlled amplifiers (VCA). VCAs control the audio level and not the actual fader. Moving Fader Automation a motor is attached to the fader, which then can be controlled by the console, digital audio workstation (DAW), or user. Software Controlled Automation the software can be internal to the console, or external as part of a DAW. The virtual fader can be adjusted in the software by the user. MIDI Automation the communications protocol MIDI can be used to send messages to the console to control automation. == Modes == Auto Write used the first time automation is created or when writing over existing automation Auto Touch writes automation data only while a fader is touched/faders return to any previously automated position after release Auto Latch starts writing automation data when a fader is touched/stays in position after release Auto Read digital Audio Workstation performs the written automation Auto Off automation is temporarily disabled All of these include the mute button. If mute is pressed during writing of automation, the audio track will be muted during playback of that automation. Depending on software, other parameters such as panning, sends, and plug-in controls can be automated as well. In some cases, automation can be written using a digital potentiometer instead of a fader.

    Read more →
  • Gato (DeepMind)

    Gato (DeepMind)

    Gato is a deep neural network for a range of complex tasks that exhibits multimodality. It can perform tasks such as engaging in a dialogue, playing video games, controlling a robot arm to stack blocks, and more. == Overview == Gato was created by researchers at London-based AI firm DeepMind. It is a transformer, like GPT-3. According to MIT Technology Review, the system "learns multiple different tasks at the same time, which means it can switch between them without having to forget one skill before learning another" whereas "[t]he AI systems of today are called “narrow,” meaning they can only do a specific, restricted set of tasks such as generate text", and according to The Independent, it is a "'generalist agent' that can carry out a huge range of complex tasks, from stacking blocks to writing poetry". It uses supervised learning with 1.2B parameters. The technology has been described as "general purpose" artificial intelligence and a "step toward" artificial general intelligence.

    Read more →
  • IBM optical mark and character readers

    IBM optical mark and character readers

    IBM designed, manufactured and sold optical mark and character readers from 1960 until 1984. The IBM 1287 is notable as being the first commercially sold scanner capable of reading handwritten numbers. == Initial development work == IBM Poughkeepsie studied machine character recognition from 1950 till 1954, developing an experimental machine that used a cathode-ray-tube attached an IBM 701 which performed the character analysis. They pursued a technique known as lakes and bays which examined different areas of dark and light where the lakes were white areas enclosed by black and the bays were partially enclosed areas. Their machine and mission was moved to IBM Endicott in 1954, where research continued. From 1955 to 1956 they then worked on the VIDOR (Visual Document Reader) program, but they could not get agreement on acceptable reject rate. The developers felt 80% recognition was acceptable (meaning 20% of documents would need to be manually processed), while product planners and IBM Marketing felt that compared to punched card, the reject rate was unacceptably high. This led to no new products being released. In 1956 the American Bankers Association chose to use Magnetic Ink Character Recognition (MICR) to automate check handling, rejecting a proposed solution generated by an IBM Poughkeepsie banking project that used optical characters formed by vertical bars and digits. IBM developed a magnetic read head to handle the new standard, releasing the IBM 1210 MICR reader/sorter in 1959. The development work for this product both with read heads and document handling, helped move optical character recognition forward, with development focusing on reading one or two lines of print from a paper document larger than an IBM punched card. The first product to be released was the IBM 1418. == IBM 123x Optical Mark Readers == The IBM 1230, IBM 1231, and IBM 1232 were optical mark readers used to input the contents of data sources such as questionnaires, test results, surveys as well as historical data that could be easily entered as marks on sheets. Educational institutes used them to score test results and they were effectively a replacement for the IBM 805 Test Scoring Machine that used electrical resistance and a mark sense pencil to score a test, rather than optical mark detection. They were developed and manufactured by IBM Rochester. They have the following features: A pneumatic input hopper that can hold approximately 600 sheets Two output stackers: the normal stacker that holds 600 sheets and the select (or reject) stacker which holds 50 sheets. Pluggable SMS printed circuit cards They can read positional marks made by a lead pencil using an optical read head that consists of photovoltaic(solar) cells and lamps The 1230 has 21 photovoltaic cells, 20 for reading the pencil marks and one to read timing marks on the right hand border of the sheet. The 1231 and 1232 have 22 photovoltaic cells, 20 to read data, one to read timing marks and one to read a special feature called a master mark. Input size is a 8+1⁄2 in × 11 in (22 cm × 28 cm) sheet called a data sheet that can have up to 1000 marked or printed positions per side. Uses electromechanical devices known as sonic delay lines to store results. === IBM 1230 Optical Mark Scoring Reader === The IBM 1230 is an offline optical mark scoring machine announced on 2 November 1962 that was designed to read and scores 1,200 answer sheets per hour. Scored results are printed via a wire matrix printer on the right margin of each answer sheet as it is processed. Two master sheets are required for the process: one that encoded the correct answers and one for the machine to record run information. Output could be sent to an IBM 534 Model 3 Card Punch as an option, which limits throughput to 750 sheets per hour when punching 80 columns of data. === IBM 1231 Optical Mark Page Reader === The IBM 1231 is an online optical mark reader that was designed to read and score 2000 test answer sheets per hour, depending on downstream operations. The correct answers for the test can either be entered using a master sheet (like the 1230) or sent to the 1231 using the optional master-mark special feature. === IBM 1232 Optical Mark Page Reader === The IBM 1232 is an offline optical mark reader that was designed to read up to 2000 marked sheets per hour. Documents can be read at up to 2000 sheets per hour, but this depends on the number of characters that need to be punched from each sheet. The IBM 1232 reads the marks and then punches them into cards using a IBM 534 Model 3 Card Punch. Together they can read up to 64,000 characters per hour or 800 fully punched cards. === Example customers === The California Test Bureau (CTB) that provided standardised achievement tests for educational institutes across the USA, began replacing their IBM 805s with IBM 1230s in 1963. They then installed two IBM 1232s in 1964. Being able to use a full 8+1⁄2 in × 11 in (22 cm × 28 cm) answer sheet rather than a 7+3⁄8 in × 3+1⁄4 in (18.7 cm × 8.3 cm) mark sense card, eliminated the need to use multiple answer cards per test per student, as well as dramatically increased the marking speed for test answers. Credit Bureau Services of Dallas used an IBM 1232 in 1966 as part of their first computerisation project. They marked credit history data onto optical scanning sheets that were fed into their IBM 1232. The attached IBM 534 then punched this data onto punched cards, which were then fed into their IBM System/360 Model 30. In 1968 the US Army Corps of Engineers Coastal Engineering Research Center (CERC) began using special log books for their coastal surveyors to record coastal survey data, which was then converted to punched cards by an IBM 1232. == IBM 2956 Optical Mark/Hole Reader == The IBM 2956 Models 2 and 3 are custom build optical mark/hole readers designed to be attached to an IBM 2740 Communications Terminal. The IBM 2956-2 can read cards that have either been hand or machine marked or that have been punched. The cards can be fed by hand or from the 400 card hopper. It has a 400 card stacker. The 2956-2 could be ordered by request for price quotation (RPQ) 843086. The IBM 2956-3 can read cards that have either been hand or machine marked or that have been punched. It can also read marked sheets up to 9 in × 14 in (230 mm × 360 mm) in size, although only a 3+1⁄4 in (83 mm) band along the side of the sheet can be read (the width of a punched card). It does not have a hopper or a stacker, so each card or sheet must be manually fed into the machine. The 2956-3 could be ordered by request for price quotation (RPQ) 843106. The 2956-3 could be attached to an IBM 3276 or IBM 3278 display station with RPQ UB9001. One use case for the IBM 2956 is to grade school tests. On completion of a learning module a student can use an optical scan-type card to record answers to up to 27 questions, with up to 5 choices per question. They are scanned by the reader and the results are then transmitted to an IBM System/360 in remote job entry mode and can also be printed on the IBM 2740. The reader can also be attached to an IBM 3735 which transmits results to an IBM System/370 and which prints results on an IBM 3286 printer. They can also be attached to an IBM System/3. Note that the IBM 2956 Model 5 (2956-5) was a banking reader/sorter. == IBM 1282 Optical Reader Card Punch == The IBM 1282 is an offline optical reader that is used to read embossed credit card receipts, a mark read field or machine printed characters in three different fonts. It then outputs this data onto a punched card. It was developed and manufactured by IBM Endicott. It proved popular and within two years of announcement 100 machines were installed or on order. === Example customer === The New York Department of Motor Vehicles reported that from 1964 until 1968 they were using an IBM 1282 to read machine printed license renewal slips that had been mailed back as part of the renewal process. They would scan the slip and then process the resulting punched card. This worked well until the DMV decided to request renewals include the drivers Social Security Number (SSN), which meant a handwritten number needed to be either manually keyed or a new scanning device procured. They switched to the IBM 1287 in 1968. == IBM 1285 Optical Reader == The IBM 1285 is an online optical reader that is used to read printed paper tapes from cash registers or adding machines. It was developed by IBM Endicott and manufactured by IBM Rochester. The IBM 1285 attaches to an IBM 1401, 1440, 1460 or System/360. It has a small round screen to display characters being read and it has a keyboard to enter header information and to optionally enter character corrections for rejected characters. It can read a 200 ft (61 m) roll or paper tape in three-and-a half minutes, reading data at speeds of up to 3000 lines per minute. It can mark the tape with a dot to indicate unreadable characters, so they can be r

    Read more →
  • Flex (lexical analyzer generator)

    Flex (lexical analyzer generator)

    Flex (fast lexical analyzer generator) is a free and open-source software alternative to lex. It is a computer program that generates lexical analyzers (also known as "scanners" or "lexers"). It is frequently used as the lex implementation together with Berkeley Yacc parser generator on BSD-derived operating systems (as both lex and yacc are part of POSIX), or together with GNU bison (a version of yacc) in BSD ports and in Linux distributions. Unlike Bison, flex is not part of the GNU Project and is not released under the GNU General Public License, although a manual for Flex was produced and published by the Free Software Foundation. == History == Flex was written in C around 1987 by Vern Paxson, with the help of many ideas and much inspiration from Van Jacobson. Original version by Jef Poskanzer. The fast table representation is a partial implementation of a design done by Van Jacobson. The implementation was done by Kevin Gong and Vern Paxson. == Example lexical analyzer == This is an example of a Flex scanner for the instructional programming language PL/0. The tokens recognized are: '+', '-', '', '/', '=', '(', ')', ',', ';', '.', ':=', '<', '<=', '<>', '>', '>='; numbers: 0-9 {0-9}; identifiers: a-zA-Z {a-zA-Z0-9} and keywords: begin, call, const, do, end, if, odd, procedure, then, var, while. == Internals == These programs perform character parsing and tokenizing via the use of a deterministic finite automaton (DFA). A DFA is a theoretical machine accepting regular languages, and is equivalent to read-only right moving Turing machines. The syntax is based on the use of regular expressions. See also nondeterministic finite automaton. == Issues == === Time complexity === A Flex lexical analyzer usually has time complexity O ( n ) {\displaystyle O(n)} in the length of the input. That is, it performs a constant number of operations for each input symbol. This constant is quite low: GCC generates 12 instructions for the DFA match loop. Note that the constant is independent of the length of the token, the length of the regular expression and the size of the DFA. However, using the REJECT macro in a scanner with the potential to match extremely long tokens can cause Flex to generate a scanner with non-linear performance. This feature is optional. In this case, the programmer has explicitly told Flex to "go back and try again" after it has already matched some input. This will cause the DFA to backtrack to find other accept states. The REJECT feature is not enabled by default, and because of its performance implications its use is discouraged in the Flex manual. === Reentrancy === By default the scanner generated by Flex is not reentrant. This can cause serious problems for programs that use the generated scanner from different threads. To overcome this issue there are options that Flex provides in order to achieve reentrancy. A detailed description of these options can be found in the Flex manual. === Usage under non-Unix environments === Normally the generated scanner contains references to the unistd.h header file, which is Unix specific. To avoid generating code that includes unistd.h, %option nounistd should be used. Another issue is the call to isatty (a Unix library function), which can be found in the generated code. The %option never-interactive forces flex to generate code that does not use isatty. === Using flex from other languages === Flex can only generate code for C and C++. To use the scanner code generated by flex from other languages a language binding tool such as SWIG can be used. === Unicode support === Flex is limited to matching 1-byte (8-bit) binary values and therefore does not support Unicode. RE/flex and other alternatives do support Unicode matching. == Flex++ == flex++ is a similar lexical scanner for C++ which is included as part of the flex package. The generated code does not depend on any runtime or external library except for a memory allocator (malloc or a user-supplied alternative) unless the input also depends on it. This can be useful in embedded and similar situations where traditional operating system or C runtime facilities may not be available. The flex++ generated C++ scanner includes the header file FlexLexer.h, which defines the interfaces of the two C++ generated classes.

    Read more →
  • Automation engineering

    Automation engineering

    Automation engineering is a branch of engineering that deals with the development of methods and facilities that replace, in whole or in part, manual labour related to the control and monitoring of systems and processes. == Automation engineer == Automation engineers are experts who have the knowledge and ability to design, create, develop and manage machines and systems, for example, factory automation, process automation and warehouse automation. Automation technicians are also involved. == Scope == Automation engineering is the integration of standard engineering fields. Automatic control of various control systems for operating various systems or machines to reduce human efforts & time to increase accuracy. Automation engineers design and service electromechanical devices and systems for high-speed robotics and programmable logic controllers (PLCs). == Work and career after graduation == Graduates can work for both government and private sector entities such as industrial production, and companies that create and use automation systems, for example, the paper industry, automotive industry, metallurgical industry, food and agricultural industry, water treatment, and oil & gas sectors such as refineries, rolling mills, and power plants. == Job description == Automation engineers can design, program, simulate and test automated machinery and processes, and are usually employed in industries such as the energy sector in plants, car manufacturing facilities, food processing plants, and robots. Automation engineers are responsible for creating detailed design specifications and other documents, developing automation based on specific requirements for the process involved, and conforming to international standards like IEC-61508, local standards, and other process-specific guidelines and specifications, simulating, testing, and commissioning electronic equipment for automation.

    Read more →
  • Best AI Photo Editors in 2026

    Best AI Photo Editors in 2026

    Shopping for the best AI photo editor? An AI photo editor is software that uses machine learning to help you get more done — it keeps getting smarter as the underlying models improve. Pricing, accuracy, and the size of the model behind the tool are the three factors that most affect daily usefulness. Whether you are a beginner or a pro, the right AI photo editor slots into your workflow and pays for itself fast. We tested the leading options and ranked them by quality, value, and ease of use.

    Read more →
  • International Computer Archive of Modern and Medieval English

    International Computer Archive of Modern and Medieval English

    The International Computer Archive of Modern and Medieval English (ICAME) is an international group of linguists and data scientists working in corpus linguistics to digitise English texts. The organisation was founded in Oslo, Norway in 1977 as the International Computer Archive of Modern English, before being renamed to its current title. Its primary objectives were: collecting and distributing information on English language material available for computer processing; and linguistic research completed or in progress on this material; compiling an archive of corpora to be located at the University of Bergen, from where copies of the material can be obtained at cost. The portal to their materials is hosted at the University of Bergen, where they have set out the aim of the organization to "collect and distribute information on English language material available for computer processing and on linguistic research to compile an archive of English text corpora in machine-readable form, and to make material available to research institutions." Creating computer corpora, i.e. collections of texts in machine-readable form, is the most accessible way to study both transcribed spoken language and various genres of written texts for modern scholars, including both "descriptive and more theoretically-minded linguists". The ICAME group hosts academic conferences that focus on corpus linguistic studies of historical changes and contemporary grammatical descriptions of English, and makes corpora of different varieties of English available to scholars, starting with editions of the 1960s Brown Corpus. Their first academic conference was held in Bergen, Norway in 1979, and scholars who were interested in corpus linguistics continued to meet each spring in different European and English-speaking countries. At these meetings, the compilation and distribution of corpora they enabled played a key role in the creation of the field of corpus linguistics in the 20th century, a precursor to current big data analytics. In summarizing the field, Kennedy's Introduction to Corpus Linguistics notes that "for corpus linguists with an interest in the description of English, the International Computer Archive of Modern and Medieval English has been the major resource". The influence of ICAME on the field has also be laid out in Facchinetti's history, Corpus Linguistics Twenty-five Years On. One influential resource that ICAME made available was a CD of 20 different corpora, including those covering different regional Englishes (such as the Australian Corpus of English, the Wellington Corpus of Spoken New Zealand English, the Kolhapur Corpus of Indian English, the Bergen Corpus of London Teenage Language (COLT), the Helsinki Corpus of Older Scots, and the International Corpus of English—East-African component), as well as versions of the Brown Corpus and the Lancaster-Bergen-Oslo (LOB) corpus tagged for part of speech. ICAME also published an annual journal, the ICAME Journal, formerly ICAME News, that contains articles, conference reports, reviews and notices related to corpus linguistics. The current editors of the ICAME Journal are Merja Kytö and Anna-Brita Stenström.I am wearing a tie clip in the shape of a monkey wrench... The story behind this peculiar piece of jewelry goes back to the early 60s when I was assembling the notorious Brown Corpus and others were using computers to make concordances of William Butler Yeats and other poets. One of my colleagues, a specialist in modem Irish literature, was heard to remark that anyone who would use a computer on good literature was nothing but a plumber. Some of my students responded by forming a linguistic plumber's union, the symbol of which was, of course, a monkey wrench.

    Read more →