Citrix Developer Solutions Podcast

S1E19 - Solving Podio Gaps 3: "Six Gaps Solved in 30 Minutes"

June 04, 2019 Brick Bridge Consulting Season 1 Episode 19
Citrix Developer Solutions Podcast
S1E19 - Solving Podio Gaps 3: "Six Gaps Solved in 30 Minutes"
Show Notes Transcript

This podcast is about the design and development on the Citrix Podio Platform. 

1. Creating an OR filter: https://bit.ly/2wNjW05
2. Adding a descriptive line of text in an app form: https://bit.ly/2EUzX8L
3. Copying field data between apps: https://bit.ly/2WO9PGK
4. Exporting data as CVS without including all the data within each item: https://bit.ly/2Ik2Yvw
5. Correcting the alphabet order for other languages: https://bit.ly/31aw350
6. Email to App- Assigning podio users to items: https://bit.ly/2wCZZIW

Follow us on social media (@PodcastPodio) to stay up to date on all Podio Podcast news.

Support the show (https://www.buymeacoffee.com/brickbridge)

Gil Roberts:

Welcome to the podio solutions podcast, season one, episode 19. I'm Gil Roberts and with me today is our lead developer here at Brick Bridge Consulting, Alex Shull. Hello. This podcast is about the design and development on the Citrix podio platform that can be found at Podio, p o dio.com and use this podcast to discuss our own experiences with podio as well as other interesting topics from the podio developer community. If you're a podio developer or designer working at an agency, small business or enterprise, then you should immediately hit that subscribe button. If you have already, thank you so much for your support. Lastly, before we dive into today's topic, if you have a topic, issue, question , solution, problem, or anything else you'd like to discuss or have us discuss, we want to know about it, hit us up on Facebook, linkedin, Twitter, or send us an email or podio message to podcast@brickbridgeconsulting.com. Today's topic , uh , we've got a solving podio gaps. Uh , number three here. Uh , we're going to go over a few of the community forum questions. Uh, try to get through three, four. We can do, let's see what we can get done. Um, so let's, go ahead and just dive right into it. Uh , the first one we have here; let me pull that up. It's a, a create an OR filter, uh , for podio. Let me see when this was posted. It was pretty recent. Yeah. April 22nd, Connor LaVine posted it. Um, I'll do this for those. That will , we'll have it, we'll have all these down in the description of the podcast, the link, so everybody can go take a look at it. Uh , but I'll go ahead and describe . So it's creating or filter for podio. Most relational databases include this type of search option, but it seems to be missing from podio. This is frustrating when you are trying to create views to display all the data as it relates to more than one customer. So thanks Connor for leaving that in a community support forum. So what's a , let's look at this gap together.

Alex Shull:

Yeah, I see what he's talking about in the creation of views that when you're selecting the filterable , um , columns, when you're creating a filter that you cannot distinguish between , um, including the filter or making it an or proposition that doesn't exist and it is useful. Um, but I think that you really need to think of the, maybe the possibility of using a calculated field to do the same thing that requires you to put some object in a javascript field or you can use a, something like Globi flow to calculate your field if you find the calculation easier to do in PHP or something some other way. Um, but ultimately , um, that it depends upon how frequently you're changing your filters. If you're doing a lot of adhoc filtering using or then you need to push it into a different data system because that's not, podio isn't set up to see that. That's just not, it's a, it's a strong point.

Gil Roberts:

Yeah. So basically , um , that calculated field, you could probably hide that too from a , from a user design. Yeah . Design perspective. Yeah . User experience perspective. Sure. You could just build it, build out a calculation field, throw it in there and

Alex Shull:

...yeah, and then again, it depends upon how you're using or if it's just a couple of views or um , even a significant number of views, but they're not changing frequently then what the strategy I'm suggesting is feasible. But if you're talking about using it in an ad hoc fashion, then I don't think , um, the current data structure in Podio is going to suit your needs.

Gil Roberts:

Is there any other alternative ways that they could maybe structure their data where they wouldn't need this or just eliminate the...

Alex Shull:

...you know, that's a really good question, Gil, because it always comes down to, for us at least when we have a consultation, we like to look at what is the bigger issue that drives the need for an or, because oftentimes an or if you think about it is a case for a split in a decision where you're saying there are these two conditions where maybe if you identify those conditions independently in your business flow, I don't know. There's a whole bunch of assumptions we're making about the fact that, or is it really the solution for you. And maybe it is, but the , it's a, once you step away from the specific problem you're solving and sometimes you look at a bigger issue and realize that , um, your problem came from a design choice you made previously, but that we don't know where, what , where this is. You're right. Sure .

Gil Roberts:

I just want to toss that in there. Just like, hey, why even why even create the problem for yourself. Think about that from a design. And again, as you said, that may be the design, right

Alex Shull:

and the details aren't in this. And that's, that's the thing. I think that, you know, there's a always a learning curve dealing with the way new database technologies work. And there is an aspect of which podio is a database , um , technology , um, it's more than that, but fundamentally the data structures as supports are strongest that particular things that have to do with , um, you know, the design of very loosely coupled applications and this , um , prototyping system. And so that data structure is very flexible and open. Um, but may not serve all the purposes that you need it for so that then you export your data into the appropriate system. Fair enough.

Gil Roberts:

All right , let's go to the next one. We have one from May 3rd, 2019. This is Claudia VanGool, g o o l sorry if I'm pushing anybody's name , uh , I'm just gonna roll with it. Uh , I am bad at pronouncing names. Van "Goal" Okay. Yeah. I won't go "ghoul". It might be a little too devilish . Okay. So she says, how do I add a descriptive line of in an app form?

Alex Shull:

Yeah. Um, is it possible to add a descriptive text in between the different fields in an app? Thank you for your answer. Um, that's um, it sounds like she's just looking for literally a decorative, separate separator, kind of like you can do with a Java script element or you can create a color , you know, field did things like that. And so there are all sorts of ways that you can use a script element to output some , um , markup that will , um, add a little more structure to your , um, the applications that you design in podio. Um, so try that out.

Gil Roberts:

Yeah, I think we, we've run into this before. This is something like the section header . Yeah .

Alex Shull:

Section headers. Yeah. So there's a, that's part of our core design is the, the major input applications that um, we um, create for our clients , um, is broken up using section headers that are um , navigable and also , um, just provide a good structure for a form that otherwise might be a little, you know , um, difficult to scroll through.

Gil Roberts:

Yeah. Maybe especially if it's lengthy and there's like big, big chunks and it may not be appropriate to bust into more apps that it is just kind of a large data entry. That sounds like the case that she's looking for. I think a , there's one pitfall that I know of in that is that I think in the calculation fields, and correct me if I'm wrong here , I think you'd have to reference at least one variable or add a variable and you can just basically just make a dummy one and then just never call it just like never, just , just one of the top line is exactly put it in there . I know that's not a clean thing to do. Offloads a little processing onto podio, but I think it's happening a lot. Yeah, I'm feeling it's happening a lot. Uh , I've seen it in a lot of other solutions. We've used it , um, you know, until they create a kind of decorative field type , um, that may , uh, as their need. I think it's fine. Probably. Okay. Let's move onto the next one. Uh, copying field data. Um, looks like between apps . So let , let me pull this one open here and we got a copying field, data, birthdate and parentheses between apps. This has come from Jim Cantrell April 15th, 2019. I thank you for this one, Jim . Um , Hi, is it possible to copy the data from a date or category field from one app to another? Um , he's got a long example here. I won't Belabor this a , again, the links will be down at the bottom.

Alex Shull:

Yeah. And this one is, as the rest of these are on help.podio.com where people have posted these , um, obviously we would like you to send some directly to us, but um, this , there's already a response here. Um, but it's a , it's an interesting case of just understanding what the capabilities of Globi flow are. There, there is a, a situation where you're wanting to take data from , from one application and you're wanting to under some little basic conditional logic, add that data to another application. And that's just the, you know, I , I've broken his , his case down to an even more general case, but if you need to do that, then globiflow is all you really need to do it . It's , um, there , there's a , if you're doing a straight copy, then it's , um, mind numbingly easy to do that and with Globi flow. That's what it was built to do. And if you're doing something more complicated than you might have to have someone help you with the logic , um, in PHP. Um, but you know, this is, this is an easy case of just , um, take the tool that comes with podio and that's globiflow

Gil Roberts:

yeah , I know a , when we responded to this or you respond to this, Alex, you said a also how long to wait to build your own update or an AWS referring back to one of our other products.

Alex Shull:

That's, yeah. Okay. That's a good point because in this, there are a few cases and this is one where if you have a single app that you're dealing with, then the Java script , um, example I posted for , um , having a , um, function hosted in AWS lambda that authenticates at the app level and podio would handle this case , um, except you're copying to another app. So maybe it wouldn't handle this case. Actually, it's exactly the opposite. Um, I think there's one of these other ones we were looking at , um, that I think you can, for instance, the create an order filter we discussed earlier that could be hosted in lambda. I think that's a, that's a , um, a calculation back to the same application. Um, and

Gil Roberts:

touch on something about the, you're saying we potentially, maybe, maybe not with the example that we have posted there, but potentially you could bring some of those data elements off podio having to do the back flips and manipulat it and then re, you know , inject it back into podio as a different option, which is basically what globiflow flow is doing. But if you needed something more complex or maybe you want to run a secondary process or something

Alex Shull:

Or you're already familiar with Javascript, you know, that's a hurdle for some people just to deal with the language they're not familiar with. So if you're used to writing the calculations inside of Podio, the same javascript language is what I use to write the AWS lambda function. And so you could apply the same tools, the same , um, you know, libraries that you may be used to in javascript and , um, handle much more complicated logic. And, you know, it's very cheap. It's not, it's not free, but it's extremely cheap to run functions like that in lambda, fractions of pennies. Yeah. You, yeah, you , you're not , um, unless you're really, really taxing a podio heavily, then you're not gonna , um, come close to even the , the cost that you have for podio itself. So, yeah,

Gil Roberts:

that's fair. And I could see maybe if you , uh , if in when we progress at that a sample , um, it might be able to do multi app.

Alex Shull:

Yeah. I'm going to update that with a version that supports full o off 2 authentication and then it has the full access that you do as a user and then you can do things like this. Um , again, you'll have to write your Java script or the, we can add a few functions for people if there's any traction and people are interested in supporting it. Um, but , um, again, that's , um, a case where it's a development task. It's a light development task. I've made it a little bit easier, but you have responsibility for code running in an environment somewhere and uh , some people want all their code to be on the platform. So keep that in mind.

Gil Roberts:

All right , excellent. Uh , let's go another one. Uh, let's see here. We got one from Piers Edwards. Uh , May 22nd, 2019, so this one's a really close , uh, today we're recording. One is today, June 2nd to second year , June 3rd , third, excuse me. Uh, this one , uh, from Piers says export data as CSV without including all the data within each item. Though you can filter apps to only include certain items before exporting the data as a CSV, there's no way to filter the items by heading to only include some of the data included.

Alex Shull:

Yeah, okay. This is, yeah, this is a classic , um, you know, aspect of the exports that they give you everything. Um , when you export data and maybe you don't want people to have the hidden fieldsand so on and so forth, and that's entirely valid. Um, there the best solution that I can think of for this is to have a flow , um, create a shadow copy , um, based upon , uh , a view or some other , um, you , you don't have to use a view, you can just do a direct shadow copy to a secondary application that doesn't have the data elements that you don't want to export it. And then when your exports out of there, it's a very lightweight to do it. Um, and , uh, it makes it a little bit more maintainable. Um, especially if you have certain rules that you want to apply about what data gets exported because then you can maintain that in a globi flow where rule application as possible, which you know, is , um , it depends upon your scenario. But definitely I think that, you know, again, you , you could use the, the sample that I put on online , um, for , um, capturing data out of this and you could actually use it to return a formatted CSV from javascript if you really wanted to. Um, but that's some developer work. Um, so, but if you, if you have some javascript skills, you could uh , try that little um , sample code. But I , I recommend globiflow this is the right solution.

Gil Roberts:

Yeah, absolutely. So kind of in summary on that, it basically maybe you have a button somewhere in podio. If you want to run the whole thing from there, you just click on a button. Give me my report. Maybe you set up on a date timer, right? Like a date time.

Alex Shull:

Right . I was thinking of it is, I mean in podio because the limitation isn't on the amount of data that you're storing. You could have a kind of a shadow application right on every create on every update. It maintains the fields that you want available for the download.

Gil Roberts:

Okay . And then you run it either click or timer a dilverence, via globiflow, delivers that CSV file to to maybe attach this to item or delivers to an inbox

Alex Shull:

or you let people export it from that app. Cause I think that's one of the aspects of it as well.

Gil Roberts:

Yeah . And maybe it's a manager , maybe that report , uh, those items are going to managerial space. I mean there's a lot of things you could do with that shadow app.

Alex Shull:

Yeah. And then some of those questions become broader as to what you're really trying to accomplish. But for the narrow case that you described, Hopefully those are that if you a try those directions, they meet your needs.

Gil Roberts:

All right. Excellent. And for our listeners, we will , uh , in the show's description, have a link to that sample , uh, it can also be found at our Sassafras website. Again, links all available in the description , um, let's go to, Oh, I think we got, we got time for maybe a couple more here. Uh, what's, what's pick off another easy one. Uh , Correct alphabet ordering for Scandinavian and other languages. So this came from Martin Larsen , um, may sixth, 2019. Hi, We use podio in Swedish and also through web forms towards Swedish speaking customers. We have discovered an issue with a to z sorting of items, the Swedish alphabet places, the letters. Uh, I do not know what it is. We don't have it available. It's got, i t's a, and it's got the little symbols across the top. I mean not all l anguages. Yeah. I'm not a linguist, so I don't know a what that is, but u h, l inks, description i n the description o f those, they sort those letters which are AA and n o u m, last in the alphabet and that order o r podio sorts them has variations of a and o ver s ay a re not, t hey're actually at the end of the Swedish alphabet. It makes confusing. It makes it confusing for users of our web forms since a long list of names won't appear in the right order. I'm sure that this is true for other languages as well. I suggest correct listings should come before links with the language settings.

Alex Shull:

Yeah, that's a great point. Um, and obviously we haven't had to deal with that not being Swedish speakers, but the issue I guess is that database technologies have built in sort orders for the character sets that , um, they're built to use. And my guess is that there's an underlying database , um, limitation for getting efficient sort for that character set . I'm not, that's not my area of expertise by any means. So I'm kind of stretching there about what the source of that, why that isn't already the case in an international product like podio. I'm a little bit surprised to hear it in all honesty. However, I think that this is another case where if you have one column, two columns where you want to do alphabetical sorting in another language, then it would be entirely possible to have a globiflow, um, or even a , um, the lambda , um, example that I provided in a that runs on node js and AWS lambda. Um, take those items and actually , um , calculate their position in the list and create that as a calculated field. And you could sort by that calculated fields that I think it's a solution. Um, it'd be interesting to work on. I, I can , um, it would require that that flows be running for your sorting to be updated. But , um , I'm working on the presumption that the sortable the column you want to sort on doesn't really change that frequently if you're doing a lot of , um, imports. And then you need to have sorting done afterwards. This is going to be an expensive solution. But if you're just adding items in a transactional way and you want them to go into a sorted list and I think you could actually work this into the current podio architecture and it would, it would work pretty well.

Gil Roberts:

Okay. I thought, you know , uh , similar lines when I first read this, I thought possible, you know, these are supposed to be at the back end of this Swedish alphabet, right? In this particular example , you know , I'm seeing z cause they're going off an English sword. You have Z and then z one, Z two z three. And that, you know, when, whenever you run across this symbol, it just tags it as that. So kind of almost like converting it over to the English account, but would that even work?

Alex Shull:

No, I don't think so, unfortunately. And the reason is that , um, one has its own, sort order as a character, so it's not z one is not a character in the end.

Gil Roberts:

Well, I'm talking about in a calculation fuel . So yeah. So same , uh , piggybacking off of what you're thinking about, which is having a calculation field, that's the sort order. Yeah. But just when I run it across one of those, you know, let's say I, I'm going to assume , um , he doesn't say inside of this, I'm gonna make an assumption that maybe this letter is the letter of their, the first letter of their first name or first letter of their last name actually would probably be better. So we want to rank and put them in order. So I'm a with an oon loud that would, that would be beyond Z, right? Well podio is putting that with the A's cause the A's, the base character there. So having that sort when , when it reads that last name, first character, let's say R, it puts the r in the calculation field. When it reads this A with oon loud, it puts the z one so that it'll list it in the z's. This is just something I thought off the top of my head.

Alex Shull:

I'm not, I see, I kind of see what you were saying. But I think that the problem is that we don't know the language well enough to know when those characters appear and how expensive that as a calculation would be versus doing a calculation off of podio and then updating the record afterwards. Yeah, I mean sorting is a, is a, is a well known problem in computer science, but it's a question of how they're using the sorting as much as anything. And I, I wouldn't want to mess with sort orders , um , by changing characters around because I don't know how that affects sorting. Whereas if you have the characters available and you just know which, what the precedence is, then you can write an algorithm to sort them and return the answer. And in this case, what you'd be doing is finding the correct position in a list of existing podio items and assigning it the , the position within that list. So , um , but it's not an easy problem. It's much better if it's built into the database or , um , that's , that's what you want. Um, clearly that's the, a , the optimal solution.

Gil Roberts:

Well , we've got time for one more today. I think we want to dive into this one, this one now . Um , when you and I were looking at these beforehand, this one looked a little more complicated. Uh , email to app assigning podio users to items. Um , this is from Admin, DCA. I don't know who that is. Probably a probably an Admin, probably an admin account , uh, when, you know , uh , so I , well I'll read the first few sentences. Uh, listeners can follow along with more of the sentences , um, after , uh , in the link description. Uh , we are working with different freelancers on different projects because of privacy. We do not want everyone to see all the items with email to app. We have created an app in which freelancers can create a new project with an email. But as for further updates, we would love the freelancer to gain access right away and parentheses here to share the item a freelancer created with him or her automatically close parentheses. Currently we have to share the items manually by hand, which can , uh , which takes quite a long time. And then it gives you an example on that. So I'll let you , uh, try to tie this one here .

Alex Shull:

Um, I'm pretty sure, I mean this is a case which you can handle. Um, globiflow I I guess is not, does sharing, I can't remember... Distribution .

Gil Roberts:

I want to say yes. Um, I can look that up real quick. Yeah .

Alex Shull:

Let's, let's, what's operating on the assumption . Okay. I think Globiflow will do sharing like this for you actually. So that would make it um, okay. On the item create event just to detect who created the item. Cause I think the email-- Will the email track it to the right user though?

Gil Roberts:

No because it's coming into email. Okay. I'm wondering if the...

Alex Shull:

so we don't know, but they have to know who the is when it comes in. So if you're , if in the item when the project is created, the, the, the user who's emailing you then is using the same email to podio link as everyone else, the same address. Then they have to submit information in there that obviously lets you drive a globi flow for sharing. Now, if globi flow doesn't share correctly, we've had to do some development on our backend Sassafras to improve sharing of things through Google and some other cases where you don't know whether someone's a member or not. It's, but I think that , um, you don't need to go that far. Even you have a single app. Um, in theory you could even use the um, javascript running on AWS lambda to call the sharing API. It is part of the API. Yeah .

Gil Roberts:

So I'm looking up, it will, so there is share of this item but it , it contains share this item with an external user, which I assume like a guest user. Maybe that's probably this case. Yeah, I would, I would probably say that you do, it is hard code who shares it. Uh , so if you're using like a podio bot email address, that would probably be like a service account or, or your automations Bot , uh , which we tend to do. Um, you got some other things here in Globiflow read only and you can add a , a quick message. Um,

Alex Shull:

well another idea which is a different architectural direction, is to give everyone their own space. If they really shouldn't be in the business with each other and then you can use flows to bring those records together into the space that they all need to be in. Now that's disconnected and so it , um, requires you to change your process to accommodate that or be patient for records to propagate through the system. But that's the way the podio access is designed out of the gates. Then you can duplicate those apps and only deal with the common practices once they've been brought into that administrative space.

Gil Roberts:

It's something that I've also seen in , um, in case you run into any troubles with , um, email to app. Uh , what we've done is , uh , done like , uh , an app and then when you on create it, it puts data into like a shadow app or a secondary app and then immediately deletes the entry. So we use this for like customer service tickets so that other people can't see other people's tickets, but it's just entry into the app. So they're a podio user and then share it via item. That way, that way they don't have to deal with the email to app issues. You know, that they have a podio seat. You can also get more information about the user because that they can enter in as a podio user.

Alex Shull:

Oh , okay, well that's a different process. But you're saying if it starts from Podio, then you could actually have these people as podio users entering tickets in that way , created their projects that were podio rather than email.

Gil Roberts:

Right. And then you can just add them over onto the item because you know their podio user seat because they entered it through podio and then, you know, so that items there for a couple seconds. Yeah. I mean, what's the chance somebody's going to like grab it if they click on it and they leave it or something like that, it's going to be, it's dead. Right?

Alex Shull:

Yeah. That's probably, that's probably not, you know, that's probably good enough for what this user needs. Um , that's that the automation question has the same answer in that scenario, but it's just , um , supports a different flow of work, which I like that idea.

Gil Roberts:

Yeah. That way you get... and you get the , you can run some more stuff on it cause it's a podio item, you know, when they user put it in. So that's stuff that we've done for like say customer support tickets, not at our client level, but like the end user level so that they can just stay inside of podio. Like keep them in podio. Right. And just enter a support ticket. They push send , it deletes itself after it creates a new item, then it shares that back. Yeah .

Alex Shull:

Yeah. And that , and that kind of reflects back just what you mentioned that if the fact that we really like adding those support systems through podio for the clients that we build polio solutions for because it's the best system for them to be , um, tracking their usage and us to be aware of, you know, if they're needing any new work or if they're , um, have questions about how the current system works

Gil Roberts:

and users. I mean there's a whole bunch of things that are sort of tasks, right. And , and , um , if you have a kind of a group that doesn't need to see each other's work, this, this kind of single entry deletes, it immediately deletes itself. A pattern could be used for a lot of different things. Absolutely. That's as well. And we talked about this on our other shows, let's keep them inside of Podio, right. So , um, you know, we don't have to worry to deal with this other outside things. Just keep them around.

Alex Shull:

Yeah. And , and along those lines, I mean, we, we've brought our entire project management , um , internally including bug tracking off of the third party tools that are so popular out there. I don't want to disparage them because they're great tools, but we realized that all of those kinds of systems that we make use of in our software development practice, we've put them all in podio.

Gil Roberts:

Yeah. Just , uh , I mean it's the same seat price. We were able to shred, see prices and have tighter integration with our process . Yeah. I know what you're talking about on a project management side. We'll will digress here real quick. So we're solving gaps as well. Um, you know, were , we were able to , to tie all that back to project budgeting and punches, punch clocks for our developers to work on, gives great transparent reports out to the , uh, our clients. So yeah . Uh , excellent. Is there any, I think that's all 30 minutes here. We wanted to try to keep this under 30 minutes or right at 30 minutes. So this is great. A couple of quick reminders. We want to do more podio, gap episodes , uh, listeners, we hope we get a , you get a lot of out of this. Um, please, please, please send us any and all of your gaps or like also looking through these community forums . We've been to a couple of different places where there are forums, uh, to, to get some of our questions, but as always, send it all your questions that you might have personally. Just hit us up on Facebook, linkedin, Twitter, or send us an email, podio message to podcast@bridgeconsulting.com . We've got some special episodes coming up. Uh , if you're in the future , uh , we want to keep secrets . So , uh, the be listening and stay tuned for next week. I think you guys are going to be really excited about what we're working towards. And lastly, please, please, please, if you haven't already , uh , leave us a review on the apple iTunes podcast or the Google play store that helps us so much. We've gotten some reviews in and we're super thankful that we are a five star podcast right now. Uh , so thank you so much. And of course, if you haven't already, do subscribe and , uh , I think that's what we've got for today, Alex. So thank you all. Well, thank you.