These are chat archives for exceptionless/Discuss

1st
Mar 2016
Blake Niemyjski
@niemyjski
Mar 01 2016 00:06
Missed that
Maybe I should look into finishing the one time job stuff
Get key needs the context
Eric J. Smith
@ejsmith
Mar 01 2016 00:07
don’t know what you mean
Blake Niemyjski
@niemyjski
Mar 01 2016 00:09
There's a one time job
Eric J. Smith
@ejsmith
Mar 01 2016 00:11
yes, that probably needs a good amount of work still.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:23
should be super simple
Eric J. Smith
@ejsmith
Mar 01 2016 00:24
it needs to persist that info some place.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:24
I just looked at the code and converted two of the jobs to the new thing in 30 seconds
cachelockprovider
Eric J. Smith
@ejsmith
Mar 01 2016 00:24
can do it in cache, but that doesn’t live forever… but maybe it lives love enough.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:24
already have access to work item data
and you pass that to GetKey()
cache lives as long as required?
Eric J. Smith
@ejsmith
Mar 01 2016 00:25
probably
it should live for a really long time, but it’s not guaranteed.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:27
    public override Task<ILock> GetWorkItemLockAsync(object workItem, CancellationToken cancellationToken = new CancellationToken()) {
        var cacheKey = $"{nameof(RemoveOrganizationWorkItemHandler)}:{((RemoveOrganizationWorkItem)workItem).OrganizationId}";
        return _lockProvider.AcquireAsync(cacheKey, TimeSpan.FromMinutes(15), new CancellationToken(true));
    }
Eric J. Smith
@ejsmith
Mar 01 2016 00:28
I’m not sure how the 1 time work item handler would be different than just adding the getworkitemlock
guess it could just be a shortcut that just calls GetKey for you in the GetWorkItemLock
Blake Niemyjski
@niemyjski
Mar 01 2016 00:28
yeah
could make these a lot more easier to use if we put a generic on workitemhandler<WorkItemHandlerBase>
but that might make other things harder todo..
Eric J. Smith
@ejsmith
Mar 01 2016 00:29
how long would we hold the lock for?
huh?
Blake Niemyjski
@niemyjski
Mar 01 2016 00:29
15 minutes or until we release it or renew it
Eric J. Smith
@ejsmith
Mar 01 2016 00:29
that isn’t really 1 time.
I think the idea should be that 1 time means 1 time… meaning we set a key that doesn’t expire for like 24 hours or something.
so just do a throttling lock provider for 1 hit every 24 hours
should keep it from happening again.
kind of feel like we should make people implement that themselves.
because 1 time sounds like its gauranteeing more than just thottling it for 24 hours.
and it’s really not saving much.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:34
changes pushed
heading to gym
to me
one time means the job is ran one time
once it’s ran it can run again
Eric J. Smith
@ejsmith
Mar 01 2016 00:34
right
and putting a lock for 24 hours
Blake Niemyjski
@niemyjski
Mar 01 2016 00:34
like throttleing events on an ip is a one time job that might happen repeatidly
Eric J. Smith
@ejsmith
Mar 01 2016 00:34
doesn’t guarantee shit
and they aren’t saving much work over doing the lock themselves.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:35
guess there is confusion on what one time job means
Eric J. Smith
@ejsmith
Mar 01 2016 00:35
so I say we let them do the lock themseleves.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:35
yeah
lets remove it
Eric J. Smith
@ejsmith
Mar 01 2016 00:35
ok
do it
Blake Niemyjski
@niemyjski
Mar 01 2016 00:35
I agree
simple enough for me to just do this
Eric J. Smith
@ejsmith
Mar 01 2016 00:35
yeah
we might add another lock provider that persists the fact that something has run permanantly.
could be useful for running migrations
that should happen 1 time EVER
Blake Niemyjski
@niemyjski
Mar 01 2016 00:36
pushed
Eric J. Smith
@ejsmith
Mar 01 2016 00:36
ok
Blake Niemyjski
@niemyjski
Mar 01 2016 00:36
yeah
:)
ok pr is updated
heading to the gym for an hour
then dinner and I’ll be on
Eric J. Smith
@ejsmith
Mar 01 2016 00:37
no tennis, so I might work some tonight.
worked all damn weekend though.
so it’s a maybe.
Blake Niemyjski
@niemyjski
Mar 01 2016 00:37
at least review my two pull requests
lets met up for 20 minutes so I can go over the stats stuff
all working :)
Eric J. Smith
@ejsmith
Mar 01 2016 00:37
I already commented on 1 of them
updating the logging will be a bitch, but we should get it done.
Blake Niemyjski
@niemyjski
Mar 01 2016 01:49
yeah
benmaina
@benmaina
Mar 01 2016 09:39
@niemyjski when you are free we can look at the exception not being logged on the dashboard.
Blake Niemyjski
@niemyjski
Mar 01 2016 13:32
@benmaina I’m free now
benmaina
@benmaina
Mar 01 2016 13:33
can we team view?
Blake Niemyjski
@niemyjski
Mar 01 2016 13:33
yeah
:)
private message me the info unless you don’t care if someone else joins too :)
benmaina
@benmaina
Mar 01 2016 13:35

