Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. The Software Architecture Demon

The Software Architecture Demon

Scheduled Pinned Locked Moved The Lounge
csssharepointdesignsysadminoop
62 Posts 25 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H honey the codewitch

    I used to be a software architect. I think that's part of why I employ such a jaundiced eye when it comes to layered service architectures and sweeping design patterns just because and drowning in UML because reasons. It's true that when you're dealing with million dollar implementations, multiple deployment points, and disparate teams a lot of this abstraction can be useful. But how common is that in most people's development? I know it is for some of you, sure, but I think you're in the minority, or at least projects like these are in the minority. Not everyone is Plum Creek or Alcoa. It seems like the field of software architecture has taken on a life of its own and coupled with CPU cores to waste and infinite scaling out it has - and i'll just say it - poisoned software development. Just because you know how to do something doesn't mean you should. Most software application architectures do not survive contact with clients plus the erosion of time. They have a shelf life of significantly less than 10 years without some major portion of them being retooled. There are exceptions to this, but designing every solution to be that exception is a waste of time, money and creative energy. I'm also going to come out and say it makes things harder to maintain. When you're working with 20 different classes and interfaces where 3 would do it just increases the learning curve. There are definitely diminishing returns when it comes to decoupling software from itself, and you run into the cost/benefit wall pretty fast. It can only take you so far. It's best not to overdo it. Every fancy little UML entity you drop into your project increases the cognitive load of your project for other developers. Personally, I wouldn't care about that, because "cognitive load" is fun as far as I'm concerned but most people just want to do their work and go home, not spend odd hours studying someone else's work just so they can use it. Keep It Simple Stupid. Whatever happened to that? :sigh:

    Real programmers use butterflies

    Mircea NeacsuM Offline
    Mircea NeacsuM Offline
    Mircea Neacsu
    wrote on last edited by
    #26

    Like everything in life and art, there are two faces to this coin: at one extreme you have spaghetti code and at the other you have massive libraries of hundreds of classes and structures (I'm looking at you LEDA and BOOST). The golden path is in the middle. Our job is to find that middle path. I heard someone saying that engineering is the art of finding when one is approximately equal to two and when one is much smaller than two. I let you with these two quotes: “Everything should be made as simple as possible, but no simpler.” - A. Einstein "You should be glad that bridge fell down - I was planning to build thirteen more to the same design" - Remark attributed to I. K. Brunel, addressing the Directors of the Great Western Railway.

    Mircea

    H 1 Reply Last reply
    0
    • O obermd

      This is just as true for "frameworks". When was the last time a generic framework actually did what you wanted it to do?

      H Offline
      H Offline
      honey the codewitch
      wrote on last edited by
      #27

      Yes. Although I'll grudgingly accept that for its size, Microsoft did a fair job with the .NET BCL

      Real programmers use butterflies

      1 Reply Last reply
      0
      • Mircea NeacsuM Mircea Neacsu

        Like everything in life and art, there are two faces to this coin: at one extreme you have spaghetti code and at the other you have massive libraries of hundreds of classes and structures (I'm looking at you LEDA and BOOST). The golden path is in the middle. Our job is to find that middle path. I heard someone saying that engineering is the art of finding when one is approximately equal to two and when one is much smaller than two. I let you with these two quotes: “Everything should be made as simple as possible, but no simpler.” - A. Einstein "You should be glad that bridge fell down - I was planning to build thirteen more to the same design" - Remark attributed to I. K. Brunel, addressing the Directors of the Great Western Railway.

        Mircea

        H Offline
        H Offline
        honey the codewitch
        wrote on last edited by
        #28

        Mircea Neacsu wrote:

        “Everything should be made as simple as possible, but no simpler.” - A. Einstein

        I *almost* dropped that quote in my rant, and I bring it up all the time when it comes to software. :laugh:

        Mircea Neacsu wrote:

        "You should be glad that bridge fell down - I was planning to build thirteen more to the same design" - Remark attributed to I. K. Brunel, addressing the Directors of the Great Western Railway.

        Haha it's funny because it's true!

        Real programmers use butterflies

        1 Reply Last reply
        0
        • N Niemand25

          Bosses are ... well ... bosses :) Not the worst case, I met a head of DBA's in one international company who never heard of normal forms. Discussion between her and reporting team was marvellous. She couldn't understand why reporting team are so much displeased about xml in fields. It is so easy to parse, isn't it? :cool:

          H Offline
          H Offline
          honey the codewitch
          wrote on last edited by
          #29

          Hahaha whoops. Although in fairness, I *became* a DBA out of necessity because a lot of smaller shops I worked for in the late 90s and early aughts had nobody and no clue. I can respect having to learn on the job, but the key is to *learn* on the job.

          Real programmers use butterflies

          1 Reply Last reply
          0
          • O obermd

            This is just as true for "frameworks". When was the last time a generic framework actually did what you wanted it to do?

            Greg UtasG Offline
            Greg UtasG Offline
            Greg Utas
            wrote on last edited by
            #30

            Well, a framework isn't supposed to do anything!

            Robust Services Core | Software Techniques for Lemmings | Articles
            The fox knows many things, but the hedgehog knows one big thing.

            <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
            <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

            1 Reply Last reply
            0
            • H honey the codewitch

              It sounds like you've got a good handle on things. :)

              Real programmers use butterflies

              Sander RosselS Offline
              Sander RosselS Offline
              Sander Rossel
              wrote on last edited by
              #31

              If only :sigh: Been hurting my brains over some stupid .NET Framework Azure AD Authentication thing all day and I've got nothing. I even asked a question in Q&A about it, first one since 2018 :omg:

              Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

              H 1 Reply Last reply
              0
              • Sander RosselS Sander Rossel

                If only :sigh: Been hurting my brains over some stupid .NET Framework Azure AD Authentication thing all day and I've got nothing. I even asked a question in Q&A about it, first one since 2018 :omg:

                Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                H Offline
                H Offline
                honey the codewitch
                wrote on last edited by
                #32

                That's just coding. Just last night I had to 1. Determine why a driver was randomly dropping characters from strings printed to a screen, but only if they were small text. Turns out the driver wasn't tested very well with my hardware and i had to modify the timing of it. 2. Determine why text wasn't displaying after i put a solid white background on it. I have to draw it twice. I still don't know why. See also, dodgy driver. 3. Implement my own HTTP chunked encoding scheme just so I could bulk upload some JSON from a machine with a total of just over 500k of ram. Worse, I had to timestamp my uploads with a valid date time but my machine has no clock. I was ... creative. #1 and #2 sent me to some forums to post questions for which I got no answers. #3 simply took hours. That's just development, so when I say you've got a good handle on things I still think you do. Your machine isn't on fire, you're not going bald from stress, and you're not seriously contemplating a career in pizza delivery if you make it out of this project alive. You're fine. :thumbsup:

                Real programmers use butterflies

                Greg UtasG Sander RosselS 2 Replies Last reply
                0
                • H honey the codewitch

                  That's just coding. Just last night I had to 1. Determine why a driver was randomly dropping characters from strings printed to a screen, but only if they were small text. Turns out the driver wasn't tested very well with my hardware and i had to modify the timing of it. 2. Determine why text wasn't displaying after i put a solid white background on it. I have to draw it twice. I still don't know why. See also, dodgy driver. 3. Implement my own HTTP chunked encoding scheme just so I could bulk upload some JSON from a machine with a total of just over 500k of ram. Worse, I had to timestamp my uploads with a valid date time but my machine has no clock. I was ... creative. #1 and #2 sent me to some forums to post questions for which I got no answers. #3 simply took hours. That's just development, so when I say you've got a good handle on things I still think you do. Your machine isn't on fire, you're not going bald from stress, and you're not seriously contemplating a career in pizza delivery if you make it out of this project alive. You're fine. :thumbsup:

                  Real programmers use butterflies

                  Greg UtasG Offline
                  Greg UtasG Offline
                  Greg Utas
                  wrote on last edited by
                  #33

                  I went from pizza delivery to coding! And there were times I wished I'd never left! :laugh:

                  Robust Services Core | Software Techniques for Lemmings | Articles
                  The fox knows many things, but the hedgehog knows one big thing.

                  <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
                  <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

                  1 Reply Last reply
                  0
                  • H honey the codewitch

                    That's just coding. Just last night I had to 1. Determine why a driver was randomly dropping characters from strings printed to a screen, but only if they were small text. Turns out the driver wasn't tested very well with my hardware and i had to modify the timing of it. 2. Determine why text wasn't displaying after i put a solid white background on it. I have to draw it twice. I still don't know why. See also, dodgy driver. 3. Implement my own HTTP chunked encoding scheme just so I could bulk upload some JSON from a machine with a total of just over 500k of ram. Worse, I had to timestamp my uploads with a valid date time but my machine has no clock. I was ... creative. #1 and #2 sent me to some forums to post questions for which I got no answers. #3 simply took hours. That's just development, so when I say you've got a good handle on things I still think you do. Your machine isn't on fire, you're not going bald from stress, and you're not seriously contemplating a career in pizza delivery if you make it out of this project alive. You're fine. :thumbsup:

                    Real programmers use butterflies

                    Sander RosselS Offline
                    Sander RosselS Offline
                    Sander Rossel
                    wrote on last edited by
                    #34

                    honey the codewitch wrote:

                    Your machine isn't on fire, you're not going bald from stress, and you're not seriously contemplating a career in pizza delivery

                    How do you know all these things? Are you watching me!? :~ There's actually quite some stuff stressing me out at the moment, that stupid API being one of them :laugh: What I fear most at the moment is that when Christmas comes I can't take my well-deserved two weeks off because my work isn't done yet :omg:

                    Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                    H 1 Reply Last reply
                    0
                    • Sander RosselS Sander Rossel

                      honey the codewitch wrote:

                      Your machine isn't on fire, you're not going bald from stress, and you're not seriously contemplating a career in pizza delivery

                      How do you know all these things? Are you watching me!? :~ There's actually quite some stuff stressing me out at the moment, that stupid API being one of them :laugh: What I fear most at the moment is that when Christmas comes I can't take my well-deserved two weeks off because my work isn't done yet :omg:

                      Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                      H Offline
                      H Offline
                      honey the codewitch
                      wrote on last edited by
                      #35

                      You've downloaded my code before, silly. So of course I am always watching you. Through your computer. What the hell did you think most of those "parsers" actually were anyway? Why else would I write 20 incomprehensible but nevertheless popular projects for people to download? Spyware, my good man. The money is great. By the way, reset your passwords.

                      Real programmers use butterflies

                      Sander RosselS 1 Reply Last reply
                      0
                      • H honey the codewitch

                        I used to be a software architect. I think that's part of why I employ such a jaundiced eye when it comes to layered service architectures and sweeping design patterns just because and drowning in UML because reasons. It's true that when you're dealing with million dollar implementations, multiple deployment points, and disparate teams a lot of this abstraction can be useful. But how common is that in most people's development? I know it is for some of you, sure, but I think you're in the minority, or at least projects like these are in the minority. Not everyone is Plum Creek or Alcoa. It seems like the field of software architecture has taken on a life of its own and coupled with CPU cores to waste and infinite scaling out it has - and i'll just say it - poisoned software development. Just because you know how to do something doesn't mean you should. Most software application architectures do not survive contact with clients plus the erosion of time. They have a shelf life of significantly less than 10 years without some major portion of them being retooled. There are exceptions to this, but designing every solution to be that exception is a waste of time, money and creative energy. I'm also going to come out and say it makes things harder to maintain. When you're working with 20 different classes and interfaces where 3 would do it just increases the learning curve. There are definitely diminishing returns when it comes to decoupling software from itself, and you run into the cost/benefit wall pretty fast. It can only take you so far. It's best not to overdo it. Every fancy little UML entity you drop into your project increases the cognitive load of your project for other developers. Personally, I wouldn't care about that, because "cognitive load" is fun as far as I'm concerned but most people just want to do their work and go home, not spend odd hours studying someone else's work just so they can use it. Keep It Simple Stupid. Whatever happened to that? :sigh:

                        Real programmers use butterflies

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #36

                        My first recollection of "software life" was 5 years. The "architecture" issue I see is most are into "piece" work; without caring / knowing / wondering how it fits into a bigger picture. The million (code) monkeys and a million keyboards and eventually we get some useful algorithms / patterns.

                        It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it. ― Confucian Analects: Rules of Confucius about his food

                        1 Reply Last reply
                        0
                        • H honey the codewitch

                          You've downloaded my code before, silly. So of course I am always watching you. Through your computer. What the hell did you think most of those "parsers" actually were anyway? Why else would I write 20 incomprehensible but nevertheless popular projects for people to download? Spyware, my good man. The money is great. By the way, reset your passwords.

                          Real programmers use butterflies

                          Sander RosselS Offline
                          Sander RosselS Offline
                          Sander Rossel
                          wrote on last edited by
                          #37

                          :laugh: I know for a fact that's not true. The horrors you'd have seen on my computer would've left you blind and unable to type that message :D Many a ransomware criminals have paid me to let them unlock my computer ;p On the other hand, you use braceless if-statements and I can't think of more unspeakable abominations than that :~

                          Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                          H 1 Reply Last reply
                          0
                          • Sander RosselS Sander Rossel

                            :laugh: I know for a fact that's not true. The horrors you'd have seen on my computer would've left you blind and unable to type that message :D Many a ransomware criminals have paid me to let them unlock my computer ;p On the other hand, you use braceless if-statements and I can't think of more unspeakable abominations than that :~

                            Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                            H Offline
                            H Offline
                            honey the codewitch
                            wrote on last edited by
                            #38

                            I have spent some time spelunking the depths of coding depravity it's true, but just look at these gems I've found! my precious! Your computer is tame. I don't even see a dodgy and outdated copy of GRUB in your bootloader code. Where is your sense of adventure?

                            Real programmers use butterflies

                            Sander RosselS 1 Reply Last reply
                            0
                            • H honey the codewitch

                              I have spent some time spelunking the depths of coding depravity it's true, but just look at these gems I've found! my precious! Your computer is tame. I don't even see a dodgy and outdated copy of GRUB in your bootloader code. Where is your sense of adventure?

                              Real programmers use butterflies

                              Sander RosselS Offline
                              Sander RosselS Offline
                              Sander Rossel
                              wrote on last edited by
                              #39

                              Ok, you've convinced me, changing my passwords now :laugh:

                              Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                              1 Reply Last reply
                              0
                              • H honey the codewitch

                                I used to be a software architect. I think that's part of why I employ such a jaundiced eye when it comes to layered service architectures and sweeping design patterns just because and drowning in UML because reasons. It's true that when you're dealing with million dollar implementations, multiple deployment points, and disparate teams a lot of this abstraction can be useful. But how common is that in most people's development? I know it is for some of you, sure, but I think you're in the minority, or at least projects like these are in the minority. Not everyone is Plum Creek or Alcoa. It seems like the field of software architecture has taken on a life of its own and coupled with CPU cores to waste and infinite scaling out it has - and i'll just say it - poisoned software development. Just because you know how to do something doesn't mean you should. Most software application architectures do not survive contact with clients plus the erosion of time. They have a shelf life of significantly less than 10 years without some major portion of them being retooled. There are exceptions to this, but designing every solution to be that exception is a waste of time, money and creative energy. I'm also going to come out and say it makes things harder to maintain. When you're working with 20 different classes and interfaces where 3 would do it just increases the learning curve. There are definitely diminishing returns when it comes to decoupling software from itself, and you run into the cost/benefit wall pretty fast. It can only take you so far. It's best not to overdo it. Every fancy little UML entity you drop into your project increases the cognitive load of your project for other developers. Personally, I wouldn't care about that, because "cognitive load" is fun as far as I'm concerned but most people just want to do their work and go home, not spend odd hours studying someone else's work just so they can use it. Keep It Simple Stupid. Whatever happened to that? :sigh:

                                Real programmers use butterflies

                                K Offline
                                K Offline
                                kmoorevs
                                wrote on last edited by
                                #40

                                OK, I had to look up UML...heard of it long ago and found it useless. :laugh: I'd rather keep these diagrams in my head...much easier to update/maintain! IMHO, a good database design tells the whole story. Most abstraction can be handled in views/procs. (talking lob apps here) BTW, in 20+ years I've never seen a specifications document/plan. The closest thing might be an occasional UI mockup in a screen grab or worse, scribbled on a notepad. (or even worse, a screen grab of an image of scribbling on a notepad! :| )

                                "Go forth into the source" - Neal Morse "Hope is contagious"

                                H S 2 Replies Last reply
                                0
                                • K kmoorevs

                                  OK, I had to look up UML...heard of it long ago and found it useless. :laugh: I'd rather keep these diagrams in my head...much easier to update/maintain! IMHO, a good database design tells the whole story. Most abstraction can be handled in views/procs. (talking lob apps here) BTW, in 20+ years I've never seen a specifications document/plan. The closest thing might be an occasional UI mockup in a screen grab or worse, scribbled on a notepad. (or even worse, a screen grab of an image of scribbling on a notepad! :| )

                                  "Go forth into the source" - Neal Morse "Hope is contagious"

                                  H Offline
                                  H Offline
                                  honey the codewitch
                                  wrote on last edited by
                                  #41

                                  Yeah it's a little different when you're not doing business apps. IoT devices, developer tools, that sort of thing, you don't have a database to go by necessarily. Although I'd also argue that any validation those procedures are doing in them should be done on the front end as well to avoid bad/spurious network traffic. If they are well designed, hopefully they add to the story. :)

                                  Real programmers use butterflies

                                  1 Reply Last reply
                                  0
                                  • H honey the codewitch

                                    I used to be a software architect. I think that's part of why I employ such a jaundiced eye when it comes to layered service architectures and sweeping design patterns just because and drowning in UML because reasons. It's true that when you're dealing with million dollar implementations, multiple deployment points, and disparate teams a lot of this abstraction can be useful. But how common is that in most people's development? I know it is for some of you, sure, but I think you're in the minority, or at least projects like these are in the minority. Not everyone is Plum Creek or Alcoa. It seems like the field of software architecture has taken on a life of its own and coupled with CPU cores to waste and infinite scaling out it has - and i'll just say it - poisoned software development. Just because you know how to do something doesn't mean you should. Most software application architectures do not survive contact with clients plus the erosion of time. They have a shelf life of significantly less than 10 years without some major portion of them being retooled. There are exceptions to this, but designing every solution to be that exception is a waste of time, money and creative energy. I'm also going to come out and say it makes things harder to maintain. When you're working with 20 different classes and interfaces where 3 would do it just increases the learning curve. There are definitely diminishing returns when it comes to decoupling software from itself, and you run into the cost/benefit wall pretty fast. It can only take you so far. It's best not to overdo it. Every fancy little UML entity you drop into your project increases the cognitive load of your project for other developers. Personally, I wouldn't care about that, because "cognitive load" is fun as far as I'm concerned but most people just want to do their work and go home, not spend odd hours studying someone else's work just so they can use it. Keep It Simple Stupid. Whatever happened to that? :sigh:

                                    Real programmers use butterflies

                                    M Offline
                                    M Offline
                                    Marc Clifton
                                    wrote on last edited by
                                    #42

                                    Quote:

                                    decoupling software from itself

                                    I like that phrase! Though I wish, when it comes to people, some people were more decoupled from themselves, and others less decoupled. :laugh:

                                    Latest Articles:
                                    Thread Safe Quantized Temporal Frame Ring Buffer

                                    D 1 Reply Last reply
                                    0
                                    • M Marc Clifton

                                      Quote:

                                      decoupling software from itself

                                      I like that phrase! Though I wish, when it comes to people, some people were more decoupled from themselves, and others less decoupled. :laugh:

                                      Latest Articles:
                                      Thread Safe Quantized Temporal Frame Ring Buffer

                                      D Offline
                                      D Offline
                                      dandy72
                                      wrote on last edited by
                                      #43

                                      Upvoted, just because of the endless interpretation possibilities.

                                      1 Reply Last reply
                                      0
                                      • H honey the codewitch

                                        Yes to this. Glad I have some support here. Everyone but you and Sander are all sideeying me now. :laugh:

                                        Real programmers use butterflies

                                        enhzflepE Offline
                                        enhzflepE Offline
                                        enhzflep
                                        wrote on last edited by
                                        #44

                                        honey the codewitch wrote:

                                        Everyone but you and Sander are all sideeying me now.

                                        Nah we're not. I've thought similarly for a while now. Sticky-tape solutions are appropriate in all sorts of places. Slapping a newsletter on the fridge? Sticky-tape. Putting up a car-port? Bolts. How much of the world does it Slapping a newsletter on the fridge? Measure the thickness of the door's steel, weigh the newsletter, calculate load-bearing ability of door skin, add reinforcement to handle larger photos in the future, drill and countersink holes, punch holes in corner of picture, use supplied allen-key to fasten bolts that secure the pic.

                                        H 1 Reply Last reply
                                        0
                                        • R Rage

                                          honey the codewitch wrote:

                                          not spend odd hours studying someone else's work just so they can use it

                                          Part of the architecture is to structure the system, or the code, exactly so that people who want to do this can do it, and are not bothered with higher level topics.

                                          honey the codewitch wrote:

                                          I'm also going to come out and say it makes things harder to maintain

                                          No. Over-engineered code or undocumented code is hard to maintain, whether it has been created based on highly sophisticated design patterns and architecture principles or "by hand", but you cannot say that using architecture design always makes code harder to maintain. 15 year old multi threaded spaghetti code resulting from a 15-year-old-company-time one guy developer show is hard to maintain. Always. Actually, UML or SysML are tools, and as every tool, they should be used adequately to fulfil a certain purpose to make sense. I agree that using a tool just because you can is not a good strategy, but on the other side and like any tool, they can come very handy if well used.

                                          Do not escape reality : improve reality !

                                          M Offline
                                          M Offline
                                          Mateusz Jakub
                                          wrote on last edited by
                                          #45

                                          Thing is I hardly ever see development task that you could do and "not be bothered with higher level topics". From my experience, you have vertical integration in the system from fronted to database and to implement a feature that is useful for a user you have to have insights in all those layers. Of course there are some local fixes, but usually you affect some other part anyway. For most of other stuff you have to have insight what user will do, what business wants to achieve, what is general direction of a system architecture.

                                          R 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups