Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Urit
Oct 22, 2010

Rurutia posted:

$70/hr isn't going to be more than 100k-120k from MS because MS will give you bonuses on top of that salary and because you won't have to pay payroll taxes on your W-2.

I meant 70/hr W2 through the contract agency. It's not a 1099. But good call on the bonuses too.

Adbot
ADBOT LOVES YOU

Rurutia
Jun 11, 2009

Urit posted:

I meant 70/hr W2 through the contract agency. It's not a 1099. But good call on the bonuses too.

Oh interesting.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Urit posted:

That is an interesting point and I already sort of have that problem - I keep getting hired for Windows admin jobs because I don't have the same quality of Linux skills. I suppose it would be fairly difficult to find jobs on another stack given enough time doing C#. I don't mind C# particularly, but I would like to pry myself out of the MS stack eventually. Go just doesn't have the same market penetration though.

I think I've gotten a pretty good handle on the goonsensus in that it's more worth it to stop worrying about the ~imminent offer~ and think about career aspirations. Thanks!

C# is no longer bound to Windows. Microsoft open sourced the entire .Net framework, and recently bought Xamarin, so C# will soon be a very viable language on Windows, Linux, Android and iOS.

FamDav
Mar 29, 2008

Urit posted:

I meant 70/hr W2 through the contract agency. It's not a 1099. But good call on the bonuses too.

the math on 70 an hour for the full 9 month period at 40-50 hours per week is 100-125k. i believe that your annual income (not just base pay) from working at microsoft will match or exceed that, and at the extreme worst will not be sufficiently lower to be a lifestyle change.

i would say this regardless of the money situation, but you should really think about what you want to get out of the job for your career. here's things that I would personally consider:

* personal wellbeing/happiness
* growth opportunities
* mentorship
* resume-worthwhile work

and i would try and pick the option that best fit my priorities for the particular job

Urit
Oct 22, 2010

Skandranon posted:

C# is no longer bound to Windows. Microsoft open sourced the entire .Net framework, and recently bought Xamarin, so C# will soon be a very viable language on Windows, Linux, Android and iOS.

I've been working on converting an API I wrote in C# to DNX Core or whatever it's called now (It was up to 3 renames last time I checked) and it is extremely hard to use. They've renamed all of the stuff or just randomly removed portions of APIs all over the place. The conversion story is painful at least - maybe it works fine if you're writing new software, but renaming stuff like System.Http to Microsoft.Http and moving classes into different namespaces with no decent mapping between them is a nightmare to use, especially if you want to also support "legacy" (.NET 4.5) as well as the new stuff. #IFDEFs all over the place like it's going out of style.

FamDav posted:

the math on 70 an hour for the full 9 month period at 40-50 hours per week is 100-125k. i believe that your annual income (not just base pay) from working at microsoft will match or exceed that, and at the extreme worst will not be sufficiently lower to be a lifestyle change.

It's more "make $n in 9 months vs make $n in 12 months so then I can be a lazy bum for 3 months" but the rest of your points are valid too.

Urit fucked around with this message at 02:18 on Feb 28, 2016

Progressive JPEG
Feb 19, 2003

Skandranon posted:

C# is no longer bound to Windows. Microsoft open sourced the entire .Net framework, and recently bought Xamarin, so C# will soon be a very viable language on Windows, Linux, Android and iOS.

At this point it doesn't matter. For better or worse Java owns this now and it's Oracle's market to lose

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Progressive JPEG posted:

At this point it doesn't matter. For better or worse Java owns this now and it's Oracle's market to lose

It's been Java's market to lose for awhile now, and they've done little to keep it.

Doctor w-rw-rw-
Jun 24, 2008

Skandranon posted:

It's been Java's market to lose for awhile now, and they've done little to keep it.

On a second derivative they've already lost it; IMO.

Drastic Actions
Apr 7, 2009

FUCK YOU!
GET PUMPED!
Nap Ghost

