« first day (1719 days earlier)      last day (1461 days later) » 

1:18 PM
Instead of the Temp table, I've created a view SatSurveyAnswers on my config table that holds those values. (Seemed like a good idea for long-term use.)
Based on this answer, I've modified my JOIN so now my query reads:
select OverallExperience, count(*)
  from SatSurveyAnswers ssa
		left outer join SatSurvey ss on ssa.Answer = ss.OverallExperience
									and ss.CollectionDate between '2019-1-1' and '2019-1-3'
group by OverallExperience
and my results are:
NULL	1
Dissatisfied	1
Satisfied	4
Very Dissatisfied	1
Very Satisfied	24
I'm not looking for NULL, I'm looking for Neither... to have a count of 0
(Yeah, gotta exclude NULL from the query results, that's the easy part)
Even weirder, though, this query:
select CollectionDate, OverallExperience, count(*)
  from SatSurvey
 where CollectionDate between '2019-1-1' and '2019-1-3'
group by CollectionDate, OverallExperience
yields 52 rows where OverallExperience is NULL:
2019-01-01 00:00:00.000	Very Satisfied	1
2019-01-02 00:00:00.000	NULL	31
2019-01-02 00:00:00.000	Satisfied	2
2019-01-02 00:00:00.000	Very Dissatisfied	1
2019-01-02 00:00:00.000	Very Satisfied	10
2019-01-03 00:00:00.000	NULL	21
2019-01-03 00:00:00.000	Dissatisfied	1
2019-01-03 00:00:00.000	Satisfied	2
2019-01-03 00:00:00.000	Very Satisfied	13
 
1:53 PM
GOT IT!!!! almost...
select ssa.Answer, count(*)
  from SatSurveyAnswers ssa
		left outer join SatSurvey ss on ssa.Answer = ss.OverallExperience
									and ss.CollectionDate between '2019-1-1' and '2019-1-3'
group by ssa.Answer
Yields:
Dissatisfied	1
Neither Satisfied nor Dissatisfied	1
Satisfied	4
Very Dissatisfied	1
Very Satisfied	24
showing me my Neither... from the SSA.Answer column. However it's showing a count of 1, when my query of the table:
select *
  from SatSurvey
 where CollectionDate between '2019-1-1' and '2019-1-3'
   and OverallExperience like 'Neither%'
yields no rows at all
 
@FreeMan If ss.OverallExperience is NULL, the join condition will not be satisfied.
(NULL = NULL) = NULL
 
That works to my benefit - I don't want information where OverallExperience is null, so I do want those excluded
 
And in boolean constructs, NULL generally gets interpreted as false.
 
I see the error of my ways, now - I was selecting the on column from the right table in my left join. selecting the column from the left table has given me the expected number of rows, but the count doesn't add up.
 
That is why only see one record for NULL, the one coming from the other table.
 
1:59 PM
FYI - filtering in a ON predicate is applied before the join
If I understood, you do want ON on ssa.Answer = ss.OverallExperience AND ss.CollectionDate BETWEEN '2019-1-1' and '2019-1-3' AND ss.OverallExpereience IS NOT NULL
 
Yes, I do need to throw in the ss.OverallExperience is not null portion.
 
the WHERE ... ss.OverallExperience IS NOT NULL will not work since that is evaluated after the join, and that's too late.
 
I've updated to this:
select ssa.Answer, count(*)
  from SatSurveyAnswers ssa
		left outer join SatSurvey ss on ssa.Answer = ss.OverallExperience
		and ss.CollectionDate between '2019-1-1' and '2019-1-3'
		and ss.OverallExperience is not null
group by ssa.Answer
and I'm still getting this:
Dissatisfied	1
Neither Satisfied nor Dissatisfied	1
Satisfied	4
Very Dissatisfied	1
Very Satisfied	24
BUT, there are no rows of data in that ss.CollectionDate range that have a Neither... response, so that one should be 0, not 1.
i.e.
select *
  from SatSurvey
 where CollectionDate between '2019-1-1' and '2019-1-3'
   and OverallExperience like 'Neither%'
yields 0 rows
 
Try:
 
:drumroll:
 
2:05 PM
select ssa.Answer, count(ss.OverallExperience)
  from SatSurveyAnswers ssa
		left outer join SatSurvey ss on ssa.Answer = ss.OverallExperience
		and ss.CollectionDate between '2019-1-1' and '2019-1-3'
		and ss.OverallExperience is not null
group by ssa.Answer
 
hmmmm.... will give that a shot.
Bingo!
If I understand...
I was getting Neither... with a count of 1 because Count(*) was returning the count of rows in the join and that included 1 row for the row being returned from SatSurveyAnswers. Correct?
 
Ayup
 
I give you the visual of a 15 watt bulb flickering to life!
Thank you!
 
John Viescas explains about that in his books, including SQL Queries for Mere Mortals.
Totally worth it
Disclaimer: I tech-reviewed it.
 
tangentially related question: how would you recommend formatting for a query like that, especially if there are multiple joins involved?
 
2:14 PM
@IvenBach Hmm, that's going a bit too deep in the weeds. The articles you linked to uses the word "provider" slightly different, bound up in the observer pattern. If you look at various "provider"s within RD's codebase, they typically have no events. They are usually managing the collection they are responsible for and hand out the data from the collection.
Note that we already have HotKeyConfigProvider and HotKeySettings. You might want to look at expanding them to include that needed information.
@FreeMan Yesterday I commented that I hate SQL formatter because none of those does it sanely so I'm a heretic.... Caveat emptor.
 
greaaaaat...
:)
 
SELECT
  ssa.Answer,
  COUNT(ss.OverallExperience)
FROM dbo.SatSurveyAnswers AS ssa
LEFT JOIN dbo.SatSurvey AS ss
  ON  ssa.Answer = ss.OverallExperience
  AND ss.CollectionDate BETWEEN '2019-1-1' AND '2019-1-3'
  AND ss.OverallExperience IS NOT NULL
GROUP BY
  ssa.Answer
;
I do like the idea of middle-justified but they are a freaking PITA to type and no editors I've seen will do this sanely so this bastardized style suffices.
 
Yeah - SSMS doesn't like the middle justified. I persist because that's how I was taught (at work, in the mid-90s, on Oracle 7.x. For the caveat emptors among the crowd)
 
did it automatically middle justify for you?
 
emacs? no
 
2:21 PM
that'd been a huge PITA
 
oh yea, we were running on HPUX using vi or emacs
it was all spaces, no tabs, no auto indent.
it was a step up from stone tablets and chisels, though.
 
I bet your thumb can easily lift 20 lbs with all the exercise it gets.
 
I use a Logitech Trackman, too!
 
isn't that a foot massager?
 
lol
 
2:25 PM
maybe one day I should write about my bastardized SQL style. TBH, I don't see very much consistency in how SQL is formatted in comparison to other programming languages
Everyone and their dogs has their quirky styles.
 
now, for the very deep (for me) dive:
select ssa.Answer, count(ss.OverallExperience)
  from SatSurveyAnswers ssa
	left outer join SatSurvey ss on ssa.Answer = ss.OverallExperience
		and ss.CollectionDate between '2019-1-1' and '2019-1-31'
		and ss.OverallExperience is not null
	inner join ClinicConfig CC ON SS.ClinicID = cc.ClinicID
		and (CC.LocationID LIKE 'WPCARM%'
			OR CC.SystocName like 'WPCARM%'
			)
group by ssa.Answer
I need to add in ClinicConfig because when this query will be actually running, I'll only have access to the CC.LocationID and/or CC.SystocName to do the matching on.
That query is only giving me 3 rows. I'm betting it's got something to do with the order of the joins...
I want all values in SSA.Answer (5 rows) , counting the number of SS.OverallExperience and limiting it to where the LocationID or SystocName are of the desired value
I'll have a fiddle...
 
are the missing 2 rows missing because it has null fro the cc.LocationID/cc.SystocName, or because they have same ssa.Answer?
 
when I add the ClinicConfig conditions, I lose the 2 answers from the result set. (i.e. ignoring the SatSurveyAnswer table)
 
oh ok
 
so yes to the first option
select distinct OverallExperience
  from SatSurvey ss
	join ClinicConfig CC ON SS.ClinicID = cc.ClinicID
		and (CC.LocationID LIKE 'WPCARM%'
			OR CC.SystocName like 'WPCARM%'
			)
		and CollectionDate between '2019-1-1' and '2019-1-31'
yields 3 rows
inconsistent formatting FTW
 
2:32 PM
At this time, I'd just simplify and use a CTE.
 
do the SatSurvey -> ClinicConfig join as the CTE then do the SatSurveyAnswers join against that?
 
WITH FilteredData AS (
  SELECT
    ss.OverallExperience
  FROM dbo.SatSurvey AS ss
  INNER JOIN dbo.ClinicConfig AS cc
    ON ss.ClinicID = cc.ClinicID
  WHERE ss.CollectionDate BETWEEN '2019-1-1' AND '2019-1-31'
    AND ss.OverallExperience IS NOT NULL
    AND (
      cc.LocationID LIKE 'WPCARM%'
      OR cc.SystocName LIKE 'WPCARM%'
    )
)
SELECT
  ssa.Answer,
  COUNT(fd.OverallExperience)
