Free Technical SoftwareSummaryhttp://software-tecnico-libre.eshttp://software-tecnico-libre.es/Images/rss-hdr.jpgFree Technical Softwarehttp://software-tecnico-libre.esSun, 11 Mar 2018 06:54:41 GMTHomemade surveillance using Kinecthttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/kinect-surveillanceIn previous articles I presented a home video surveillance system, the <b>ThiefWatcher</b> application. It is an extensible application that works combining several protocols, such as cameras, triggers, communication channels and storage systems. In this article I will show how to implement some of these protocols using the Microsoft <strong>Kinect</strong> sensor.VIDEOSun, 11 Mar 2018 00:00:00 GMTBasic image capturing with Kinecthttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/kinect-image-capturingThe Microsoft <strong>Kinect</strong> sensor is a very powerful device that provides image capturing, distance measurement and body postures and facial expressions recognition services, which makes it suitable for infinity of applications. In this introductory article I will show how to use it to capture different types of images.VIDEOSun, 18 Feb 2018 00:00:00 GMTSolving a Sudoku as an optimization problemhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/sudoku-solvingSolving any Sudoku is a problem that can seem complicated if brute force methods are used, testing each and every one of the possible combinations. But, with the right approach, any of these problems can be solved in a few milliseconds. In this article, I will show you a way to achieve it through an optimized method.CSHARPSun, 10 Dec 2017 00:00:00 GMTMultitasking V, asynchronous programming with async and awaithttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/async-awaitTo conclude this series about programming <strong>multitasking</strong> applications, I will show the use of a simple mechanism that allows implementing asynchronous methods whose waiting times are used for the execution of other parallel tasks or events triggered by user interface controls.CSHARPSat, 02 Dec 2017 00:00:00 GMTMultitasking IV, interacting with Windows UIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/interacting-with-windows-uiSo far I have shown examples of <strong>multitasking</strong> that block the application until they finished. This is not very useful in practice. Usually, we want that the user can continue interacting with the application while the tasks are running in the background; we could want also the threads to interact with the user interface.CSHARPSat, 18 Nov 2017 00:00:00 GMTMultitasking III, concurrent accesshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/multitasking3-concurrent-accessIn <strong>multitasking</strong> applications there is a problem when concurrent access to resources, such as files or memory, when you launch several tasks at once. Two tasks cannot write at the same time in the same memory address, it is required to make sure that some data is not modified while we are reading them or things like that. In this article I will review the tools provided by <strong>.NET Framework</strong> to deal with these issues.CSHARPSun, 05 Nov 2017 00:00:00 GMTMultitasking II, Synchronizing Taskshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/synchronizing-tasksAfter reviewing the classes to implement the basic <strong>multitasking</strong>, in this article I will review different mechanisms that allow a synchronization between various tasks, all of them defined in the <b>System.Threading</b> namespace, with which you can organize the work when the Interactions between tasks require a particular order.CSHARPTue, 19 Sep 2017 00:00:00 GMTMultitasking I, basic classeshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/multitasking1With this article begins a series in which I will review the basic mechanisms provided by the <strong>.NET Framework</strong> for the implementation of <strong>multitasking</strong> applications. First of all I will show the basic classes that allow you to launch multiple processes and make a performance comparison between them.CSHARPMon, 04 Sep 2017 00:00:00 GMTThe importance of having a good loghttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/importance-of-having-good-logWe often neglect, due to lack of time, inexperience or simple laziness, to provide our developments with good mechanisms to trace the activity, which results in a substantial increase in the difficulty and time needed to determine the causes of certain errors that aren't detected in the moment they happen, but when the state of the system may have changed substantially.CSHARPFri, 14 Jul 2017 00:00:00 GMTCellular automata, WInCA application VIIIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca8This is the last article of the series dedicated to the <strong>WinCA</strong> application. This application allows the edition and to execution of <strong>cellular automata</strong>. To finish, I will review the code that implements the automaton itself, using all the classes and interfaces explained in the previous articles.APPLICATIONS,COMPLEXITYFri, 23 Jun 2017 00:00:00 GMTCellular automata, WInCA application VIIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca-7I continue explaining the basics of the <srong>WinCA</strong> application code, dedicated to the designing and execution of <strong>cellular automata</strong>. This time I will tell you about the implementation of the cells and other auxiliary classes needed to build and execute automata.APPLICATIONS,COMPLEXITYFri, 02 Jun 2017 00:00:00 GMTCellular automata, WinCA application VIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca-6We continue with the series dedicated to <strong>cellular automata</strong> and the <strong>WinCA</strong> application, dedicated to build and executing them. In this article I will explain the code related to the expression system that allows establishing the conditions to change from one state to another.APPLICATIONS,COMPLEXITYFri, 26 May 2017 00:00:00 GMTCellular automata, WinCA application Vhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca-5I continue to comment on the source code of the <strong>WinCA</strong> program, dedicated to <strong>cellular automata</strong>. In this article I will explain the interfaces and classes with which cell states are implemented and their edition. You can use these interfaces and classes as a basis to extend the application features.APPLICATIONS,COMPLEXITYFri, 19 May 2017 00:00:00 GMTCellular automata, WinCA application IVhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca-4Once reviewed the operation of the <strong>WinCA</strong> application, dedicated to <strong>cellular automata</strong>, let's see how the source code is organized. In this article I will explain the properties of cell states, and how they can be extended to add new functionalities by implementing new classes with the corresponding interfaces.APPLICATIONS,COMPLEXITYFri, 12 May 2017 00:00:00 GMTCellular automata, WinCA application IIIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca-3In this article, third of the series, I continue to explain the operation of the <strong>WinCA</strong> application, devoted to the construction and execution of <strong>cellular automata</strong>. This time I will show the language used to define the transitions between the different states of the automaton cells.APPLICATIONS,COMPLEXITYFri, 05 May 2017 00:00:00 GMTCellular automata, WinCA application IIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/cellular-automata-winca-2This is the second article in the series about the <strong>WinCA</strong> application, dedicated to the construction and execution of <strong>cellular automata</strong>. In this article I will show how to design the diferent states that can have the automaton cells, and the properties that can be assigned to them, using the application editors.APPLICATIONS,COMPLEXITYFri, 28 Apr 2017 00:00:00 GMTCellular automata, WinCA application Ihttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/winca1<strong>Cellular automata</strong> are mathematical models used to study the evolution of complex <strong>dynamic systems</strong> by simulating the interactions over time of a large number of elements, called cells. In this series of articles I will present the <strong>WinCA</strong> application, with which you can build and run this type of objects.APPLICATIONS,COMPLEXITYFri, 21 Apr 2017 00:00:00 GMTUsing the Dropbox API from a Xamarin Forms PCL Apphttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/pcl-dropbox-api<strong>Dropbox</strong> is one of the most popular applications for sharing and storing files in the cloud. In a desktop computer it is very easy to use it, since it is integrated into the file system and the folders are just like any other folder in the system, so that they can be managed using the usual file management API. From a mobile device, however, it is necessary to use the <strong>Dropbox</strong> API to manage and access the files. In this article I will show you how to use it in a PCL <strong>Xamarin</strong> Forms application.CSHARPFri, 24 Mar 2017 00:00:00 GMTThiefWatcher, a homemade indoor surveillance system IIIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/thiefwatcher3With this article I finish the series dedicated to the <strong>ThiefWatcher</strong> solution, a homemade <strong>video</strong> surveillance system that is triggered when some intruder enter your home, alerts you by calling to the mobile phone and allows you to obtain at the moment pictures that you can use to help the police quickly identify the thieves and increase the chances of quickly recovering your stolen belongings. In this last article I will explain the <strong>App</strong> that is used as a remote client of the system.VIDEO,CSHARPFri, 17 Mar 2017 00:00:00 GMTThiefWatcher, a homemade indoor surveillance system IIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/thiefwatcher2In this second article in the series on the <strong>ThiefWatcher</strong> homemade <strong>video</strong> surveillance system, I will explain the different protocols that the application uses to interact with its different components, which can be replaced by different new ones allowing a large number of combinations. There is a protocol to communicate with the camera, another to trigger the system, another to alerting the user remotely, and, finally, a protocol to exchange photographs and messages to manage the server from client devices.VIDEO,CSHARPFri, 10 Mar 2017 00:00:00 GMTThiefWatcher, a homemade indoor surveillance system Ihttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/thiefwatcher1In this series of articles I will do a bit of DIY to build a video surveillance and alarm system against home thefts, using relatively cheap materials and a program that will notify to your mobile phone in case of detecting intruders and allow you to take photographs of them to be able to immediately notify the police and provide them those photos. Rapid identification of thieves can be crucial for you to recover all our possessions quickly.VIDEO,CSHARPFri, 03 Mar 2017 00:00:00 GMTCreate a simple WCF connector for DBTextFinderhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/dbtextfinder-wcf-1<strong>WCF</strong> (Windows Communication Foundation) is a framework for creating distributed applications whose components communicate with each other through services, using a wide range of network protocols. In this article I will comment on the fundamentals of creating and configuring one of these services through a data connector for the <strong>DBTextFinder</strong> application, a program to search for texts in a <strong>database</strong> that can be extended to connect to any data management system.SOURCE CODE,CSHARPFri, 03 Feb 2017 00:00:00 GMTExtending WinRQA II, series of recurrence measureshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/extending-winrqa-2<b>WInRQA</b> is an application dedicated to <strong>recurrence plots</strong>, a tool that is used in the analysis of <strong>recurrence</strong> of complex <strong>time series</strong>. In this article I will introduce a new tool that I have added to the program. Until now, the measures of quantification of recurrence (<strong>RQM</strong>) were obtained only from a static portion of the original series. With the new tool, we can obtain a series of measures by moving a window along the entire original series and calculating the corresponding measurements to each of these windows.CSHARP,COMPLEXITY,APPLICATIONSFri, 27 Jan 2017 00:00:00 GMTDrawing fractals with Iterated Function Systems (IFS)http://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/iterated-function-systems-drawerThe <b>Iterated function systems</b> (<strong>IFS</strong>) are a simple mathematical tool for constructing <strong>fractal</strong> sets through a series of contractive affine applications. This method was developed by <b>M.F. Barnsley</b> in 1985. In particular, it is useful to obtain a self-similar <strong>fractal</strong> based on iteratively applying the system of functions to any set, until arriving at a good approximation of the <strong>fractal</strong> set that constitutes the <strong>attractor</strong> of the system.COMPLEXITYFri, 20 Jan 2017 00:00:00 GMTDataGridView with formula supporthttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/formula-datagridviewIn this article I will present a custom <strong>DataGridView</strong> control that allows using formulas composed by arithmetic expressions and references to the different cells of the control. In addition to the class library with the control, I have prepared a small application to show how to use the different features it offers.SOURCE CODE,CSHARPFri, 13 Jan 2017 00:00:00 GMTUniversal object compiler using BNF rules IIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/bnfup-object-compiler-2<b>BNFUP</b> is a class library that implements an object <strong>compiler</strong> from the definition of a language using <strong>BNF</strong> rules. It also provides rule editing services. In this article I continue showing how to use the editor to compile and test your own objects using the language you have defined for that. I will also show you three examples of implementation.SOURCE CODE,CSHARPFri, 06 Jan 2017 00:00:00 GMTUniversal object compiler using BNF rules Ihttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/bnfup-object-compilerIn this series of articles I will show a class library that implements a <strong>compiler</strong> that uses any language defined by <strong>BNF</strong> rules and that generates objects from a user-written class library, which must implement a simple interface so that the compiler can <strong>construct</strong> and initialize them from the source code.SOURCE CODE,CSHARPThu, 05 Jan 2017 00:00:00 GMTAccessing the source code of database executable objectshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/acessing-database-source-codeAll major <strong>database</strong> servers allow the creation of executable objects, such as functions or stored procedures, using some type of <strong>SQL</strong> extension language, such as <strong>PLSQL</strong> in <strong>Oracle</strong> or <strong>T-SQL</strong> in <strong>SQL Server</strong>, so that we can create applications to access and manipulate data in a more sophisticated way. In this article I will show how we can access the source code of these objects from any program using the catalog views of three of the most popular <b>RDBMS</b>, <strong>MySQL</strong>, <strong>Oracle</strong> and <strong>SQL Server</strong>.DATA ACCESSFri, 16 Dec 2016 00:00:00 GMTHow to integrate CLR code in SQL Server IIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/integrate-clr-sqlserver-2In this article I will continue with the integration of <strong>CLR</strong> objects into a <strong>SQL Server</strong> <strong>database</strong> by showing how to implement <b>triggers</b> and create user-defined <b>data types</b>. It is a simple way to extend the functionality of our <strong>database</strong> applications with all the power provided by the <strong>CLR</strong> of the <strong>.NET framework</strong>.DATA ACCESSFri, 09 Dec 2016 00:00:00 GMTHow to integrate CLR code in SQL Server Ihttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/integrate-clr-with-sql-server-1In this article I will show you how you can easily extend the <strong>SQL</strong> of your <strong>SQL Server</strong> servers with functions and data types of the <strong>.NET Framework</strong> <strong>CLR</strong> (Common Language Runtime). To do this, I will implement a function with scalar return value, another function with table return value, a pair of aggregation functions and a stored procedure.DATA ACCESSFri, 02 Dec 2016 00:00:00 GMTExtending WinRQA I, estimating delay and embedding dimensionhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/winrqa-extension-1<strong>WInRQA</strong> is an application dedicated to <strong>recurrence plots</strong>, a tool that is used in the analysis of recurrence of complex <strong>time series</strong>. In this article I will present the first extension of the application, which mainly consists of a series of tool windows that will help you to make estimates on what may be the most appropriate delay to try to reconstruct the <strong>phase space</strong> of the system <strong>attractor</strong> and select the correct <strong>embedding dimension</strong>.CSHARP,COMPLEXITY,APPLICATIONSSat, 26 Nov 2016 00:00:00 GMTBeyond chaos, randomnesshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/beyond-chaosIn this article I will show how, through a very simple and totally <strong>deterministic</strong> process, we can move from a <strong>stationary</strong> system to a completely <strong>random</strong> one, going through <strong>periodic</strong> and <strong>chaotic</strong> dynamics. For this, I will generate several <strong>time series</strong> with these characteristics using the <strong>program R</strong> and several packages that can help us in the analysis of them.COMPLEXITY,RFri, 18 Nov 2016 00:00:00 GMTWinRQA, a C# application to draw recurrence plotshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/winrqa-applicationA <strong>recurrence plot</strong> is a graphical tool used in the study of complex <strong>time series</strong>. Along with the plot we can also calculate a series of measures that allow us to perform a recurrence quantification analysis, or <strong>RQA</strong>. In this article I will present the <strong>WinRQA</strong> application, a tool to work with <strong>recurrence plots</strong> and <strong>RQA measures</strong> in a <b>Windows</b> environment.CSHARP,COMPLEXITY,APPLICATIONSFri, 11 Nov 2016 00:00:00 GMTStepper motor controller with Arduinohttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/stepper-motor-arduinoA <strong>stepper</strong> motor is a kind of motor that, instead of rotating continuously in one direction, allows rotate in very small steps and stop and change direction very quickly, without problems of inertia. This makes these engines very suitable for mounting them in devices which perform movements that required high precision. In this article I will show how to build a simple controller to handle one of these motors through the <strong>Arduino</strong> board, along with a sample program written in <strong>CSharp</strong> that allows you to operate the motor from the computer where the plate is connected.ELECTRONICSTue, 01 Nov 2016 00:00:00 GMTImplementing correspondence analysis in C#http://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/correspondence-analysis-csharpThe <strong>correspondence analysis</strong> is a statistical technique that allows us to study relationships between <b>categorical</b> data through optimal scaling and orthogonal projection in two or three dimensions of <strong>contingency tables</strong>. Its implementation is relatively simple, and in this article I will show an example using the <strong>csharp</strong> language. In addition, the sample program allows you to draw simple graphics with the resulting data.CSHARPFri, 28 Oct 2016 00:00:00 GMTPISA Data Analytics, Correspondece Analysishttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/correspondence-analysis-pisaThe <strong>PISA database</strong> contains, in addition to the scores of students, a lot of demographic, socioeconomic and cultural data about them, collected through a series of questionnaires, that allow contextualize the academic results and make studies with a great number of variables. Most of these data are <b>categorical</b>, making the <strong>correspondence analysis</strong> a particularly appropriate tool to work with them. In this article I will show you how to easily perform this analysis using the <b>ca</b> package of the <strong>R program</strong>.RFri, 21 Oct 2016 00:00:00 GMTComplex Time Series VI, recurrence plotshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/complex-time-series-viTo conclude this series on complex <strong>time series</strong> and their characterization using graphical tools I will show you a tool called <strong>recurrence plot</strong>, which allows to obtain some measures used in the <strong>recurrence quantification analysis</strong>, or <strong>RQA</strong> for its acronym in English. The <strong>recurrence</strong> is a characteristic property of deterministic <strong>dynamical systems</strong>, and consists of that two or more states of the system are arbitrarily close after a certain period of time.COMPLEXITYWed, 12 Oct 2016 00:00:00 GMTComplex Time Series V, autocorrelation and extended dimensionhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/complex-time-series-5In this new article in the series on <strong>time series</strong> with <strong>complex dynamics</strong>, I will show you a procedure to approximately reconstruct the information of a <strong>dynamic system</strong> with two or more variables from a single series, i.e. a set of data in a single dimension. What we will get from this unique series is a new one for each of the extra dimensions with which we intend to extend the model.COMPLEXITYSat, 08 Oct 2016 00:00:00 GMTRecurrent neural networks and time serieshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/recurrent-neural-network-and-time-seriesThe <strong>recurrent neural networks</strong> are a very appropriate tool for modeling <strong>time series</strong>. This is a type of network architecture that implements some kind of memory and, therefore, a sense of time. This is achieved by implementing some neurons receiving as input the output of one of the hidden layers, and injecting their output again in that layer. In this article I will show a simple way to use two <strong>neural networks</strong> of this kind, the <strong>Elman</strong> and <strong>Jordan</strong> ones, using the <strong>program R</strong>.COMPLEXITY,RSun, 02 Oct 2016 00:00:00 GMTComplex Time Series IV, power spectrum and distributionhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/complex-time-series-4In this new article of the series dedicated to the graphic characterization of complex <strong>time series</strong> I will talk about two other graphical tools that can be useful, the <strong>power spectrum</strong> of the signal, which will be obtained through the <strong>Fourier transform</strong>, and the graph of the distribution of values of the series, a simple histogram with the frequency of the different values that also can provide us information about the series dynamics.COMPLEXITYSat, 24 Sep 2016 00:00:00 GMTComplex Time Series III, Phase diagramshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/complex-time-series-3In this new article in the series on graphic characterization of <strong>time series</strong> from <strong>dynamical systems</strong> with <strong>chaotic dynamics</strong>, I will talk about a way to represent such systems in the domain of space, independently of time, the <strong>phase diagram</strong>. With this type of diagram, you can see the <strong>attractors</strong> of the system. An <strong>attractor</strong> is a point, a curve, in general, a set of points to which converge the system equations, which gives us an idea of the typical behavior of that system.COMPLEXITYSat, 17 Sep 2016 00:00:00 GMTComplex Time Series II, Web diagramshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/complex-time-series-III continue the series on graphic characterization of the <strong>complexity</strong> in <strong>time series</strong> using the helper application <b>GraphStudy</b>. In this article I will show how to construct a graph with which you can easily distinguish whether a particular series from an iterated function presents a <strong>chaotic dynamics</strong>, the <strong>web diagram</strong>.COMPLEXITYSat, 10 Sep 2016 00:00:00 GMTComplex Time Series I, Basicshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/complex-time-series-IMany of the data sets with which we usually work are in the form of <strong>time series</strong>. A time series can be seen as the evolution of a <strong>dynamic system</strong>, characterized by some <b>variables</b> and <b>parameters</b>. Depending on the type of dynamic of the system, the series may be <b>stationary</b>, <b>periodic</b>, <b>quasiperiodic</b>, <b>chaotic</b> or <b>random</b>. In this series of articles, I will focus on the characterization of <strong>chaotic dynamics</strong>, which is presented by <strong>complex systems</strong>, by using graphical methods.COMPLEXITYFri, 02 Sep 2016 00:00:00 GMTFirst Order Logic Tableauxhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/tableaux-first-order-logicThe <strong>Tableaux</strong> is a logical calculation tool that allows checking the validity of a conclusion from a series of premises. In the previous article I explained briefly the fundamentals of <strong>predicate logic Tableaux</strong>. In this article I will extend the program to the <strong>first-order logic</strong>, which has much more expressive capacity than predicate logic, although this makes also automatic calculation more difficult.SOURCE CODE,CSHARPFri, 19 Aug 2016 00:00:00 GMTLogical calculation with Tableauxhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/tableauxThe <strong>Tableaux</strong> is a logical calculus tool that is very useful to demonstrate a <b>conclusion</b> from a set of <b>premises</b>, find counterexamples or models of a set of logical formulas or demonstrate that a formula is a <b>tautology</b>, i.e., that is true in all possible cases. They can be used in <strong>artificial intelligence</strong> as the basis for implementing automated theorem proving.SOURCE CODE,CSHARPSun, 31 Jul 2016 00:00:00 GMTMaximize or minimize a function using the Simplex methodhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/simplex-algorithmThere is a very common problem in <b>linear programming</b> which consists to find the values that make maximum or minimum the value of a linear function, given a number of restrictions on the values of their variables. For example, you may want to find a minimum cost or maximum production function. To do this, there is an algorithm developed in 1947 by <b>George Dantzig</b>, called <strong>Simplex</strong>, which allows perform such calculations in a simple and effective way.SOURCE CODE,CSHARPSat, 23 Jul 2016 00:00:00 GMTBidirectional motor controller with Arduinohttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/bidirectional-motor-controllerThe <strong>Arduino</strong> boards, with lots of analog and digital inputs and outputs, allow us to control electronic devices from a computer through an <b>USB</b> interface with a very simple programming using a language similar to <b>C</b>. There are lots of prefabricated modules for controlling motors, relays and all kinds of sensors, but, if you like <strong>electronics</strong>, like me, you can design and connect your own analog or digital circuits.ELECTRONICSSat, 16 Jul 2016 00:00:00 GMTPrinting Bar Codeshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/printing-barcodesSometimes it is necessary to print a bar code on a document or label. There are a lot of formats and encodings, in one or two dimensions, depending on the amount of information to be read by the terminal. In this article I will show three of the most common formats for one-dimensional codes and provide code in <strong>csharp</strong> to encode them.CSHARPSat, 09 Jul 2016 00:00:00 GMTAxis IP cameras with VAPIX protocolhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/vapix-ip-camera-protocol<strong>Axis</strong> is a Swedish brand, one of the world leaders in the video surveillance <strong>IP cams</strong> market, which has an extensive catalog of camera models that cover virtually any need. All its products have a common access protocol via <strong>HTTP</strong>, the <strong>VAPIX</strong> protocol, based on <strong>CGI</strong> commands, which makes it especially interesting to know.SOURCE CODE,VIDEOSun, 03 Jul 2016 00:00:00 GMTDatabase design tipshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/general-database-tipsWhen you design a <strong>database</strong>, you can make a series of errors or omissions that, later, can result on many headaches, or you can shelve the use of some useful resources simply because of ignorance of them. In this article I will give you a few tips that can help you to better design and management of your data and applications that manage them, especially if you are a beginner.DATA ACCESSSun, 26 Jun 2016 00:00:00 GMTHow to copy from a DataGridView to Excelhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/copy-to-excel-from-a-datagridviewWhen multiple rows are selected in a <strong>DataGridView</strong> control and <b>Ctrl+C</b> is pressed to copy its content, the default behavior copies the cell values in plain text format separated by tabulators. Just with this you can paste the data into an <strong>Excel</strong> spreadsheet, but you can implement this behavior in a more sophisticated way, applying a custom format to the columns depending on the data type of each cell.CSHARPSat, 25 Jun 2016 00:00:00 GMTHow to build an expressions analyzer, implementation IIhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/build-a-parser-implementation2In the previous article in this series I began to show how to implement an arithmetic <b>expression analyzer</b>, or <strong>parser</strong>, from the <b>grammar</b> rules in <strong>BNF</strong> notation, with classes which extract <b>numbers</b>, <b>variables</b> and <b>constants</b>. In this article I will finish the series with the implementation of the class focused in working with the main rule, which analyzes the expressions themselves. I will also provide a small sample application that draws the graph corresponding to the expression from the object generated by the <strong>compiler</strong>.CSHARPSat, 18 Jun 2016 00:00:00 GMTHow to build an expressions analyzer, implementation Ihttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/how-to-build-a-parser-implementation1In the previous article in this series I reviewed the main issues about the design of the <b>grammar</b> to build an <b>analyzer</b>, or <strong>parser</strong>, for arithmetic expressions. In this article I will show the first part of its implementation from the <strong>BNF</strong> <b>grammar</b> rules, converting the input expression, in the form of a text string, in a series of objects that we can use to evaluate it and give different values to the constants and variables that compose it.CSHARPFri, 17 Jun 2016 00:00:00 GMTHow to build an expressions analyzer, grammarhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/expressions-parser-grammarWhen we are working with mathematical functions, it is very convenient to have a <strong>parser</strong> that allows us to write and perform different versions of the equations that must be processed by the program, rather than having to modify and recompile the code to adapt it to these changes each time. In this series of articles I will show how to build a simple but powerful expressions analyzer, which can be extended easily to deal with more sophisticated expressions, starting by explaining in this article the basic theory necessary to successfully face this kind of development.CSHARPTue, 14 Jun 2016 00:00:00 GMTThe PropertyGrid Control, Type convertershttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/propertygrid-control-type-convertersTo conclude this series on the <strong>PropertyGrid</strong> <strong>control</strong> I will show you how to use different type converters derived from the <b>TypeConverter</b> class to customize how they are displayed or edited the properties. The <strong>.NET framework</strong> provides converters for many types of properties, but you can also easily implement your own converters by deriving a class from <b>TypeConverter</b> or a specialized converter and overloading a few functions.CSHARPFri, 10 Jun 2016 00:00:00 GMTThe PropertyGrid Control, events and custom editorshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/propertygrid-events-editorsIn the previous article in this series I did show how to use the basic features of the <strong>PropertyGrid</strong> <strong>control</strong> to edit the properties of a particular object or collection of objects. In this article I will show you the most important events of this <strong>control</strong> as well as the implementation of custom editors that allow editing of properties of types for which there is no default editor, such as the classes developed by yourself in your program.CSHARPSat, 04 Jun 2016 00:00:00 GMTThe PropertyGrid Control, basicshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/control-propertygrid-basicsOne of the <strong>GUI</strong> (graphic user interface) controls more versatile that the <strong>.NET framework</strong> offers is the <strong>PropertyGrid</strong>. It is a component through which the user can edit all the properties of an object that the developer has configured, allowing structuring them into categories and sort them alphabetically. It also provides many options to customize both presentation and editing of their properties and shows the user a help text on each one of them. In this series I will show a complete tutorial on using this <strong>control</strong> and its main features, starting with this article on its basic use.CSHARPSat, 28 May 2016 00:00:00 GMTIP Camera NetWave CGI protocolhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/netwave-camera-protocolMany of the network <strong>IP cameras</strong> that can be found on the market use the <strong>Netwave</strong> protocol, based on CGI commands to obtain <strong>video</strong> images through an internal <strong>http</strong> server. In this article I will show how to build a simple application to control these cameras, which are typically used for surveillance and can make scan motions in addition to providing <strong>video</strong> images.SOURCE CODE,VIDEOSat, 14 May 2016 00:00:00 GMTA basic video capture application using DirectShowhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/directshow-basic-programmingIn the previous article in this series, I did a summary of the basic components of <strong>DirectShow</strong>: filters, filter graphs and pins to connect the elements together, and how we can identify them using the <b>GraphEdit</b> tool of the SDK. In this article I will show how to build a "simple" application to capture and playback <strong>video</strong> using the interfaces provided in <strong>DirectShow</strong>, a subset of the <strong>COM</strong> distributed object model from Microsoft.SOURCE CODE,VIDEOThu, 05 May 2016 00:00:00 GMTBasic concepts in DirectShow programminghttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/basic-directshow-concpetsCurrently there are a lot of <strong>video</strong> capture devices commercially available; anyone can buy a digital camera or a <strong>webcam</strong> at a reasonable price. All of these devices can be easily controlled from a program developed by ourselves using Microsoft <strong>DirectShow</strong>. DirectShow is a set of interfaces that provide a generic API with which you can capture and play audio and video regardless of the brand or model of camera you are using. It also allows recording and playback of files in any format.VIDEOSat, 30 Apr 2016 00:00:00 GMTRandom numbers generationhttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/random-numbers-generationIn many applications it is necessary to generate <strong>random numbers</strong>. To do so, the <strong>.NET framework</strong> provides the Random class, which can generate uniformly distributed pseudo-random values, which means that all numbers are equally likely to appear in the result. But in some cases we need to generate random values that follow other different types of distribution. In this article we will see how to generate random numbers that follow a <strong>normal distribution</strong>, with a system that can be extended to any other type of distribution.SOURCE CODE,CSHARPSun, 24 Apr 2016 00:00:00 GMTWhat is a complex system?http://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/what-is-acomplex-systemUsually, when you perform a data analysis, you suppose that they come from a <strong>normal distribution</strong>. In fact, you perform a battery of tests to verify that this assumption is met and, otherwise, you try to modify the data so that it is satisfied. This is because most analysis techniques only work properly on normally distributed data. But there are a number of systems that present a <strong>complex dynamics</strong> where is not valid to apply this hypothesis and wherein adjusting the data only leads to distortions that invalidate the results.COMPLEXITYSat, 09 Apr 2016 00:00:00 GMTDbTextFinder Application for search text in databaseshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/dbtextfinder-applicationThe catalog views contain all the information concerning the structure of the database: schemas, tables, table fields, data types of the fields, integrity constraints, stored procedures code, etc. The knowing of them is essential to develop tools for data management independent of the structure. In this article we will view an example of one of these tools, <strong>DBTextFinder</strong>, a simple application that will allow us to search for text in the records of our database and within the code of the views and stored procedures.APPLICATIONSSat, 02 Apr 2016 00:00:00 GMTPISA Data Analytics, the Student Scoreshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/pisa-data-analytics-plausible-valuesIn the previous article in this series we viewed how to computing standard errors with replicate weights in <strong>PISA</strong> database, in this article we will take an overview of one of the most controversial points of these studies, the complex system of scores implemented.RSat, 12 Mar 2016 00:00:00 GMTPISA Data Analytics, Sample Weights and Replicate Weightshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/pisa-replicate-weights-calculationsIn the previous article in this series we saw an introduction to <strong>PISA</strong> data analytics, with examples of functions in <strong>R code</strong> for sampling, and we talked about the sampling weights, which ponder each student so that it represents a group of individuals with the same characteristics rather than a single student, (remember that <strong>PISA</strong> aims to assess the effect of educational policies on the whole population of the country, not on individual students). In this article, we will see how to use these weights to calculate estimators from samples and we'll see also how to calculate standard errors of these estimators using replicated weights.RSun, 28 Feb 2016 00:00:00 GMTIntroduction to PISA Data Analyticshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/introduction-to-pisa-data-analyticsEvery three years, since 2000, the <b>OECD</b> (Organization for Economic Cooperation and Development) performs a series of tests in a number of countries at national level to 15-years-old students, in order to assess the degree of knowledge in three main groups of areas: science, reading and math. This is the <strong>PISA</strong> program, whose last edition took place in 2015.RFri, 19 Feb 2016 00:00:00 GMTUsing WinPODUtil to process CSV fileshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/process-csv-files-with-winpodutilIn the previous article we saw how to query <strong>POD</strong> databases with the <b>WinPODUtil</b> program, in this article we will see how to use the tool to process the CSV files generated by the queries, or any other CSV file. The format of these files consists in a series of text lines, the first of which must contain the column headings, separated by the semicolon character (;). Each line, except the first, represents one data record.PODFri, 12 Feb 2016 00:00:00 GMTWinPODUtil Application to Query POD Databaseshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/winpodutil-applicationIn previous articles I have talked about the <strong>POD</strong> project, a database that centralizes access to other databases so that they can be consulted through a common interface. In this article we will see the tool that is used for data filtering and query on any of the databases integrated into <strong>POD</strong>.POD,APPLICATIONSFri, 05 Feb 2016 00:00:00 GMTIntroduction to PISA Databasehttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/introduction-to-pisa-database<strong>PISA</strong> (Program for International Student Assessment) is a program of the <b>OECD</b> (Organization for Economic Cooperation and Development) for the evaluation of education policies. It consists of a series of tests and surveys conducted to 15 years old students, schools and parents at national level in the countries participating in the program (in 2012 there were 65 participating countries, and in 2015 there are more than 70). These tests seek to assess the level of knowledge in three main areas: Reading, science and math.<br/><br/>In this article I make a brief introduction to <strong>SQL Server</strong> database created from the original data published by the <b>OECD</b>.PODSat, 30 Jan 2016 00:00:00 GMTPOD Configuration Databasehttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/pod-configuration-database<strong>POD</strong> (Portal Open Data) is a project that I started when I was studying to obtain Microsoft Web Developer MCSD, in order to do some practices. Consists of a <strong>SQL Server</strong> database through which on can access to other databases in a centralized way.<br/><br/>In this article I describe the <b>POD Configuration</b> databasePODThu, 07 Jan 2016 00:00:00 GMTHow to remove spam traffic in Google Analyticshttp://software-tecnico-libre.es/en/article-by-topic/all-sections/all-topics/all-articles/remove-spam-in-google-analyticsAll users of <strong>Google Analytics</strong> end up suffering the attacks of a legion of <strong>referral spam bots</strong> that distorting all data obtained from your website, this traffic can come to represent an amount much higher than the actual traffic visits.<br/><br/>In this article I explain how to remove all traffic of this type definitively from our statistics.WEB ANALYTICSSat, 02 Jan 2016 00:00:00 GMT