Friday, 27 September 2019

Introduction to Databases

Okay, now we come to one of the fundamental uses of computers, and that is basically storing data. In fact, data is pretty much everywhere and like it or not, we are not only using it constantly, but we are also generating it. For instance, every time we look for a place on Google Maps we are accessing data, and in turn, if we have 'location sharing' turned on, and our phone in our pocket (or in our hands scrolling through our newsfeeds), then pretty much everywhere we go is being recorded. Actually, to add a further point, every search we enter into Google, and every website we visit is not only being recorded, but is also being stored in a database. Sure, we might be using DuckDuckGo instead of Google, and we might have private browsing turned on, but the thing is that all of this information is still being stored, namely in the databases managed by our ISPs (namely because the government has specifically legislated that this is done).

So, this subject basically covers two things - how data is stored, and how data is accessed, and to say that these two things are vitally important in our modern society is somewhat of an understatement. Look, I could go into the ethics and problems with all of this, but at this stage what I'll be writing about is the fundamentals of Database Management, as well as information regarding SQL (Structured Query Language), which is the language that is used to search databases (and while many people pronounce it as Sequal, I still like to call it Squirrel).

Anyway, to get an idea of how a database is set up consider the diagram below.

As you can see above, there are three layers to the database - the user, the Database Management System (DBMS), and the databases. The data in the database is actually stored on the hard drive, and the DBMS is the program that is used to store, access, and change the data in the database, but first of all let us consider the user.


So, you could say that there are three types of users: the Administrator, the Developer, and the End User.

Administrator: This person pretty much has complete control over the database. They will be the one who builds the database from the ground up, and they also define the schema, which is basically how the database is laid out, how the data is stored, and the structure that the database takes. The administrator is also the one that grants privileges to other users, and you could say that they are the givers, and they are also the ones who take away.

Developer: Some of the major websites are a bit sly when it comes to handing out the role of the developer. The reason I say that is that these databases, despite the fact that they do rake in huge amounts of money, manage to get people to do this for free. Mind you, the role of the librarian on Goodreads, and the actual developer problem to drift apart in places.

Anyway, the developer basically manages the database, and have certain roles assigned to them from the administrator, including updating data and also being able to retrieve data that an end-user might not be able to. For instance, a Facebook user can only perform certain searches on the website, whereas a developer would be able to perform much more detailed and extensive searches, such that a user might not be able to do.

End-User: Yep, these people are us, though in some cases, such as the insurance company where I used to work, they would also be the average employee. Once again, it is difficult to assign specific roles considering that some end-users, such as the claims consultant, will tend to have much greater access to the database than the customer, who will only have access to information relating to their particular insurance policy. However, all things being simple, users generally fall into one of these three categories.


This word was thrown about above, and basically, as mentioned, is how information is stored in the database. The schema is determined by the administrator and deals with what sort of data is being stored. Further, the schema also sets out restraints on the data that is being stored in the database. However, to explain it better, let us use a real-world example, namely a customer database.

So, a company will have a list of all their customers (and note that companies tend to go to great lengths to build such databases, and will do many things to attempt to get you onto that database). So, a customer will have a customer number, and the restraint will be that each customer has to have it and that it has to be unique. Then there will be other things, such as a name, an address, an email address, and maybe even a date of birth.

Now, this will be written as such:

customer(custNo, name, address, email, DoB)
This is known as the relationship schema, basically how the data on the customers is recorded. 