FROM dbo.SatSurveyAnswers AS ssa
LEFT JOIN FilteredData AS fd
  ON ssa.Answer = fd.OverallExperience
GROUP BY
Note that w/ CTE, the join conditions become much simpler.
no fancy hot-dogging in the ON predicate required.
 
other than the fancy hot-dogging ON predicate in the CTE, that's what I came up with!!!
 
> First try and pull from next (which has been updated) and verify if you are able to build and run all tests locally. If you need assistance in the particulars, use chat.
 
It looks like we could merge #4769 and #4784. Any reasons to not?
(In case of #4784, I would have preferred have a 3rd person looking it over)
 
2:54 PM
@this #4769 might be worth a quick scan of the merge commit. There are almost certainly some unneeded usings, but meh. Those can come out next time the files get touched.
 
That's one of reason why the PR for persistence generated so many conflicts - I had rearranged the usings in the IoC file
 
thanks again, @this! Greatly appreciated.
 
YW
 
3:12 PM
Was just telling work:
So, my family called the police on me last night. They didn't know it was me, though (and still won't believe it was).
I was out playing with my dog in my new winter boots, and the snow had a light crust on it. Given a day and some light wind, the tracks look like huge scoops in the snow. They think someone walked our property line in snowshoes, then took the snowshoes off and was walking around our house.
​The best part is, I threw the frizbee to the top of the hill, walked the property line up to retrieve it, then turned around and walked back in my tracks. So, it looks like someone just
 
Should have told them that they were visited by Bigfoot. sounds like they'd believe it more.
 
One of them actually mentioned bigfoot, LOL.
I suppose I should mention that I have a really long stride. I'm the shortest guy I know, and I have the longest stride of anyone I know.
They know I walk fast, but they don't know how long my stride is, because they aren't the observant type.
So, they think the stride is way too long for it to be me, because I'm rather short.
 
3:28 PM
you really enjoy messing with your family, don't you
 
I mess with everyone.
 
@Comintern You're referring to the last 4 merge commits, right? They seems good to me.
 
I told them it was me as soon as I figured it out.
They just won't believe me.
 
you could have just demonstrated.
 
The snow changed.
It was colder, so the crust hardened.
Now I leave a normal boot-size track.
But at that point, the snow had a thinner crust that collapsed more when I stepped on it.
 
3:31 PM
LOL. I guess best to just stick it to Bigfoot. Nobody will be catching him anytime soon.
 
So, the cops are increasing patrol in our area, and we have our outside lights on at night.
 
@this Yep. They should be good based on the fact that they, well, built and passed all the UTs but it's always worth a second look.
 
Gotcha.
also, tangentially 47 usings for Rubberduck stuff?
Be a wee bit too much.
I have a feeling that the file is screaming to be split.
 
Is that in the IoC?
 
yes
 
3:34 PM
What do you propose for splitting it?
 
OTOH, splitting up the installers also makes it hard to draw a picture.
IIRC, someone else here proprosed creating a installer for each project
and haveing the main project composing all installers together
 
Pass it to each assembly and let them configure their own stuff?
 
more or less, yes.
 
When does that need to happen in the loading timeline?
 
i'm not too sure how that works out for cross-cutting concerns.
the loading timeline wouldn't change - shouldn't.
 
3:35 PM
Could we use a combination of reflection and assembly load events?
 
what would change is that the main installer will now just call other installers.
instead of calling a bunch of private functions
I don't think that would work - we want to register them all at the startup, don't we?
Otherwise, we could get a setup where RD works except for that one odd command and nobody has idea why.
 
Don't all the assemblies load at startup?
It also wouldn't need the registrations if the target assembly isn't loaded, right?
 
I would think yes if we register them all - which is why the timeline won't change at all.
Only the composition of hte code would change, AIUI.
 
I think we could reduce the coupling there though.
I.e., in my "main" library I use this to run all of my startup code:
 
need to read up on CW to see how that would be done, though.
 
3:39 PM
public static void Run()
{
    var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).ToList();
    RegisterFieldConverters(types, typeof(IConvertedField<>));
    RegisterConverters(types);
}
That reflects all the loaded types, and then runs the appropriate setup code on the target interfaces.
 
