[00:56] hi guys [00:56] i've just been bitten by bug 575937 [00:56] :( [00:56] Launchpad bug 575937 in tomboy (Ubuntu) (and 1 other project) "Can't synchronize Tomboy Notes: Server returned 404 NOT FOUND (affects: 27) (dups: 5) (heat: 144)" [Undecided,Incomplete] https://launchpad.net/bugs/575937 [00:56] this is about the third time i've ended up with all my notes conflicting :( [06:46] poolie: did the script mentioned in the bug work? [06:47] i didn't try it because 2 or 3 other people reported it didn't work [06:47] poolie: yeah. I guess it was a silly question. Had the script worked you wouldnt have conflicting notes [06:48] hm [06:48] and would it have worked? [06:55] poolie: i have not used it before [06:55] duanedesign, poolie ? [06:56] bug 575937 [06:56] Launchpad bug 575937 in tomboy (Ubuntu) (and 1 other project) "Can't synchronize Tomboy Notes: Server returned 404 NOT FOUND (affects: 27) (dups: 5) (heat: 144)" [Undecided,Incomplete] https://launchpad.net/bugs/575937 [06:56] morning, by the way [06:56] awesome [06:56] :) [06:56] poolie, what ubuntu version are you on? [06:58] basically that script takes the oauth credentials from the token that syncdaemon is using and stuffs them into gconf, preserving tomboy notes token. [06:58] undecided, incomplete? [06:58] confirmed, high! [06:59] ah, it is undecided and incomplete for tomboy [07:00] and that's correct because tomboy does not know how to delete oauth tokens [07:07] istm that tomboy could be a bit smarter about resolving conflicts too [07:07] in some of these the two versions seem identical [07:12] poolie, tomboy does not resolve the conflicts, it either renames the local version or overwrites it, it does not check the contents and uses only revision ids [07:12] well, somehow that's conflict resolution [07:14] i know; it would be nice if it at least checked if the texts were identical [07:47] poolie, re bug #689982, i understand it may be a bit late, but do you have any fragment of the repetitive xsession-errors messages from that era? [07:47] Launchpad bug 689982 in ubuntuone-client (Ubuntu) "spins, writing errors, in gnome_settings_manager_stop (affects: 1) (heat: 64)" [Undecided,New] https://launchpad.net/bugs/689982 [08:13] rye, i believe it was just that one line i quoted [08:13] >> assertion `G_IS_OBJECT (object)' failed === mthaddon` is now known as mthaddon [11:27] good morning everyone! [11:29] hi ralsina :) [11:40] hello ralsina karni [11:41] hi duanedesign :) [11:41] U1 is looking great on Natty [11:43] duanedesign: I'm a little afraid of the new UI. does it rock ;) ? I'm very fond of Gnome. [11:44] I am on classic desktop at the moment. Though Ii do like Unity [11:44] aha :) [11:45] duanedesign: is the classic installed by default, too? [11:45] I had to make a smart ass coment on OMG Ubuntu. They had an article about the new indicators and of course there was complaining [11:45] duanedesign: throw the link at me [11:46] with indicators, complaining. with out indicators, complaining. /me facepalms [11:46] karni: sure [11:46] :D [11:46] http://www.omgubuntu.co.uk/2011/02/ubuntu-one-in-natty-becomes-notification-savvy/#dsq-new-post [11:47] oops, probablly take off that last bit [11:47] ok [11:55] "Same here; development files were lost because of its bad syncing." jezz.. ppl don't know what svn, git, bzr, etc is ? I'd never use Db neither U1 for syncing my trunk sources. [12:27] hi [12:27] I just installed nightly on maverick, it seems there is a dependency missing [12:28] Traceback (most recent call last): [12:28] File "/usr/bin/u1sdtool", line 33, in [12:28] from ubuntuone.platform.linux.tools import ( [12:28] ImportError: No module named platform.linux.tools [12:28] is there anything I can install quickly to resolve this? [12:30] hello zyga [12:30] zyga: I'm afraid that's probably not a dependency but instead that our maverick nightlies are broken [12:30] uh :/ [12:30] zyga: should be fixed in a couple of hours [12:30] I did this to check a bugfix related to bug 690145 [12:30] Launchpad bug 690145 in ubuntuone-client (Ubuntu) "ubuntuone-preferenes fails to start when network load is high (affects: 1) (heat: 6)" [Undecided,Incomplete] https://launchpad.net/bugs/690145 [12:30] ralsina, oh, great - I can wait [12:31] zyga: sorry about that [12:45] facundobatista: hey :) what's SYS_CONNECTION_RETRY ? does it mean SD should reconnect or it means SD *is* reconnecting? [12:47] ralsina, broken nightlies on maverick? I suppose natty is ok now? [12:47] since i am running that [12:47] rye: well, natty nightlies were ok friday night and I am using them [12:48] hm, why would maverick ones break? [12:48] * rye is checking... [12:48] karni, see docs/states_manager.svg , SYS_CONNECTION_RETRY means that it went to READY state, ready to reconnect if conditions ok [12:48] rye: that is a missing file so I would guess packaging rules? [12:48] ralsina, arghhh [12:48] facundobatista: oh.. thanks! [13:42] hello all! [13:43] hello alecu! You are in OMGUbuntu! [13:43] yeah, I saw it during the weekend :-) [13:45] ralsina, I also couldn't help but read the comments... and they talk about how annoying popups turn out to be :-( [13:46] alecu: don't worry, that's nerd talk [13:46] alecu: I think they look really nice. does it pop up when it connects for the first time? [13:46] alecu: and if you tell them "disable them here", they shut up ;-) [13:46] ralsina++ [13:47] I love this comment by duanedesign: "Ubuntu One had notifications in the first release. People complained so they were removed. Then people complained because they were gone. Now they are back and guess what...people are complaining." [13:47] yeah [13:47] alecu: as long as there are people that want them and people who doesn't, you will get complains both ways. It's just a matter of being smart and choosing who to annoy [13:49] for those who'd get annoyed, theres the indicator by rye, right? [13:50] karni, it is not yet compatibile with unleashed-queues syncdaemon [13:50] rye: ack [13:50] rye, alecu: I like both of your work! [13:51] karni, bug #717172 [13:51] Launchpad bug 717172 in ubuntuone-control-panel (and 1 other project) "Allow pynotify notifications to be enabled/disabled (affects: 1) (heat: 6)" [Medium,Triaged] https://launchpad.net/bugs/717172 [13:51] (although I haven't used it myself! lol ;) ) [13:51] but I read articles and saw screenshots of them. [13:51] rye: tnx [13:51] karni, my sd is stuck now and is in constant "WORKING", every 10 minutes i get a popup [13:52] rye: not sure why you telling me this? :) you'll be able to turn the popups off in the final release (That's what I read) [13:53] rye: you can't blame pop'ups for not knowing SD is 'stuck' ;) but certainly it's at least a papercut [13:53] karni, I love your work too, and I'll probably be asking you a few android dev questions in a little while :-) [13:54] alecu: you'll love it more once it's ready! :) I'll be happy to answer your questions. [13:56] alecu dobey thisfred standup in 4' [13:56] roger wilco [13:56] mandel, standup in 4' [13:57] nessita is not here because she spent the weekend rocking, everyone else is on loan :-) [14:00] me [14:00] too early [14:00] no, its 15:00 [14:00] nope [14:00] now it is [14:00] me [14:00] cunt ;) [14:00] me [14:01] * karni chuckles [14:01] hmmm.... [14:01] me [14:01] me [14:02] me [14:02] DONE: Add icon to bubbles (Bug #717312) [14:02] TODO: u1couch API. Bug #702183, Bug #702116, make UDF notifications aggregate [14:02] BLOCKED: Don't know if xorg and the nvidia drivers are working [14:02] Launchpad bug 717312 in ubuntuone-client "Icon not shown on messaging menu (affects: 1) (heat: 6)" [Medium,Triaged] https://launchpad.net/bugs/717312 [14:02] Launchpad bug 702183 in ubuntuone-client (Ubuntu) (and 1 other project) "Syncdaemon needs to open the control panel in the background and change the launcher icon to urgent when the user exceeds their quota (affects: 1) (heat: 120)" [Medium,Triaged] https://launchpad.net/bugs/702183 [14:02] Launchpad bug 702116 in ubuntuone-client (Ubuntu) (and 1 other project) "Syncdaemon needs to show and update a progressbar in the Ubuntu One launcher for pending operations (affects: 1) (heat: 120)" [Medium,Triaged] https://launchpad.net/bugs/702116 [14:02] mandel: you [14:02] DONE: Splited dbus reusable code so that it can be used on windows .Added tests to ensure methods relay the params correctly. Experimented with namepipes over the weekend and decide to go with twisted pb. [14:02] TODO: Implement twisted pb server & client. [14:02] BLOCKED: no [14:02] LOVE: jar food [14:02] HATE: open jars with 1 arm [14:02] dobey, please [14:03] come on dobey, I have a call in 6 minutes :-) [14:04] λ DONE: releases for narwhal, fix tiny distcheck issue, [14:04] λ TODO: banshee mustic store fixes, finish bug 673012, evaluate SRUs for maverick [14:04] λ BLCK: on-call for jury duty [14:04] alecu: go [14:04] DONE: worked on a branch to add dbus configurable notifications [14:04] TODO: finish said branch, resume droidcouch api work [14:04] BLOCKED: no [14:04] DONE: reviews, canonicaladmin, bug #714976 bug #712674 [14:04] TODO: reviews, management stuff, sprint planning, triage another 8 tons of bugs, some coding (my days are all alike) [14:04] BLOCKED: no [14:04] ralsina: Bug 714976 on http://launchpad.net/bugs/714976 is private [14:05] (oh, I forgot another TODO: setup natty on my desktop, and look into libunity again) [14:05] workstation [14:06] Can I get reviews for https://code.launchpad.net/~ralsina/ubuntuone-client/fix_712674_on_1.4/+merge/49460 and https://code.launchpad.net/~ralsina/ubuntuone-client/fix_714976/+merge/49623 ? Don't be too harsh on me ;-) [14:06] unless you mean you're going to burn a cd, and prop it up on your desk [14:06] dobey: natty runs on any arch, even furnitures ;) [14:06] ralsina: on it [14:06] thisfred: cool, thx [14:06] dobey, my laptop is a workstation too [14:06] mandel: call on cparrino's number in 4' [14:07] ralsina: ok, launches skype [14:07] alecu: well, it indeed does not fit in a pocket [14:08] ralsina: ah, both C. That's probably best left to someone with more C-fu, sry [14:08] dobey, I've got a pocket in my backpack that fits my laptop! [14:09] thisfred: well, they would probably have been better DONE by someone with better C-fu, too ;-) [14:09] enough with the flattery already [14:09] But hey, it's coding, and it has kept me smiling through the morning :-) [14:10] dobey: I thought you told me incomplete bugs expire by themselves? [14:10] ralsina: after some arbitrary period of time, yes. not a few days. it's like 2 months or something [14:10] dobey: check https://bugs.launchpad.net/ubuntuone-client/+bug/418712 [14:10] ralsina: Error: Bug #418712 is private. [14:10] It turned 13-months old saturday :-) [14:11] ralsina: ah, the configuration option was disabled for some reason. i just enabled it [14:12] ralsina: and that bug was only set to incomplete 1 month ago [14:12] ralsina: the timeout is determined from that time, not when the bug was filed [14:13] 2010-01-12 is not a month ago [14:13] oh, right. nevermind me then [14:14] the old YYYY-MM-DD strikes again :-) [14:14] no [14:14] the "not quite awake yet" strikes again [14:14] hahahaha [14:15] I had to look twice, luckily Joshua had a comment on 2009-08-25 :-) [14:15] i just keep forgetting it's 2011 [14:16] at least, until i'm more awake [14:41] dobey: got rid of the blank lines in https://code.launchpad.net/~ralsina/ubuntuone-client/fix_712674_on_1.4/+merge/49460 [14:48] ok [14:58] Hola nessita! I'm loving the new look of the control panel initial screen. [15:02] hi alecu. Thanks! all design and UX team credit [15:04] hrmm [15:04] something seems wrong with launchpad [15:23] rodrigo_: did you see https://code.launchpad.net/~dobey/tarmac/no-more-edge/+merge/49649 ? [15:28] dobey, no, looking [15:38] dobey, tarmac? you want me to approve that? [15:41] rodrigo_: err, sorry. stupid paste error :( [15:41] rodrigo_: https://code.launchpad.net/~dobey/couchdb-glib/vapi-build/+merge/49281 [15:57] Time to go buy breakfast. I'm calling it a day, I'll be online a little later if anybody needs me. [16:02] alecu, thisfred: how's the unity work going? [16:04] joshuahoover: not so good: I have an nvidia card, and so no way to run unity [16:04] though I have not tried updating today yet [16:05] joshuahoover, we've also been trying the latest libunity builds, but they don't yet work with python. [16:05] joshuahoover, there's a bug for that, let me find it. [16:05] yeah that too [16:06] alecu, thisfred: are you guys in touch with anyone from the dx team about this? this is a HUGE roadblock for us to get unity integration working on time for feature freeze [16:07] we're subscribedt o the overarching bug that's tracking the second issue [16:07] if you guys get me the bug # i can follow up on it :) [16:07] I don't know what can be done about nvidia and xorg not working together [16:08] bug #709240 [16:08] alecu: Bug 709240 on http://launchpad.net/bugs/709240 is private [16:08] ah thx, almost had it [16:08] thanks alecu and thisfred! [16:08] well, it's not private! [16:08] thisfred: you can downgrade to the non-broken xorg, and don't do a dist-upgrade [16:08] * dobey hugs his still-working nvidia :) [16:09] dobey, which version would that be? :) [16:09] ii xorg 1:7.6~3ubuntu4 X.Org X Window System === beuno is now known as beuno-lunch [16:10] i've just been doing apt-get upgrade, and for the things held back which aren't X, for whatever reason, doing install $package for them separately, and avoiding dist-upgrade [16:10] also avoiding dist-upgrade because i don't want to get things re-installed which i explicitly removed already [16:11] dobey: thx! [16:12] of course I'll probably have to downgrade a bunch of other stuff [16:12] thisfred: well, only the xorg packages [16:12] afaict [16:15] alecu, thisfred, ralsina: #1 & #3 in bug #709240 are fixed, so that leaves #2 in that bug, which ken is following up on since it's also blocking the new gwibber on natty [16:15] joshuahoover: Bug 709240 on http://launchpad.net/bugs/709240 is private [16:16] joshuahoover, great. Do you know what irc channel is this being worked on? [16:16] alecu: good question, i'm not sure...let me find out [16:17] dobey, added a comment to the branch [16:17] rodrigo_: cool, thanks [16:18] joshuahoover, I would guess #ayatana on freenode [16:19] rodrigo_: i'll try to move them over. it's easier to keep them in the same dir for the dependencies though [16:21] dobey, yeah, but I prefer having the test programs separated, so if it's not too much hassle, please move them [16:21] yeah i will look and see [16:37] what info do i need to provide, for a nautilus crash when ubuntuone-syncdaemon is running? [16:37] in a bug report... [16:57] dobey I'm not having much luck with downgrading xorg. How would you go about that? apt-get install package=version does not seem to work [17:10] maybe I should just go with a VM on my other machine [17:15] thisfred: not sure. what's the error? [17:19] dobey: no error it says 'xorg is already at the newest version' [17:19] which yeah, it is [17:20] thisfred: you did apt-get install xorg=1:7.6-3ubuntu4? [17:21] yessir === beuno-lunch is now known as beuno [17:23] hmmm apt-cache show does not show a newer version either [17:24] or look in your /var/cache/apt/archives/ directory for the older xorg packages [17:26] I have 3ubuntu3 and 3ubuntu1 in addition to 3ubuntu4... But if it works for you with 4, I wonder what is up [17:28] maybe it's the nvidia drivers rather than xorg that need to be held back [17:30] hmm, or xorg-core [17:31] i don't know, i never had to downgrade xorg, because i never upgraded it to the new broken version in the first place [17:31] thisfred: http://pastebin.ubuntu.com/567054/ [17:32] thx. trying virtualbox in parallel, who knows that works [17:58] yeah virtualbox does not work with unity yet either [18:06] *or* I can break my laptop even more, and install xorg from xorg-edgers. At least that one doesn't conflict with nvidia-current... [18:06] totally doing that [18:09] well it doesn't matter because the ABI changed, so the nvidia driver won't load [18:30] * karni has a terrible headache ouch [18:30] you can make it ignore the ABI change and it works [18:30] I was in that situation in Arch a few months ago [18:31] I think something like X -ignore-abi or similar [18:31] s/and it works/and it may work/ [18:31] oh right, that worked with the previous X+nvidia break [18:31] but i guess maybe not now [18:32] well, it's something to try at least :-) [18:37] dobey: can you re-check https://code.launchpad.net/~ralsina/ubuntuone-client/fix_714976/+merge/49623 ? [18:43] done [18:47] dobey: coo, thx! [18:48] dobey: you were totally right about the published files thing, BTW [18:49] i try :) [19:01] hehehe [19:02] Now I only need a simple way to test doing async calls to syncdaemon and see if it ever returns anything. Because either it never does or it returns empty, and I am tired of debugging in programs that disassociate from terminals ;-) [19:06] ralsina: write a python script that does the call with async dbus then :) [19:07] dobey: yeah, that's the plan [19:07] dobey: but I believe on tracing bugs in the app where they happen until it's impractical. Now it's impractical ;-) [19:08] i tend to prefer until evidence points elsewhere, rather than impracticality :) [19:08] i tend to find tracing bugs in any app to be generally impractical anyway [19:08] dobey: well, it is particularly impractical in gtk+ apps in my short experience, since I can't attach a freaking debugger ;-) [19:09] yes you can [19:09] attach works in gdb regardless of the widget library :) [19:10] and in python you can embed pdb anywhere you want, of course [19:14] dobey: yes, I can attach but then I can't set breakpoints because I must be missing some debugging symbols [19:14] dobey: I use pudb [19:14] on python, that is [19:15] well you can always just g_warn ("blah blah") in the code, and remove it when you finish debugging :) [19:16] dobey: I resorted to fprintf :-D [19:25] dobey: looks like bug #576408 is the exact same bug as in the published files, but for udfs. [19:25] Launchpad bug 576408 in ubuntuone-client ""Share on Ubuntu One" and "Stop synchronizing on Ubuntu One" menu items disabled (affects: 7) (heat: 30)" [High,In progress] https://launchpad.net/bugs/576408 [19:25] yay, I get to learn how to use syncdaemon from python now :-) [20:28] Anybody wants to laugh and tell my why a small script is obviously wrong? [20:28] https://pastebin.canonical.com/43304/ [20:29] ralsina: oops I don't think I'm authorized ;) [20:30] * karni lied. I just wan't stay away from U1F for longer than an hour.. [20:30] karni: it's a python+dbus script, I can put it on a public pastebin :-) [20:30] ralsina: oh, if it's dbus, then no need xD [20:30] hehe [20:30] ralsina: hhaha sorry, I haven't been there (yet!) [20:31] karni: it's fun, in a way ;-) [20:31] ralsina, will take a look in 40' [20:31] alecu: awesome [20:31] * alecu runs to kindergarten [20:31] ralsina: I only know it's a bus of messages, event/signal driven. and I'm soo making use of such approach right now in U1F [20:32] alecu: don't hurt yourself laughing at it, but I am learning twisted and DBus is pretty opaque to me [20:32] karni: having DBus is one of the best parts of coding on Linux [20:32] ralsina: :) [20:32] karni: sadly I know it's cool and I have used it, but I don't quite understand it [20:32] karni: it's quite jargon-heavy [20:32] ralsina: at least you have used it, which I can't say about myself (doh) [20:33] karni: hehehe [20:33] by used it, I mostly mean I have bashed my head against it for hours [20:33] but I know U1 and other apps use it to send messages between each other [20:33] But now I have people I can ask and they have to explain it to me! mbwahahaha [20:33] ralsina: that's something (I have really *used* Android then ;) ) [20:33] ralsina: hahahah [20:37] ralsina: the worst part of the whole adventure is that we hit at least 3 Android bugs during AU1 / U1F developmnent, which drove me really crazy :< [20:37] That sucks [20:37] karni, if you don't hit system bugs, whatever you're doing is not terribly exciting ;) [20:37] ralsina: for example, there's no Base64 url safe encoder! [20:38] beuno: hahah [20:38] Oh, hehe, I found how to trigger notifications without doing anything useful. [20:38] beuno: right! just the thought of deadlines is enough 'exciting' ;) [20:38] deadlines, I have rarely seen people killed by those lines [20:38] karni: what do you want? Writing CRUD for store stocking systems? ;-) [20:39] Turns out that if you connect via DBUS to syncdaemon and ask for anything, you get a "Synchroniation finished" bubble :-) [20:39] Even if you didn't upload or download anything [20:39] beuno: remember how we had that favourite file sync feature? ATM I'm working on *uploading*/sync those fav items based on timestamp if it's modified locally (say, somebody added some notes to a text file or modified a picture) [20:40] ralsina: that's messy ;) [20:40] beuno: I mean, it syncs-down, and I want them to sync-up as well. [20:40] karni, awesome [20:42] beuno: got a sec? I'd like to ask about the disk space management. I've got an idea but haven't documented it yet [20:42] karni, sure [20:42] beuno: so basically, you open an activity to manage files/space [20:42] beuno: you receive info how many files/folders you have, how many of these are favourite and how many just downloaded [20:43] beuno: you have an option to clear the downloaded/cached files [non-fav], or.. and now the question [20:43] beuno: perhaps a list of favoruite files sorted desc. by last time modified, which once you unselect gets deleted as well - what do you think? [20:44] beuno: we can delete cached files, but we can't just 'remove all fav's too', unless that's what the user explicitly wants. [20:44] beuno: because at the same time, we turn of the 'favourite' status of an entry. thus, we sync the file no more. [20:45] beuno: also, an option to specify how much at most U1 can take up [20:46] so, it sounds more like a filter than a sorting option [20:46] if the user fills that up, he'll get notified next time he want's to download a file [20:46] * beuno nods [20:46] that sounds good [20:46] beuno: what I meant - list all favourite files, but sorted from (doh!) less recently modified. so that user can start unselecting some. [20:47] karni, right, I don't know if I would sort by recently modified by default [20:47] beuno: I also permitted the app to connect on wifi/mobile (while not roaming), but sync only when suitable connection is present [20:48] beuno: uhm. any ideas? that list idea is pretty fresh, so we can totally change that [20:48] karni, I would group by which folder they are in, and sort alphabetically, closer to what they actually see on the regular view [20:48] beuno: makes perfect sense, will do that. [20:49] I think ordering it by last modified assumes people will stop syncing the newest or oldest, and I'm not sure that's the case most of the time or not [20:49] coming back to connection - I did that because the user may want to download a single file on mobile, even if mobile is not his/her preffered sync connection [20:50] beuno: right.. I just thought that files which are syned more often [i.e. are favourite and more frequently downlaoded] are less likely to be unchecked [20:50] karni, +1 on the connection config [20:50] good [20:51] karni, so, I'm not sure if that would be the case vs folders that use up the most space, for example [20:51] beuno: I'll compile the feature list for the space management and ping you for an ack [20:51] so, if there isn't a super obvious default, use whatever everything else is using :) [20:51] aa right.. [20:53] beuno: we can definitely make that space management screen much more fancier in the future [20:54] karni, design is working on it as we speak! [20:55] beuno: right! =D [20:58] beuno: I'm thinking of droppping the 'favourite file' in favour of 'synced file' as in 'synced folder' (formal name for UDF, if I'm not mistaken. that's what aquarius said once) [20:58] karni, yeah, that sounds more accurate [20:58] okey [20:59] the user will instantly know what we're talking about if we say 'synced files take up X megs' 'you have selected Y synced files' etc [21:15] heh, I *always* get Internal Server Error when saving a wiki page, and it *always* saves correctly [21:17] yeah [21:17] beuno: I've scribbled some of those notes at https://wiki.ubuntu.com/mkarnicki/u1f/#Brainstorming under Disk-space management. you probably subscribed to the wiki anyway. feel free to edit anything anytime. [21:17] I'll grab something to drink. [21:17] beuno: what't the name of your team on launchpad? [21:17] it's a known problem, it should go away when they update wiki at some point (there is a bug about it) [21:18] And, are you the ones that should get funambol bugs? [21:25] ubot4: @ping [21:25] ping-pong, a fun game for all the family [21:25] pong would be enough, but thanks ;) [21:38] ralsina, ~ubuntuone-web [21:38] karni, looking [21:38] beuno, thx! [21:38] karni, right, KB/s, the same as on the desktop client [21:49] beuno: ac [21:49] *ack === zyga is now known as zyga-afk [22:53] eod for me. have a nice evening! [22:58] ralsina: thanks, bye bye [23:22] time for supper. have a nice evening guys [23:22] I could use those markers at that stage with the upload command, but - there's a simpler way to do that, and I'm going to do just that. === spm` is now known as spm