Skandranon posted:

C# is no longer bound to Windows. Microsoft open sourced the entire .Net framework, and recently bought Xamarin, so C# will soon be a very viable language on Windows, Linux, Android and iOS.

It's already viable on Linux and OSX thanks to Mono, which has been around for years.

What's funny about that now is, now with Xamarin being apart of Microsoft, it's now under the the MS umbrella, as it were. We still control it, but it will be interesting to see how it evolves.

B-Nasty
May 25, 2005

With the whole .NET/Java thing...My company (all MS stack) was recently bought by a company that does all Java/Oracle stack. I've been a .NET dev for over a decade, though I have done smaller projects in Java here and there. Quite frankly, I don't want to pick up Java again, because I see it as a dying language.

The Hacker News crowd would consider .NET or Java to be stodgy, enterprisy languages, but ironically, Microsoft has made great strides recently to keep .NET relevant and popular. Java, not so much.

MrMoo
Sep 14, 2000

Skandranon posted:

C# is no longer bound to Windows. Microsoft open sourced the entire .Net framework, and recently bought Xamarin, so C# will soon be a very viable language on Windows, Linux, Android and iOS.

.NET has pretty weak open source support so many of the libraries to do anything interesting are commercial. Microsoft is opening things up to try and encourage others to help out to compete.

It's a bit weird if your company has a fetish for Microsoft but doesn't want to pay other companies for .NET libraries.

mrmcd
Feb 22, 2003

Pictured: The only good cop (a fictional one).

Java isn't a dying language, it's just not the sexy young thing for hipster.js that everyone on HN drools over. There is still tons and tons of software at lots of companies written in Java, plus literally everything that runs on an Android device.

withoutclass
Nov 6, 2007

Resist the siren call of rhinocerosness

College Slice
Also there's Kotlin now (which friggin owns) to freshen up Java's lack of competitiveness with C#.

B-Nasty
May 25, 2005

mrmcd posted:

Java isn't a dying language, it's just not the sexy young thing for hipster.js that everyone on HN drools over. There is still tons and tons of software at lots of companies written in Java, plus literally everything that runs on an Android device.

While this is very true, I think at some point one has to make some consideration of a language's current relevance. That is, who's starting new, large applications using it, and how many newly-minted (Jr.) programmers are interested in using it. I'm not so much talking about the raw language, but all the tooling, patterns, config, libraries, and that's-the-way-it's-done knowledge that comes along with knowing a platform.

Work, or legacy maintenance work at least, may not completely dry up for decades, but it will be much harder to find interesting, greenfield projects. Of course, I'm not recommending the other extreme of picking the 2 week old, language de jour, because most of them won't even hit the level of saturation to be considered relevant to long term discussion at all.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
Java is one of the most popular languages in the startup community. This is without even getting into JVM languages like Scala, or Android development.



e: anybody working with content data, i.e. for recommendation engines, trending topics, etc. is working with machine learning and natural language processing. Java's where all that tooling is.

Vulture Culture fucked around with this message at 17:15 on Feb 28, 2016

sunaurus
Feb 13, 2012

Oh great, another bookah.
Java 8 is pretty great - the only major problem I have with it is that Ivy/Maven/Gradle feel terrible and slow and confusing (compared to npm or cargo, for example). I've been working as a Java dev for a year now and I don't get the feeling that Java is dying at all.
As for junior devs being interested in Java, I'm currently in my second year of uni, and I can't even count the times people in my classes have asked if they can use Java for simple assignments (instead of Python) just because they want to have more experience with Java. I don't know if it's because they feel like they need to be good at Java to get a job, or if it's just interest in the language in general, but I don't think we'll be running out of junior java devs any time soon.

FamDav
Mar 29, 2008

B-Nasty posted:

While this is very true, I think at some point one has to make some consideration of a language's current relevance. That is, who's starting new, large applications using it, and how many newly-minted (Jr.) programmers are interested in using it. I'm not so much talking about the raw language, but all the tooling, patterns, config, libraries, and that's-the-way-it's-done knowledge that comes along with knowing a platform.

