@Mingan Over-achieving proctologist, actually. I switched careers, that's why I haven't been around these past couple years.
Posts made by mikeTheLiar
-
RE: Quotes Out of Context
-
RE: Today in Blakeyrat is always several years behind in every tech trend news...
@JBert said in Today in Blakeyrat is always several years behind in every tech trend news...:
Ben snapped
shocked_kirk.gif
I can't help but feel a small amount of responsibility for his inevitable yet tragic fall from grace. Ben, if you're reading this, I'm sorry, I was a far bigger dick to you than was ever warranted.
-
RE: Today in Blakeyrat is always several years behind in every tech trend news...
@loopback0 this morning, for the first time in literal years, I got the urge to stick my head in and see what was going on around here. Some things never change.
-
RE: WTDWTF gets murdered by aliens and it's all Ben Lubar's fault!
@ben_lubar the fuck is this and why am I tagged
Oh wait. Ben L. Never mind, answered my own question.
-
RE: Certificate error on thedailywtf.com
@asdf said in Certificate error on thedailywtf.com:
Or did @boomzilla abandon this alt?
I think that might be the most insulting thing anyone's ever said about me.
-
RE: Reply notifications automatically marked as read
@Maciejasjmj you think you can break me? I'm the Kimmy Schmidt of internet trolling.
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@cartman82 said in The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years:
What? Why both?
Microservices, baby! We're using node for the more simple CRUD services and Python for the more complicated financial calculations because reasons.
Also, isn't Microsoft now all buddy-buddy with Docker and containers, for their Azure crap? Maybe you can satiate your boss by doing it in their new NET Core thing?
Only in Windows Server 2016 which we don't have. As far as .NET core goes, according to the architect it's "too young". And Mono is "too old".
Filed under: just fucking shoot me
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@pydsigner I think this is entirely possible.
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@lucas1 Actual quote from my team lead: "we can acquire a budget down the road"
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@asdf said in The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years:
You're assuming that this is what's actually executed by the CPU.
I have been learning Python for a grand total of about three weeks so I have no idea what I'm talking about. This explanation comes from one of the Pluralsight videos on Python that I watched (Python Fundamentals I believe).
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@masonwheeler said in The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years:
You concatenated one list with a second list that contains a single item. This operation creates a new list, rather than altering the other one in-place
Close, but no. The first is a list of lists. Lists are mutable. When you multiply the list, you multiply the references so appending to the first reference appends to all references. The second is a list of tuples. Tuples are immutable so appending to the first reference create and entirely new reference that points to a new tuple. The rest of the tuples remain unchanged.
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@asdf said in The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years:
Why is that a problem? They behave exactly the same as in any other language because of that.
i = 5 i += 1
- Create object reference to 5
- Create object reference to 1
- Perform addition
- Store addition in object reference to 6
- Destroy references to 5 and 1
That seems insanely inefficient for such a common operation. Big picture, not that big a deal because we're talking about bytes worth of memory but seriously, why?
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
Oh and here's a Python 2 vs Python 3 story for you. We were writing abstract classes. Someone accidentally followed a Python 2 tutorial for writing abstract classes. This is totally valid Python 3 code and runs just fine but it completely ignores the "abstract" part of writing abstract classes. See http://stackoverflow.com/q/39029701/1015495
-
RE: The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
@asdf said in The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years:
What are your problems with it?
Explain this shit (yes I know what's going on here but it's extremely non-intuitive)
C:\Users\MIKE>python Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> l = [[1,2],[3,4]] >>> l *= 3 >>> l [[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]] >>> l[0].append(1e9) >>> l [[1, 2, 1000000000.0], [3, 4], [1, 2, 1000000000.0], [3, 4], [1, 2, 1000000000.0], [3, 4]] >>> t = [(1,2),(3,4)] >>> t *= 3 >>> t [(1, 2), (3, 4), (1, 2), (3, 4), (1, 2), (3, 4)] >>> t[0] += (1e9,) >>> t [(1, 2, 1000000000.0), (3, 4), (1, 2), (3, 4), (1, 2), (3, 4)]
Also,
int
s are immutable? What fucking genius made that decision?
Edit: of and the whole "let's use exceptions as control flow" thing. Reaching the end of an enumerator raises an exception to tell you it's done.
-
The Story So Far, or what the hell has mikeTheLiar Been Up to for the Past Two Years
Strap
onin, this is gonna be a long one.A quick recap for those of you who have joined in my absence:
My last job was a disaster area. Working for the company in and of itself wasn't bad, but like many small companies, no one actually knew what the hell it was I did and I ended getting tasked with a lot of responsibilities that I really wasn't qualified for. I was "the computer guy" and eventually was expected to fix anything that blinked, beeped, or even had a button on it (I posted about this occasionally way back in the days of Community Server blowing goats). I eventually left for my current job.
Which is a hell of a lot better. There is an actual dev team with IT being separate, we use version control properly, we have code reviews, we (mostly) do Agile with sprints and retrospectives and story pointing and all of that fun stuff. It's still a small-ish company, but it's bigger than my last one and has overall been a much better experience.
I was hired to work on the web team, which was re-writing the website in the latest and greatest buzzword laden stack you could imagine. TypeScript, Knockout, MVC, MVVM, Less, you name it, if it was hot we threw it in there. A few months after I was hired, there was an open call for anyone who wanted to get cross-trained on our internal, desktop software. I thought to myself, "sure, getting cross trained is almost never a bad thing and I can learn some new stuff on the way" so I signed up.
It was exactly like internal legacy software most of us have worked on at some point or another. The UI was Winforms. The DAL was half Entity Framework and half some custom ORM a contractor had created years ago. One of the internal namespaces had a typo that had never been fixed. There was one specific form that had a code-behind file of something like 12k LOC and was backed by a stored procedure to match. Data imports were handled by SSIS. There was even a dusty, dark little corner of the application that was written in VB6 that no one liked to talk about but it was stable and, as such, wasn't going anywhere.
So for a few sprints I bounced back and forth between the hot new sexiness and the old tired dog. Until business decided that the company needed more developers working on the legacy system, and I had already started training on it so I was going to stay there indefinitely. I was not consulted on this decision. But whatever, it's still okay. Not the best thing in the world but I can work with it. We worked in a re-factoring/updating story every sprint and slowly but surely we're improving things. We're replacing Winforms components with WPF, we're removing cruft that never should have existed, taking business logic that for some reason was in stored procedures and moving it to a more logical location. It was good. It wasn't great because we still had to support a lot of ugly shit, but things were definitely getting better.
Budget time roles around and we start sketching out a plan for the next year. We're going to get rid of this massive Winforms component that contains way too much logic and drives something like 50% of the UI. We're going to start re-designing smaller forms in WPF using MVVM. We're going to cull a lot of deadwood sps that never should've existed in the first place. We're going to put a stake in the heart of VB6. We're finally going to fix that fucking namespace typo. There was a light at the end of the tunnel. We research various 3rd party libraries that we're going to need to buy/get subscriptions for and submit the budget for our team.
(There's an entire product line disaster in here that I'm going to just skip for the sake of brevity (lol yeah right). I might write another post about it later)
Three months later, the company decides that it wants to make part of the internal app available on the website. "I mean, if we've got software over here that does one thing, and software over here that does other things, why can't we just link them up?" Well SSAE-16 audits for one. Also because the in-house app relies on AD authentication, and about a 1,000 other reasons why.
So we scrap the existing plan to slowly upgrade-in-place. What the business wants and when they want it is just something that is not possible with the resources that we have available. We eventually compromise and crap out an API (entirely separate from the legacy application) that does what they want (duplicating code and logic from the existing app). This is sufficient...for now. But they want us to keep building it up, and want to expand this on-line offering significantly. So we abandon our plan for the year. The legacy desktop application will still exist, and it will still serve the purpose of being our main in-house workhorse, and we will still support it, but the majority of our energy will be directed towards porting at least some of it to the web. Well this is not ideal but it could be worse.
Spoilers: it got worse.
Business wants more web features. We need to expand the shitty API that we threw together to meet an impossible deadline. We start brainstorming.
Then disaster hits. (This is probably the time to note - we are a pure MS/.NET shop. Hosted in IIS, db is MS SQL Server. Website is written in TypeScript and C#, etc etc).
The CTO goes on a trip to Rackspace. I don't know exactly what happened (I assume a brain slug attached itself or possibly some sort of severe concussion), but when he came back he issued an edict - "NO MORE WINDOWS DEVELOPMENT". Something to do with Docker and containers.
So now we need to keep our original unrealistic plan but do it in an entirely new tech stack. That no one on our team knows. Yay.
Around this time is where we're told that we are not getting any additional budget beyond what we requested originally, Also yay. Here's a condensed version what I had to say about it in our work chat:
So to recap - we have roughly 9 sprints to rewrite large parts of the application, on a new stack, with a new architecture (including watertight or least minimally leaky devops), with 3 people, and 0 budget. Not to be overly pessimistic but are alarm bells ringing for anyone else?
So that brings us roughly to here. I'm spending most of my time learning Node/Express and Python (which, by the way, seems to be an exceptionally bad language for all of the praise it gets) and re-implementing existing code in new languages, while operating under an insane deadline and creating a ton of technical debt. Dear person who has to maintain this code: I am truly sorry.
-
RE: Men's room double fail
@Tsaukpaetra I don't fucking know, I'm just here to troll
-
RE: Men's room double fail
@Weng said in Men's room double fail:
First, I'm pretty sure the angles don't allow any penis exposure. The mirror stops too far from the wall there's a hand dryer.
You're just not trying hard enough.
Second, it's a gym locker room. Incidental sightings of Wenis McPenis in a mirror are the least of it.
Lenny_face.jpg
Third, ftm trans can totally be pregnant.
Fuck, an actually reasonable point.
Forth, Planet Fitness is not somewhat upscale.
lol iunno I'm a fat nerd
-
RE: Another attempt at social engineering
I find it amusing that the OP asks for this thread to be closed after 24 hours of inactivity, yet it was inactive for two years without being closed.
-
RE: Another attempt at social engineering
@error https://s-media-cache-ak0.pinimg.com/736x/bc/d7/40/bcd7405ece73227455738798ea816ad5.jpg
Edit: dammit this piece of shit won't even onebox?
-
RE: Somebody give me the rundown on this place
@error Morbs and I seemed to develop a begrudging respect. I disagreed with him on just about everything, but he was/is a very smart cookie, and very...creative shall we say.
-
RE: Another attempt at social engineering
@error can confirm, that is me. Wanna buy some skooma?
Edit: although the typo in that macro is pretty horrendous.
-
RE: Another attempt at social engineering
@fbmac you weren't even around when we had the same avatar for a while. Ask one of the other old timers to spin that yarn for you sometime.
-
RE: Somebody give me the rundown on this place
@asdf nope, nope, and nope. Pretty sure it's been over a year. Where is the lounge anyway? Or do I not yet have access to that super secret club?
Filed under: don't care to belong to any club that would have me as a member
-
RE: I was going to tell you about my latest project
@anonymous234 but is it rainbows?
-
RE: Somebody give me the rundown on this place
@asdf I approve of your signature. Does this forum support signature guy?
-
RE: I was going to tell you about my latest project
@Tsaukpaetra oh god. I turned on desktop mode and it's even worse. How do I escape this Sisyphean hellhole?
-
RE: Another attempt at social engineering
@Tsaukpaetra nope, just you. Fuckin' weirdo.
-
RE: Somebody give me the rundown on this place
@error nah, I was looking for an old post of mine and realized I hadn't logged in in forever. Also got a nice little story to tell but as noted this site is worse than CS on mobile
-
RE: Somebody give me the rundown on this place
@Fox said in Somebody give me the rundown on this place:
@mikeTheLiar Hey, you're the person with the Conchita Wurst avatar.
Talk about riffraff.
-
I was going to tell you about my latest project
... But this mobile interface is goddamn terrible. Why on earth might want to be able to see more than one line at a time? I can't imagine that might at all be useful. And by all means, please let this formatting bar take up 1/3 of my available screen real estate, by all means.
Goddamn. This place is the worst, this forum software is the worst, and you tdwtf are the worst of the worst.
-
Somebody give me the rundown on this place
I swear, I step out for like five minutes and you guys go and change all sorts of shit. Discourse is gone, the migration has happened, you're probably letting in all sorts of riffraff, who knows what else.
What have I missed? New memes? New members? Drama? Shared knowledge? Is morbs still traumatising people? Is Nagesh still weird? Is Lorne still in exile? Is Blakey still crazy and impossible to communicate with? Details people, I need details!
At least the mobile interface for this forum software is garbage, so we've got that going for us.
Edit: how could I forget the most important question!? Is @ben_lubar still raping cats?
-
RE: Latest StackOverfart Brainflow: Attribute all the things
Lorne, I'm sorry to do this in front of everybody here, but... I'm late. I mean, I'm late. Late late.
-
RE: Latest StackOverfart Brainflow: Attribute all the things
Sorry I'm late, have I just got a few minutes?
-
RE: What's wrong with my username? Why doesn't discourse like me?
There have never been, nor will there ever be, underscores in my username whenever possible.
Filed under: Give me camel case or give me death, [Pascal case works too I guess] (#)
-
RE: Modern Office Architecture
Also, fucking Christ, did mobile Discourse somehow get even slower!?!
-
RE: Let's play spot the WTFs!
So your plan was to basically plagiarize my post but be even more pedantic. I don't know who you are but I like you and hate you at the same time.
-
RE: Let's play spot the WTFs!
Fewer lines is what I meant. I suppose
quality != succinctness
-
RE: Let's play spot the WTFs!
And you go to hell for finding a better solution than what I took 10 seconds to come up with.
-
RE: Let's play spot the WTFs!
I'll be goddamned. Not sure what the EntityFunctions namespace is but still good to know (this snippet was from a project targeting 3.5 so they get a pass on that but still thanks for the info).
Filed under: worst of the worst
-
Let's play spot the WTFs!
Found this C# gem and just had to share it. Go ahead, see what you can find.
public static class Statistics { public static double StDev(IEnumerable<double> values) { List<double> valueList = new List<double>(); foreach (double value in values) { valueList.Add(value); } return StDev(valueList); } public static double StDev(List<double> values) { // Calculate average double sum = 0; foreach (double value in values) { sum += value; } double average = sum / values.Count; // Calculate standard deviation double stdevSum = 0; foreach (double value in values) { stdevSum += Math.Pow((value - average), 2); } return Math.Sqrt(stdevSum / (values.Count - 1)); } }
So, let's see. Discounting the fact that a
List<Double>
is anIEnumerable<Double>
for now, what else?- Manually copying every element of an IEnumerable into a List?
values.ToList()
, done. - Manually calculating the sum of a List?
values.Sum()
, done. - Manually calculating the average? Yep, you guessed,
values.Average()
and done.
This entire class could be written as:
public static double StDev(IEnumerable<double> values) { double sum = values.Sum(); double average = values.Average(); // Calculate standard deviation double stdevSum = 0; foreach (double value in values) { stdevSum += Math.Pow((value - average), 2); } return Math.Sqrt(stdevSum / (values.Count() - 1)); }
And that's just off the top of my head. I didn't even double check the StdDev calculation, I'm just assuming that it's wrong at this point (it's specifically supposed to mimic Excel).
PS I am unaware of any built-in .NET function that will calculate the standard deviation of a collection but if anyone knows feel free to tell me about it.
Filed under: (Strongly) Typed but not read, overloaded
- Manually copying every element of an IEnumerable into a List?