Before we head there maybe i can give you a scenario of my problem:

So i did a self hosting successfully and my developers can log in but once they set up their projects to log the exceptions, the dashboard ain't displaying any exception.

Blake Niemyjski
@niemyjski
Mar 01 2016 13:36
@ejsmith @BillHenning just realized that we don’t include any session info in daily summaries. I kinda want that..
benmaina
@benmaina
Mar 01 2016 13:36
haha can't put it in public
Blake Niemyjski
@niemyjski
Mar 01 2016 13:36
ok, we’ll take a look :)
on a side note, I was up till 1am helping a guy from au, so still waking up :)
@renekarberg how is everything going?
Blake Niemyjski
@niemyjski
Mar 01 2016 13:43
@ejsmith you think a vr headset can go on a wedding registry? “Blakes safe space” lol
wonder how many holo lenses my friend lance ordered. Last time I talked to him he said he was getting two for his company
Eric J. Smith
@ejsmith
Mar 01 2016 13:46
Nice guess you can try.
Blake Niemyjski
@niemyjski
Mar 01 2016 13:52
na :)
Jamie Clarke
@jamie94bc
Mar 01 2016 14:40
what do you guys use as your dev machine(s)?
Eric J. Smith
@ejsmith
Mar 01 2016 14:41
MacBook Pros
Jamie Clarke
@jamie94bc
Mar 01 2016 14:41
have a core 5th gen i5 desktop @ 3.5ghz / 16gb RAM at the moment but tempted to replace it and my laptop with a surface book
@ejsmith with Windows?
Eric J. Smith
@ejsmith
Mar 01 2016 14:42
Yeah, run Windows on parallels.
Jamie Clarke
@jamie94bc
Mar 01 2016 14:43
interesting choice for a c# developer!
Eric J. Smith
@ejsmith
Mar 01 2016 14:43
My Linux skills have gone way up since I started using OSX and I love OSX.
C# dev waiting very impatiently for Code to be his IDE
Jamie Clarke
@jamie94bc
Mar 01 2016 14:44
yeah I used to have a MacBook but as soon as I started developing (msft tech stack) I ditched for a windows machine
Blake Niemyjski
@niemyjski
Mar 01 2016 14:45
yeah I love osx too
wish I didn’t even have to boot into windows
Eric J. Smith
@ejsmith
Mar 01 2016 14:45
I run parallels and it works pretty good. Get the best of both worlds
Swipe back and forth between worlds
I can't wait for Core to be mature and we can have access to all of the same tools that all the other devs have had for years.
And VS Code is looking really awesome
Blake Niemyjski
@niemyjski
Mar 01 2016 14:49
my only gripe is that parallels or resharper causes my mac book fan to sound like a jet fan
Eric J. Smith
@ejsmith
Mar 01 2016 14:49
Yeah that is the biggest issue.
Blake Niemyjski
@niemyjski
Mar 01 2016 14:49
I’m really excited for the next mbp with possibly a fanless design + better processors but the machine right now is pretty insane
@jamie94bc I switched from a 6 core i7 liquid cooled desktop to the mbp every day
and my mbp is faster in every reguard minus the gfx card isn’t as fast as my high end nvidia card
when that day comes I can finally ditch my tower
@ejsmith I just noticed that postman has a native osx app now :)
one more reason to uninstall chrome :)
Jamie Clarke
@jamie94bc
Mar 01 2016 14:52
thanks - good to know! :smile:
when you say native, is it actually native or a webview wrapper?
Blake Niemyjski
@niemyjski
Mar 01 2016 14:53
native
:)
or a huge webapp 140mb lol
dang
sony just announced you can do game streaming to pc or osx
wish that would lite a fire under xbox to also support osx
Blake Niemyjski
@niemyjski
Mar 01 2016 14:58
aspnet/Mvc#4170
Jamie Clarke
@jamie94bc
Mar 01 2016 15:01
more renaming?
Eric J. Smith
@ejsmith
Mar 01 2016 15:01
I hate the new names
Blake Niemyjski
@niemyjski
Mar 01 2016 15:02
yeah
pretty sweet rc changes
:D
what’s rc mean again?
awe man it’s snowing
Eric J. Smith
@ejsmith
Mar 01 2016 15:02
Just use dotnet1.5 and core10
Jamie Clarke
@jamie94bc
Mar 01 2016 15:02
ScopedCacheClient abstracts the scope away
Blake Niemyjski
@niemyjski
Mar 01 2016 15:03
yep
Jamie Clarke
@jamie94bc
Mar 01 2016 15:03
but calling GetAllAsync returns the scoped key
Eric J. Smith
@ejsmith
Mar 01 2016 15:03
Ahh
Good catch
Jamie Clarke
@jamie94bc
Mar 01 2016 15:03
i'll see if i can fix that
just wanted to check it wasn't a feature ;)
Eric J. Smith
@ejsmith
Mar 01 2016 15:03
Awesome thanks!
Nope, bug. :-)
Jamie Clarke
@jamie94bc
Mar 01 2016 15:28
exceptionless/Foundatio#29
I could drop kick someone over there today…
Eric J. Smith
@ejsmith
Mar 01 2016 15:29
I give up.
I don’t think you are helping when you post things on there. I’m sure they know that we work together.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:32
and?
I completely agree with you
and that’s how I feel
Eric J. Smith
@ejsmith
Mar 01 2016 15:32
of course it is, we work together, we have the same view of things.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:33
there are two many developers out there at microsoft who’ve never left there office or ventured into support land
I’m tired of being forced to use something just because one of those guys made that decision
like wake the heck up. over two issues many external people have said they wanted the change
Eric J. Smith
@ejsmith
Mar 01 2016 15:34
they think we are being rediculous because we don’t like their method names.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:34
we weren’t the only ones
like, when you file a patent you do existing research work.. when you are doing logging for an entire framework you do existing research
Eric J. Smith
@ejsmith
Mar 01 2016 15:35
but there are like 100 extension methods that sit on top of ILogger and there is zero reason to include those in the logging contract.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:35
existing research would point that no one is doing what you are doing..
or what everyone else is using
too me that is a huge red flag
Eric J. Smith
@ejsmith
Mar 01 2016 15:35
I don’t freakin’ care about the Log in the method names.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:35
like a few small changes would make it a heck of a lot easier for people to port to it
those shouldn’t be ther
well even that
only the contract
Eric J. Smith
@ejsmith
Mar 01 2016 15:36
I want a shared contract that is tiny that has a chance of being broadly accepted.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:36
yeah
Eric J. Smith
@ejsmith
Mar 01 2016 15:36
ILogger is 1 method
Blake Niemyjski
@niemyjski
Mar 01 2016 15:36
if you want those extensions there then put them in a different namespace
or different assembly
Eric J. Smith
@ejsmith
Mar 01 2016 15:36
and is proven to be performant
those extension methods have a bunch of dependencies.
now I gotta force those dependencies on my users
when all I freakin’ wanted was to write some simple log messages.
don’t understand why it’s so hard to understand
Blake Niemyjski
@niemyjski
Mar 01 2016 15:37
you mean you didn’t want to do install-package logging.kitchensink
Eric J. Smith
@ejsmith
Mar 01 2016 15:38
I want to install Foundatio and not have it bring the kitchen sink down with it or force me into using shit I don’t want to use.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:38
you know what this reminds me of
Azure/azure-storage-net#97
Eric J. Smith
@ejsmith
Mar 01 2016 15:39
so as a lib developer my only choice is to source import the logging code so I don’t force people to use stuff they don’t want to use.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:39
omg another microsoft library
lol
Jamie Clarke
@jamie94bc
Mar 01 2016 15:41
you guys happy with the PR?
only concern is the overhead of creating another dictionary
Eric J. Smith
@ejsmith
Mar 01 2016 15:41
sorry, need to stop venting over here and check it. :-)
Blake Niemyjski
@niemyjski
Mar 01 2016 15:43
yeah it looks good
well
actually
that won’t work I don’t think
Eric J. Smith
@ejsmith
Mar 01 2016 15:43
the getunscoped could be simpler I think.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:44
protected string GetUnscopedCacheKey(string scopedKey) {
int i = scopedKey.IndexOf(':');
        if (-1 < i && i < (scopedKey.Length - 1)) {
            return scopedKey.Substring(i + 1);
        }

        return scopedKey;
    }