Work, or legacy maintenance work at least, may not completely dry up for decades, but it will be much harder to find interesting, greenfield projects. Of course, I'm not recommending the other extreme of picking the 2 week old, language de jour, because most of them won't even hit the level of saturation to be considered relevant to long term discussion at all.

notable companies which have a significant portion of their codebase in a JVM language

* google
* amazon
* twitter
* netflix
* cognitect
* databricks
* lightbend (formerly typesafe)
* linkedin
* facebook
* square
* stripe

all of them are doing greenfield work and all of them are using Java or a JVM language as part of their toolset. they span about 2 decades of founding dates, and several of them didn't even start out using the JVM.

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

Illegal Move posted:

Java 8 is pretty great - the only major problem I have with it is that Ivy/Maven/Gradle feel terrible and slow and confusing (compared to npm or cargo, for example). I've been working as a Java dev for a year now and I don't get the feeling that Java is dying at all.
As for junior devs being interested in Java, I'm currently in my second year of uni, and I can't even count the times people in my classes have asked if they can use Java for simple assignments (instead of Python) just because they want to have more experience with Java. I don't know if it's because they feel like they need to be good at Java to get a job, or if it's just interest in the language in general, but I don't think we'll be running out of junior java devs any time soon.

That's crazy. Maven is amazing and is basically what every other toolchain for any language should aspire to be.

Doctor w-rw-rw-
Jun 24, 2008

Blinkz0rz posted:

That's crazy. Maven is amazing and is basically what every other toolchain for any language should aspire to be.

Its plumbing yes, its porcelain very no.

metztli
Mar 19, 2006
Which lead to the obvious photoshop, making me suspect that their ad agencies or creative types must be aware of what goes on at SA

Urit posted:

That is why it is a hard decision.

Remote is awesome but is the rest worth it? That is my dilemma. Oh well, the recruiter replied and said they could make a fast decision after my interview so I should be able to try for both.

Remote is great, BUT you are also trying to become a software developer; IMO, being able to work with people, in the same space, and sharing that general office context is HUGE for improving your skills. I know you have some skills already, but will you get to work with other developers who will help you improve them in the remote gig?

B-Nasty
May 25, 2005

Fair enough on the responses about my ignorance of Java popularity. I think I need to spend less time reading about the most recent fart/dating/social apps...I haven't heard anything much about Java for a while.

That said, I generally found it pretty pleasant the last time I used it. I really liked Maven, Guice, IntelliJ, and really disliked many aspects of Spring, Eclipse, and not knowing "Java best-option" when presented with 10 libraries that do similar things.

Urit
Oct 22, 2010

metztli posted:

Remote is great, BUT you are also trying to become a software developer; IMO, being able to work with people, in the same space, and sharing that general office context is HUGE for improving your skills. I know you have some skills already, but will you get to work with other developers who will help you improve them in the remote gig?

That's exactly it - I certainly would just be doing more of the same sort of ops-automation type of work I have been at the contract job. The MS job is almost certainly better for my ~career~ and actual software dev skills given that I'm trying to get out of the Ops world somewhat.

I think I've got it under control now though - I'll just put off the contract offer until I get a yea or nay from MS and then dump the contract if I get a MS offer. Otherwise, making money is pretty nice.

AskYourself
May 23, 2005
Donut is for Homer as Asking yourself is to ...
I'm curious to know what's bothering you about ops jobs. I'm finding myself setting up build and deployment automation for .net apps and so far I like the challenge. Probably if I spent 100% of my time maintaining such system it would get tedious.

By the way, I've never posted here but I've read the thread for a while. Been doing lots of web back-end like Apis, ecom, system integration, and all that. I've been doing and following front-end too since before there were div. I don't really like the non-standardised toolchain of the current javascript ecosystem.

