GNU Octave Version 7 (2023)

Summary of important user-visible changes

April 06, 2022

News for version7 6 5 4.4 4.2 4 3.8 3.6 3.4 3.2 3 2 1 (Release History)

  • Summary of important user-visible changes
    • General improvements
    • Graphical User Interface
    • Graphics backend
    • Matlab compatibility
    • Deprecated functions and operators
    • Removed functions, properties, and features
    • Alphabetical list of new functions added in Octave 7

General improvements

  • Many functions in Octave can be called in a command form—noparentheses for invocation and no return argument assignment—or in afunctional form—parentheses and ‘=’ for assignment of return values.

    Command Form Example

    mkdir new_directory

    Function Form Example

    status = mkdir ("new_directory")

    Octave now handles errors that occur in a consistent manner. If called in command form and there is a failure, an error is thrown and a message printed. If called in functional form, no error or message is printed and the failure is communicated to the programmer via the output status variable.

    The following list of functions have been modified.

    • copyfile
    • fcntl
    • fileattrib
    • kill
    • link
    • mkfifo
    • movefile
    • rename
    • rmdir
    • symlink
    • unlink
  • Calling a user-defined function with too many inputs or outputs is nowan error. The interpreter makes this check automatically. If afunction uses varargin then the check is skipped for function inputs,and if a function uses varargout then the check is skipped for functionoutputs. Input validation for functions typically begins with checkingthat the number of inputs and outputs match expectations. Existing codecan be simplified by removing these checks which are now done by theinterpreter. Typically, code blocks like the following can simply bedeleted.

    ## Checking number of inputsif (nargin > 2) print_usage ();endif## Checking number of outputsif (nargout > 1) print_usage ();endif
    (Video) Como instalar o GNU Octave no Windows - Computação Científica
  • Binary and hexadecimal constants like 0b101 and 0xDEADBEEF nowcreate integers (unsigned by default) with sizes determined from thenumber of digits present. For example, 0xff creates a uint8 valueand 0xDEADBEEF creates a uint64 value. You may also use a suffix ofthe form u8, u16, u32, u64, s8, s16, s32, or s64 toexplicitly specify the data type to use (u or s to indicate unsignedor signed and the number to indicate the integer size).

    Binary constants are limited to 64 binary digits and hexadecimalconstants are limited to 16 hexadecimal digits with no automaticrounding or conversion to floating point values. Note that this maycause problems in existing code. For example, an expression like[0x1; 0x100; 0x10000] will be uint8 (because of the rules ofconcatenating integers of different sizes) with the larger valuestruncated (because of the saturation semantics of integer values). Toavoid these kinds of problems either: 1) declare the first integer to beof the desired size such as [0x1u32; 0x100; 0x10000], or 2) padconstants in array expressions with leading zeros so that they use thesame number of digits for each value such as[0x00_00_01; 0x00_01_00; 0x01_00_00].

  • The colon operator now works for integer (int8, int16, …, uint64)and single data types. However, only double ranges use amemory-efficient storage scheme internally. Other data types arestored as ordinary arrays.

  • The increment and decrement operators ++ and -- must “hug” theircorresponding variables. In previous versions of Octave, whitespacesbetween these operators and the variable they affect were allowed. Thatis no longer the case.

  • The mldivide function (i.e., the \ operator) now uses an LUdecomposition to solve nearly singular full square matrices. This isMatlab-compatible and yields results which more nearly minimize norm(A*x - b). Previously, Octave computed a minimum-norm solution.

  • The factor function has been overhauled for speed. For largeinputs > 1e14, it can be up to 10,000 times faster.

  • The isprime function uses a new primality testing algorithmthat is up to 50,000 times faster for inputs > 1e14.

  • The betainc function now calculates an exact output for theimportant special cases where a or b are 1.

  • The whos function now displays an additional attribute ‘s’ whenthe variable is a sparse type.

  • As part of GSoC 2020, Abdallah K. Elshamy implemented thejsondecode and jsonencode functions to read and write JSON data.

  • As part of GSoC 2021, Abdallah K. Elshamy implemented thejupyter_notebook classdef class. This class supports running andfilling Jupyter Notebooks using the Octave language kernel from Octaveitself. Making the evaluation of long-running Jupyter Notebooks on acomputing server without permanent browser connection possible.

  • By default, the history file is now located at $DATA/octave/history,where $DATA is a platform dependent location for (roaming) user datafiles (e.g., ${XDG_DATA_HOME} or, if that is not set, ~/.local/share onUnix-like operating systems or %APPDATA% on Windows).

  • For Octave on Windows OS, the minimum required version of the WindowsAPI is now 6.1 (Windows 7 or newer).

  • The non-re-entrant version of the QHull library “libqhull” wasdeprecated upstream. Octave now (optionally) requires the re-entrantversion of that library “libqhull_r” instead.

  • Octave’s build system no longer appends “++” to the end of the“magick++” library name (set with the --with-magick= configure flag).The real name of the “magick++” library (including any potentiallytrailing “++”) needs to be set in that option now.

    (Video) Minicurso Octave - Aula 7: Funções Matemáticas

  • The pkg update command now accepts options that are passed to pkg install for each updated package. Specifying -local or-global will restrict update checks to local or globalinstalled packages, respectively.

Graphical User Interface

  • The graphical user interface is now available in Hungarian andTurkish.

  • In debug mode, symbol values are now shown in tooltips when hoveringvariables in the editor panel.

  • The “Disable global shortcuts when Command Window has focus” GUIpreference under the Shortcuts tab is now disabled by default. Thisoption disables keyboard shortcuts to avoid interference with readlinekey strokes in the Command Window. Unlike versions prior to Octave 7,this preference now also affects the Ctrl-C/V shortcuts for copy/paste.

  • In command line mode, i.e. when Octave is started without the --gui option,the doc command now opens the GUI documentation browser as a standalone widget,provided that Octave was compiled with GUI support.

Graphics backend

  • Support for Qt4 for both graphics and the GUI has been removed.

  • If a working LaTeX tool chain is found on the path, including latex,dvipng, and dvisvgm binaries, then text strings can now be renderedproperly when using the "latex" value for the text objects’"interpreter" property and axes objects’ "ticklabelinterpreter".Type doc "latex interpreter" for further info.

  • The "Marker" property for plot objects now accepts | which drawsa vertical line or _ which draws a horizontal line.

  • The FMT format argument for plot commands now accepts long forms forcolor names which may be more understandable than the existingone-letter codes. For example, the RGB value [0 0 0] can now bespecified by "black" in addition to "k".

  • The color graphics properties, for example "EdgeColor" or"FaceColor", now accept HTML specifications. An HTML specification isa string that begins with the character ‘#’ and is followed by either 3or 6 hexadecimal digits. For example, magenta which is 100% red andblue values can specified by "#FF00FF" or "#F0F".

  • The additional property "contextmenu" has been added to all graphicsobjects. It is equivalent to the previously used "uicontextmenu"property which is hidden now.

  • uicontrol objects now fully implement the "Off" and "Inactive"values of the "Enable" property. When the value is "Off", nointeraction with the object occurs and the uicontrol changes color(typically to gray) to indicate it is disabled. When the value is"Inactive", the object appears normally (no change in color), but itis not possible to change the value of the object (such as modifyingtext in an Edit box or clicking on a RadioButton).

  • The "ListBoxTop" property for uicontrol objects has beenimplemented for set commands.

  • The Title property for print formats such as PDF or SVG is now setto the title displayed on the figure window which contains the plot.

  • Additional properties have been added to the axes graphics object:

    (Video) Processamento Digital de Imagens com GNU Octave (7/13)

    • "alphamap" (not yet implemented)
    • "alphascale" (not yet implemented)
    • "colorscale" (not yet implemented)
    • "fontsizemode" (not yet implemented)
    • "innerposition" (equivalent to "position")
    • "interactions" (not yet implemented)
    • "layout" (not yet implemented)
    • "legend" (not yet implemented)
    • "nextseriesindex" (read-only, used by scattergraphics objects)
    • "positionconstraint" (replacement for "activepositionproperty"which is now a hidden property. No plans for removal.)
    • "toolbar" (not yet implemented)
    • "xaxis" (not yet implemented)
    • "yaxis" (not yet implemented)
    • "zaxis" (not yet implemented)