Now, there is also this concept of metadata, something that has basically be bandied around a bit in the halls of power of late (we don't want your data, we just want your metadata - George Brandis - though you can find out more about what these laws mean here.). So, what is metadata - well, it actually isn't your data, it is just that which identifies data - namely the schema is a form of metadata. Further, there is also the type of data that is stored here. So, the name will be text, as will be the address. The email is a specific type of text, while the date of birth will be a date.

Metadata also deals with constraints on data, as mentioned above, and also includes user privileges and the like. Though, honestly, now that I know what metadata actually is, it sort of makes me wonder how that information is going to be at all useful for the government to keep track of us, though this does sort of bring us to our next point - SQL. One thing that metadata allows us to do is to search and retrieve data.

SQL - The Language of Search

As I mentioned above, SQL stands for 'Structured Query Language' but as it turns out, it is more than just a simple language of search. However, before I continue, the best way to learn any programming language is through practice, and one of the best tools available happens to be W3 Schools. Unlike other sites, this site is completely free and allows you to practice to your heart's content. So, while I will in later posts be talking about SQL and how to use it, these websites are actually much better for practice.

The thing with SQL, as I have already mentioned, is that it is more than just a language for searching for things in a database. It is also a 'Data Definition Language' meaning that it is a language in which you can design databases and set out the schema. It is a 'Data Query Language' which basically means that you can use it to search for information in the database. Finally, it is also a 'Data Manipulation Language' which means that you can use it to change data in the database.

Oh, and you may have seen this cartoon:

Well, our wonderful mother is actually using SQL here in its data definition form. In fact, as you get to know SQL much more you will be regularly encountering the phrase DROP TABLE.

The other thing about SQL is that it is a 'declarative' language, meaning that you use it to tell the computer the problem you wish to solve. This differs from a 'procedural' language in that there you tell the computer how to solve the problem. The thing with declarative languages is that they tend to be short and simple, though the problem does arise where you don't actually know whether you have entered the instructions correctly or not.

To give you a bit more of an example of the difference, say we want to count the number of customers we have in our database. Well, we would use the following command:

SELECT count(custNo) FROM customer;

Here is the same program in the C programming language:


Databases operate on the principle of concurrency, which means that multiple users need to be able to access it at the same time. Actually, I still remember a database I used to use at work, and one of the biggest problems we had was that two people could not access the same claim at the same time - it would throw up errors. They did eventually solve the problem, but it did take quite a while.

Now, when an operation is performed on a database, a process known as a transaction, it must result in an all or nothing approach. That means that it is either fully completed, or nothing happens at all. There are no half measures when it comes to databases. The other thing is that once the operation has been performed, the database needs to be saved, otherwise everything will be lost. Then again, that goes with quite a lot of other programs as well.

So, this comes down to a system that is known as ACID:

Atomicity - this is the all or nothing approach.
Consistency - like atomicity, when a transaction is performed it must go from a consistent state to a consistent state, meaning that after a transaction, the results cannot be negative.
Isolation - basically each transaction performs in isolation from all the other transactions being performed. Namely, the database needs to prevent the users from interfering with each other.
Durability - the effect of the transaction, once completed, can never be lost.  
So, I'll finish off here with another diagram, just so you get the picture.

Creative Commons License

Introduction to Databases by David Alfred Sarkies is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. This license only applies to the text and any image that is within the public domain. Any images or videos that are the subject of copyright are not covered by this license. Use of these images are for illustrative purposes only are are not intended to assert ownership. If you wish to use this work commercially please feel free to contact me

Sunday, 15 September 2019

MoMA comes to Melbourne Part 2

Since I really can't decide what works or art to include in my post, and what works not to, I have decided to split this post (though this is something that I seem to do quite regularly when it comes to a lot of these posts on the various exhibitions that I have been to). Anyway, in the previous post we had been following the evolution of art up to the 1920s, but now we move further on, to another style, with one artist we may all be familiar with - Salvador Dali.

Inner & Outer Worlds

What seems to be happening now is that artists began to move away from a lot of the abstract art that had developed over the 1920s, particularly the styles were the artist basically only painted colours as shapes, something that had somehow grown out of cubism, as exemplified by Picasso. Now we move into another realm, one much more surreal, with the likes of Salvador Dali, Yves Tangey, and Rene Margritte.

Thus surrealism was born, a movement that basically arose out of Paris. Here the artists had become much more meticulous, and in fact were able to create imagines, and panoramas, that were not only precise, but also seemed to stretch the boundaries of reality. In a way it seems that they had not just moved forward, and away, from the works of the impressionists, but also back to the world were precision in art was much more important.

Yet Europe was racked by disorder and turmoil, and with the treat of war rising once again, many of the artists decided to move elsewhere, and suddenly found themselves over the ocean in places like the United States, Mexico, and Cuba. Here the artists would influence, and in turn be influenced by, the styles that had developed therein. Anyway, let us start with a painting that we are probably all familiar with:

And here we are, Persistence of Memory by Salvadore Dali, a painting that he describes as his most 'imperialist fury of precision'. In a way he is trying to capture the idea of memory, something that seems to be able to take solid shapes, and objects, and to be able to morph and transform them into something completely different. Here we have once solid watches, oozing off the side, as another is attacked and destroyed by ants. We also see in the distance, yellow cliffs, a memory of Dali's homeland in Catalonia, disappearing into the vague white area of forgetfulness. Yet there is something persistent about memory, and there are thing which, no matter how hard we try, or how long time passes, just always seem to remain, something that is no doubt also represented by the clocks.

This painting is called Gare Montparnasse, or the Melancholy of Departure, which was painted by Girogio de Chirico. Gare Montparnasse is a station located in Paris, which happened to be located near where Chirico would work. This is a painting of contradictions, with the vanishing points just not quite working out the way that they are supposed to work out, which causes us to feel confused, and in a way a little uncomfortable. Another thing is that the title is about a departure, yet the train seems to be arriving, and further, the clock suggests that it is midday, yet the scenery feels that it is really another time of day. Was this all done on purpose? Quite possible, and maybe it is designed to throw us off, and make us think, especially since the painting, despite it's title, does feel a lot more upbeat and warm, and melancholy and depressing.

Well, it seems that there was nothing written on the little plaque underneath this painting, except of course for the title, Mama, Papa is Wounded, and the name of the painter, Yves Tangauy. Mind you, it isn't as if they really said anything all that amazing about the meaning behind the painting, but yeah, sometimes it came be pretty difficult to understand the meaning, even if the artist actually had a meaning. Once again, like the previous paintings, there is this shifting perspective, and also appears to be an apocalyptic landscape. The suggestion is that it evokes memories of the First World War, and of course there is this dark cloud manifesting there, as if the world itself is bleak and the horrors are still hanging around. This is all despite the fact that the world was experiencing huge economic progress, but no doubt this had a lot to do with trying to escape the horrors of the war.

Sometimes it is good just to paint things and let other people try to interpret what it is all about, but I'm still one of those people that feel that a painting (or any work of art) that the artist doesn't have some personal meaning that they are trying to express really has no value, except for maybe its aesthetic value. Anyway, this painting, by Jean Viro, is called The Portrait of Mistress Mills in 1790, which is modeled after an earlier painting of Isabella Mills. Of course, this looks nothing like the original painting (which is on display in the National Gallery of England, and you can see it here). It a way the metamorphosis is almost comical, as if the artist is making a mockery of the original painting. Then again, these paintings were an attempt not only to capture the subject's youth, and beauty, but also as a means of gaining some form of immortality.

And here is another painting by the master of turning a dirty paper napkin into a priceless work of art, Pablo Picasso (though this was hardly painted on a dirty table napkin), and is called a seated bather. Well, it doesn't look like she (and I suspect that the subject is female) is wearing any clothes, though it could be that the term bather refers to taking a bath as opposed to going for a swim. Yet the head I find really interesting - it is as if it is a microcosm of the painting as a whole. It certainly does not seem to be an actual head. In fact the entire body looks disjointed, almost as if it isn't a single person, but rather a collection of objects that have been thrown together that, if we look at it from another way, we can easily say that yes, this is a person.

This artwork is called Red Head, Blue Body by the Swiss artist Meret Oppenheimer. Yeah, it's difficult to come to an understanding of the meaning of this work of art, much like many of the works that appear in this collection. Of course, it can come down to 'what you will', though many critics resort to the use of colours. Personally, I don't care, but the thing that stands out is how the head, which is clearly supposed to be a human head, is connected to the body by a piece of string. In a way, to me at least, it suggests not just the fragility of the body, but more so the fragility of the neck, as if these to parts of us are just weakly held together.

This painting, simply called Gas, is apparently an amalgamation of many gas stations into a single image. In a way it captures not only the essence of modern America, as defined by the gas station, but also in a sense an aura of loneliness. Many gas stations seem to exist by themselves out on empty country roads, and while things may seem quiet, they also symbolise the lifeblood of modern Amercia, the fuel that keeps people moving from place to place, an important cog in the wheels of commerce.

Art as Action

So, now we move into the realm of the New York Surrealists of the 1950s. The previous years, those of the surrealists, focused on introspection, no doubt exploring the world that had emerged from the tragedies of the Great War, and in turn hurtling towards another, one that no one wished to get involved in. However, now we emerged from the ashes of this second war, with Europe and Asia rebuilding while the United States was now sitting on the top of the pile.

This was the beginning of what is now known as The American Century, and it is here that we begin to see the American artists move to the foreground, particularly out of New York, America's true cultural centre (not Los Angeles, as some have suggested, since while Los Angeles may be the cradle of Hollywood, in reality it is New York from which many of the great artists and writers of this era emerge). Here we are introduced to Jackson Pollock, and down the line we also come to meet Andy Warhol.

And here we are, Jackson Pollock's Number 7. Yeah, people are going to look at this and ask themselves 'what sort of rubbish is this?'. In fact, that is what was said when the Australian Government bought a Pollock for a huge amount because, well, it is just paint splattered on a canvas. The reality is that anybody could do something like this - it really doesn't take much skill. Sure, there is the claim that the painting represents the dance that Pollock was doing around the canvas, and others admire the style, but the truth is, Pollock, like Duchamp, is challenging the art world, and in many cases it is the name to which this artwork is attached that defines it, as opposed to the art itself. The reason nobody else can do a 'Jackson Pollock' is because there is only one Jackson Pollock out there. If I were to do the same thing, no doubt people would simply laugh, and accuse me of simply trying to copy him.

Okay, a red canvas that happens to have a bright red line painted down the middle of it. Well, if Jackson Pollock can create a painting worth millions of dollars simply by dancing over a piece of canvas while pouring paint onto it, then Barnett Newman can do exactly the same thing with a simple line. In fact, the plaque next to it talked about how it was a breakthrough style of abstract expressionism with a single line both uniting, and dividing, the canvas. Sometimes I wander who came up with these ideas, though it could simply have been Newman explaining to the art critics why they should even bother taking note of something like this. Of course, an empty room could do a lot as well.

Things as they Are

Now we arrive at the 60s and the emergence of the artistic styles known as Pop-Art, Minimalism, and Post-Modernism. Peter Salz criticised many of the artists of the time, claiming that all they were doing was reproducing things as they are, but in a way these artists were capturing the essence of the modern world, and celebrating America's coming of age. Pop-Art, in a way, was taking consumerism and turning it into an artform, while Post-Modernism was helping objects understand the meaning of their existence. As for minimalism, well, I guess a line down the middle of a canvas sort of says everything you need to know about that (not that Newman was a minimalist artist).

It is interesting, in a comic book, the above image would, well, simply be part of a story, and in fact we would probably read it and pass over it without much though. What Roy Lichtenstein did was that he took this single panel, put it in a frame, and hung it on the wall. Well, that started off a huge craze, though of course Roy Lichtenstein is the one that gets all the credit for it. Look, I don't even think I need to mention the comic (Sacred Hearts) because this image no longer forms part of the comic, and is now a piece of art in and of itself. In a way it does capture the essence of modern society, where we would rather die that admit that we need the assistance of somebody that we despise. What the true meaning of this panel was is now lost to time, because all that remains is the image.

Everybody knows what the map of the map of the United States looks like, but to Jasper Johns it was something more than that. In his words, he wanted to take something that we generally only give a furtive glance towards (unless of course you happen to be a map nerd, like myself) and turn it into something that will not only grab our attention but force us to look at it more closely. Well, taking a map of the United States, putting a frame around it, and hanging it in an art gallery is certainly going to do that, especially with all the art nerds spending countless ages trying to work out what it actually means, or just simply admiring the art for arts sake. Of course, he went further than simply getting a Rand McNally's map and framing it, because he created the map himself, much in the style of the Abstract Expressionists of the not too distant past.

In a sense much of modern architecture seems to be pretty much the same, at least when we look at them in isolation. However, when Bernd and Hiller Becher traveled about West Germany documenting various scenes of a declining industry, especially the towers that stood over coal mines, it become evident, particularly when put together, that even in an industrial world, a world where function is preferred over form, that everything seems to have a unique aspect to them. This is the case when we look at what initially appears to be a collection of photographs of 'Winding Towers' only to discover that no two are actually alike.

Honestly, it wouldn't be a MoMA exhibition without something on display by Andy Warhol, the king of Pop Art (well, I might be exaggerating things a bit there though). Mind you, I've already written a piece on him, especially since the NGV had an exhibition on his works as well. So, the above work is called, not surprisingly, Marilyn. It is a collection of screen prints, a medium that Warhol quite liked working with (and in a sense is a defining medium of the modern world). What these images capture is, well, the many faces of Monroe, particularly since this beloved actress sadly died of an overdoes at a rather young age, and not long after this work was produced

The above screen prints are in a way similar to the album covers we see above. The reason I raise that is because art, in many cases, is generally seen as being unique (to an extent, since means of mass producing works of art, such as through woodcuts, have been around for quite a while). However, with the inclusion of these album covers on the walls of the MoMA indicates an idea that art does not necessarily need to be unique, in the sense of being a unique object, such as a painting. Rather it is the image, an image that can be reproduced multiple times in multiple places. In fact, for this display, the designers of the covers are also included, though it turns out that, like a lot of commercial products, there tends to be more than one mind going into idea.

Honestly, I'm not sure which direction this is supposed to go, though I suspect that I have it upside down, if we base it on the direction it is supposed to be played. Yes, I know, this is an electric guitar, and yes, it was hanging on the wall of a museum. If you are familiar with your instruments though, you will recognise this as a Fender Stratocaster - probably the most popular electric guitar on the market. In fact, the designer, Leo Fender, who was an amateur electrician, designed it to be able to have interchangeable parts, and to also be able to be customised for the user. Then again, since my ability to play a musical instrument is basically non-existent, I guess I just have to admire the product of other people's work. However, one could almost consider this to be a work of art that is used to produce works of art.

Creative Commons License

MoMA comes to Melbourne Part 2 by David Alfred Sarkies is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. This license only applies to the text and any image that is within the public domain. Any images or videos that are the subject of copyright are not covered by this license. Use of these images are for illustrative purposes only are are not intended to assert ownership. If you wish to use this work commercially please feel free to contact me

Sunday, 1 September 2019

Controlling the Flow

Once again we seem to be going over some old ground, particularly the second half of my post on the Intricacies of data transfer. However, there are a number of things that weren't discussed, and this is what we will be looking at, namely error control and flow control.

Both of these functions occur on the data link layer, which is a layer on the OSI model that exists above the physical layer. It is here that data is packaged into frames and then sent down to the physical layer where the data is then passed on to the destination. Basically, the functions that the Data Link layer looks after are addressing, packetising, error control, flow control, and access control. Now, we have already looked at error control previously, so now it is time to look at flow control.

At its basic level, flow control is a mechanism that is used so that one computer is not overwhelmed by a heap of data being sent to it by the sending computer. The process works on the sender sending a frame and then waiting for an acknowledgement before sending the next frame. This is flow control at its basic level. Further, there is a timer on both sides, so if the timer runs out on the sender's side, that indicates that the frame was not received, or if it was received, it was received with an error, so it sends it again. A similar function occurs on the sender's side, though what is being sent is an acknowledgement as opposed to the frame.

So, at the data link layer, the sender sends a series of frames each containing the data and some control information (known as the header). When the frame is received, the receiver then processes the data before passing it on to the higher level. Normally there is a buffer where frames are stored while they are being processed, and the sending entity needs to avoid sending frames at such a rate that the receiver is unable to process them in time resulting in a buffer overflow.

Stop and Wait

This is the simplest form of flow control. Basically the sender sends a frame, the receiver receives it, processes it, and then sends an acknowledgement. However, the acknowledgement will be for the next frame in the queue. So, if the sender sends frame 0, the receiver will respond with acknowledgement 1, or rather ack 1. This tells the sender that it should now send frame 1, which is the next frame in the queue. Once that is sent, received, and processed, the receiver then sends ack 0, which, once again, requests the next frame in the queue.

If the receiver is getting overwhelmed, it can stop the flow by not sending an acknowledgement, and then only send one when it is ready to receive the next frame.

Okay, time for some more maths, namely because when determining the length of the timer, we need to know a few other things, such as how long it will take for the frame to get from the sender to the receiver. So, first we have the transmission delay, or the length of time for the frame from the first bit to the last bit to leave the sender, and we get that by using the following formula:

T=L/R, or Time = Length of Frame/Transmission rate.

So, we have a frame that is the size of 12000 bits being sent along a medium that is a 100 Mbps link. The formula will then come out as follows:

T = 12000x(1s/108 bits).

We came up with that because the formula would be 12000/100 Mbps, which is 12000/108 bps, or 12000/(108/1). When we are dividing by a fraction, we actually flip the fraction and then multiply it, as such, which produces 12000x(1s/108 bits), however since 12000 x 1s is 12000, we end up with 12000/108 bits. Once again, we switch the sign of the indicie and then multiply it:


We round down:

1.2 x 10-4

And plug the problem into our trusty calculator, which produces:

0.00012 seconds.

Well, let us fix this up a bit:

0.12 milliseconds

And that is the transmission delay, or the length of time it takes for the first bit to the last bit to leave the sender.

Next we go to propagation delay, which is the length of time it takes for the first bit to travel from the sender to the receiver. We get that using the following formula:

T = d/s, or distance divided by the speed that it takes for the bit to travel through the transmission medium, with the upper limit being the speed of light (and we aren't taking into account quantum entanglement here, namely because we haven't worked out how to utilise it). Signals traveling along copper wire travel at 2x 108 m/s

So, let us look at an example, namely the propagation delay between Cairns and Melbourne (which is about 4000 km).

Here it is on a map.
4x 106 m / 2x 108 m/s

4x 106 m x (1s / 2x 108 m)

4x 106 m / 2x 108 m

2 x 10-2 s or 0.02 seconds, or 20 milliseconds.

Sounds pretty slow doesn't, in the grand scheme of things. No wonder we need a proper working NBN.

The reason that we went through all of that math is basically to help us understand how long the timer should be set, because if it is set too short, then the whole flow control system will fail.

Sliding Window

The sliding window protocol is a way of speeding up this process. The stop and wait protocol can be pretty slow, because the frame has to be sent, and then the sender needs to wait for the acknowledgement, or the timer to expire, before sending the next frame. So, we solve this through the use of buffering. Basically the frames are stored in a buffer, and are held in the buffer until the acknowledgement is received, and when the acknowledgement is received, the sent frames are discarded and new frames are then loaded into the buffer. So, the receiver will have a buffer size of W, and the sender can send up to W frames without having to wait for an acknowledgement, as below:

Like the stop and wait protocol, the acknowledgement contains the number of the next frame expected. This works well for error control also, since if one of the frames received is in error, then that, and the subsequent frames, are discarded and an acknowledgement is sent for the frame that was in error. There is also the RNR, or receive not ready, which means that the frames have been received, but it is not ready to receive any further frames. So at the sending end, the sequence number of those sent is maintained, and as the acknowledgements are received, the window grows. A similar function occurs at the receiving end.

In the case of duplex system, there needs to be two sliding windows at either end. In this situation we can utilise a method called piggy backing, which means that each frame that is sent carries a frame, and an acknowledgement, as such:

When Errors Occur

Well, as mentioned, both sides need to buffer data just in case an error is received. If an error is received, the sender continues to send the data until an acknowledgement is received that the frame was received correctly. The sender needs to buffer data to resend any frames that were either lost or damaged, while the receiver needs to buffer data just in case frames are received out of order.

Also, acknowledgements may not be received, which means that after the time out, the sender will resend the frame. When the receiver receives the frame that it has already received, it just discards it and resends the acknowledgement. This diagram might be useful:

Then there is also the Go Back N ARQ, in which the size of the frame is always 1. However, the sender does have a buffer, just in case an acknowledgement is not received.

We also have the idea of the negative acknowledgement. So, if a damaged frame is received, then the receiver will send a negative acknowledgement requesting that the frame be resent. If there is no buffer at the receiving end, frames will continue to be discarded until the correct frame is received. However, if there is a buffer, then subsequent frames will be received, and when the damaged frame is resent, it can be reordered into where it was supposed to go. The greater the size of the buffer at the receiver's end, the less repeat transmissions that there are, though this makes it somewhat more complex to implement.

So, that is flow control, and error control. Next time we will look at multiplexing, or how we send multiple signals along the same channel.

Creative Commons License

Controlling the Flow by David Alfred Sarkies is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. This license only applies to the text and any image that is within the public domain. Any images or videos that are the subject of copyright are not covered by this license. Use of these images are for illustrative purposes only are are not intended to assert ownership. If you wish to use this work commercially please feel free to contact me