Urit
Oct 22, 2010

AskYourself posted:

I'm curious to know what's bothering you about ops jobs. I'm finding myself setting up build and deployment automation for .net apps and so far I like the challenge. Probably if I spent 100% of my time maintaining such system it would get tedious.

By the way, I've never posted here but I've read the thread for a while. Been doing lots of web back-end like Apis, ecom, system integration, and all that. I've been doing and following front-end too since before there were div. I don't really like the non-standardised toolchain of the current javascript ecosystem.

I've been doing it for 9 years and every single "ops" or "devops" job description has blurred into one. Ops has become as easy as pouring piss out of a boot with the instructions written on the heel with all the tools and services out there, but I am tired of stringing together a wobbling pile of the same 8-12 tools again and again for companies that want to pretend that their app is a special snowflake that is totally different than every other company's app, plus the traditional "Systems Administrator" role is basically going away at all but the largest, oldest, most unchanging companies, and it's being replaced by software developers that know how systems work and build tools to automate everything.

Urit fucked around with this message at 04:00 on Feb 29, 2016

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

AskYourself posted:

I'm curious to know what's bothering you about ops jobs. I'm finding myself setting up build and deployment automation for .net apps and so far I like the challenge. Probably if I spent 100% of my time maintaining such system it would get tedious.
Even release engineering as a job is software oriented at least, but operations is much more about using software that exists oftentimes than writing anything new. I'll tell you what my idea of ops jobs and what most of the Fortune 500 means and why everyone even bothering to come into this thread probably should avoid it anywhere along their career trajectory unless it's at an actual tech company:

1. On-call rotation. Not much extra pay for it. And you still are expected to do your 9-to-5 core hours. And things break constantly in poorly run IT organizations. There is no consideration for the fact that people might get burned out getting calls at 3 am repeatedly during a bad week typically I've found.
2. Almost everything developers dislike to do besides sit in a text editor get thrown to operations across a political wall and communication is cut off. Even in so-called "devops" positions in the F500 almost none besides tech companies integrate developers with their stuff in production to much degree of readily available feedback.
3. Staring at a long support / problem queue of "I don't know why I can't connect to my application" and troubleshooting your entire goddamn enterprise network across literally the world because your network admins have historically said "oh, that's not my problem, I just layout the network" and their idea of monitoring is purely segregated into determining whether switches, firewalls, routers, etc. are not dropping packets beyond a certain rate.
4. ITIL. Everything. If you say the word Service Catalog and think your piece of poo poo "service" you paper released without any testing besides "it compiles and demos great!" should be part of one, I will slice your throat, poo poo down it, and post your head to your Facebook account using your phone. Next person that dares to say that "you just did ITIL wrong" as the root cause of service availability holding a single 9 or 8 will get a pink elephant dropped on their face.
5. People without bachelors or even high school diplomas most of the time as your underlings or peers (no offense to non-degree holders, hold the pitchforks). I'm talking about people that would have gone into construction or perhaps plumbing except they heard "those computer jobs pay better" and really just do enough to not appear incompetent or are able to survive for 15+ years because they got employer-paid vendor certs and live in places where there's just no better people (lots of flyover country). IT work is totally blue collar work in almost every Fortune 500 where working harder is oftentimes valued more than working smarter.
6. IT operations is overhead within a cost center, so on an hierarchy of corporate needs it's somewhere around parking lots at offices - it exists because "it has to" and its budget is repeatedly reduced as the enterprise has to answer to Wall Street. There is little value in the company achieving even 4 nines of availability internally nor do the executives care about the efficiencies and other cost improvements possible by investing into something like automation for IT. Support is a typical place to reduce cost and outsource because your organization has (with completely BS analysis) that you would save so much by just outsourcing internal support to a "best value" vendor. Nevermind trying to figure out any form of self-service or to analyze then fix problems people complain about... just pay someone else to continue to mismanage it.
7. Manager-centric "engineering" practices with software designed to support wealthy (but all in decline) Taylorist organizations. I was at a company before where I'd write a Remedy ticket integration (read: grabbed a WSDL after 5 e-mails of "how much does it cost?" generated a JAR file, and made a CLI app over a lunch break) and it got charged to the customer at about $80k. Because every single possible point of automation was treated as something to be managed rather than engineered due to its impact, costs explode for even the simplest of IT automation. So resistance to automation grows culturally because nobody likes bureaucracy for nothing that improves their life, so life as an engineer gets worse and people ignore the problem. This is how DHS could pay $6 Bn+ for a firewall that doesn't even do what some open source application does - the belief that big impact requires big dollars and big management.

