IRC logs for #opendune on OFTC at 2009-12-10
            
00:55:27 <glx> wide chars
02:38:37 <DorpsGek> SVN: glx (r718) -Add: figured out a few variables
03:49:08 *** glx has quit IRC
12:26:24 <Xaroth> and another spammer bites the dust
13:06:56 *** glx has joined #openDune
13:06:56 *** ChanServ sets mode: +o glx
13:07:13 <glx> hello
13:07:49 <Xaroth> o/
14:03:32 <TrueBrain> which spammer Xaroth?
14:11:29 <glx> I'm naming some 1FB5 functions (using emu_File_Seek_NoInput naming style)
14:13:26 <TrueBrain> enjoy ;)
14:13:39 <TrueBrain> (what is a seek with no input? )
14:14:31 <glx> it's a wrapper around emu_File_Seek with g_globlal->ignoreInput++ before the call and g_globlal->ignoreInput-- after :)
14:15:11 <glx> so mouse and keyboard are "disabled"
14:15:21 <glx> -> no input ;)
14:18:23 <TrueBrain> but what would be wrong to have mouse and keyboard input during a seek?
14:19:02 <glx> dunno, but most 1FB5 functions do that
14:19:24 <TrueBrain> and you are sure it is 'ignoreInput', and not some random 'lock'?
14:20:53 <glx> check emu_Mouse_EventHandler() and emu_Input_HandleInput() :)
14:21:09 <TrueBrain> very weird .. oh well :)
14:21:27 <TrueBrain> I have a function which sets the targetAttack, and which sets the targetMove
14:21:37 <TrueBrain> I called the first SetAttack, but how to call the latter
14:25:45 <TrueBrain> SetMove .. SetDestination?
14:26:25 <glx> f__1FB5_17D7_0018_F3C7() does a weird thing, if global.h is right, it changes the \0 at the end of a string
14:26:40 <glx> SetDestination makes sense
14:27:31 <TrueBrain> it sets a new value and returns the old
14:27:51 <glx> yes, but 661C is the \0 of ".XMI"
14:28:57 <glx> hmm looks like offsets are wrong ;)
14:29:11 <TrueBrain> very much so
14:29:23 <TrueBrain> 65FA is XMI
14:30:00 <TrueBrain> names of variables are not in alignment with comments too :p
14:32:27 <Xaroth> TrueBrain: the one that's been removed :P
14:32:39 <Xaroth> he posted some viagra post on the off-topic forum section
14:34:10 <TrueBrain> glx: ah, I was wrong, only the comments are wrong
14:35:29 <glx> yes
14:35:37 <DorpsGek> SVN: truebrain (r719) -Fix: comments were off for a few variables in global.h
14:35:39 <TrueBrain> :p
14:35:48 <glx> I was checking variable names in memory view and they was right
15:04:05 <Xaroth> at least the LB is alive again :o
15:04:12 <Xaroth> colleague's turn to go to evo, har har
15:04:28 <Xaroth> btw, TrueBrain, the dudes at wikipedia left their racks open :/
15:04:31 <Xaroth> AGAIN
15:04:40 <TrueBrain> not a suprise at EVO
15:04:44 <TrueBrain> personal closes it sooner or later
15:05:10 <Xaroth> I closed it for them, worst part is, they had half their racks set to the unlock code as well
15:05:27 <TrueBrain> our racks have keys :p
15:05:32 <Xaroth> heh
15:05:51 <Xaroth> I prefer the code thingie
15:05:55 <Xaroth> means I can't lose it :P
15:05:57 <TrueBrain> in a DC there is a 'trust' band ..
15:06:06 <TrueBrain> it shouldn't happen, it does, but still ..
15:06:20 <Xaroth> true
15:06:32 <TrueBrain> even google leave their racks open from time to time
15:06:34 <TrueBrain> (well, at least once)
15:06:47 <Xaroth> what hall are they in? :o
15:06:52 <TrueBrain> 2
15:06:55 <Xaroth> :o nice
15:06:55 <TrueBrain> one rack behind us
15:06:58 <TrueBrain> just 1 rack
15:07:05 <TrueBrain> but you know when you are looking at a Google node :p
15:07:12 <Xaroth> heh
15:07:21 <Xaroth> next time get a pic or two :P
15:07:32 <TrueBrain> taking pictures in a DC ..
15:07:36 <TrueBrain> don't think they appreciate that :p
15:07:49 <Xaroth> hah, tell that to the leaseweb boys
15:08:16 <TrueBrain> last time I wanted to take a picture in a DC (was Eweka), I first needed permission of the floor manager, and he needed to be present :p
15:08:17 <TrueBrain> dunno why ;)
15:08:19 <Xaroth> their procedure for moving a server is taking pictures of the cables, so they know where to put em
15:08:31 <TrueBrain> hahahaha :)
15:08:39 <Xaroth> i've seen em do that at least twice now
15:08:54 <Xaroth> it works, but seriously.. labeling works much better :P
15:09:02 <TrueBrain> and I need to consider for a moment what to eat tonight ..
15:09:07 <TrueBrain> we used coloured cabels, MUCH easier
15:09:14 <TrueBrain> Green is internal network, Red is external
15:09:23 <TrueBrain> Yellow are _very_ important cables
15:09:27 <TrueBrain> (uplinks, APC links, ...)
15:09:35 <TrueBrain> you never ever make a mistake :)
15:09:47 <Xaroth> we have multiple networks, but never had the time/resources to do the cable really good when we moved over
15:09:57 <Xaroth> so bit of a mix of cable colours
15:10:02 <TrueBrain> I did have the time :)
15:10:13 <TrueBrain> I can tell you which network cable is where at any time
15:10:17 <TrueBrain> also true for power cables
15:10:28 <TrueBrain> we don't move network/power cables
15:10:36 <TrueBrain> we rather change in the software where a server is
15:11:05 <TrueBrain> so Port 1 is at 1U high, Port 2 at 3U, Port 3 at 5U, etc
15:11:13 <Xaroth> ah
15:11:15 * Xaroth shrugs
15:11:27 <TrueBrain> avoids _all_ mistakes :p
15:11:36 <Xaroth> our old server room was a mess, this is a bit more tidy.. next time we need to move I want to do things proper
15:11:48 <TrueBrain> I went in 2 hours early when we last moved
15:11:51 <TrueBrain> did all the wiring
15:12:02 <TrueBrain> servers came in, it was just a matter of click click, plug plug, done
15:12:07 <Xaroth> We did our entire move from 1 DC to another in under 8 hours :P
15:12:21 <TrueBrain> 1 our and 45 minutes downtime ;)
15:12:24 <TrueBrain> our = hour
15:12:39 <Xaroth> 55 minutes downtime here at most
15:12:50 <Xaroth> but we cheated a tiny bit :P
15:13:03 <Xaroth> we had a vlan link between the two DCs
15:13:13 <Xaroth> so moved the redundant stuff over first, fired that up
15:13:28 <TrueBrain> Ghehe :)
15:13:30 <Xaroth> then moved the non-redundant stuff
15:13:35 <Xaroth> then the 'primary redundant' stuff
15:13:41 <TrueBrain> We managed to get a temporary deligation of IPs :p
15:13:41 <Xaroth> so nothing actually went down for that long
15:14:04 <TrueBrain> either way: moving sucks
15:14:07 <Xaroth> yeh
15:14:12 <TrueBrain> good documentation is a must
15:14:19 <Xaroth> having a LB die on you also sucks :P
15:14:26 <TrueBrain> as long as it is one
15:14:31 <TrueBrain> I remember an old collegae of mine
15:14:42 <TrueBrain> when a LB died, they had to manually plug over the incoming line to the secondary
15:14:48 <Xaroth> yeh, but I don't want to have weekend knowing that 80% of our backbone is going over a single non-redundant system :/
15:14:50 <TrueBrain> makes it a bit useless, the redundant setup :p
15:15:15 <TrueBrain> statisticly, the chances of both crashin within a week are less than 0.01%
15:15:26 <Xaroth> yes, murphy is a twat
15:15:28 <TrueBrain> but that is mostly because the chance one crashes is 0.05% :p (for our hardware anyway)
15:15:56 <Xaroth> it's been twice now that I go on a day off that a server crashes
15:16:02 <Xaroth> er, three times even
15:16:06 <Xaroth> the LB was also on my day off
15:16:17 <TrueBrain> so let them sent someone else!
15:16:51 <Xaroth> they did
15:17:05 <TrueBrain> I remember what WideXS did when a server crashed: they walked in the store, got a new server, spinned up the install software, 1 hour later they attached the new one
15:17:11 <TrueBrain> they did that before all this Cloud shit we have now
15:17:27 <Xaroth> heh
15:17:55 <glx> oh nice data @2E9C:0000 :)
15:18:21 <TrueBrain> lol @ glx
15:18:32 <TrueBrain> Xaroth: btw, I have to make a Windows install soon :'(
15:18:45 <glx> it's a file list :)
15:18:54 <glx> list of all game files
15:19:10 <Xaroth> I feel sorry for you
15:19:11 <Xaroth> what purpose?
15:19:28 <Xaroth> if it's a domain controller i feel REALLY sorry for you :P
15:19:38 <Xaroth> MS AD is annoying as fooooooooooooooooook
15:21:39 <TrueBrain> glx: nice ;)
15:22:08 <TrueBrain> Xaroth: I installed ADs before, so no need to feel sorry :p But yes, AD, Exchange (which integrates in the AD .. lovely shit), and Terminal Service (inclusing MS Office)
15:22:17 <TrueBrain> I never before install Windows in the DC, and always refused it
15:22:17 * Xaroth shudders
15:22:31 <Xaroth> new exchange looks nice
15:22:38 <Xaroth> .. it's still crap tho :p
15:22:45 <TrueBrain> lucky I got them so far that they want 2 installs, one for terminal, one for AD + Exchange
15:22:48 <TrueBrain> much easier that way
15:22:53 <Xaroth> and never tried terminal service
15:23:00 <TrueBrain> the thing that annoys me the MOST of all, that Exchange is easy to install
15:23:02 <TrueBrain> easy to configure
15:23:05 <TrueBrain> but if you want ANYTHING more
15:23:08 <TrueBrain> than the basics
15:23:15 <TrueBrain> you need a certificate to understand all that shit!
15:23:18 <Xaroth> yeh
15:23:21 <Xaroth> MCSA :P
15:23:28 <TrueBrain> one thing I refuse to get
15:23:33 <TrueBrain> I do want my CCNA and CCNP
15:23:38 <Xaroth> ew
15:23:47 <TrueBrain> (CCIP to be exact)
15:23:49 <Xaroth> I had ccna at school
15:23:54 <Xaroth> never liked it
15:24:00 <TrueBrain> CCNA you can do with your eyes closed
15:24:04 <TrueBrain> but you need it for CCNP, for good reason
15:24:10 <Xaroth> network.. programmer?
15:24:23 <TrueBrain> Professional ;)
15:24:26 <Xaroth> ah
15:24:26 <TrueBrain> A = Amateur
15:24:30 <TrueBrain> P = Professional
15:24:33 <TrueBrain> CCIP is Internet Provider
15:24:37 <Xaroth> meh
15:24:42 <TrueBrain> (so BGP, OSPF, ..)
15:24:45 <Xaroth> ah
15:24:54 <Xaroth> BGP/OSPF is fun stuff
15:25:06 <TrueBrain> yes; and if things go as planned, we should have that by the end of next year
15:25:10 <Xaroth> nice
15:25:18 <TrueBrain> well, OSPF :p
15:25:27 <TrueBrain> means we are our own gateway, instead of our provider :)
15:25:46 <TrueBrain> which means we OWN the IP range, and it can migrate with us (as long as we stay in the Netherlands at least)
15:25:54 <Xaroth> :o
15:26:11 <TrueBrain> but oaky ... requires RIPE requests, a provider which wants to do that, .....
15:26:12 <Xaroth> own as in, owning my name
15:26:30 <TrueBrain> now if you get an IP range, you get it from your provider
15:26:34 <TrueBrain> which gets it from his provider
15:26:35 <TrueBrain> bla
15:26:37 <Xaroth> cuz we already have 2 /24 ranged owned by name, and only one of us knows a bit bgp :P
15:26:39 <TrueBrain> if you move, you can't take it with you
15:26:52 <TrueBrain> in RIPE you get your name attached to a /24 by default :p
15:27:00 <TrueBrain> but they are owned by AS....
15:27:05 <Xaroth> we have our own AS :)
15:27:16 <TrueBrain> then you should be able to own your IPs
15:27:20 <Xaroth> yeh
15:27:23 <TrueBrain> gimme an IP
15:27:33 <Xaroth> 193.42.212/24 194.1.204/24
15:27:48 <Xaroth> managed by fibering atm i think
15:28:08 <TrueBrain> they indeed are fully yours
15:28:26 <TrueBrain> but mounted by fiberring
15:28:29 <Xaroth> yeh
15:28:33 <Xaroth> we don't do our own BGP anymore
15:28:42 <Xaroth> too much crap for too little gain
15:29:04 <TrueBrain> yeah .. that is why I hope we get a OSPF integration
15:29:06 <TrueBrain> much easier :p
15:29:08 <TrueBrain> (automatic!!)
15:30:02 <TrueBrain> our current IPs are mounted by EasyNet, and they own the IPs
15:30:05 <TrueBrain> if we move, they keep them
15:30:08 <TrueBrain> which is very annoying
15:30:11 <Xaroth> yeh
15:30:29 <TrueBrain> your IPs are mounted by MCNOLIA btw, I was reading it wrong
15:30:35 <TrueBrain> so you own them
15:30:43 <glx> hmm how to name a function that gets the index of the given filename in this file list ?
15:30:51 <Xaroth> yeh, that's us :)
15:30:54 <glx> emu_Find_File ?
15:30:56 <Xaroth> FIBERRING is maintainer
15:30:58 <TrueBrain> Filename_Get_ByIndex? :p
15:31:02 <Xaroth> and/or announcer
15:31:16 <glx> no it gets the index for filename_csip
15:31:33 <TrueBrain> Xaroth: a step further: AS38930 is owned by you, but Fiberring announces it
15:31:33 <Xaroth> Filename_Get_ByMemory?
15:31:43 <Xaroth> TrueBrain: something like that
15:31:45 <TrueBrain> glx: I don't follow? Index for csip?
15:31:51 <Xaroth> i gave up on trying to figure out how thing changed
15:32:04 <Xaroth> we used to do it all, now we don't.. we still have our ip and our connection :P
15:32:11 <TrueBrain> be happy with that ;)
15:32:18 <glx> 0x014E5D20 eb 42 3f 35 19 b6 06 00 00 00 00 00 00 00 00 00 00 00 00 ëB?5.¶.............
15:32:18 <glx> 0x014E5D33 f4 42 3f 35 62 c1 08 00 00 00 00 00 00 00 00 00 00 00 00 ôB?5bÁ.............
15:32:18 <glx> 0x014E5D46 ff 42 3f 35 1a 9c 11 00 00 00 00 00 00 00 00 00 00 00 00 ÿB?5.œ.............
15:32:21 <Xaroth> improvement from before :)
15:32:26 <glx> that's the list
15:32:42 <TrueBrain> so it is a struct of 16 bytes
15:32:49 <glx> of 19 bytes
15:33:01 <glx> I can align how I want in MSVC ;)
15:33:03 <TrueBrain> oh, 19 bytes on a line ... nice :s
15:33:06 <TrueBrain> either way ... :p
15:33:25 <TrueBrain> at 353f:42eb is a list of strings I assume?
15:33:44 <TrueBrain> so the struct name would be like PakInfo
15:33:51 <glx> it compares string at given csip with string at 353f:42eb
15:33:56 <TrueBrain> and it would be like g_pakInfo[1]->filenames_csip
15:34:19 <glx> there is all files, .pak, .wsa, ...
15:34:23 <glx> everything is there
15:34:41 <TrueBrain> ah, so the function gets the string it is looking for. It looks over the whole list, trying to find a match?
15:34:51 <glx> yup
15:34:58 <glx> and return the index or 0xFFFF
15:35:03 <TrueBrain> so the struct is FileInfo, g_fileInfo[N]
15:35:19 <TrueBrain> and the function would be like: FileInfo_Get_ByName(char *)
15:35:39 <glx> thx :)
15:35:55 <TrueBrain> (if I parsed all the data correctly in my head :p)
15:36:02 <glx> I name it for now, then I'll convert and add stuff in global.h
15:36:15 <TrueBrain> reminds me we still need StructureInfo_Get_ByIndex :p
15:36:22 <TrueBrain> instead of the ugly g_structureInfo[i]
15:37:42 <TrueBrain> a job for Xaroth maybe ;)
15:37:43 <TrueBrain> ghehehehehe
15:37:54 <glx> hmm emu_FileInfo_GetIndex_ByName() then
15:38:06 <glx> because it returns the index, not the FileInfo ;)
15:38:13 <TrueBrain> ah .. stupid :p
15:38:22 <TrueBrain> but yes :p
15:38:31 <TrueBrain> I hope we can avoid that in the C side
15:38:36 <TrueBrain> but I don't know for what it uses the index :p
15:40:50 <TrueBrain> but I guess you are right it is more like a Find
15:41:04 <TrueBrain> FileInfo_FindIndex
15:43:58 <DorpsGek> SVN: glx (r720) -Add: named 10 more functions
15:51:39 <glx> hmm file.c or fileinfo.c ?
15:51:49 <TrueBrain> I would say 'fileinfo.c' for now
15:52:00 <TrueBrain> to keep things seperated and clean .. but maybe it is so small, it can be file.c
15:52:08 <TrueBrain> well, structureInfo is also in structure.[ch]
15:52:10 <TrueBrain> so file.[ch] :p
15:53:43 <TrueBrain> @base 16 2 BF
15:53:43 <DorpsGek> TrueBrain: 10111111
15:53:51 <TrueBrain> so 0x40
15:59:18 <TrueBrain> a function, which, if deviated, removes 5 values from the deviator counter (via a subfunction). Then, when it is not deviated, it does something
15:59:26 <TrueBrain> what is done when not deviated, and not done when deviated?
16:00:07 <TrueBrain> wait, no .. hmm .. when not deviated, it runs a piece of code, and when still deviated, it runs it .. it is only not run when it goes from non-deviated to deviated
16:00:16 <TrueBrain> euh, from deviated to non-deviated
16:03:31 <TrueBrain> @calc 0xFC = 0xf8
16:03:31 <DorpsGek> TrueBrain: Error: invalid syntax (<string>, line 1)
16:03:33 <TrueBrain> @calc 0xFC - 0xf8
16:03:33 <DorpsGek> TrueBrain: 4
16:10:24 <DorpsGek> SVN: truebrain (r721) -Add: named a few more functions
16:10:47 <TrueBrain> slowly, 1A34 gets named :p
16:10:59 <TrueBrain> we are almost at 1/5th of the naming
16:11:08 <TrueBrain> @calc 258 / 1069
16:11:08 <DorpsGek> TrueBrain: 0.241347053321
16:12:58 <TrueBrain> in total we already named 24% of the functions
16:13:01 <TrueBrain> not bad ;)
16:15:01 <TrueBrain> 25% even, now I updated the aount of functions :p
16:15:17 <TrueBrain> and almost 10% done with C-ifying :)
16:29:17 <glx> hehe check src subdir when you use decompiler to rename functions ;)
16:34:36 <TrueBrain> again?! :(
16:36:14 <glx> objs/src/house.o: In function `GameLoop_House':
16:36:14 <glx> D:\developpement\opendune/src/house.c:179: undefined reference to `f__1A34_1B68_0019_AAA0'
16:36:14 <glx> objs/src/unit.o: In function `GameLoop_Unit':
16:36:14 <glx> D:\developpement\opendune/src/unit.c:209: undefined reference to `f__1A34_193F_0013_FA4D'
16:36:16 <glx> yup
16:36:20 <TrueBrain> yeah, foudn them too :p
16:36:35 <glx> you can also compile before commit ;)
16:36:46 <glx> that helps a lot to find these
16:37:07 <TrueBrain> I know I know :p
16:37:22 <DorpsGek> SVN: truebrain (r722) -Fix (r721): fix compilation again
16:38:55 <DorpsGek> SVN: truebrain (r723) -Fix: now correctly name a variable
16:39:02 <TrueBrain> there, it even shows a variable :)
16:39:40 <glx> hehe
16:42:17 <Xaroth> heh
16:42:22 <Xaroth> good progress :)
16:45:03 <TrueBrain> I was tihnking this would be an endless progress
16:45:15 <TrueBrain> but being at 10% of the C-ifying, and 25% of naming ...
16:45:19 <TrueBrain> it can only go faster, the naming
16:45:28 <TrueBrain> and the C-ifying stays the C-ifying .. :p
16:45:38 <Xaroth> and once naming continues, c-ifying will become somewhat easier as well
16:46:01 <Xaroth> easier to figure out what something does if you have clear names for things :)
16:54:55 <glx> http://glx.dnsalias.net:8080/opendune/file.diff
16:55:30 <glx> sometimes naming goes with C-ifying ;)
16:55:39 <glx> (not this diff)
16:57:02 <glx> and sometimes you know what the function does but you can't name it (like f__1FB5_17D7_0018_F3C7())
17:13:19 <TrueBrain> looks fine to me, except:
17:13:21 <TrueBrain> + for (index = 0; index < FILE_MAX; index++) {
17:13:22 <TrueBrain> + if (g_fileInfo[index].filename.csip == 0x0) break;
17:13:27 <TrueBrain> this is a bit in contradiction
17:13:33 <TrueBrain> either it should end on FILE_MAX, or on csip == 0x0
17:13:47 <TrueBrain> so either the if is duplication, or the break should be a continue
17:15:11 <TrueBrain> (btw, I don't check if you did the conversion correct; I just let me sanity work on the new C code :p)
17:19:26 <glx> oh right :)
17:19:45 <glx> I used a while (true), then replaced with a for
17:21:35 <TrueBrain> either way is fine by me :) But this is silly ;)
17:21:48 <TrueBrain> much better )
17:21:49 <TrueBrain> :)
17:23:03 <TrueBrain> I am gone for the night! Bye :)
17:37:27 <DorpsGek> SVN: glx (r724) -Add: C-ified FileInfo_FindIndex_ByName()
18:09:23 <DorpsGek> SVN: glx (r725) -Add: introduced g_map to simplify some accesses
18:17:50 <Xaroth> :o
22:19:55 <TrueBrain> glx: re-r725: it is not g_map
22:20:01 <TrueBrain> I dunno what it is
22:20:05 <TrueBrain> it is some auxilary map
22:20:18 <TrueBrain> I have this strange idea it is the radar
22:20:20 <glx> still it's easier to access that way
22:21:19 <glx> I'm creating some crash.bin :)
22:39:39 <TrueBrain> hmm .. I should spend some time in updating pieces of code .. like all those g_ should go via wrappers .. g_structureInfo etc ..
22:39:44 <TrueBrain> and flags should be made more easier
22:39:54 <TrueBrain> still not sure if that should be an enum, or via bitfields
22:52:32 <TrueBrain> not today :p
22:53:15 <glx> ok some crash.bin for you at the usual place :)
22:57:19 <DorpsGek> SVN: truebrain (r726) -Fix: compile issues and svn Ids
23:03:05 <TrueBrain> I don't feel like finding broken entries .. so I just commit them all :p
23:03:30 <DorpsGek> SVN: truebrain (r727) [JIT] -Add: mapped another 32 functions (crash-bins provided by glx)
23:03:55 <DorpsGek> SVN: truebrain (r728) -Update (r727): update decompiled code
23:06:17 <glx> nasty, it adds more unresolved than it solves
23:06:29 <TrueBrain> even one 3EEE, which is weird
23:07:07 <glx> well 1 was expected (I had it with security question failure)
23:07:45 <glx> and as soon a function is converted, stack usage changes
23:08:01 <TrueBrain> how is that relevant exactly?
23:09:45 <glx> 3EEE functions are on stack, if you convert a function you "remove" its stack usage, and if it calls another function everything is shifted
23:10:03 <TrueBrain> ah, like that
23:10:04 <TrueBrain> nasty
23:10:12 <TrueBrain> so a function we should rewrite ASAP
23:15:11 <glx> shouldn't be too hard
23:18:28 <glx> except the crazy stuff it does with all push/pop
23:20:06 <TrueBrain> I will give it a spin tomorrow
23:20:41 <glx> I can do it too, I think I see what it does
23:20:51 <TrueBrain> call int10 :p
23:21:28 <glx> yes but all the stuff around the call is to set register, and store back "return" values
23:24:24 <glx> and I think a full conversion is not really needed, it just needs to be patched to remove the dynamic function generation :)
23:25:04 <TrueBrain> something to fill 'patched.c' with ;)
23:29:17 <TrueBrain> would be nice to remove a bunch of functions :p
23:42:25 <TrueBrain> nightynight
23:43:45 <Xaroth> nn
23:44:09 <glx> I'll put a diff on my dev space