yeah
it should look at the Scope property which has the scope
Eric J. Smith
@ejsmith
Mar 01 2016 15:44
just do Substring(Scope.Length + 1)
Blake Niemyjski
@niemyjski
Mar 01 2016 15:44
because the passed in scope could have :a:b:c:
yeah
Jamie Clarke
@jamie94bc
Mar 01 2016 15:44
yeah that's why i was looking for the first index
Blake Niemyjski
@niemyjski
Mar 01 2016 15:44
so
Eric J. Smith
@ejsmith
Mar 01 2016 15:44
but your scanning the keys when you know what the scope is.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:44
we should also add a null check to the constuctor and do
Jamie Clarke
@jamie94bc
Mar 01 2016 15:45
but that's easier! :)
Blake Niemyjski
@niemyjski
Mar 01 2016 15:45
Scope = scope?.Trim() ?? String.Empty
might be null currently
Eric J. Smith
@ejsmith
Mar 01 2016 15:46
not sure if we should even allow it to be created without a scope.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:46
guess we probably should throw an argument exception if you try using a scoped cache client with no scope
yeah
Eric J. Smith
@ejsmith
Mar 01 2016 15:46
I guess you might have some conditional code that may or may not want to use a scope.
Blake Niemyjski
@niemyjski
Mar 01 2016 15:46
other than that it looks good :)
guess we found multiple bugs with the scoped cache client today hehee
Blake Niemyjski
@niemyjski
Mar 01 2016 15:47
LOL
Eric J. Smith
@ejsmith
Mar 01 2016 15:47
I think we should create a private var that has the scope prefix in it including the “:"
Blake Niemyjski
@niemyjski
Mar 01 2016 15:47
yeah
would cut down on allocations
Eric J. Smith
@ejsmith
Mar 01 2016 15:47
and if they pass in null or empty string then we just set it to string.emptu
yeah and less concats
Blake Niemyjski
@niemyjski
Mar 01 2016 15:48
question… are there ever any invalid strings that cause issues on redis for keys?
know we probably don’t want to add any overhead but curious
Jamie Clarke
@jamie94bc
Mar 01 2016 16:01
done :)
Jamie Clarke
@jamie94bc
Mar 01 2016 16:10
ah Foundatio.Tests.Caching.HybridCacheClientTests.WillExpireRemoteItems failed
doesn't look related though
:confused:
Blake Niemyjski
@niemyjski
Mar 01 2016 16:14
:(
Jamie Clarke
@jamie94bc
Mar 01 2016 16:15
appveyor built it twice
passed on "master", failed on the branch it's actually on
so just a dodgy test
Blake Niemyjski
@niemyjski
Mar 01 2016 16:21
L(
wish we could get rock solid tests
Jamie Clarke
@jamie94bc
Mar 01 2016 16:25
would be nice!
Blake Niemyjski
@niemyjski
Mar 01 2016 16:29
looks good
just added a quick comment
just came across that for pandora :)
now I only need to run chrome for debugging js
and it’s oss
Blake Niemyjski
@niemyjski
Mar 01 2016 16:35
I just added a comment that I think we should trim the scope and check for isnullorwhitespace
then ship it
if we apply it to the Check to Scope then we could use that for the key prefix and they’d be in sync
Scope = !String.IsNullOrWhitespace(scope) ? scope.Trim() : String.Empty;
_keyPrefix = String.Concat(Scope, ":");
crap, still doesn’t fix it where your keyprefix could just be :
are we fine with it just being :
I’d personally not have a : if it’s empty or null
Jamie Clarke
@jamie94bc
Mar 01 2016 16:38
Scope = !String.IsNullOrWhiteSpace(scope) ? scope.Trim() : null;

            _keyPrefix = scope != null ? String.Concat(scope, ":") : String.Empty;
Blake Niemyjski
@niemyjski
Mar 01 2016 16:38
yeah on the bottom one use Scope
because it’s already been trimmed
or null
Jamie Clarke
@jamie94bc
Mar 01 2016 16:38
oh yeah haha :)
Blake Niemyjski
@niemyjski
Mar 01 2016 16:38
then ship it :)
Jamie Clarke
@jamie94bc
Mar 01 2016 16:39
damn casing - this is why i tend to use this.
but i tried not to since to match your coding style
Blake Niemyjski
@niemyjski
Mar 01 2016 16:39
hehe yeah
I don’t think we ever use this.
nice find on that :)
Jamie Clarke
@jamie94bc
Mar 01 2016 16:43
yeah - was getting some logs that didn't make sense!
Blake Niemyjski
@niemyjski
Mar 01 2016 16:43
:)
Blake Niemyjski
@niemyjski
Mar 01 2016 16:55
@frankebersoll have you ever saw this with bower
bower exceptionless#1.3.2 install exceptionless#1.3.2
bower skipped exceptionless was not installed because there is already a non-bower directory with that name in the components directory (bower_components/exceptionless). You can force installation with --force.
I’ve always installed it via bower
so not sure why I get that
Eric J. Smith
@ejsmith
Mar 01 2016 17:26
so another flakey test?
Jamie Clarke
@jamie94bc
Mar 01 2016 17:27
yeah!
Eric J. Smith
@ejsmith
Mar 01 2016 17:27
yay
at least the logging helps a lot for tracking those down.
Blake Niemyjski
@niemyjski
Mar 01 2016 17:49
just thought of something
var valueMap = new Dictionary<string, CacheValue<T>>();
we could put the old dictionary length in the constructor so if it’s a huge existing dictionary we won’t be changing the size internally every 2^nth
Eric J. Smith
@ejsmith
Mar 01 2016 17:50
where is that for?
Blake Niemyjski
@niemyjski
Mar 01 2016 17:52
in the scoped cache client
I’m going to make that change real quick
Eric J. Smith
@ejsmith
Mar 01 2016 17:54
that only works for in memory implementations, no?
Blake Niemyjski
@niemyjski
Mar 01 2016 17:55
no
all of them
hmm
ToDictionary overload doesn’t look at the count
when creating it
Eric J. Smith
@ejsmith
Mar 01 2016 17:55
how would you know how many items are in reds?
redis
Blake Niemyjski
@niemyjski
Mar 01 2016 17:55
it does a getall
and then iterates over that..
Eric J. Smith
@ejsmith
Mar 01 2016 17:56
huh???
Blake Niemyjski
@niemyjski
Mar 01 2016 17:56
    public async Task<IDictionary<string, CacheValue<T>>> GetAllAsync<T>(IEnumerable<string> keys) {
        var scopedDictionary = await UnscopedCache.GetAllAsync<T>(GetScopedCacheKeys(keys)).AnyContext();
        return scopedDictionary.ToDictionary(kvp => UnscopeCacheKey(kvp.Key), kvp => kvp.Value);
    }
Eric J. Smith
@ejsmith
Mar 01 2016 17:56
ohhh
the getall method
Blake Niemyjski
@niemyjski
Mar 01 2016 17:56
hmm
Eric J. Smith
@ejsmith
Mar 01 2016 17:56
you really think someone is calling that with that many items?
Blake Niemyjski
@niemyjski
Mar 01 2016 17:56
eh by default it’s all keys
Eric J. Smith
@ejsmith
Mar 01 2016 17:56
pretty sure the default size will cover it.
Blake Niemyjski
@niemyjski
Mar 01 2016 17:56
but the ToDictionary doesn’t set it so I guess when someone hits that issue we’ll fix it
I think it starts really low
like 4, and then resizes by a base 2
if I remember correctly
doubles every resize
Blake Niemyjski
@niemyjski
Mar 01 2016 18:07
build just failed and I was looking at the logs
I just noticed the last version of grunt was released in 2014
Jamie Clarke
@jamie94bc
Mar 01 2016 18:07
good call @niemyjski
that's why i'm using gulp ;)
Blake Niemyjski
@niemyjski
Mar 01 2016 18:08
was picked up by jQuery foundation. and they got like 5 new contributors and just released an rc of 1.0
so that’s good
eh when I started gulp was pretty new
kinda pissed
got 70% done with the ui rewrite and aurelia and gulp really took off
Jamie Clarke
@jamie94bc
Mar 01 2016 18:08
        public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer) {
            if (source == null) throw Error.ArgumentNull("source");
            if (keySelector == null) throw Error.ArgumentNull("keySelector");
            if (elementSelector == null) throw Error.ArgumentNull("elementSelector");
            Dictionary<TKey, TElement> d = new Dictionary<TKey, TElement>(comparer);
            foreach (TSource element in source) d.Add(keySelector(element), elementSelector(element));
            return d;
        }