At my customer, the average application takes over 180 days to deploy - just deployment. They still buy servers, allocate space on a datacenter floor tile (because they actually had a DC floor collapse long ago after they tried to cut corners on construction, now every part needs to be weighed among other overhead that's not relevant anymore) and take 45 days to provision everything. For an AWS application (I have literally seen a Wordpress blog that costs $50k / mo in internal charge-backs that warrants a whole entire new AWS account), you get an entire AWS account created for you that takes about 100 days of the cloud team manually creating tickets and writing firewall exception tables in Excel that take another 10 days to get through to a change window. Amazing part? Despite the worst application architectures with SPOFs everywhere in AWS I've ever seen (much of it due to "design by insecurity team, not functionality") the average application has increased in availability an additional 20% at least and it's 50% cheaper.

None of this is relevant to any competent IT organization because of one simple reason - good organizations realize that human time is extremely valuable and work tirelessly to improve processes without needing to write 20+ pages of documents for the dumbest things (that is, again, a waste of talent that chases away intelligent people that like to be productive). Some things are just endemic to large companies, but even small companies can treat people like they're just numbers getting in the way of someone's bonus checks and stock grants.

Kyth
Jun 7, 2011

Professional windmill tilter
All the debate over Java is missing the forest for the trees. If you're doing it right as a developer, you're going to work in many languages over the decades. "Which language I'm currently working in" is only important if you really really hate that language for some weird reason.

Many (big, good, tech) companies do not care if you know the language of the team you're going into, as long as you can write good code in some language and design well.

Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

Kyth posted:

If you're doing it right as a developer, you're going to work in many languages over the decades.
This is exactly right. I started out doing C++ and low-level assembly but then I needed to learn C# and Javascript and currently I'm mostly doing Java. You'll learn, you'll adapt. The language doesn't really matter, if anything it's the language's ecosystem but, much more importantly, company culture that will determine your job satisfaction.

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

Kyth posted:

All the debate over Java is missing the forest for the trees. If you're doing it right as a developer, you're going to work in many languages over the decades. "Which language I'm currently working in" is only important if you really really hate that language for some weird reason.

Many (big, good, tech) companies do not care if you know the language of the team you're going into, as long as you can write good code in some language and design well.

This is an absolute truth if you have any desire for career growth. If you pigeonhole yourself as a Java developer or a .NET developer you're going to be paid for that single skill.

Developers who go far and advance into architecture and management positions are the ones that know how to think in terms of the overall vision of a project where the decision as to the language it's written in is entirely secondary or even tertiary.

feedmegin
Jul 30, 2008

mrmcd posted:

Java isn't a dying language, it's just not the sexy young thing for hipster.js that everyone on HN drools over. There is still tons and tons of software at lots of companies written in Java, plus literally everything that runs on an Android device.

Except most of the games and anything written in Qt or the various other cross-platform frameworks, of course. The NDK is a thing.

Hughlander
May 11, 2005

feedmegin posted:

Except most of the games and anything written in Qt or the various other cross-platform frameworks, of course. The NDK is a thing.

Which still have fairly large java code paths for anything that touches the native SDKs. Like In App Purchase flows, Notifications, etc...

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
Speaking of which, what kinda things would you ask someone who has worked primarily with Java for 2 years in an interview? I've pretty much reviewed all the data structure poo poo I don't recall from school (red black trees/balancing was something I had to go back and review but the rest of the stuff I remember).

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
After 2 years of Java on a resume I'd refrain from asking framework questions that are typical in most Big Java shops (Spring, Struts, EJBs, you know the drill). However, I'd ask for a comparison of different data structures in Java like when you would use IdentityHashMap v. LinkedHashMap (and ask you to write some code to show me how you'd use it letting you see the method definition since I don't care if you memorized the Javadoc). If I was a Big Java shop, I'd unfortunately have to ask you about which build systems you've used and what you like or don't like about them as well as some basic framework questions and concepts like "do you know what dependency injection is?" and "what does AOP mean and how could it change the interaction between these toy classes I'm showing you?" These are things I'd like even a junior engineer to know now because Java code in the wild is way more complex in big companies than the novel stuff you might see in cutesy simple frameworks and libraries that encourage somewhat decent design - you need to know how to deal with byzantine code, that's just life. I also ask this sort of stuff to gauge if you're a primadonna that thinks you're "too good" to ever need to know this stuff and you'll be just fine with nothing bloated ever in the Java world.

If I thought you were better than average I'd start asking questions like weak v. ephemeral v. strong references, use cases of constructions with volatile v. just using an atomic data structure, and to compare different garbage collectors and across different JVM versions.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

necrobobsledder posted:

After 2 years of Java on a resume I'd refrain from asking framework questions that are typical in most Big Java shops (Spring, Struts, EJBs, you know the drill). However, I'd ask for a comparison of different data structures in Java like etc. etc. etc...

Man, I've been working in Java for the past two years and I don't know any of the stuff you just mentioned (beyond a bit about our build system, but honestly I don't have to touch it all that often). :stare: I guess our project is a little small to be truly enterprisey; we're only around 90kLOC.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
It's a double-question to ask it - I'm not asking if you already know it as much as "here's a Javadoc description of the class, does this map to any kind of abstract problem you're familiar with in your experience?" You can use a LinkedHashMap as an LRU cache (it's literally in the Javadoc that I'd provide you), for example, because of the nice property of reliable ordering but an IdentityHashMap is better suited for a more unbounded cache because (as stated in the Javadoc) this violates Map's traditional convention of using object-equality compared to reference equality. If you take a long time to read through the doc and come up with a good answer that's based around what's there, it shows you may not be familiar with the library itself and that you'll take the time to think a bit. If you skim it and come up with a couple use cases, you're either pretty smart and read (well) fast or you've already used it before and needed a reminder. If you already know it, it means I should be asking you the more difficult questions for sure because this is a triviality of memorization for you rather than a test of your abilities.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
I've used Java (albeit mainly for Android dev) for over 4 years now professionally and I've never even heard of those hash map types before.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
You can spend years reading through the Java standard library and never come across this stuff. I landed the first score on the board for one of those ACM collegiate programming competitions back in the day because someone put down a radix conversion question without realizing there's half a dozen ways in Java to do that without ever having to write any actual logic.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
:kickinradix:

I've heard of half those things and use some of them regularly (Guice, atomic references blah blah), but I have no idea what AOP is and another one I'm too lazy to scroll up to look at because I'm phone posting.

mrmcd
Feb 22, 2003

Pictured: The only good cop (a fictional one).

The difference between soft and weak references was one of my favorite interview questions.

Then again I'm terrible at doing interviews.

Paolomania
Apr 26, 2006

AOP questions = "pssst, kid, don't work here we run Byzantine spaghetti systems."

Adbot
ADBOT LOVES YOU

AskYourself
May 23, 2005
Donut is for Homer as Asking yourself is to ...
To me AOP == Managing cross cutting concern, usually with interception and inversion of control.

It doesn't have to be spaghetti, in fact in C# so far when I use this, which is pretty much always nowadays , it clean up the tidy up the code base a lot.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply