Skip to main content

Querying GitHub Issues from Google App Script

I'm currently exploring different integrations that can be done between Google App Script and Git. This is part of a bigger attempt to integrate Git data into my project management system. I'll post more on that later. GitHub supports a number of very nice sub-systems. One of them is the GitHub Issues ticket tracking system. It's fairly robust and comes with GitHub - which means it's highly integrated out-of-the-box. Integration with Google's App Script is done via the fetchURL command and JSON object manipulation.  After a good bit of experimentation, I've settled on querying GitHub Issues with an "on open spreadsheet event" to avoid issues with Google's quota system. Essentially, Google prevents you from calling the fetchURL command more than X times (see the quota limits ) per day. That's not great if you have people actively working and changing data in a spreadsheet. Some of my other App Script routines are running thousands of times per d...

Delphi in the workgroup

Serge Dosyukov recently posted about the speed of the Delphi installer. While I agree that it's annoying to have to wait for the initial installation, I find that one of the largest failures in most development environments (including Delphi) is uniformity in a group setting.

For some reason, you can use products like subversion to manage your source code, but there is no product to standardize and manage your development environment. In our case, we have a handful of developers who all are working on different aspects of a large application (>1 million lines of code). We need to be able to manage the third-party add-ons and Delphi patches in a uniform way. The only method of doing this (to my knowledge) is to carefully install everything in the same paths and, usually, same order.

At one point I thought we could be clever and tried to install all add-ons to a networked drive for every workstation to minimize the amount of thrash we encounter when installing SP for the add-ons. Needless to say, that was a terrible idea. We encountered problems with locks being placed on the files which caused Delphi to either crash outright or to remove the packages that were causing the problem. It's a little disingenuous to say that it "removed the package". It prompted for the removal of the package. If we didn't, Delphi simply shut down.

I think the development environments should be modeled on a source control system. I don't mind the base install with the licensing restrictions, etc., etc. Once the base install is there though, I would like to be able to connect to a source repository that actually understands Delphi, it's add-on structures, and the registry entries needed to run, and be able to sync the changes up or down. That would let me take an add-on, install it on a test machine to make sure it works, sync it and then clone it down to the workstations. Better still, once the repository is built, let me roll back in time to something that is stable if we discover 3 months after a SP release that project XYZ just doesn't work with that SP.

If CodeGear got clever, they could setup an open API that would let the add-on vendors install to the repositories and deal with the licensing issues that everyone is concerned about. Sort of an Apple Store in an open and transparent fashion (gasp!). Obviously, you could actually set the repository system up to be a true retail presence and let the add-ons register and sell via the repository. I'm sure everyone who is using Share-It is paying a small fee anyway. Wouldn't it be a better idea to capture that fee AND make everyone's life easier at the same time?

How do you handle the group environment? The last time we looked at this problem in depth we were on D7. Is there a better way in D2007?

Comments

Anonymous said…
There is one solution you could try - use source control for your workgroup filesharing.
I am going to discuss it more here:
http://blog.dragonsoft.us/wp-admin/post-new.php?posted=280
Anonymous said…
Correction (long day, sorry)
http://blog.dragonsoft.us/2008/08/12/was-delphi-in-workgroup/
Chris Miller said…
Your idea is interesting, but I don't think you would ever get buy in from the component vendors.

We manage our IDE and components through a detailed document written up in our internal wiki. I wrote about it here. Since it's not compiler specific, it works for all of our development tools.
Anonymous said…
Thanks for bringing this up. Setting up a development environment can be painful.

What we did was to take a virtual machine, carefully installing one third party add-on at a time, submitting the delphi folder, the 3. party folder, a dump of the file list from system32 (it's too big to check in to version control) and a dump of the registry to subversion.

Now we can easily see what files were installed by the different 3. party extensions, as well as what they did to the registry.

Here's a post I wrote about it back in february: new use for subversion

Does anyone else has some ideas to share about this?

Popular posts from this blog

SMTP Mail and Indy (again)

Having spent a lot of time recently working on a ping scanner using Indy, I noticed that there's a lot of questions still on using SMTP with Indy. Let me first say that I am not an Indy expert. I get along with it successfully but find I still have to research things frequently. With the disclaimer out of the way, we can get to the offering. A while back I wrote a handy little unit to simply send a mail message with or without attachments and with or without providing authentication. It even has support for OpenSSL. I use this unit in a number of applications and have seen it successfully send hundreds of e-mails without issue. I recently added support for threaded message sending to take advantage of the multi-core system I'm now running on. This code has had a few additions (like the logger) that I've gleaned over time from various newsgroup postings, but I didn't record the authors so let me credit the anonymous Internet authors who support Indy. It's really amaz...

Detecting a virtualized environment

CubicDesign on delphi-talk.elists.org recently asked the question: "How do I know/detect if my software is running under Windows [or a virtual environment]?" Well, it turns out that it's a lot harder to tell than you would think. Apparently, the VM (VMware, Xen, Wine, etc.) doesn't really want you to be able to do this. At least not easily. For VMware, there is a decent little C routine called jerry.c that does the trick. Jerry actually uses a simple communication channel that VMware left open. It's not 100% foolproof since the admin can change the channel, but that's not likely going to happen unless the system is specifically designed to be a honeypot. If you're running on a honeypot and still have a legitimate reason for detection, you could look at the much more complex scoopy implementation which inspects how the system is actually virtualized using the SIDT CPU instruction instead of a communication channel. Another reference (red pill) is here . F...

Delphi Case with Strings

Zarko Gajic posted about this topic on his Delphi Tips recently showing how one could use a case statement with strings. His solution basically passes in an array on the stack and then iterates through it providing the index number of the matching string. I don't often want to do this, but the idea comes up occassionally enough that I thought I'd play with it a little. The first thing that struck me with this is that passing things on the stack is bound to be slow. Any time you can avoid memory allocation in your routines, do it. The way Zarko wrote his StringToCaseSelect routine created a COPY of the information on the stack. In my testing, just changing the CaseList: array of string to CaseList:const array of string improved the performance of the code by almost 30% for his example. Mind, I'm not using hyper-precise counters; however, it definitely makes a difference. Secondly, I was curious how the performance changed if I used the old stand-by: If then else. Using the ...

Copyright 2008-2022, Marshall Fryman