and how would that work out for those that have stuff scattered around assemblies?
As an example, refactoring stuff are split between Rubberduck.Refactoring and Ruberduck.Core
in particular the IRefactoringViewModel (or was it IRefactoringView) is defined in the Rubberduck.Refactoring in order to allow it to be referenced by types within that aseembly, even though all of its implementation lives in the Ruberduck.Core since it's a UI concern.
 
@this It should work as long as the assemblies are referenced. Where stuff like that should go is a different question.
 
The cross-assembly configurations probably still belong in Main.
 
@Comintern The issue is more that if we split the installers, the cross-assembly configuration becomes harder to manage. I suppose we could say only main can do it but then what's the point of installers if we're still basically orchestrating it from the main?
 
Well main is the only thing that should be running an initializer.
It wouldn't so much be orchestrated as "kicked off".
Are there any registrations between assemblies that don't reference each other?
 
Good question. IDK.
But we do have a bunch of implicit or catch-all registrations, IIRC.
 
If there are, that's probably a design issue in and of itself I would think.
The implicit ones would go in the base initializer before it treks off looking for other stuff.
 
ah, no.
it has to be the last
or it will mess up with the explicit registrations
 
3:58 PM
Nothing says it needs to go first. It could just as easily go last.
Although if we distribute the responsibilities to each assembly, wouldn't you want the implicits in some sort of base class with a scope limited to the assembly?
That would allow individual assemblies to define or override their own rule based registrations.
 
AIUI, the implicits is there primarily to avoid "halp we can't find it!" errors
but Vogel / Max might correct me on that.
 
