Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Math Open Source Software Science

LastCalc Is Open Sourced 103

Sanity writes "LastCalc is a cross between Google Calculator, a spreadsheet, and a powerful functional programming language, all with a robust and flexible heuristic parser. It even lets you write functions that pull in data from elsewhere on the web. It's all wrapped up in a JQuery-based user interface that does as-you-type syntax highlighting. Today, LastCalc's creator, Ian Clarke (Freenet, Revver), has announced that LastCalc will be open sourced under the GNU Affero General Public License 'to accelerate development, spread the workload, and hopefully foster a vibrant volunteer community around the project.'"
This discussion has been archived. No new comments can be posted.

LastCalc Is Open Sourced

Comments Filter:
  • by Anonymous Coward

    This is compelling but the use of Affero for the license makes onerous demands of the user. The implicit threat of a code audit is there.

    • by Sanity ( 1431 ) on Saturday March 10, 2012 @01:44PM (#39312991) Homepage Journal

      This is compelling but the use of Affero for the license makes onerous demands of the user. The implicit threat of a code audit is there.

      Can you elaborate? Which clauses specifically make onerous demands?

      • by Anonymous Coward on Saturday March 10, 2012 @01:56PM (#39313051)

        The demands are only onerous to someone who is looking for code to run on a server as a service without having to make changes available. It's a good license that accomplishes what some authors want. Personally I prefer the BSD license for code I write, because I don't demand others share their changes unless they wish to. But not all authors wish to offer that choice, as they want changes to be shared. I really don't see the BSD vs. GPL vs. LGPL vs AGLP battles so many developers get involved in. Each offers freedoms and responsibilities, a different menu with each license. The author gets to choose. And the user of the code can choose to agree and use the code, meeting the obligations required, or choose not to use it. So simple, so easy.

        I won't be using LastCalc because I don't want to bother having to deal with the required responsibilities. If I wish to develop an application with that sort of functionality, I will likely write the code myself from scratch and share it BSD-style. Choices. I like having them. I'm grateful that others offer me open source choices. I'm glad that I have such a wide palette of choices to choose as a developer and as a code user.

        • by Sanity ( 1431 )
          I'm fairly sure that merely using LastCalc (ie. being a user of the web service) doesn't impose any responsibilities.
          • by TheRaven64 ( 641858 ) on Saturday March 10, 2012 @02:29PM (#39313235) Journal
            Being a user doesn't, but hosting it does. That's the difference between the GPL and AGPL.
            • Comment removed (Score:5, Informative)

              by account_deleted ( 4530225 ) on Saturday March 10, 2012 @03:38PM (#39313739)
              Comment removed based on user account deletion
              • by bhtooefr ( 649901 ) <bhtooefr@bhtoo[ ].org ['efr' in gap]> on Saturday March 10, 2012 @05:23PM (#39314359) Homepage Journal

                AGPL is like GPL, but with the additional restriction that you must share source code to users when hosting it on a public-facing server, IIRC.

                • Re: (Score:2, Insightful)

                  by Ly4 ( 2353328 )

                  That's basically it, but note that 'source code' could be interpreted as every last line of code for your web site.

                  It's part of the murkiness in trying to describe 'modification'. Does that mean code that you've added to the original? When does that stop?

                  Limiting the definition of modification is the main point of the LGPL. But there isn't an LGPL-like variation of the Affero license. And without that, there are a number of situations where AGPL code is simply unusable, regardless of whether you ma

                  • It's part of the murkiness in trying to describe 'modification'. Does that mean code that you've added to the original?

                    Yes

                    When does that stop?

                    Never

                  • I'd lean towards no, although I'd sequester the AGPL web app in its own directory.

                    After all, a closed source OS can bundle GPL software...

                    • by Ly4 ( 2353328 )

                      Yeah, if you can isolate the AGPL code somehow, you've got a pretty good case for limiting the scope of 'modified code'.

                      It gets complicated when the AGPL code is a library that you want to link into your code. See my post below [slashdot.org] for an example of how that might play out.

              • by kestasjk ( 933987 ) * on Saturday March 10, 2012 @09:13PM (#39315569) Homepage
                Before the AGPL came out a BSD-licensed project of mine, webdiplomacy [webdiplomacy.net], was used to build a fork site.
                They apparently forgot to credit us, are closed source, and didn't even include the BSD license until they were discovered. Instead of sharing code back they're quite bitter rivals, holding their site hostage for donations and having premium accounts.

                Since the AGPL came out there are several other fork sites that have sprung up, but we all pool code changes, and they all market themselves to different niches (e.g. variants or different languages). Many of them are for-profit and host large communities, but we all share code and benefit from it.
              • Since you seem to know, can you give a brief description of the difference between AGPL, GPL

                By way of example:

                With GPL, if you want to take a web project, modify it heavily, and sell a service based on that software and its modifications, you can do that. You have no further obligations.

                Under AGPL, to do the same thing, you need to contribute changes back to the project (effectively).

              • by Ly4 ( 2353328 )

                An example of the downside of the AGPL:

                You're running a website that's a discussion forum. You find a tiff-to-jpeg library that you want to use to convert member's avatar photos, so you call the library's 'convert' method.

                Congratulations, you've just created a modification. Since the library was licensed under the AGPL, you now need to:

                • - release the code that calls the API.
                • - release the code that calls the code that calls the API.
                • - release any other code called by the code that calls the code tha
                • by dfetter ( 2035 )

                  You know someone was going to ask. It's me.

                  With what AGPL software did you run across this situation?

        • In other words, any FLOSS license is objectionable to those who wish to violate that license and make unauthorized derivatives. The AGPL and GPL, in particular, require equal treatment and reciprocity for all distributors. This is not onerous on the user or developer.

          As to not seeing a "battle", that language overstates the case but you do probably see the differences among the licenses and you have apparently made your choice. Your choice is no more or less political than someone who chooses a strongly

          • any FLOSS license is objectionable to those who wish to violate that license and make unauthorized derivatives.

            I don't know of any open source licence that restricts copying or making derivatives. Rather, distribution or in the case of Affero, interaction with users over a computer network, is not permitted if license terms are violated.

            • If licenses term are violated, I think you lose the right to use the software under any licenses. That's the basis of most license :
              "we grant you XXX under XXX conditions", meaning that if you do not fullfill the condition, you lose the right granted to you.

              People should maybe read what they agree to do, beit for a Microsoft CLUF, or a Free Software license.

              • If licenses term are violated, I think you lose the right to use the software under any licenses.

                You think wrong. You need to get out there and actually read some open source licenses.

          • by steveha ( 103154 ) on Saturday March 10, 2012 @05:07PM (#39314283) Homepage

            In other words, any FLOSS license is objectionable to those who wish to violate that license and make unauthorized derivatives.

            Wow, way to set up a straw man there.

            Okay, any FLOSS license is objectionable to those who want to violate the license. Tautology, so I'm hardly going to argue with it. But "in other words" implies that this is a reasonable paraphrase of the GP post, which this is not.

            Some FLOSS licenses are a pain even for people who don't want to violate licenses. Suppose I want to include a library in a proprietary closed-source project. With some licenses, I can just do it. With BSD + "advertising clause", I now have an obligation to put text in my program, to put text in my manual, and possibly to put text on my web site and on a product package; I also have to keep track of whether I did the text or not, and make sure it isn't accidentally removed or altered. And I'll tell you right now: non-hypothetically, I avoid any license with an "advertising clause" for the above reason. With LGPL, I explicitly have to allow my customers to reverse-engineer my code, which would be a problem with a commercial product using licensed code (some licensed code requires one to take steps to prevent reverse-engineering).

            So, a higher post in this thread claimed that the requirements of Affero GPL include an "auditing" clause, which potentially places an annoying burden on anyone who hosts the Affero GPL code. I haven't reviewed the Affero GPL so I don't know if this is correct, but I assume it is because you engaged in a straw-man attack rather than just pointing out an error.

            So with a few examples I have shown that some licenses are more burdensome than others. In fact it is only people who do care about obeying licenses who are burdened; people who are just planning to violate the licenses can violate Affero GPL as easily as any other.

            As to not seeing a "battle", that language overstates the case but you do probably see the differences among the licenses and you have apparently made your choice. Your choice is no more or less political than someone who chooses a strongly copylefted free software license such as the AGPL. Freedom of choice doesn't really explain anything. Choices are present in proprietary licenses too, thus highlighting how freedom of choice is a scam: The user's software freedoms are not respected nor is the open source development methodology present.

            I have read this paragraph three times and I am not sure what you were trying to say here. If it is important, please restate.

            "Freedom of choice doesn't explain anything"? What?

            steveha

            • by butalearner ( 1235200 ) on Saturday March 10, 2012 @08:26PM (#39315389)
              I used to prefer the various *GPL licenses until I read the OGRE development team's post [ogre3d.org] about switching from LGPL (plus a commercial license option) to MIT for version 1.7. The key paragraph for me was this:

              While not requiring modified source to be released might initially seem like giving up an important motivator to contribute code back to the community, we’ve noticed something in recent years: 99% of useful code contributions come from people who are motivated to participate in the project regardless of what the license tells them they have to do. It’s our experience that a certain percentage of the user community will always participate and contribute back, and therefore encouraging adoption via simpler licensing is likely to result in more contributions overall than coersion via complex and restrictive licensing does. In addition, people who are internally motivated to participate tend to provide much higher quality and more usable contributions than those who only do it because they are forced to.

              • by fuzzyfuzzyfungus ( 1223518 ) on Saturday March 10, 2012 @11:56PM (#39316127) Journal
                It would take a very comprehensive piece of surveying work to say whether this in fact holds across the board; but my anecdotal impression is that the utility of legally enforced compliance may vary depending on what sort of software you are dealing with.

                The area that comes to mind is embedded systems: a substantial number of assorted plastic SoC boxes running linux are user-modifiable today because their sellers were forced to provide sources under the GPL. Their firmware was often of rather low quality; but contained vital architectural details about the hardware that would otherwise have had to be inferred by comparatively arduous reverse engineering. In those situations, motivation is still better(one presumes that the manufacturers who are shipping *WRT firmwares are probably more helpful than the ones who stash a passive_agressive_GPL_compliance_blob.rar file somewhere in the dark corner of their support site); but bad code that provided enough information to port the better mainline-based 3rd party firmware was still useful.

                In something like the OGRE case, there doesn't seem to be the analogous vital information, bad code would just be bad code, making enforced contribution considerably less useful.

                I'd be interested to see if this pattern in fact holds, or if I am simply mistaken, and if there are any other categories that push strongly in one direction or the other; but I don't really have enough information to say...
                • a substantial number of assorted plastic SoC boxes running linux are user-modifiable today because their sellers were forced to provide sources under the GPL.

                  It's true. And it's pretty interesting!

                  The free software community developed a bunch of cool stuff under GPL. These manufacturers could have chosen to license some proprietary stack such as Windows CE, but they chose to use the cool GPL stuff. This cost them no money but imposed an obligation to share.

                  Then when they didn't share, some people threate

                • That's true than for different situation, there is different outcomes ( how shocking, I know ). We could also speak of the Apple case, of the fact that we have cyanogenmod also because some handset makers were forced to release source code.

                  The real question is "do you trust enough people to contribute back", and that's some negociation.

                  For example, one group could indeed see that a less stringent requirement would help some contributors ( usually, a company, but not only ) to contribute and so would be ben

            • With LGPL, I explicitly have to allow my customers to reverse-engineer my code, which would be a problem with a commercial product using licensed code (some licensed code requires one to take steps to prevent reverse-engineering).

              Attempting to prevent reverse engineering is a blatant "fuck you" to your customers. On their behalf, fuck you too.

              • by steveha ( 103154 )

                Why don't you point that f-word at any companies who write that requirement into their licenses, rather than at me?

                The specific example: I worked on a doomed project that was supposed to have DVD playback as one of its features. It turns out that when you sign the legal documents to legally license CSS, you need to agree to do all sorts of things: you must lock up the oh-so-secret CSS documentation (I never saw it myself), only full-time employees may see that oh-so-secret documentation, and... you are req

                • Do you have a problem with a company making software that can legally play DVDs?

                  A lot of people do in fact have a problem with a company making software that can legally play DVD-Video. There exist alternatives to DVD-Video that lack digital restrictions management, and they lack DRM because their designers don't care about adoption by the mainstream United States motion picture distributors. So you can say screw DVD-Video if you're already saying screw Hollywood [youtube.com].

            • by jbn-o ( 555068 )

              Not a straw man at all. I'm simultaneously grateful for the freedom non-copylefted free software conveys to me and others and I see how these licenses mean contributing to proprietors like they were charities. Copylefted free software licenses such as the GPL and AGPL don't allow proprietary derivatives. This distinction gets to the heart of the difference between the free software and open source movements: the former movement distinguishes among licenses using "copyleft" because the free software movem

          • The AGPL and GPL, in particular, require equal treatment and reciprocity for all distributors.

            One problem with GPL family licenses is that it is not clear to what extent the programs installed in a single web site form "a larger program" as opposed to an "aggregate". The GPL leaves this vague on purpose [gnu.org] so that highly paid lawyers can hash it out in court.

        • If I wish to develop an application with that sort of functionality, I will likely write the code myself from scratch and share it BSD-style.

          Do you truly believe that will be easier than linking your Affero source? I am humbled by your software development prowess and look forward to enjoying your latest creation.

    • This is compelling but the use of Affero for the license makes onerous demands of the user. The implicit threat of a code audit is there.

      What demands on the user?

    • If you contribute back changes, there is no need for code audit, as the functionality and bugs will be those you contributed. If somebody notices different functionality, and you don't want to contribute, that is VIOLATING the license, then shame on you. Problems? "write your own damn code", kthxbye.

      • Well said. I often wonder how many BSD licensed projects could benefit from a bit of contributing of downstream fixes/enhancements. That's not to say they should change the license, it just sometimes makes me wonder what if. I'm sure some do have a robust community associated with them, but I suspect there are some that simply get mooched into commercial entities... the license permits that, but the spirit of the openness of BSD is being gamed by those only interesed in lining their pockets. :-/

        I don't see

        • Why do you have delusions about the BSD world? Yes, plenty use software without contributing much back, but plenty more contribute much back.

    • This is compelling but the use of Affero for the license makes onerous demands of the user. The implicit threat of a code audit is there.

      Utter rubbish. Show me where the Affero says anything about a code audit, or any onerous at all. Are you just uninformed, or was that just a cynical troll as it seems?

  • by Anonymous Coward on Saturday March 10, 2012 @01:43PM (#39312985)

    For those who are curious what Freenet [freenetproject.org] is: It's a distributed data store, which is censorship-resistant and allows to publish information anonymously.

    • allows to publish information anonymously

      Sounds like a great place to start rumors.

    • How can it resist censorship when it is a .org? I thought the US government owned these.
      • by Sanity ( 1431 )
        It's software, the website is just one place you can obtain the software but there are others.
      • When the first TLDs were created, .org was meant to be used by non-profit organizations only. That requirement was dropped a long time ago, though some of us still like to use our .org domains for sites that at least obey it's spirit.

        Perhaps you're thinking of .gov.

    • by nurb432 ( 527695 )

      Everyone should be taught what it is, and use it. While we still can.

  • Enter:

    Bar Blah = Bar Blah
    Bar 5

    Nested (((( hilarity ensues, presumeably when it hits a hard-coded recursion bailout.

    • by Sanity ( 1431 ) on Saturday March 10, 2012 @02:01PM (#39313075) Homepage Journal
      Yeah, you're confusing it with a recursive function definition, I've been meaning to fix that. I guess I'll fire up Eclipse (it's Java, not Lisp)
    • by Sanity ( 1431 ) on Saturday March 10, 2012 @02:20PM (#39313173) Homepage Journal
      Ok, just for you I risked borking the site during a slashdotting and I implemented a quick fix. You're welcome :-)
      • Ok, just for you I risked borking the site during a slashdotting and I implemented a quick fix. You're welcome :-)

        Not that takes some serious stones!

      • Since I'm totally new to it I might be doing something wrong. The simple example I posted before doesn't spew parens anymore so you obviously did something. This doesn't work though:

        Factorial Number = if (Number <=1 ) then 1 else (Number * Factorial (Number -1))
        Factorial 5

        if ( 5 ( if ( 1 ( if ( 1 ( if ( 1 ( if ( 1 ( if ( 1 ( if ( 1 ( if (can't post due to Slashdot lameness filter, much stuff like ( 1 * <= ( 1 - 1 ) ) ) ) then 1 else then 1 else ( 5 * Factorial ( 5 - 1 ) )

        • Capital letters mean variables, evaluation is by rewriting and pattern matching.

          Seems like it's trying to substitute every mention of Factorial for "if (Number

          factorial Number = if (Number <=1 ) then 1 else (Number * factorial (Number -1))

          this works

          As well as this:

          Number! = if (Number <=1 ) then 1 else (Number * (Number -1)!)

          5!

          You can even write something like "X plus Y minus Z = X+Y-Z" and ask it for "5 plus 4 minus 9"

          • Ahhh. Makes sense sort of. I picked up on the "Arguments must be capitalized" thing, but not that functions must *not* be capitalized. It works fine for me when I don't capitalize the function.

      • Hi Developer!

        A minute ago I saw an explosion of parentheses and + signs, then they went away when I looked again.

        Was there a bug going on?

        Anyway, just for you!

        ( 11 * ( 4 Developers ) ) + ( 3 * ( 4 Developers ) ) + C mon + ( 8 * C ) + ( 3 * ( 4 Developers ) + LoveThatCity + ( 4 * ( 4 Developers ) ) + I got 4 words for ya + ( C mon * 5 ) + ( 21 * ( 4 Developers ) )

  • Similar software (Score:5, Interesting)

    by Twinbee ( 767046 ) on Saturday March 10, 2012 @02:31PM (#39313253)
    Calculators should be multi-line like this - it's so much easier to keep track of calculations. Similar to LastCalc is InstaCalc [instacalc.com] on the web and something on the Mac called Soulver [acqualia.com] which is also very impressive.

    Shameless plug: I've been working tirelessly on something like this too for almost a year, and apart from lists and a couple of other minor features, is a bit like LastCalc on steroids:

    OpalCalc [skytopia.com] (for Windows currently).

    The screenshots should give an idea of what it can do, but to name a few things: it's even more like notepad, faster, can handle times/dates, and allow words in the sum (like saying "5 oranges * £10 = £50" ).
    • Re:Similar software (Score:4, Interesting)

      by Sanity ( 1431 ) on Saturday March 10, 2012 @02:49PM (#39313377) Homepage Journal

      Soulver was actually what inspired LastCalc, but I wanted to bring it to the web, and make it programmable.

      OpalCalc looks neat, unlike Soulver it supports functions, and I'm sure it has a few features that LastCalc currently lacks.

      However LastCalc has a few features that OpalCalc lacks too, such as support for higher-level datastructures like lists and maps, pattern matching (like Haskell), and the ability to pull data from the web to use in calculations.

      So I'm not sure that I would describe OpalCalc as "LastCalc on steroids" by any stretch.

      • by Twinbee ( 767046 )
        There's a lot in the menus of OpalCalc too which isn't detailed on that page. I guess I'm a bit biased towards certain features (though yeah, lists and, 'structs' do sound very useful).

        Anyway, always good to see more competition in this much neglected niche - thanks for making LastCalc!
      • LastCalc looks absolutely amazing! I love Google's ability to do on-the-fly math with unit conversion, and it seems that LastCalc is giving us this and more! It's great.

        A question for you (or a feature request, I suppose): how do we add more information to the behind-the-scenes taxonomy? For instance, if I go "2*pi*1 nanometers in angstroms" it correctly converts from "nanometers" to "angstroms". However if I use "nm" instead, it doesn't know what I mean. Of course I can add a definition "1 nm = 10 angst
        • by Sanity ( 1431 )

          You can just type:

          X nm = (X*10) angstroms

          The plan is that people will be able to define lots of functions like this, along with much more complicated ones, and then share them. The best of them will become part of the default vocabulary.

          Please sign up for the mailing list if you'd like to keep up with developments (or, if you can code Java, perhaps you could help?!)

        • Or you could just use Frink [futureboy.us], which is so cool in so many ways that even the highlights would be too long to list here. It will deal with pretty much any unit of measure or abbreviation, and additional temporary or permanent units can be added with minimum effort.

          Silly examples:
          cubic hectofurlongs / tropicalyear -> exascotswheatlippies / plutoyear
          0.89894198315626957388

          microgreatgross gilbert crocodile -> hp
          1.8440377432226315066

    • Interesting, but I can't use it because I don't use Windows. Do you have plans to make it cross-platform (Linux/osx/win)?
    • http://www.quantrix.com/ [quantrix.com]

      If its similar to this then its very interesting, indeed.

    • Unfortunately, none of these are open source.

      Instacalc: "InstaCalc is for personal, non-commercial use only."

      OpalCalc: Has a free demo, but it costs money to get the real version.

      Soulver: Is shareware, puts a watermark on results if you don't pay for it.

      • by Twinbee ( 767046 )
        The 'demo' of opalcalc is still very functional. If you want the full version, you can pay any amount, and you'll still get it.
    • It's clear that in designing OpalCalc you were motivated by many of the same considerations that went into my design of the Extensible Expression Evaluator [bsidneysmith.com]. However, I realized that most of the important features could be gotten just by leveraging JavaScript's math library, with the result that it has a similar feature-set but is platform and (nearly) browser independent, there is nothing to download, and it is easy for users to adapt to their own purposes.
      • by Twinbee ( 767046 )
        From a quick play with EEE, I can't find that I am able to go back and adjust previous calculations. That was one of the things that made Soulver great.

        For OpalCalc, I used Jint which is a Javascript library for C#. For porting purposes though, I find that I'm having to create my own RPN routine anyway. It's not all that bad tbh (unary minus was a pain to implement though).
  • Is it wrong that my first thought when I see this is

    What's his plan to make money off all this free development help he's hoping go get?

    • by Sanity ( 1431 )

      Yeah, it kinda is. Did you ask that when Slashdot opened their codebase many years ago? How about when Reddit did it? What about Google with their various open source projects?

      You should be glad that people open source things.

    • by tbird81 ( 946205 )

      Oh no, someone who might be trying to make money! What a bad thing to do! He must be stopped immediately.

      Good on him for opening up the code base.

    • by nurb432 ( 527695 )

      And i hope he does make some money off it. He deserves it.

      • Fine for you. His stated purpose in making it open-sourced is to get free help.

        I am not an advocate in providing or asking for work that has commercial value for free.

  • by Anonymous Coward

    It even let's you write functions that pull in data from elsewhere on the web.

    Now if it could only correct your grammar.

  • Seriously? (Score:2, Insightful)

    by Anonymous Coward

    When you have R [r-project.org], you hardly need any lousy calculators like this.

  • by Anonymous Coward

    Still looking for an open source equivalent of one of the greatest calculators ever written. It was bundled with OS8. This one "shows you the math". Every kid should have it.

    It's got a really great geek story behind it too. If you don't already know this one, take a minute and enjoy.
    http://www.pacifict.com/Story/ [pacifict.com]

  • I entered "2+2" and got back http://pastebin.com/hTzSBqWG [pastebin.com]

    I think they need to work on their usability.

    (Funnily enough I couldn't enter that inline because Slashdot said "Please use fewer 'junk' characters.")

    • I'm getting the impression that it's one instance that all Slashdotters are using, and probably defining recursive functions to screw it up?

  • by steveha ( 103154 ) on Saturday March 10, 2012 @05:10PM (#39314297) Homepage

    Anyone interested in LastCalc is probably also interested in SAGE:

    http://sagemath.org/ [sagemath.org]

    Basically this is every free math tool out there, glued together using Python, with a nice web "workbook" interface. It can make plots, do symbolic math, and all sorts of stuff.

    Fun fact: someone ported TeX font rendering to JavaScript, and that is what SAGE uses to draw math equations in your browser.

    steveha

  • I modded in correctly, hence post to clear.

  • by oheso ( 898435 ) on Saturday March 10, 2012 @08:05PM (#39315315)
    Huge mud-slinging war about the license chosen and no one pointing out the thing is borked.
    • Software can be fixed if its license grants users the freedoms of free software. Therefore, users are better off with a broken free software program than a reliable proprietary program. The free software can be inspected, repaired, improved, and distributed instead of being under the thumb of the proprietor.

  • I tried

    1 furlong in feet =

    and it couldn't come up with an answer. What good is it?

  • Had I known about this, I'd probably never have written my own. (Extensible Expression Evaluator, http://bsidneysmith.com/E3/extensible_expression_evaluator.aspx [bsidneysmith.com]) Mine is less gee-whiz in some respects, but it is very accessible and intuitive, and I provide documentation to make it easy for a user to extend or customize its capabilities. It is also trivial to embed in one's own webpage, and is freely downloadable under the GNU GPL.

Children begin by loving their parents. After a time they judge them. Rarely, if ever, do they forgive them. - Oscar Wilde

Working...