Matlab compatibility

  • The function griddata now implements the "v4" Biharmonic SplineInterpolation method. In adddition, the function now accepts 3-D inputsby passing the data to griddata3.

  • Coordinate transformation functions cart2sph, sph2cart,cart2pol, and pol2cart now accept either row or column vectors forcoordinate inputs. A single coordinate matrix with one variable percolumn can still be used as function input, but a single output variablewill now contain just the first output coordinate, and will no longerreturn the full output coordinate matrix. Output size matches the sizeof input vectors, or in the case of an input matrix will be columnvectors with rows corresponding to the input coordinate matrix.

  • The function dec2bin and dec2hex now support negative numbers.

  • The function factor now supports uint64 inputs larger thanflintmax.

  • The function primes now supports char inputs.

  • The functions quantile and prctile now permit operating ondimensions greater than ndims (x).

  • The function iqr now uses Matlab compatible interpolation forquantile values. The dimension input now allows a vector, “all”, anddimensions greater than ndims (x). The function also handlesInf and NaN input values in a Matlab-compatible manner.

  • The function importdata now produces more compatible results whenthe file contains a 2-D text matrix.

  • The file functions copyfile, mkdir, movefile, rmdir now returna logical value (true/false) rather than a numeric value (1/0).

  • uimenu now accepts property "Text" which is identical to"Label". Matlab recommends using "Text" in new code, although thereis no announced date for deprecating "Label".

  • The functions scatter and scatter3 now return a handle to ascatter graphics object. For compatibility, they return an hggroup ofpatch graphics objects when the "gnuplot" graphics toolkit is used. Inprevious versions of Octave, these functions returned an hggroup ofpatch graphics objects for all graphics toolkits.

  • The functions bar and barh now handle stacked negative bar valuesin a Matlab-compatible manner. Negative values now stack below the zeroaxis independently of a positive value bars in the same stack.Previously the negative bars could overlap positive bars depending ondrawing order.

  • The functions bar and barh now use colors from the "ColorOrder"axes property rather than the "Colormap" figure property unless oneof the histogram options (@qcode{“hist”}, @qcode{“histc”} was specified.

  • The function saveas now defaults to saving in Octave figure format(.ofig) rather than PDF (.pdf).

  • A new warning ID ("Octave:unimplemented-matlab-functionality") hasbeen added which prints a warning when Octave’s parser recognizes validMatlab code, but for which Octave does not yet implement thefunctionality. By default, this warning is enabled.

    (Video) GNU Octave (GUI)

  • When Octave is started with the --traditional option for maximumcompatibility the print_struct_array_contents internal variable is setto true.

  • The function repelem now produces a row vector output when the input isa scalar.

  • The functions var and std now accept a weight vector as input andcompute the weigthed variance. Dimension input now allows a vector andthe keyword “all”.

Deprecated functions and operators

The following functions and operators have been deprecated in Octave 7and will be removed from Octave 9 (or whatever version is the secondmajor release after 7):

  • Functions

    Function Replacement
    disable_diagonal_matrix optimize_diagonal_matrix
    disable_permutation_matrix optimize_permutation_matrix
    disable_range optimize_range
  • Operators

    Operator Replacement Description
    ** ^ Matrix exponent
    .** .^ Element-by-element exponent
    .+ + Element-by-element addition
    .- - Element-by-element subtraction
  • Interpreter

    • The use of '...' for line continuations inside double-quoted strings has been deprecated. Use '\' for line continuations inside strings instead.

    • The use of '\' as a line continuation outside of double-quoted strings has been deprecated. Use '...' for line continuations instead.

    • Any trailing whitespace after a '\' line continuation has been deprecated. Delete unnecessary trailing whitespace.

The following functions were deprecated in Octave 6 and will be removedfrom Octave 8 (or whatever version is the second major release after 6):

  • Functions

    Function Replacement
    runtests oruntests
  • The environment variable used by mkoctfile for linker flags is nowLDFLAGS rather than LFLAGS. LFLAGS was deprecated in Octave 6,and a warning is now emitted if it is used, but it will continue towork.

Removed functions, properties, and features

The following functions and properties were deprecated in Octave 5and have been removed from Octave 7.

  • Functions

    (Video) Curso de Octave - Transposição e Referência em Arranjos #7

    Function Replacement
    output_max_field_width output_precision
    is_keyword iskeyword
  • Properties

    Object Property Value
    text fontangle "oblique"
    uibuttongroup fontangle "oblique"
    uicontrol fontangle "oblique"
    uipanel fontangle "oblique"
    uitable fontangle "oblique"
  • The prototype JIT compiler has been removed from Octave. Since it wasfirst added as part of a Google Summer of Code project in 2012, no onehas ever seriously taken on further development of it and it still doesnothing significant. It is out of date with the default interpreterthat walks the parse tree. Even though we have fixed the configurescript to disable it by default, people still ask questions about how tobuild it, but it doesn’t seem that they are doing that to work on it butbecause they think it will make Octave code run faster (it never did,except for some extremely simple bits of code as examples fordemonstration purposes only). The following functions related to theJIT compiler have also been removed: debug_jit, jit_enable,jit_failcnt, and jit_startcnt.

Alphabetical list of new functions added in Octave 7

  • cospi
  • getpixelposition
  • endsWith
  • fill3
  • jsondecode
  • jsonencode
  • jupyter_notebook
  • listfonts
  • memory
  • ordqz
  • rng
  • sinpi
  • startsWith
  • streamribbon
  • turbo
  • uniquetol
  • xtickangle
  • ytickangle
  • ztickangle


Is GNU Octave as good as Matlab? ›

MATLAB vs Octave are mainly used for the same purpose. The main difference is syntax and other features. Matlab consist of specialized toolboxes which are not part of Octave. They are not fully compatible that is code written in Matlab can crush in octave and vice versa.

What is GNU Octave used for? ›

GNU Octave is a high-level programming language primarily intended for scientific computing and numerical computation. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB.

What is the latest version of Octave? ›

Octave Version 7.2. 0 has been released and is now available for download. An official Windows binary installer is also available. For macOS see the installation instructions in the wiki.

Does Octave work Windows 10? ›

Octave is not completely compatible with Windows 10 and 8. If you install it on Windows 10 or 8, you will not see the typical “octave>” prompt, and certain functions, such as plotting, will not work. There is a work-around: 1.

Is Octave better than Python? ›

The other thing Octave/Matlab has over Python: it's a lot easier and clearer to express numeric algorithms in Matlab than Python, as Python isn't designed as an array language.

Is Octave still used? ›

Although Octave was initially meant for scientific computation, many organizations use it for basic data processing and plotting. It can also be used for machine learning, analyzing data, and building ML algorithms.

Is Octave software free? ›

Free Matlab alternative

GNU Octave is a free, scientific programming language. It offers a rich mathematical apparatus, concise syntax, and has built-in visualization tools [1]. The whole package is really handy. It has a graphical user interface (GUI) and command-line interface versions.

Does GNU Octave have a GUI? ›

Syntax Examples

The Octave interpreter can be run in GUI mode, as a console, or invoked as part of a shell script. More Octave examples can be found in the Octave wiki. Solve systems of equations with linear algebra operations on vectors and matrices. Visualize data with high-level plot commands in 2D and 3D.

What is the GNU full form? ›

GNU stands for GNU's not Unix, which makes the term a recursive acronym, or an acronym in which one of the letters stands for the acronym itself. The GNU Project initially created most of the components and services used in GNU/Linux and later added the Linux kernel to create the GNU/Linux OS.

Can octave run on Windows? ›

The Windows toolkit must be installed and then loaded to be used. It can be installed in GNU Octave directly from octave-forge, or can be installed in an off-line mode via a downloaded tarball.

Is Python an octave? ›

It is an interpreted language like Python. Since Octave's syntax is mostly compatible with MATLAB, it is often described as a free alternative to MATLAB. Octave is not listed among the most popular programming languages, but MATLAB is, so Octave is rather popular in a sense.

How do I download octave GNU? ›

Tutorial - How to Install Octave and using Octave - YouTube

How do I run GNU Octave? ›

To run your Octave file in GNU Octave.
  1. navigate to editor tab at the bottom of command editor.
  2. Press Ctrl+O or Go to file and open your file.
  3. Pres F5 or Navigate to Run and Save and Run.

How do I open GNU Octave? ›

Installing GNU Octave on Windows
  1. Step 1: Visit the official website using any web browser.
  2. Step 2: Click on the Download button.
  3. Step 3: Next window open now click on MS Windows.
  4. Step 4: Next screen will open now click on the Octave 6.4.
31 Jan 2022

How install octave package in Windows? ›

To install a package, use the pkg command from the Octave prompt by typing: pkg install -forge package_name , where package_name is the name of the package you want to install.

Is Octave difficult to learn? ›

R, Octave and Python are flexible and easy to use for vectorization and matrix operations; they're not just data-analysis packages, but also programming languages for creating one's own functions or packages.

Is MATLAB faster than Octave? ›

Speed. The difference in performance between the two is very significant and undisputable, with MatLab often being twice or thrice as fast. MatLab which has been developed by a professional team, and which has more investment behind it, performs better than Octave.

Can Python replace MATLAB? ›

For all of these reasons, and many more, Python is an excellent choice to replace MATLAB as your programming language of choice. Now that you're convinced to try out Python, read on to find out how to get it on your computer and how to switch from MATLAB! Note: GNU Octave is a free and open-source clone of MATLAB.

Can octave replace MATLAB? ›

If you're looking for a project that is as close to the actual MATLAB language as possible, Octave may be a good fit for you; it strives for exact compatibility, so many of your projects developed for MATLAB may run in Octave with no modification necessary.

Is MATLAB better than Python? ›

MATLAB has very strong mathematical calculation ability, Python is difficult to do. Python has no matrix support, but the NumPy library can be achieved. MATLAB is particularly good at signal processing, image processing, in which Python is not strong, and performance is also much worse.

How popular is octave? ›

Coming to the popularity standards, Octave is not that prominent in the public. The other programming languages are highly popular in the market and have massive community support. Also, the adaptability rate of the all these three is quite high as compared to octave for machine learning.

How much is an octave? ›

Many musical scales encompass an octave; in the diatonic scales (major, minor, and modal) of Western music, the octave is an interval of eight notes. It is the only interval to appear as a constant in the musical scales of nearly every culture.

Is octave open source? ›

GNU Octave is a free open source software (FOSS) package which is "mostly compatible" with MATLAB.

Is Matlab a coding? ›

MATLAB is a high-level programming language designed for engineers and scientists that expresses matrix and array mathematics directly.

Who is owner of octave? ›

Current board members & directors are HARSH ARORA and SANJANA ARORA . Company is registered in Chandigarh (Punjab) Registrar Office. Octave Apparels Private Limited registered address is B-33,325/5 G.T ROAD (WEST) NEW ASHOK NAGAR SIKAND COLD STORE WALI GALI,NEAR JALANDHAR BYE-PASS LUDHIANA PB 141008 IN.

Where can I learn octave? ›

17 results for "octave"
  • Free. University of Washington. ...
  • Robotics: Aerial Robotics. ...
  • University of Colorado Boulder. ...
  • University of Colorado Boulder. ...
  • University of Colorado Boulder. ...
  • University of Colorado Boulder. ...
  • Free. ...
  • Free.

How many keys are in an octave? ›

Octave comes from the Latin root “octo,” meaning eight. An octave represents the interval from one musical pitch or note to another. It is the distance from one note to the next note of the same name. It takes eight white keys to get to the next latter-named note, hence why we call it an octave.

Is Linux and GNU same? ›

Linux is the kernel, one of the essential major components of the system. The system as a whole is basically the GNU system, with Linux added.

Is GNU an OS? ›

What is GNU? GNU is an operating system that is free software—that is, it respects users' freedom. The GNU operating system consists of GNU packages (programs specifically released by the GNU Project) as well as free software released by third parties.

Why is it called GNU? ›

The name “GNU” was chosen because it met a few requirements; first, it was a recursive acronym for “GNU's Not Unix,” second, because it was a real word, and third, it was fun to say (or sing). The word “free” in “free software” pertains to freedom, not price. You may or may not pay a price to get GNU software.

Can Octave replace MATLAB? ›

If you're looking for a project that is as close to the actual MATLAB language as possible, Octave may be a good fit for you; it strives for exact compatibility, so many of your projects developed for MATLAB may run in Octave with no modification necessary.

Which is easy MATLAB or Octave? ›

MATLAB is probably a lot more powerful than Octave, and the algorithms run faster, but for most applications, Octave is more than adequate and is, in my opinion' an amazing tool that is completely free, where Octave is completely free.

Is octave online same as MATLAB? ›

Welcome to Octave Online

Octave Online is a web UI for GNU Octave, the open-source alternative to MATLAB. Thousands of students, educators, and researchers from around the world use Octave Online each day for studying machine learning, control systems, numerical methods, and more.

How do I use Octave instead of MATLAB? ›

Octave uses both the hash symbol # and the percent sign % interchangeably. For exponentiation, Octave can use ^ or ** ; MATLAB requires ^ . To end blocks, Octave can use end or specify the block with endif, endfor, ... ; MATLAB requires end .

What is better than MATLAB? ›

GNU Octave

If you are looking for anything closer to Matlab in terms of compatibility and computational ability, then Octave is the best Matlab alternative. Most of the projects developed for Matlab run on Octave too. It runs on any Operating system without any modifications.

Is Octave free? ›

GNU Octave is a free, scientific programming language. It offers a rich mathematical apparatus, concise syntax, and has built-in visualization tools [1]. The whole package is really handy. It has a graphical user interface (GUI) and command-line interface versions.

Does Octave have GUI? ›

The Octave interpreter can be run in GUI mode, as a console, or invoked as part of a shell script. More Octave examples can be found in the Octave wiki. Solve systems of equations with linear algebra operations on vectors and matrices.

What language is Octave written in? ›

Octave is software featuring a high-level programming language, primarily intended for numerical computations. It was developed by John W. Eaton and written in C, C++, Fortran languages.

How do I learn Octave? ›

Octave Tutorial for Absolute Beginners: Learn Octave in 1 hr and 30 min

Is Octave popular? ›

Coming to the popularity standards, Octave is not that prominent in the public. The other programming languages are highly popular in the market and have massive community support. Also, the adaptability rate of the all these three is quite high as compared to octave for machine learning.

Is Octave faster than MATLAB? ›

Is Octave as powerful as Matlab? Well, it has been seen that Matlab is more powerful as compared to Octave. Moreover, Matlab's algorithms are much faster than Octave's algorithms.

Is Octave a clone of MATLAB? ›

As you've written: "The language [Octave] is almost identical to basic Matlab." When using _advanced_ instead of _basic_ Matlab features, the differences between these platforms become more considerable.

Is MATLAB better than R? ›

Scale the code you've already written to large datasets

Out of the box, MATLAB is faster than R for common technical computing tasks, statistics, and machine learning, as described in the R benchmark 2.5 (also known as Urbanek), because MATLAB library calls are optimized, and code is just-in-time compiled.

Is Octave fully compatible with MATLAB? ›

Octave is mostly compatible with Matlab. Most matlab functions can be made to run with very little change. With careful coding, you can get your code to run without change in Matlab and Octave.

What is Octave in machine learning? ›

Octave is an open-source interactive programming language widely used in machine learning and data analytics courses. Designed primarily for matrix computation, Octave is a powerful tool that enables the development of efficient engineering, data analytics and machine learning programmes.

Is MATLAB free? ›


Learn MATLAB for free with hands-on, interactive lessons.


1. Octave: Aula 7 - Esboço Gráfico de Funções em Uma Variável - Parte 1
(Matemática Para Gente Grande)
2. Read Data from MS Excel and Plot using GNU Octave and Matlab for Absolute Beginners
3. Octave 1/5 - Funções Básicas
4. Como instalar o GNU Octave no Linux Debian e derivados - Computação Científica
(Bóson Treinamentos)
5. Programming with Matlab or Octave, Chap. 7: common problems, pitfalls, quirks
(Physik - Experimente & Formeln - Matthias Kohl)
6. Octave Tutorial 7: Curve Fitting
Top Articles
Latest Posts
Article information

Author: Kerri Lueilwitz

Last Updated: 30/09/2023

Views: 5999

Rating: 4.7 / 5 (67 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Kerri Lueilwitz

Birthday: 1992-10-31

Address: Suite 878 3699 Chantelle Roads, Colebury, NC 68599

Phone: +6111989609516

Job: Chief Farming Manager

Hobby: Mycology, Stone skipping, Dowsing, Whittling, Taxidermy, Sand art, Roller skating

Introduction: My name is Kerri Lueilwitz, I am a courageous, gentle, quaint, thankful, outstanding, brave, vast person who loves writing and wants to share my knowledge and understanding with you.