Blake Niemyjski
@niemyjski
Mar 01 2016 18:09
yeah
Jamie Clarke
@jamie94bc
Mar 01 2016 18:09
that's implementation from reference source
which is why i didn't use it
Blake Niemyjski
@niemyjski
Mar 01 2016 18:09
I saw that too
we could switch it back.. but wonder if we gotta worry about that? guess wait till we see an issue instead of preoptmizing?
Jamie Clarke
@jamie94bc
Mar 01 2016 18:10
if you've already made the change leave it for now!
i'm having fun with SQL joins and exists - deciding to do the join before exists
which is bad news
Blake Niemyjski
@niemyjski
Mar 01 2016 18:11
:(
Jamie Clarke
@jamie94bc
Mar 01 2016 18:12
i think it's because i have an or condition - ie. if column = x or exists
nice when things go from minutes to milliseconds though! :smiley:
Blake Niemyjski
@niemyjski
Mar 01 2016 18:16
:)
Blake Niemyjski
@niemyjski
Mar 01 2016 18:23
@ejsmith I’m bumping the es-dev-01 up from a d1 to d2. it’s cpu is pegged at 98%
only 1 core and 3.5gb of ram isn’t cutting it
Eric J. Smith
@ejsmith
Mar 01 2016 18:24
weren’t we on a d2 before?
Blake Niemyjski
@niemyjski
Mar 01 2016 18:24
maybe
I probably moved it down because we weren’t actively using it
and we are now
Eric J. Smith
@ejsmith
Mar 01 2016 18:25
what we really need to do is to get moved over onto SSDs
Blake Niemyjski
@niemyjski
Mar 01 2016 18:26
yeah I know
Eric J. Smith
@ejsmith
Mar 01 2016 18:26
that will be expensive though.
Blake Niemyjski
@niemyjski
Mar 01 2016 18:32
yeah
well do it eventually
our iops have been pretty low so far
ok
it’s restoring a backup and has much more ram :)
Eric J. Smith
@ejsmith
Mar 01 2016 18:35
Yeah, restoring?
Blake Niemyjski
@niemyjski
Mar 01 2016 18:35
yeah
would be nice if you could scale up and down a vm based on cpu
without rebooting the dang vm...
sad part is I was at WinHEC 2005 and I watched them do just that (they added 20 processors and 100gb of ram and didn’t even reboot it)
10 years later and still don’t havei t
Blake Niemyjski
@niemyjski
Mar 01 2016 18:48
@ejsmith this timeline filter doesn’t really make sense
on stacks
I guess we always do count but if you want to do something else we show you value?
need to figure out what makes sense here
Bill Henning
@BillHenning
Mar 01 2016 19:49
@niemyjski you said you were working on custom dashboards, what did you have in mind?
Blake Niemyjski
@niemyjski
Mar 01 2016 19:50
Screen Shot 2016-03-01 at 1.47.05 PM.png
the first step is to allow you to show average, sum and count (distinct) values (event.value)
Bill Henning
@BillHenning
Mar 01 2016 19:50
like does that mean we can build custom dashboards of block areas like azure management portal?
Blake Niemyjski
@niemyjski
Mar 01 2016 19:50
but I’m not sure it makes sense in the traditional dashboard..
in this case your looking at value of a session start which is set to the duration of the session in seconds
eventually..
Eric J. Smith
@ejsmith
Mar 01 2016 19:51
baby steps along the way...
1st step is allowing the stacking chart to show 3 different types of dat.
right now it is showing event counts along a timeline.
Bill Henning
@BillHenning
Mar 01 2016 19:52
so that is session starts right now on the timeline
Blake Niemyjski
@niemyjski
Mar 01 2016 19:52
so far the work I’m doing is prototyping and it doesn’t make much sense yet. for example we wouldn’t have this drop down on a generic stack as you need to know what the value represents.. in this case time
Eric J. Smith
@ejsmith
Mar 01 2016 19:52
want to also be able to show sum of value across the timeline
and then avg of value as well.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:52
idk, looking at it currently is confusing so we have a lot of work todo
so the timeline shows average duration in seconds
over time
so when did your longest sessions start
which appears to be 8pm at night
Bill Henning
@BillHenning
Mar 01 2016 19:53
what are count and sum in terms of this graph?
i guess people like writing code at night :)
Blake Niemyjski
@niemyjski
Mar 01 2016 19:54
count doesn’t make sense (because it’s number distinct durations)
average is the average session duration (seconds)
yeah
I almost think that each chart shown would be predetermined
Bill Henning
@BillHenning
Mar 01 2016 19:55
honestly while this stuff is interesting, i think there's more value in other areas like knowing more about your audience location, culture, new vs. existing users, etc.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:55
and we wouldn’t have a selection as it doesn’t make sense and is more confusing to do this generically
Eric J. Smith
@ejsmith
Mar 01 2016 19:56
I want this. For many reasons. And it's an easy win.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:56
what if I just wanted to show the total occurrances
it’s not the same as count
Eric J. Smith
@ejsmith
Mar 01 2016 19:56
Yes it is.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:56
no it’s not
count is distinct:value
Eric J. Smith
@ejsmith
Mar 01 2016 19:57
Yes it is. Sum is different
Count is not distinct
Blake Niemyjski
@niemyjski
Mar 01 2016 19:57
total occurances is .total
how is it not?
Eric J. Smith
@ejsmith
Mar 01 2016 19:57
Should not be using distinct.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:57
what is count then?
count falls back to just the total?
Eric J. Smith
@ejsmith
Mar 01 2016 19:57
Count is a count of documents matching the filter.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:57
ok
Eric J. Smith
@ejsmith
Mar 01 2016 19:58
It's not distinct
Blake Niemyjski
@niemyjski
Mar 01 2016 19:58
ok
Bill Henning
@BillHenning
Mar 01 2016 19:58
is this thing going to be something that pops up on events, etc. too?
Blake Niemyjski
@niemyjski
Mar 01 2016 19:58
makes more sense but shouldn’t we change the drop down to say total occurrances then
Eric J. Smith
@ejsmith
Mar 01 2016 19:59
It's a stack of events. Count makes sense to me.
We can work on wording though.
Blake Niemyjski
@niemyjski
Mar 01 2016 19:59
so what would the tooltip be?
I’m still prototyping
Bill Henning
@BillHenning
Mar 01 2016 20:01
question... how is knowing the sum of all session minutes at a particular time useful? and isn't the Count here the same as the Session report now?
Eric J. Smith
@ejsmith
Mar 01 2016 20:01
@BillHenning you are thinking about a single usage.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:01
this applys to every event
Eric J. Smith
@ejsmith
Mar 01 2016 20:01
I want to use this for MANY things.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:02
so if you submitting a feature usage or timing event type
you could see how long something took like average build time
Bill Henning
@BillHenning
Mar 01 2016 20:02
just saying, that in some places it might not make sense to offer all options like Sum
Blake Niemyjski
@niemyjski
Mar 01 2016 20:02
and plot it on a custom dashboard
Eric J. Smith
@ejsmith
Mar 01 2016 20:02
yes there are stacks of events that it will make zero sense on.
Bill Henning
@BillHenning
Mar 01 2016 20:02
but yeah for event hits, it would be nice
Blake Niemyjski
@niemyjski
Mar 01 2016 20:02
yeah
so step one is building this out to see how it works
Eric J. Smith
@ejsmith
Mar 01 2016 20:03
would be nice if we could detect that values are not even populated on events in the stack.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:03
as we just totally built a complete stats backend that’s all generic
Eric J. Smith
@ejsmith
Mar 01 2016 20:03
and not even show those options.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:03
you can pass it
Eric J. Smith
@ejsmith
Mar 01 2016 20:03
I think when we go into Sum or Average mode, it should probably still show the Counts
Bill Henning
@BillHenning
Mar 01 2016 20:03
@ejsmith right, so if everything is always 1, maybe don't show Sum
Blake Niemyjski
@niemyjski
Mar 01 2016 20:04
‘distinct:user.raw,avg:value` to get a timeline that shows both distinct user counts and average duration
Eric J. Smith
@ejsmith
Mar 01 2016 20:04
well, some events don’t have anything on value
Bill Henning
@BillHenning
Mar 01 2016 20:04
although you might not know if a higher value is out of the timeframe
ahh
Eric J. Smith
@ejsmith
Mar 01 2016 20:04
and I don’t think we should assume that no value == 1
so here is 1 use case that I am thinking of...
I am going to record a duration and log it as an event.
I want to be able to see the average duration of the event and then be able to drill into it.
and another usage...
features usages can be aggregated to where we send 1 event saying that a feature was used 12 times
so now I want to see the sum of the values for the feature
not the event coutns
Bill Henning
@BillHenning
Mar 01 2016 20:07
yeah
Blake Niemyjski
@niemyjski
Mar 01 2016 20:08
not sure how that’s intuitive to a user tho
and how we get the right counts in the stat boxes
when we roll up things
Eric J. Smith
@ejsmith
Mar 01 2016 20:13
we have to figure out how to make it intuitive.
that’s our job. :-)
we know we want to be able to show the data and that it already defaults to count.
I think maybe we don’t have count as an option...
count is always included.
we just have the ability to turn avg and sum on.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:15
yeah
Eric J. Smith
@ejsmith
Mar 01 2016 20:15
so it would always show X events in this bucket, but there would be an option to include the value average and the sum of the value along with the counts.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:15
I think that’s a better approach
Eric J. Smith
@ejsmith
Mar 01 2016 20:15
do you have it working?
if it’s working then we can play with how to make it intuitive.
wip
count is wrong there..
Eric J. Smith
@ejsmith
Mar 01 2016 20:17
@BillHenning do you understand what I’m trying to achieve?
I dont have any data on that event.
on that stack I mean.
Blake Niemyjski
@niemyjski
Mar 01 2016 20:18
check include hidden nub
should update the stack page to not take into account hidden or fixed
but decent amount of refactoring for that
Bill Henning
@BillHenning
Mar 01 2016 20:19
i can't see the dev-app
but i think i would generally like the checkbox idea better than the dropdown
Blake Niemyjski
@niemyjski
Mar 01 2016 20:19
why not
Eric J. Smith
@ejsmith
Mar 01 2016 20:19
you should be able to.
just login
its pointing to the same db
Blake Niemyjski
@niemyjski
Mar 01 2016 20:20
no
it’s pointing to a backup db
Eric J. Smith
@ejsmith
Mar 01 2016 20:20
“Show Average Value” “Show Value Sum"
Bill Henning
@BillHenning
Mar 01 2016 20:21
arg... sorry, i'm in now
ok what page do i look at?
Eric J. Smith
@ejsmith
Mar 01 2016 20:37
the link he sent you.
is to a page.
but might need to change your date range.
Bill Henning
@BillHenning
Mar 01 2016 20:38
hmm... that's showing minutes?
Eric J. Smith
@ejsmith
Mar 01 2016 20:39
yes, value on session is session length
I think it might be in seconds though.
Bill Henning
@BillHenning
Mar 01 2016 20:39
it would be nice if on the tooltip at least, it upgraded it to hours or minutes (and seconds) if appropriate
Eric J. Smith
@ejsmith
Mar 01 2016 20:39
so it kind of sucks because it’s a generic thing… but again… this is step 1.
we will build 1st class reports
Bill Henning
@BillHenning
Mar 01 2016 20:39
like 1,123,651 means nothing to me :)
Eric J. Smith
@ejsmith
Mar 01 2016 20:39
yes, I know.
Bill Henning
@BillHenning
Mar 01 2016 20:40
cool
Eric J. Smith
@ejsmith
Mar 01 2016 20:40
but you will get the generic version 1st
and you will like it.
Bill Henning
@BillHenning
Mar 01 2016 20:40
i will or i will hunt you down!
Eric J. Smith
@ejsmith
Mar 01 2016 20:40
bring it.
:-)
Bill Henning
@BillHenning
Mar 01 2016 20:40
i know where you live
hehe
Eric J. Smith
@ejsmith
Mar 01 2016 20:40
come at me bro.
so the idea is that this will be the basis for users being able to create custom charts.
you will send us events with values or other fields populated… then tell us you want the sum or avg or count and then be able to label it yourself
Bill Henning
@BillHenning
Mar 01 2016 20:41
that's cool, just make sure you have logical ones predefined
Eric J. Smith
@ejsmith
Mar 01 2016 20:41
and even be able to provide value transforms.
Bill Henning
@BillHenning
Mar 01 2016 20:41
most people don't want to customize and just want to be spoon fed
Eric J. Smith
@ejsmith
Mar 01 2016 20:41
yes, 1 step at at damn time. :-)
I want to get there yesterday too. :-)
Bill Henning
@BillHenning
Mar 01 2016 20:42
can't you clone @niemyjski ?
Eric J. Smith
@ejsmith
Mar 01 2016 20:42
give me some money
Bill Henning
@BillHenning
Mar 01 2016 20:42
i am!
Eric J. Smith
@ejsmith
Mar 01 2016 20:42
haha
more!!
Blake Niemyjski
@niemyjski
Mar 01 2016 20:55
@BillHenning whats the singular version of series
Bill Henning
@BillHenning
Mar 01 2016 20:55
Siri!
not sure there is one
i think it is considered singular and plural depending on the scenario
Blake Niemyjski
@niemyjski
Mar 01 2016 20:58
ok
Eric J. Smith
@ejsmith
Mar 01 2016 21:08
@niemyjski we are changing our automapper stuff
so we can update to latest and not use the static version any more.
also should fix the mapping issues that we have run into before.
Blake Niemyjski
@niemyjski
Mar 01 2016 21:14
cool
let me know when all of that is done
I’m heading out for the day
I’m going to break dev local until I update the server side
but I just got the stats stuff all generic :D
exceptionless/Exceptionless.UI@d9812b2
got some work todo
that was a WIP
Eric J. Smith
@ejsmith
Mar 01 2016 23:31
@niemyjski what is the status of getting upgraded to ES 2.0? What is holding us back?
Blake Niemyjski
@niemyjski
Mar 01 2016 23:32
Elastic guys
i talked to one of them today
Eric J. Smith
@ejsmith
Mar 01 2016 23:32
is there still broken things?
Blake Niemyjski
@niemyjski
Mar 01 2016 23:32
Yes
Eric J. Smith
@ejsmith
Mar 01 2016 23:32
like?
Blake Niemyjski
@niemyjski
Mar 01 2016 23:33
They also said 1.7.2 would be coming real soon
Eric J. Smith
@ejsmith
Mar 01 2016 23:33
they need to get 1.7.2 released yesterday. :-)
Blake Niemyjski
@niemyjski
Mar 01 2016 23:33
Idk the details but they wanted to see where I was broke and help
Been two weeks
Eric J. Smith
@ejsmith
Mar 01 2016 23:33
you don’t know what the blocking issues are?