man so much stuff has been going on
i havent had a chance to catch up with yall
how have you guys been doing?
@this Interestingly enough... this is roughly (a bit more 1337 speak'ed) my co-workers online handle
 
@KySoto B1gf00t?
 
4:09 PM
Hi!
 
I felt a disturbance in the force, like if one million GitHub issues were closed all at once. Well okay, 14. Still.
5
 
IKR? I love that when it happens.
BTW, we just went below 720 issues. :-D
 
only need to merge one more PR and that should close a few more.
only if someone else will look at it...
 
@this Was #2780 reopened because it's still broken, or because it was closed in error? #4717 should have fixed it.
 
I think I closed that one prematurely (4717 hadn't merged back then)
 
Yay! Down to a single page of assigned issues again.
 
:+1:
 
Hoping to get into single digits by the end of the week.
 
and then... that'll be pretty much v2.4.1? or are we skipping to 2.5? TBH IDK about 2.5.0, feels like we're under-using the "revision" number. Or abusing the "build" number. Something.
 
4:14 PM
^
 
Verisoning is hard.
I said 2.5 because UI has changed a lot, and that matters a lot to users.
Case in point 3 or 4 recent "issues" about CE search.
I agree that functionality-wise it's a incremental gain; the biggest gain is mainly in disocverability & usability.
 
I think 2.4.1 is reasonable. 2.5 sounds like there's a new refactoring in town ;-)
 
I think you forgot the scare quotes around "issues".
 
yeah, I should warm up my EM PR....
 
@MathieuGuindon I wonder what the average rate of issues closed/sec are on github...
 
4:16 PM
@Comintern T, FTFY.
@MathieuGuindon Ok, let's compromise. 2.4.5, okay?
:D
(seriously, I'm fine w/ 2.4.1)
 
Lets start counting down, and then release Avalon when it gets to zero.
 
2.5 rounds up to 3.0, that might be what's scaring me
 
I can see new versions like 2.39999999, 2.399999998
 
4:18 PM
there is a really relevant/funny github issues about version numbers like that...
 
is there still a way to send a custom message to our "status bar"? I'd be using it for block-autocompletion
> Press TAB to expand Do...Loop block
 
If not, it should be fairly easy to add one.
 
> Enter {condition} expression for If...End If block
that kind of thing
 
LOL, now my dad submitted the tracks as a prayer request to church, and it got broadcast to everyone.
 
Which reminds me, I need to take another look at #4315.
 
4:21 PM
@MathieuGuindon hmm i wonder if we can overload the quickinfo
 
I'm starting to really hate context menus and tooltips.
2
 
that may require some touching of VBE's private bits, though.
 
o_O
 
because that would be more closer to what R# does with its tab completion, which is much more intuitive
status bar works but it's too far away.
 
4:23 PM
R#?
 
esp. if you're weird and hide RD's context toolbar
 
Issue 5323: RD crash when I type Do
 
microsoft's implementation of the R programming langauge.
@Hosch250 Ohh.
 
that would be R.NET
 
4:24 PM
R is an open source implementation of S, but then Microsoft was like we need a closed source version of the open source version of the closed software.
 
@Mathieu Is rubberduck your job?
 
LOL I wish
 
oh, i just thought the support was monetary, and maybe someone was getting paid to do it.
 
4:26 PM
oh they're giving man power...
 
if I could pay for life with happy thoughts, RD would definitely be my job though
 
[rubberduck-vba/Rubberduck] build for commit c0ffaab6 on next: AppVeyor build succeeded
 
@Dair no, they're giving RD core contributors a free OSS license of ReSharper Ultimate
 
Oh ok.
 
every year I renew the license and specify how many licenses I need, and they've been approving the requests since 2015
 
4:28 PM
that's nice.
 
very!
the only condition is that you use the JB products to work on the OSS project they're licensed for
i.e. Rubberduck
 
this looks super cool: jetbrains.com/mps/?fromMenu
 
WTH? That first screenshot looks like somebody said, "you know, VS needs to be more like Excel".
 
@Comintern I don't see any problem with this lol.
 
@Comintern LOL
 
4:34 PM
honestly, having done some work with pandas now, I would like to see more excel like interaction in their notebooks...
 
Excel is the only software we will ever need.
Painting? It can!
 
i probably have some of the weirdest programming opinions ever, I probably shouldn't be giving advice on a codereview site lmao.
 
Database? It can!
Word processing? It can!
Math? It can!
Document layout and publishing? It can!
 
It's awesome at math, TBH.
 
Programming? It can!
 
4:35 PM
You forgot Tetris.
 
2048.
 
Game? It can!
 
And super-mario :)
And flappy bird
 
Operating System? TBD!
 
Farcry
 
4:36 PM
Social Media? It can!
@Comintern LOL
 
@this LOL, that chat system always makes me laugh.
 
Excel is like the beginner way to learning functional reactive programming.
Excel is probably not a bad way to learn some less mainstream programming language ideas.
 
oh, you should try surfing web on Excel sometime.
 
i really do want a pandas that is more like excel.
or an excel that is more supped up to be like pandas lol.
 
Maybe they named it after an endangered species for a reason.
 
4:42 PM
@this from the ticker feed, seems pretty dang common if you ask me
 
@Comintern My honest opinion is that APL and J are far better languages (from a grammatical perspective) than Python for data analysis.
So if J and APL replace Pandas I'm fine with this.
 
how you type APL?
 
@this With an APL keyboard.
 
With great difficulty.
 
or just use J
 
4:44 PM
Does Python have R bindings?
 
@Comintern Yes. r2py
 
I might need to play around with that.
 
I don't like R either.
Actually, I really dislike R lmao.
 
I would have named it pyR8.
 
i'm very opinionated and jaded beyond my years.
 
4:47 PM
@Dair I was figuring there'd be a overlay or something
it'd get annoying to have to switch keyboards
 
@this You could probably do this with OSX by holding the Alt Key or whatever...
 
hmm, not sure all APL symbols are there.
 
You're also not limited to having one keyboard attached. Just say'n.
 
@Comintern Still doesn't change the fact you would have to make the mental switch though.
 
I'm pretty sure APL doesn't make much use of ñ or ™ or ®.
 
4:48 PM
i think that is what this is getting at.
 
^
also the physical positoning
 
yeah just use J
 
were I to program in APL, I'd elect for an overlay, at least until I can touch type APL.
(if touch typing APL is even a thing....)
 
I'd probably get a set of dual symbol'd keycaps.
 
@Comintern Sharpie is probably cheaper.
 
4:53 PM
:cringes:
 
APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums -Dijkstra
 
They're surprisingly cheap - looks like around $35 for a full set without the spacebar.
 
I'm convinced Dijkstra hates every language except haskell
 
@Hosch250 Sorta
 
4:56 PM
Fixed stupid query parameters exceeding the chat message length
 
LOL
 
I guess you get to make music w/ APL, too.
 
Chopin low key APL programmer
 
> Haskell, though not perfect, is of a quality that is several orders of magnitude higher than Java, which is a mess (and needed an extensive advertizing campaign and aggressive salesmanship for its commercial acceptance). It is bad enough that, on the whole, industry accepts designs of well-identified lousiness as “de facto” standards. Personally I think that the University should keep the healthier alternatives alive.
 
@Dair LOL.
Wasn't someone saying something about functional languages' weird symbols the other day?
APL takes that to a whole new level.
 
4:58 PM
@Comintern I agree with this 100% unironically.
 

« first day (1719 days earlier)      last day (1461 days later) »