| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#11
| |||
| |||
| On Sep 2, 5:38*am, "tlmfru" <la...@mts.net> wrote: > Richard <rip...@azonic.co.nz> wrote in message > > news:5141cde0-ff72-41de-a456-ec8e1e3da5b3@v39g2000pro.googlegroups.com... > On Sep 1, 1:08 am, foodman <foodman...@aol.com> wrote: > > <snip> > For example: You PERFORM CA until X1 is > 256 then drop through CA. As > X1 now has a value of 257 it would fail a bound check. This is very > poor programming. > > You also abuse the language. You exit the performed paragraph CB with > a GO TO CC. This could result in the perform stack being exceeded > resulting in program failure. It is unlikely that you have reached > that with this program, but it is indiicative of your lack of any > defensive coding style. > > [pl] > > That isn't necessarily the case. *Using a stack isn't the only way of doing > this. Which is why I said: "could". However, he claimed to be using Microfocus, I understand that this does use a perform stack. In fact there is even an error code 168 for this. Whether this particular code would cause the stack to overflow with a code 168 I don't know, but it is not the sort of code that I would allow. > As for the rest: his style makes me itch but as the code does what is > required of it - it works, he understands it, and he finds it easy to > maintain (and he's the only one that has to be considered) - nothing else > needs to be considered . The program does not do what is claimed. Foodman claims that it extracts "the names of all images". It does not. It only extracts a maximum of one per line, and only those where the src attribute follows the tag identifer by exactly one space. He also claims that it writes a bat file he can "use to copy the files". It will not. Web servers use an offset file system to contain access to be within a subset of the disk file system. So, for example '<img src="/images/pic.jpeg">' will actually refer to a file such as: / var/www/html/images/pic.jpeg. The bat file output from the program will contain "COPY /IMAGES/PIC.JPEG" which is useless for several reasons: 1) COPY is a DOS thing 2) for DOS/Windows the '/' should be '\' 3) the server offset prefix is missing 4) there is no destination (which may be OK on DOS) >*So he uses uper-case letters. *So? *I do too. > Just that I'm used to doing it that way. I haven't commented at all yet on the 'style' (except it lacks defensive code). > {/pl] |
|
#12
| |||
| |||
| On Sep 2, 2:06*am, foodman <foodman...@aol.com> wrote: You appear to be very confused about how posting 'style' works. When I (and most others) reply to a message the markers '>' are added automatically to the original to indicate which parts are quoted from previous messages and which parts are new responses. You seem to have inverted that convention by some obscure mechanism. Did you write your own message reply program to do this ? > >You are correct in that I did not expect to change anyone's opinions > >nor was it my intention and I know that very well from prior encounters > >in CLC. I know in advance what the response is going to be like. > >It was in response to one old-timer's > >comments about coding perhaps to help him 'remember'. > >And, to give people an opportunity to demonstrate their style > >which only one person did. I know quite > >well that CLC denizens do not like my style, but I do and that > >is all that counts. * Actually, I haven't even commented on the 'style' except to say that it lacks defence. I was pointing out simple coding errors and language abuse, and of course where it failed to meet specified requirements. > IF I ever have to get another compiler > >for whatever reason, I know that it will be an easy conversion > >and that is vital to me. It is always interesting to see how > >other people do things even if you don't like them. > > As I have stated many times: What is easy is entirely what you are > used to. You can glance at this code, or similar code, and know > immediately what it does. When you look at other code it is confusing > to you. Thus you think that yours is somehow 'better'. Well, > certainly > it is to you. > > >I never said it was 'better', it is merely my style which I like. Is it 'better' for you ? > >I don't think that a 'glance' at Robert's incomplete code tells immediately > >what it does if one didn't know already. Again, I restrict my code > >to a basic subset of COBOL and there are definite advantages to that. I also use a subset, but a completely different subset, one that excludes GO TO, PERFORM THRU, and SECTION. This gives advantages to my coding. When I see code like yours I immediately see the disadvantages of your style, ones that you simply don't notice. > >I also wonder what a 'malformed line' is and why the user is not > >given an opportunity to respond in the example. What ? > For example: You PERFORM CA until X1 is > 256 then drop through CA. > As > X1 now has a value of 257 it would fail a bound check. This is very > poor programming. > > >But X1 is never referenced greater than 256. So it is not a problem. Excuse me, but in CA the first line is: IF HCHAR (X1) = "I" in what way does this _NOT_ reference X1 ? The PERFORM continues until X1 has a value of 257 the it drops though CA and does that test. I have less concern about your 'style' except that it leads to these sort of careless mistakes that you don't even notice when they are pointed out to you. > >And, I do that all the time and always have with no problems. So, > >if it is not a problem and the compiler doesn't mind, why not do it? > >It works. > > You also abuse the language. You exit the performed paragraph CB with > a GO TO CC. This could result in the perform stack being exceeded > resulting in program failure. It is unlikely that you have reached > that with this program, but it is indiicative of your lack of any > defensive coding style. > > > I don't find anything wrong with that at all. And, it works > >perfectly fine and I've been doing it for years and it always works. > >So, if it works all the time why not do it? Of course, switching > >compilers COULD present problems but it is not likely in this case. > It shows a poor understanding of the language. > You also uppercase the whole line which will result in the image file > name in the COPY statement being upper cased. This will work in CP/M > derivitive systems but not where there is case sensitivity. > > >That's OK, it is a DOS BAT file, after all and case sensitivity is NOT > >a problem. BTW, the generated COPY statement is incomplete. As I pointed out elsewhere the output does not match your claim for it. You would be better suing grep or awk. > Incidentally, > >my server is a Unix machine which, as you probably know, is case- > >sensitive so I have to be very careful when FTPing. > > As you say that there are hundreds of HTML files then this program > would fail to match any real usability criteria. It appears to > require > that the name be manually keyed in after starting the program. It is > unlikely that anyone would want to do this for hundreds of files. Any > rational program would take the input file from the command line, or > probably a series of file names. But then you are stuck in Tandy-Land > so you may never have thought of this. > > >No, I don't WANT to do hundreds at a time. I want to do ONE at a time. > >It was written for MY HTML, not everybody's. It works perfectly for me. Yes, it probably does. > >So, it is perfectly 'usable' and meets my requirements exactly. > >You could also make comments such that the name of the output file > >could be specified by the user, etc. *Again, it was written for > >one file at a time because that is what I want and criticizing > >it for not being something else is pointless. > >If you would like to see an example of usability download my demo. > > Robert said "First you say your code is portable, then contradict > yourself when you complain about the > difficulty of porting it. Make up your mind. > > > > >There is no question that moving from one compiler to another > >will uncover incompatibilities between the two. It is not that > >it is so difficult, but it can be time-consuming and affect other > >matters such as distribution and prior-version support. and, it costs money > >(my money, not someone else's) . I never want > >to have to go through that regardless of the 'difficulty' and I > >know I won't have to. That's the point. It makes sense. > >My mind IS made up. And has been since 1962 ;-) > >It is correct that I do not check the file-status after every > >I-O operation as I would if this program were to be used > >by others and as is the case with my POS software . But it is > >for my personal use so it is not a problem. File-Status is specified. It was a technical issue. I have no problem with the code not checking the status, but if you had omitted the 'file status is' clause then the run-time would do this for you. Specifying the clause _and_ not checking this is the worst of all possible cases: the silent failure. > >Robert provided his chosen way, how about some others? > >I wonder if Sea Side Sam will have any comments? > >BTW, I did upgrade my compiler after the original Tandy > >version, but I don't remember the details. All I know > >is that it still works for all versions of Windows > >and that is my top priority. My distributed software > >is just over 2mb and expands to about 5mb. All of > >my competitor's software is typically in the 256mb > >range which is indicative of the software used. > >Mine has to be better and is. The small size and > >rapid installation is a definite advantage when > >prospects download demo versions of my software > >which you can see for yourself at foodman123.com. > >Richard, why don't you give us your version > >of how you would code this? Come on, I'd like to > >see it. > >Richard said "Obviously not tested though, or even sight checked." > >It was tested and it does what I want it to do and I actually use it for > >the purpose intended with no problem. That comment was to Robert's code where he used the wrong record area to search for the wrong value. You obviously also didn't look at his code or work out what it might do. > >I don't know of anyone in CLC who lives off their own software. > >Maybe there are, I don't know of anyone and would like to > >'compare notes' if there are. I do. But I write bespoke software specifically to client requirements. > >Most everyone works for a big corporation where money is no > >object and people can use whatever they feel like to some > >degree. Put yourselves in my position where every decision > >can affect my bottom line. *I don't think that anyone can > >argue that I would be better off using a later compiler > >or current technology such as .NET or whatever. > >My approach, discounting coding style, makes sense. Doesn't it? > >Well, doesn't it? This is CLC, not Business Management 101. > >Finally, I provide free support to over 800 users all > >over the world. *I get about one phone call a week. > >Some weeks I don't get any. *That has to say something > >about the quality of the software and its high level > >of dependability, usability, etc. which further supports > >my position. > >Well, doesn't it? You have no real comparison with how it may have been had you learned new skills over the last 40 years. Certainly 20 man-years will result in a reliable system in spite of the style used. The real question is whether the same reliability, usability and utilty could have been achieved in much less time if a different style (or language) had been used. |
|
#13
| |||
| |||
| On Sep 2, 2:58*am, docdw...@panix.com () wrote: > In article <88af676a-5ab8-44cb-a9ac-b06fb0f76...@w1g2000prk.googlegroups.com>, > > > > Richard *<rip...@azonic.co.nz> wrote: > >On Sep 1, 12:31*pm, docdw...@panix.com () wrote: > >> In article > ><92fcce4e-2525-4bc8-a4ef-aeff6ac7a...@n33g2000pri.googlegroups.com>, > > >> Richard *<rip...@azonic.co.nz> wrote: > > >> [snip] > > >> >My answer here is yes, If I were to change the code I might > >> >want to start with a conditional, such as (in a theoretical general > >> >case): "IF X1 < 100". Then I would indent the remaining code, BUT, I > >> >would also have to examine all the code seeking out full stops. > > >> What's this... if you desire to change the depth of condition the current > >> design of the code would force you to go through the rest of it, line by > >> line, making sure your change did not introduce any unanticipated errors? > > >Well of course it is still checked, but in _my_ code I reduce the > >amount that needs to be _changed_. > > What needs to be _changed_ (emphasis original), Mr Plinston... the > indentation? *Proponents of free-form source code might question that as a > matter of necessity. > Changing indentation is a trivial procedure consisting of merely marking the range and a keystroke. Ensuring that the indentation matches the logic levels is more important and also more arduous, unless this has already been catered for in the original code. > > >And, for example, if the IF were later removed and the code > >unindented, then presumably the 'dots everywhere' brigade would go > >back and add them to each line. > > Mr Plinston, you cannot control what other 'would do', you can only > control - to what extent is another matter - what you do yourself. There was no mention of 'control', merely an observation of what some may feel necessary. > >"""If you don't know what you are doing then do it neatly.""" > > Neatness is also a matter of style, Mr Plinston. *Would you say a > ninety-degree angle is more neat than a sixty-degree one? It my code lines were displayed at such angles to the vertical then I may form an opinion on that. > >> Horrors! **Everyone* knows that well-designed code allows for the depth of > >> condition to be altered at a moment's notice, with no consideration > >> whatsoever for what's going on around it... all ya gotta do is slap inthe > >> change and be done with it. > > >Ideally, defensive coding would have that be the case, yes. > > >Of course no code is ideal, some less so than others. > > That, I would say, depends on who establishes and who evaluates the > criteria for what you are calling ideal. >*I, personally, do not write code > for ideals, I write code in order to make the person who signs my > timesheets smile. Your ideals may well be completely different from mine. For the most part I am not paid by the number of hours that I spend working on the code, thus I find ways to spend less time producing the required level of usability and reliability. As I am also 'the next programmer' on all the code, I have, over the years, determined that it is worth while spending additional time on designing the structure and writing the initial code such that it can be reused and maintained with minimum effort. Hence I try to defend against future changes. > >> >You may think of this explanation as 'idiotic'. I think that > >> >scattering pointless full stops, and especially the useless commas, > >> >through the code as idiotic. > > >> Styles differ, Mr Plinston; > > >Which is why I usually specify what _I_ do, what _my_ code is like, > >and the benefits that _I_ find, rather than attempting to persuade > >others to do it in any particular way. > > You might want to re-examine your own views of yourself, Mr Plinston. *You > describe a matter of style as 'idiotic'; I was replying to a statement that called a particular style 'idiotic', do try and stay in context. > idiot, according tohttp://www.merriam-webster.com/dictionary/idiot, is a term which is > 'usually offensive'. > > > > >> I was taugh, e'er-so-long ago, that the > >> intention of COBOL was to be English-like to the point where a period/full > >> stop was to signal the end of a sentence, the completion of a thought,the > >> full conveying of a particular set of instructions. > > >Yes, but even you have specified the plural 'instructions'. > > Even I!. > > > > >I ensure that, as far as possible, each of my paragraphs is, to me, > >one 'set of instructions', one 'thought'. > > You see, Mr Plinston... it can be argued that this is a limitation of > style. *A paragraph, by definition, contains 'one or more sentences'; by > requiring yourself to keep to a subset of the definition ('one sentence > only') you practise and advocate a subset of possibilities. I also practice subsets of other possibilities. I see no need, for example, to use every Cobol verb or sub-clause in each program, or indeed, for some, to use them at all. > Your reasons for doing this are your own, of course... but to call > something other than the particular subset you've chosen 'idiotic' does > not, to me, appear to be a reasoned or dispassioned evaluation. You completely missing the point seems to be par for the course. > [snip] > > >> Code - with some exceptions - is written for a variety of audiences. *One > >> of those audiences is composed of those-who-maintain. *My experienceis > >> limited, I admit, but I have never heard those-who-maintain grouse or > >> bellyache that 'the sentences are too clear and the code is too simple'. > > >That _may_ be because they haven't seen my code. > > You write code that causes those-who-maintain to grouse or bellyache? *How > brave of you to admit it! Well of course they would complain, they would make far less money on a per-hour basis, or even none at all. |
|
#14
| |||
| |||
| "Richard" <riplin@azonic.co.nz> wrote in message news:48f0337f-b7ff-4ca3-9562-dc40d3035896@q5g2000prf.googlegroups.com... On Sep 2, 2:06 am, foodman <foodman...@aol.com> wrote: You appear to be very confused about how posting 'style' works. When I (and most others) reply to a message the markers '>' are added automatically to the original to indicate which parts are quoted from previous messages and which parts are new responses. ----- Above the line is exactly what IE6 shows for 'reply to group'. I have seen the problem only with messages originating from Google. It started a few months ago. Don't use Google or don't complain about what others do. <g> |
|
#15
| |||
| |||
| On Sep 2, 10:48*am, "Rick Smith" <ricksm...@mfi.net> wrote: > "Richard" <rip...@azonic.co.nz> wrote in message > > news:48f0337f-b7ff-4ca3-9562-dc40d3035896@q5g2000prf.googlegroups.com... > On Sep 2, 2:06 am, foodman <foodman...@aol.com> wrote: > > You appear to be very confused about how posting 'style' works. When I > (and most others) reply to a message the markers '>' are added > automatically to the original to indicate which parts are quoted from > previous messages and which parts are new responses. > > ----- > Above the line is exactly what IE6 shows for 'reply to group'. > I have seen the problem only with messages originating from > Google. It started a few months ago. > > Don't use Google or don't complain about what others do. <g> My answer is 'Don't use IE6 or any other IE'. Try using Firefox or Opera. It is more likely that Google has its pages 'right'. |
|
#16
| |||
| |||
| In article <6c4db269-d581-42b0-a52a-750f416462d8@t1g2000pra.googlegroups.com>, Richard <riplin@azonic.co.nz> wrote: >On Sep 2, 2:58*am, docdw...@panix.com () wrote: >> In article <88af676a-5ab8-44cb-a9ac-b06fb0f76...@w1g2000prk.googlegroups.com>, >> >> >> >> Richard *<rip...@azonic.co.nz> wrote: >> >On Sep 1, 12:31*pm, docdw...@panix.com () wrote: >> >> In article >> ><92fcce4e-2525-4bc8-a4ef-aeff6ac7a...@n33g2000pri.googlegroups.com>, >> >> >> Richard *<rip...@azonic.co.nz> wrote: >> >> >> [snip] >> >> >> >My answer here is yes, If I were to change the code I might >> >> >want to start with a conditional, such as (in a theoretical general >> >> >case): "IF X1 < 100". Then I would indent the remaining code, BUT, I >> >> >would also have to examine all the code seeking out full stops. >> >> >> What's this... if you desire to change the depth of condition the current >> >> design of the code would force you to go through the rest of it, line by >> >> line, making sure your change did not introduce any unanticipated errors? >> >> >Well of course it is still checked, but in _my_ code I reduce the >> >amount that needs to be _changed_. >> >> What needs to be _changed_ (emphasis original), Mr Plinston... the >> indentation? *Proponents of free-form source code might question that as a >> matter of necessity. >> > >Changing indentation is a trivial procedure consisting of merely >marking the range and a keystroke. Odd that you'd seem to feel a need to comment on what you call 'a trivial procedure', Mr Plinston... what do you hope to gain by pointing out trivialities? >Ensuring that the indentation >matches the logic levels is more important and also more arduous, >unless this has already been catered for in the original code. Ensuring that indentation of any kind is of questionable necessity in free-form code, Mr Plinston, and what 'has already been coatere for in the original code' seems perilously close to Hopper's denigrated 'But we've *always* done it this way!' > >> >> >And, for example, if the IF were later removed and the code >> >unindented, then presumably the 'dots everywhere' brigade would go >> >back and add them to each line. >> >> Mr Plinston, you cannot control what other 'would do', you can only >> control - to what extent is another matter - what you do yourself. > >There was no mention of 'control', merely an observation of what some >may feel necessary. When 'some might feel necessary' to comment, Mr Plinston, they might choose to do so. What might be of interest - or at least a Good, Hearty Laugh - is to post what *you* feel necessary and let the un-named 'some' speak for themselves. > > >> >"""If you don't know what you are doing then do it neatly.""" >> >> Neatness is also a matter of style, Mr Plinston. *Would you say a >> ninety-degree angle is more neat than a sixty-degree one? > >It my code lines were displayed at such angles to the vertical then I >may form an opinion on that. Neatness exists outside of code, Mr Plinston, as you pointed out in your assertion about it... which contained nary a mention of code. Second request, then: would you say a ninety-degree angle is more neat than a sixty-degree one? [snip] >> >Of course no code is ideal, some less so than others. >> >> That, I would say, depends on who establishes and who evaluates the >> criteria for what you are calling ideal. I, personally, do not write code >> for ideals, I write code in order to make the person who signs my >> timesheets smile. > >Your ideals may well be completely different from mine. No matter what are ideals might be, Mr Plinston, if your assertion that 'no code is ideal' then neither yours nor mine is. [anip] >> >> Styles differ, Mr Plinston; >> >> >Which is why I usually specify what _I_ do, what _my_ code is like, >> >and the benefits that _I_ find, rather than attempting to persuade >> >others to do it in any particular way. >> >> You might want to re-examine your own views of yourself, Mr Plinston. *You >> describe a matter of style as 'idiotic'; > >I was replying to a statement that called a particular style >'idiotic', do try and stay in context. Another person making a statement jumps off the Brooklyn Bridge, Mr Plinston... so you must, as well? Please try to stay grounded. [snip] >> >> I was taugh, e'er-so-long ago, that the >> >> intention of COBOL was to be English-like to the point where a period/full >> >> stop was to signal the end of a sentence, the completion of a thought, the >> >> full conveying of a particular set of instructions. >> >> >Yes, but even you have specified the plural 'instructions'. >> >> Even I!. >> >> >I ensure that, as far as possible, each of my paragraphs is, to me, >> >one 'set of instructions', one 'thought'. >> >> You see, Mr Plinston... it can be argued that this is a limitation of >> style. *A paragraph, by definition, contains 'one or more sentences'; by >> requiring yourself to keep to a subset of the definition ('one sentence >> only') you practise and advocate a subset of possibilities. > >I also practice subsets of other possibilities. I see no need, for >example, to use every Cobol verb or sub-clause in each program, or >indeed, for some, to use them at all. It was never suggested that such would be a good thing, Mr Plinston... but please, don't let that fact deter you from making the argument. Is it your honest opinion that there's an all-or-none approach to style and that differing views on the use of periods/full stops are to be equated with differing views on ALTER or RENAMES? >> Your reasons for doing this are your own, of course... but to call >> something other than the particular subset you've chosen 'idiotic' does >> not, to me, appear to be a reasoned or dispassioned evaluation. > >You completely missing the point seems to be par for the course. The point I see you trying to make, Mr Plinston, is that you've found a Very Good Reason to develop a certain style. My question, quite simply, is: do you believe that there exist other Very Good Reasons, equally as valid as yours, which might result in code that shows a style other than yours? >> >That _may_ be because they haven't seen my code. >> >> You write code that causes those-who-maintain to grouse or bellyache? *How >> brave of you to admit it! > >Well of course they would complain, they would make far less money on >a per-hour basis, or even none at all. I'm not sure how you are using 'they would', Mr Plinston... if it indicates a subjunctive ('were they to maintain it they would') then you appear to be generating a situation which does not exist. DD |
|
#17
| |||
| |||
| "Richard" <riplin@azonic.co.nz> wrote in message news:1dbebcd1-4a79-45c8-9373-87b7502a5706@l33g2000pri.googlegroups.com... On Sep 2, 10:48 am, "Rick Smith" <ricksm...@mfi.net> wrote: > "Richard" <rip...@azonic.co.nz> wrote in message > > news:48f0337f-b7ff-4ca3-9562-dc40d3035896@q5g2000prf.googlegroups.com... > On Sep 2, 2:06 am, foodman <foodman...@aol.com> wrote: > > You appear to be very confused about how posting 'style' works. When I > (and most others) reply to a message the markers '>' are added > automatically to the original to indicate which parts are quoted from > previous messages and which parts are new responses. > > ----- > Above the line is exactly what IE6 shows for 'reply to group'. > I have seen the problem only with messages originating from > Google. It started a few months ago. > > Don't use Google or don't complain about what others do. <g> My answer is 'Don't use IE6 or any other IE'. Try using Firefox or Opera. It is more likely that Google has its pages 'right'. ----- My apologies. I should have said OE6. As much as I dislike Microsoft, I ain't going to change pieces. Might change the whole damn thing some day! |
|
#18
| |||
| |||
| foodman wrote: <snip> > You also abuse the language. You exit the performed paragraph CB with > a GO TO CC. This could result in the perform stack being exceeded > resulting in program failure. It is unlikely that you have reached > that with this program, but it is indiicative of your lack of any > defensive coding style. > >> I don't find anything wrong with that at all. And, it works >> perfectly fine and I've been doing it for years and it always works. >> So, if it works all the time why not do it? Of course, switching >> compilers COULD present problems but it is not likely in this case. <snip> It's not just a theoretical problem. About thirty years ago, I helped a programmer debug the stack overflow that was caused by branching out of a performed paragraph and looping back to the PERFORM statement. His program worked as long as the input file was small enough, and he didn't see anything wrong with his code. He was young and inexperienced. I won't repeat what I said to him (I was young and arrogant). If someone else did things in a program that you knew to be a potential source of trouble, I'm sure you'd say something. Hopefully, you'd be more tactful than I was back then. Louis |
|
#19
| |||
| |||
| On Sun, 31 Aug 2008 13:08:14 -0700 (PDT), Richard <riplin@azonic.co.nz> wrote: >Your paragraph CC does have one additional full stop. The questions >then are: does it add anything to the code ? (no, not at all) and: >does it detract or add additional work if the code were to be >changed ? My answer here is yes, If I were to change the code I might >want to start with a conditional, such as (in a theoretical general >case): "IF X1 < 100". Then I would indent the remaining code, BUT, I >would also have to examine all the code seeking out full stops. The easiest and safest way to do this is to create a new paragraph, with the conditional pointing to it. I wouldn't want to put a conditional around code without examining the code anyway. A period is a guarantee of a full-stop, even with inserted pre-compiler and copy member code. |
|
#20
| |||
| |||
| On Mon, 1 Sep 2008 14:58:09 +0000 (UTC), docdwarf@panix.com () wrote: >>I ensure that, as far as possible, each of my paragraphs is, to me, >>one 'set of instructions', one 'thought'. > >You see, Mr Plinston... it can be argued that this is a limitation of >style. A paragraph, by definition, contains 'one or more sentences'; by >requiring yourself to keep to a subset of the definition ('one sentence >only') you practise and advocate a subset of possibilities. I suppose in English, we really don't need paragraphs, periods, nor other punctuation either. But it does make it easier for the reader to group thoughts as we read. |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.