text:
03 August 2010
Tutorial 10-b: Interrupt Examples
The first example we'll do uses the Port 1 interrupts; this code is easily changed for any port number used in your particular device. This code will show how to do the DCO example we did in Tutorial 08-b, which demonstrates changing the DCO, using interrupts.
First, we need to configure the port to use interrupts. The LaunchPad button is on P1.3, so all of our concern will be on that pin. The pin needs to be configured as an input. Since the default state of the pin is logic 1, a high-low transition (a drop from 1 to 0) should be used to signal the interrupt. We can code this using:
P1IES |= BIT3; // high -> low is selected with IES.x = 1.
P1IFG &= ~BIT3; // To prevent an immediate interrupt, clear the flag for
// P1.3 before enabling the interrupt.
P1IE |= BIT3; // Enable interrupts for P1.3
We've enabled the interrupt for P1 now, and a high-low transition caused by the button press will set the interrupt flag in P1IFG. The processor, however, isn't set to recognize maskable interrupts like P1IFG. We can turn on the interrupts with:
or equivalently:
_enable_interrupt(); // Note the singular name here! It's not interrupts.
The first method parallels the bis.w instruction in assembly used for this command, and can be used to configure the SR in one step with other options, such as low power modes. The second method is a little more human readable, and works well enough if you don't need to enable any LPM's.
Next we need to write the ISR. Something like this will work:
#pragma vector = PORT1_VECTOR
__interrupt void P1_ISR(void) {
switch(P1IFG&BIT3) {
case BIT3:
P1IFG &= ~BIT3; // clear the interrupt flag
BCSCTL1 = bcs_vals[i];
DCOCTL = dco_vals[i];
if (++i == 3)
i = 0;
P1IFG = 0; // probably unnecessary, but if another flag occurs
// in P1, this will clear it. No error handling is
// provided this way, though.
The port interrupts can be sourced from 8 port pins, and so the ISR needs to decide what to do with each possible interrupt. The switch statement in C is ideal for this task, and is used here to single out a BIT3 flag. If, for some reason, the MSP430 is flagged with a different Port 1 interrupt, it simply clears the flag and moves on. Since none of the other flags are enabled, this should never happen, but it's good coding practice to include something like this. Error handling would be ideal, but it's not done here.
Note that since the P1 interrupt has 8 sources and individual flags, you need to clear the flag manually. Don't forget to do this, or your code will continually keep interrupting! This code makes use of three pre-stored values for BCSCTL1 and DCOCTL and increments through them each time the interrupt is called. These values, as well as the counter i, need to be global for the ISR to see them, and so they are declared outside of the main() function. See the whole code put together in interrupted-1_G2211.c.
Timer_A Example
As a second example, we'll do something similar to a project I'm working on and turn a light on and off using a relay switch. I've coded this using a switch on P1.6 so that you can observe its behavior on a LaunchPad using the green LED instead of the actual relay. If you have a relay, be sure to connect it correctly to prevent too much current draw from your MSP430. Using the 1 MHz calibrated DCO divided by 8, Timer_A will count up to 62,500 in 0.5 s. In my actual application, I'd like to turn the light on for a few hours, then turn it off for a few hours. That's easier to do with a slower clock, and an ideal application for the LFXT1 clock source. But, since we haven't covered that yet and many people likely do not have the crystal soldered to their LaunchPad's, we'll do more frequent on/off cycles to simulate the actual process. We'll use the DCO to turn the light on and off in 1 minute intervals. To do this, we'll make use of the Timer_A up mode and interrupt using the CCR0 registers. (Yes, this is essentially a fancy version of blinky. Turns out "Hello, world!" is actually useful in microcontrollers!)
We configure the timer with the following:
TACCR0 = 62500 - 1; // a period of 62,500 cycles is 0 to 62,499.
TACCTL0 = CCIE; // Enable interrupts for CCR0.
The long string of assignments to TACTL are, in order, select SMCLK as the clock for Timer_A (runs off the DCO by default), select input divider of 8 (1 MHz SMCLK becomes 125 kHz), select up mode, and clear the count in TAR. These values are defined in the device header file so that you don't have to constantly manipulate bits by hand. The mnemonics are easier to use most of the time. (For other configuration options, see the Timer_A section in your device's header file.)
The ISR may look something like this:
#pragma vector = TIMERA0_VECTOR
__interrupt void CCR0_ISR(void) {
// no flag clearing necessary; CCR0 has only one source, so it's automatic.
if (++i == 120) {
i = 0;
Again, we're using a global variable i as a counter, and presumably have defined RLY1 to be BIT6 in the program header. Every time a flag occurs (twice a second) the counter is incremented. If we've reached 120 (60 s at 2 Hz) the relay control is toggled and the counter resets.
The complete code for this example is in interrupted-2_G2211.c. For you impatient folks, feel free to adjust the timer period to whatever value preserves your sanity.
These two examples should get you started with interrupts. As always, feel free to ask questions or suggest other helpful tips!
32 comments:
I really like TimerA0 ISR where you use global variable to expand delay, or to be specific - count interrupts and toggle when reaching some desired value.
Couple of days ago, I really scratch my head how to do so. I used default DCO, prescaler and continous mode reaching maximum delay of 0.5s.
10^6 / 65355 / 8 = 2 Hz or 0.5s
Now I see that software solution must be introduced.
Thanks for your tutorials and keep up!
- August 9, 2010 at 4:47 PM
- David said...
The ideal way is to slow down the clock more. If you can live with an inaccurate time, a lower frequency on the DCO (or the VLO, even) would work.
If accurate timing is needed, a crystal is perfect. A 32kHz crystal divided by 8 for ACLK, then again by 8 for Timer_A runs at 512 Hz, giving a period for Timer_A interrupts at 128 s (counting to the full 16 bits)! Especially useful in an LPM, as it means you only turn on the processor once every couple of minutes or so.
- August 9, 2010 at 7:09 PM
Just wanted to say that I really appreciate your work on this!
I'm hoping you haven't moved on, as I'd love to see the MSP430 bent to the task of instrumentation.
- August 21, 2010 at 2:34 AM
- tor said...
Thank you! Very useful blog and post. If you have time, tell us how to put it in LPM while waiting for the interrupt. I tried _BIS_SR(LPM4_bits + GIE); instead of _enable_interrupt(); but then the interrupt never came.
- September 19, 2010 at 3:39 PM
- David said...
There's an excellent reason LPM4 didn't work; take a look at the new post on LPMs in Tutorial 11-a. I hint at what's going on in the exercise posted at the end. If it's not clear thinking about it that way, I will address the exact reason in the next post.
- October 1, 2010 at 11:05 PM
- Jon said...
I am assuming the "x" in IES.x is referring to the bit affected in the P1IES register. Therefor the comment in the GPIO example is referring to BIT3 or IES.3?
- January 23, 2011 at 5:08 PM
- Jon said...
Sorry for the double post back to back. I noticed in the code for the GPIO interrupt you set BCSCTL1 and DCOCTL using integer values like 7 and 3 from the char arrays. Is this the same as setting 7 for BCSCTL1 in the following way
- January 23, 2011 at 5:17 PM
- David said...
Jon, you're correct in all your statements. Keep in mind that |= is a lot different from =: by doing a direct assignment BCSCTL1 = 7, you set it so that only bits 0, 1, and 2 are set. If you were to do BCSCTL1 |= 7, and it had something other than 0 in it before, you may get unexpected results since |= 7 would only ensure bits 0, 1, and 2 are set, leaving the other bits unchanged.
- January 24, 2011 at 10:20 PM
- Jon said...
Thanks David!
- January 28, 2011 at 11:50 PM
I wondered if during debugging the timer counter incremented or not.
Turns out it doesnt.
What I wanted to know, is what exactly happens when i stop my debugging at a particular step. As in does the clock input to the timer stop as well? What is the state of the hardware when I have stopped the debugging at a particular command?
- March 9, 2011 at 3:21 PM
I am confused about the RETURNs in
P1_ISR. I thought you need a RETI which gets issued automatically or you won't get the proper reinstatement of critical registers. For the switch statement wouldn't you use breaks instead and then let the interrupt routine finish on its own?
- March 20, 2011 at 2:46 PM
- David said...
A couple of good questions; I'm not sure I have answers for them. I think in terms of the return statements, it would have the same effect. The key is to be certain you clear interrupt flags. A break statement should also work, however, and since no values are being returned may be more appropriate here.
Any other readers have some thoughts on this or the hardware state during debugging?
- March 22, 2011 at 10:31 AM
Hey David,
Thanks a lot for the very fine detailed easy to understand tutorials. I have a project to do I am working on and I was wondering if you could help me finish it personally via e-mail.
For being anonymous: I haven't created an account yet.
Thanks again
- November 11, 2011 at 7:52 PM
- David said...
The best place to go for project help is the online forums, such as at http://www.43oh.com/forum/ (I hang out there a bit myself). I'm certainly willing to help out where I can, but I also want to encourage use of the community that's being established. Right here, I'll address specific questions about the tutorials, but more general questions may be better suited for (and get better responses from) the forums. Thanks for reading; I'm so glad to hear that these are helpful!
- November 11, 2011 at 8:06 PM
Hey man,
This is the same anonymous that asked for your help yesterday. Thanks for the link and I'm on it. I understand your code and explanation easily but what I am having trouble with is finding what these acronyms stand for. I've figured out some of them but if I can't figure out all of them it'll be impossible for me to remember on the job what acronym was for what. I wish there was a database for that kind of a dictionary. wiki didn't help.
Thanks for the lectures again.
Anonymous: Still hasn't registered yet. Will do it sometime.
- November 12, 2011 at 8:47 PM
- David said...
The two best sources I've found for all the names are the Family User's Guide and the device header files. The User's Guide doesn't have any code examples in C, and the software examples that TI provides are great, but don't really explain all the features of each peripheral. If you ever see something I use in my code that you're unsure about, look in the device header file. That coupled with the register explanations in the Family User's Guide should be a big help!
- November 12, 2011 at 9:18 PM
- krf said...
I ran into an interesting problem with this code. I'm running CCS v5.1.1 and couldnt' figure out why the LED came on and stayed on. Stepping through the code, I saw that it was stepping over the call to delay(). When I opened the disassembly window, there was no subroutine call and no delay() subroutine. It appearently had been optomized out.
I went to Properties/Advanced Options/Advanced Optimiztions and checked "Disable all high level optimization", and things went to working OK.
Apparently, the compiler will do some optimization even if it is not set on the
Properties/Optimiztion tab.
- February 25, 2012 at 4:23 PM
your use of the following is wrong:>>
The correct version is :>>
You forgot that it starts witha double underscore.
- April 2, 2012 at 7:13 AM
- David said...
krf: Thanks; I wonder if the newer version is set to a default optimization that is different than the older versions I've been using. I'll have to check, and adjust the code accordingly.
- May 7, 2012 at 6:53 PM
- David said...
Anon: single underscore works for me; all the code I post on this blog is exactly what I used when testing on my own device.
- May 7, 2012 at 6:58 PM
Hello David! This tutorial is very helpful by the way. I have a quick question. How did you know that the value in TACCR0=62500-1 and the value in
if (++i == 120) {
i = 0;
is gonna be 1 minute?
- June 24, 2012 at 2:23 AM
- David said...
Excellent question. The clock is set to 1 MHz for this code, and the timer runs on that clock divided by 8: 125 kHz. Counting to 62500 at that rate takes 62500/125000 = 0.5 seconds, so interrupts are triggered every half second. If we want a full 1 minute delay, we need 120 interrupts.
In general, the number we need to count to is given by t*f, where t is the delay you want and f the frequency the timer is running on. If that number is larger than 65536, then you'll need to use the counter inside the ISR as is done here.
Hope that helps!
- June 24, 2012 at 1:19 PM
Oh!! I see. Thanks man. :)
- June 24, 2012 at 8:52 PM
Hi David!
Your statement in tutorial:
"_enable_interrupt(); // Note the singular name here! It's not interrupts."
is not correct.
Based on this TI document:
at the end of a page 112 is written that both forms are correct.
- November 24, 2012 at 8:19 PM
- Vishwanath said...
This tutorial had given me a lot of clarity on interrupts. However, I am confused with the naming conventions, at #pragma and the next line. Please throw some light on the same.
- December 11, 2012 at 10:38 PM
Hey David
Awesome tutorials.
Small suggestion.
For G2553 uC #pragma vector = TIMERA0_VECTOR doesnt seem to compile in code composer ...
#pragma vector=TIMER0_A0_VECTOR works perfectly .
Keep up the good work .
- January 10, 2013 at 2:44 PM
- David Olson said...
As far as I understand, the #pragma declaration in C causes the compiler to do some specific, special task that is unique to the compiler. In this case, it tells the MSP430 compiler where interrupt code is located. The vector=... specifies which interrupt the following code associates with.
As for the name TIMERA0_VECTOR, I've had no problem using it. You can find these names in the header file for your specific device. Vaibhav, I don't know if the G2553 header is different, but for the G2211 and G2231 devices TIMERA0_VECTOR works fine. Check your device's header file to be ceratin.
The naming in the next line (in this code I use CCRO_ISR) is arbitrary; it should be named something meaningful to you. In this case I chose the name to reflect that this is an Interrupt Service Routine (ISR) using Capture Compare Register 0 (CCR0). If you don't like it, feel free to name the routine whatever you'd like. =)
Note, however, that the vector name is not arbitrary. If TIMERA0_VECTOR is not working, again, check your device's header file for the correct naming convention.
- January 14, 2013 at 2:13 PM
Hello, great tutorial! It helped me a lot.
By using the timer interrupt, I'm trying to catch when a signal goes low and count for 88 microseconds to enter my interrupt. However, at any time the signal goes high before the 88 microseconds end, I wanna stop the timer and wait till the signal goes back low.
Do I need another interrupt after the timer? I would really appreciate your help.
- February 13, 2013 at 10:59 PM
- David Olson said...
There are two ways you could do it; the dirty way would be to trigger the first interrupt, and then poll the input until either it goes high or 88 us has passed, whichever comes first. The compromise with this method is that the mcu can't do anything else during this time, and the polling may make your 88 us timing less accurate.
The cleaner way would be to use the interrupt again; here's how I'd approach it: on the falling edge interrupt, start the timer, which counts up to 88 us and set the interrupt to catch a rising edge. If the rising edge is seen, stop and reset the timer. If not, the timer interrupt at 88 us will continue your code.
- February 16, 2013 at 11:46 AM
I'm trying to do the second method.
I got this code for the timer interrupts:
if(!(P1IN & BIT1))
// light up a Led for checking
// Enable interrupts for CCR0.
// SMCLK, div 8, up mode,
// clear timer
But I'm not sure how to do the second part "If the rising edge is seen, stop and reset the timer."
- February 16, 2013 at 3:25 PM
- David Olson said...
Now switch the P1IES to the opposite; you'll need an if or switch statement in the P1 ISR to start the timer on a falling edge, and stop the timer on a rising edge.
If you don't want a rising edge to interrupt after the 88 us, make sure your timer interrupt turns off the P1 interrupts.
Also, you can configure the timer before; just leave it in mode 0. When your falling edge occurs, change to up mode, and the counting starts. Less overhead that way, so more accurate timing. Timer interrupts and everything else can be initialized at the beginning of your main loop.
Good luck with it!
- February 16, 2013 at 6:06 PM
- Mattias said...
Regarding the questions above about multiple return statements in the interrupt routine - that's actually quite an interesting question, but it seems that the person asking the question assumes that a C RETURN statement is always compiled into an assembler RET instruction.
As an interrupt routine can occur at any time, when entering an interrupt routine we need to push the old value of any registers that are used within the routine to the stack. This means that at the end of an interrupt routine, we not only need to use the RETI instruction, but we also potentially need to pop one or more registers from the stack. This also means that any RETURN statement within an interrupt routine must go through the same epilog to function correctly. The compiler knows this and converts any RETURN statements to jumps to the epilog.
This is the same way it would work with normal function calls, only that since we have prefixed the routine with an __interrupt directive, the compiler knows to end the routine with a RETI instruction instead of a RET instruction as for a normal function.
- May 30, 2013 at 1:56 PM


text:
The board voted to approve the audit after Karen A. Jacks of Karen A. Jacks and Associates, a Longview certified public accounting business, told trustees her firm gave an "unmodified opinion"—the highest rating possible—for the audit for the 2012-2013 fiscal year.
She called that "a very positive outcome in your annual audit."
"We did not have any surprises," nor find anything "unusual or significant," although the firm identified "a few minor things" needing adjustment, Mrs. Jacks said. Commending the school staff and board, she added, "We did not do much adjustment to your internal records."
"Your financial statements are materially accurate," the accountant told the board.
At fiscal year's end, she added, the general fund's balance was just more than $5.3 million, $2.4 million of which is not desigated for any particular purpose. She called that "a very healthy financial position for your district."
She also praised the "well-managed budget" and the financial performance of the school's food service operation. In addition, Mrs. Jacks said GISD saved money by issuing new debt to pay old debt.
Said School Supt. Rick Albritton, "They (the Jacks firm) didn't have to change anything because we were correct in our presentations."

subset: commoncrawl


text:
If something about this animation strikes you as unfamiliar, don't worry, you're not imagining things; though the Moon does rotate about its axis as it orbits Earth, you've never in your life seen it spin quite like this.
The Moon is tidally locked to Earth, forever hiding one of its faces from those of us kicking it planetside. Owing to a phenomenon known as libration, it's actually possible to spot as much as 59% of the Moon's surface. But the remaining 41% – the so-called "far side," was for many years a complete mystery.
But this video, created from images returned by NASA's Lunar Reconnaissance Orbiter, offers us an entirely different view of the Moon – one that brings its enigmatic far-side into clear (and, contrary to its "dark-side" misnomer, clearly illuminated) view:
More here


text:
If you have any suggestions for tools that you would like to see added to the list, please let me know by email, Twitter or Facebook.
|Premium iOS App Templates
Save weeks of design and development by starting your next iOS project with a functional Swift starter kit, containing boilerplate code & UI for features such as shopping, dating, food ordering, chatting, maps, Firebase, and more. Download one of our beautiful iOS app templates and build your MVP in minutes.
A command line tool that builds and packages iOS apps for you making it easy to generate a signed ipa file. gym is another addition to the fastlane set of tools but can also be used independently. Using gym you can created an Ripa with just a single command thanks to sensible defaults that automatically detect the project and its schemes. It'll help you resolve build errors such as code signing issues, provides inline build output and saves time with 30% faster builds than other similar tools.
A simple tool that let's you upload hundreds of different and localised screenshots, metadata and app previews to App Store Connect with a single click. AppManager lets you drag and drop in all your screenshots and it will figure out device sizes, ordering and localisations based on file name. Metadata can also be uploaded for multiple localisations in a simple CSV or JSON format. All your screenshots get saved on AppManager's servers so in case App Store Connect is not available it will automatically retry uploading your screenshots and you'll get a notification once all screenshots are uploaded.
A cloud-based continuous integration and delivery platform that helps you release defect-free mobile apps. Nevercode will automatically detect and configure your iOS, Cordova and Ionic projects from GitHub and Bitbucket. Then the code signing collector will fetch all signing files for you. You can run UI and unit tests using Appium, XCTest or KIF, and target real devices or multiple simulators, or catch potential bugs with static code analysis. You can also share your build status with your team instantly via Slack, HipChat or Email and deploy to iTunes Connect, HockeyApp, Crashlytics and Testfairy.
A simple online over-the-air app distribution service. BuildTry provides a super simple free alternative to the more complex distribution services such as TestFlight, Crashlytics, HockeyApp, etc. No need to manage user groups, or wait for processing, you just upload your IPA or APK and it gives you a link to share with your testers. Links expire after 15 days and allow 25 installations per app, and uploaded apps must be under 400MB.
A new, modular way to create and distribute actions for fastlane. fastlane Plugins allow actions to be added faster because they aren't bundled into the main fastlane repository, giving everyone the power to invent, share, and deploy new plugins without waiting for PRs to be approved and gems to be updated. Developers can find new and existing plugins right from fastlane with the 'search_plugins' command and quickly add them your workflow with the 'add_plugin' command.
Embeddable and hosted TestFlight beta sign-up forms. Boombox lets you quickly and easily set up a form that makes it really simple for your users to sign up as TestFlight beta testers. After authenticating with iTunes Connect you are given a form that you can embed in your own site, and a hosted version in case you don't have a site. You can also optionally add a URL to which users are redirected after they successfully sign up, and there's Mailchimp integration to automatically add your new beta testers to a email list. Boombox is currently free while in beta.
An app distribution platform for iOS and Android. InstallFish lets you choose your URL, from which your clients or testers can download & install your app directly to their device. You can password protect the whole process, prompt for installer details or omit all that and let them get the app with a single click. Accounts start at free for unlimited installs of up to 5 apps, but you can pay to get access to extra features such as customisable branding, logo and background, or a complete branded App Store. It also integrates with Slack, HipChat, email and the command line.
A mobile continuous integration and continuous delivery platform for iOS and Android. With Buddybuild, a git push to Github, BitBucket, GitLab or any other git server automatically kicks off a new build and runs any tests for your app. It can also deploy builds to users while managing UDIDs, iOS provisioning profiles and signing identities automatically, or submit to TestFlight using the built-in iTunes Connect integration. The visual bug reporter can capture annotated screenshots and sends them right to buddybuild or your favorite bug tracker, and crash reporting is build in to the drop-in SDK.
A self-hosted CI/CD platform that gives you control over your development workflow. Buildkite supports any language or platform including Xcode builds, and can run on various environments including OS X and Linux. You can configure powerful pipelines that run steps in parallel across multiple build agents, and take advantage of automation tools to share data between build steps and across agents. There's a complete API that lets you access your data and control your pipeline, or you could use the Boxkite app by Reformed Software to manage your Buildkite builds from your iPhone and Apple Watch.
A tool to automatically create and maintain iOS code signing certificates. cert is part of the fastlane set of tools but can also be used independently. With a few simple commands you can create a new private key, create a new signing request, generate, download and install the certificate and import all the generated files into your Keychain. It will also check if any of the available signing certificates are already installed on your local machine so will only create what it needs to.
A tool that aims to simplify code signing by syncing your certificates and profiles across your team using git. match introduces a new approach to code signing by sharing a single code signing identity across your entire development team, simplifying your code signing setup and preventing code signing issues. It will handle all the heavy lifting of creating and storing your certificates and profiles, and encrypts everything using OpenSSL and a passphrase to keep everything secure.
A simple standalone tool for OS X that shows a notification once your newly uploaded build was successfully processed by iTunes Connect. WatchBuild keeps an eye on the apps you've submitted to iTunes Connect so that you don't have to. As the processing time varies from a few minutes to multiple hours, it's easy to forget to check iTunes Connect to see if the build is ready, so a simple notification is a helpful reminder. You can also directly click on the notification to open the build on iTunes Connect.
A tool that lets you manage your TestFlight testers and builds from the command line. pilot is another addition to the fastlane set of tools but can also be used independently. With a few simple commands you can manage all the important features of Apple's TestFlight using your terminal, including: upload new builds and distribute them to all testers; list all available builds; add and remove beta testers; get information about testers, like their registered devices; and export and import all your testers.
A tool that lets you create new iOS apps on iTunes Connect and Apple Developer Portal using the command line. produce is another addition to the fastlane set of tools but can also be used independently. With a few simple commands you can create new apps on both iTunes Connect and the Apple Developer Portal, modify Application Services, create App Groups and associate apps with App Groups. As with all fastlane tools, it's really simple to use and could save you loads of time.
Continuous Integration and Delivery for iOS, with dozens of integrations for your favourite services. Bitrise lets you stick to the services you know and have used before, but instead of requiring you to jump between browser tabs to set up a build, testing and deployment, Bitrise lets you configure and run your workflow in one place. There are currently nearly 40 supported integrations including Amazon S3 deployment, HipChat and Slack messages, Xcode build, analyse and test, fastlane, and more are being added.
A Mac app that lets you prepare, re-sign and deliver iOS apps to your testers. AirSign can load any .ipa or .xcarchive file and display its properties, such as Bundle Identifier, Marketing and Build Version and even Required Device Capabilities. You can then edit properties and override identifiers including URL Schemes and Bundle Identifier before verifying that the app is not breaking basic rules which could cause upload to the App Store to fail. Your modified app can then be resigned and distributed to your testers using Dropbox or S3, or exported back to Xcode as an .xcarchive file.
A tool to instantly create a simple signup page for TestFlight beta testers. boarding is the latest addition to the fastlane set of tools but can also be used independently. Once deployed to Heroku, boarding only requires your iTunes Connect credentials and your app's bundle identifier to get set up. There are additional options to protect the signup page with a password or to temporarily disable enrolment with a simple message to visitors. Like all the fastlane tools, boarding is a real timesaver.
A Ruby library that exposes the Apple Developer Center API. Spaceship is fast, well tested and supports all of the operations you can do via the browser. From the creators of fastlane, Spaceship was written to improve the speed of the fastlane tools by removing front-end web scraping. With Spaceship, sigh is now up to 90% faster! Spaceship provides resistance against front-end design changes of the Dev Portal due to its fast communication using only a HTTP client, and gives object oriented access to all resources.
A drop in SDK that lets you react to production issues in real time. Rollout.io lets you remote-control your user's app settings and parameters, as well as fixing or containing errors and issues in real time while the app is in production - without waiting for a full release cycle. You can access your app's functions and patch them using pre-defined solutions or use in-app alert messages to keep your users in the loop. Additional features include UI changes (buttons, images, etc), creation of analytics events on the fly, and advanced logging and debugging.
A Safari extension for iOS developers using Apple's TestFlight. Every time you submit a new beta for review, there is a "Beta Information†section that has to be filled out. All of the fields are blank even though you've filled out all of the same info before, possibly dozens of times. BetaFill lets you quickly save that info so you can fill it in with one click next time.
An open source tool for defining and running deployment pipelines to automate deployment for all your build environments. fastlane lets you define multiple 'lanes' for your different build environments, such as test, beta or App Store, which connect together all your build tools into a single automated workflow. fastlane includes pre-defined actions for CocoaPods, xctool, snapshot, sigh, deliver, frameit, HockeyApp, Slack and more, or you can create your own custom actions or scripts. fastlane is a great tool to speed up your deployment process.
A hosted continuous integration platform for automated building, testing, and deployment for iOS apps. Distiller connects with your GitHub and Bitbucket repositories and will automatically rebuild and retest with every new commit you make. It also integrates with Testflight & Hockey so you can automatically deploy any green build with zero engineering support. You can get started with Distiller for free with a 14 day trial and there are a selection of price plans after that.
A tool that lets you manage all your iOS provisioning profiles from the command line. With just one command, Sigh can download the latest provisioning profile for your app, renew a provisioning profile, repair a provisioning profile when it is broken and create a new provisioning profile if it doesn't exist already. It supports App Store, Ad Hoc, Enterprise and Development profiles as well as multiple Apple accounts, multiple teams and storing your credentials securely in the Keychain. Sigh is a better option than letting Xcode manage everything as it gives you control and can easily be integrated into your CI-server.
A command line tool that will create a .pem file containing your push notifications certificate ready to be uploaded to your server. PEM manages the whole push provisioning process - by running one command it will create a new signing request, create a new push certificate, download the certificate and generate a new .pem file in the current working directory. You can also pass optional parameters to specify a particular app or to create a development certificate instead. Very simple, but a real time-saver.
A command line utility that brings continuous deployment to iOS. Deliver automates the whole process of updating your iOS app by allowing you to upload IPA files, app screenshots and more to the iTunes Connect backend with just one command. After installing, running 'deliver init' from the command line will create a new Deliverfile that contains all the configuration including where to find IPA files and screenshots along with iTunes metadata. Once configured, you can run 'deliver' to deploy a new app update. You can even configure Deliver to give you a PDF preview of the fetched metadata before uploading the app metadata and screenshots to Apple.
A new service that lets you run iOS simulators directly in the browser. You can use Appetize.io for many purposes, including debugging and testing your apps, sharing with colleagues and clients, or anything else you can think of. Simply upload a zipped up simulator build of your app via the website or API. You will then immediately be able to run your app in the browser, or embed it as an iframe anywhere else. Supports both iPhone and iPad, device rotation, custom launch params, and more. Currently free and in beta.
A humble replacement of Apple's iPhone Configuration Utility for installing ad hoc apps on iOS devices. As the app installation feature of iPhone Configuration Utility is broken on Mavericks there aren't many simple ways of installing an ad hoc build directly onto a device. AppStaller can solve this problem until Apple get their act together.
A small and simple menu bar app for getting fast access to your iPhone Simulator apps. SimPholders provides options to open folders in Finder, reset library and documents, and delete the selected apps. The menu shows recently changed apps and displays the app icon, name, bundle identifer, version number and bundle size.
A Quicklook Plugin for previewing application and provision information. It displays app and provision information for ipa, iOS mobileprovision and OSX provisionprofile files including app icon, name, version, bundle identifier and device names from the Developer Portal. Simple but very useful.
A very thorough pre-flight checklist for submitting an app to the App Store compiled by Dave Addey. It covers feature testing, device coverage, network conditions and locale settings. You can download the checklist as a Pages document or a PDF, but there is also a copy in a GitHub repo that's accepting contributions.
A useful little Mac utility that deploys builds to the simulator. It's helpful when trying to deploy simulator builds to non-techie people as it is just drag and drop. You can also install builds from remote URLs using the custom URL scheme and it integrates with your continuous integration strategy as well.
The definitive iOS version/device matrix chart. It includes all the data you need including hardware specs, minimum and maximum supported iOS versions, retina display support and even Geek Bench ratings. Very handy!
A really useful Mac app that helps you identify unavailable, deprecated and obsolete API usage in your Xcode projects. Helped me spot crashing bugs on several occasions.
A Mac app that scans your Xcode projects to find unused resources with the goal of reducing the size of your app. Also finds other problems such as missing @2x images and duplications.


text:
Moderators: Zupponn, Killer Karetsu, Moronstudios
Qurtz567 wrote:Alright, I have always had troubles with pictures on other forums, but how do you just post the plain picture with no URL? I want to know how to post pictures from my I- touch and Acer laptop.
Tzan wrote:Quantumsurfer wrote:I generally agree with TzanWarhead wrote:I agree with QuantumSmurfer.
I agree with Warhead.
Qurtz567 wrote:Playin Brikwars right now... My hero just picked up a decapiated head from the frontlines and threw it into the front of a Police helicopter, shattering the glass and instantly killing the pilot. He crashed into frontlines and took out my friend's safari hero riding a two-headed elephant and duel-wielding machetes........ I love Brikwars...............
Return to Reports From the Field
Users browsing this forum: No registered users and 3 guests


text:
by Len Lear
The questions asked most frequently of restaurant writers are: "What is your favorite restaurant?" "Where do you get the most for your money?" and "What new restaurants would you recommend?" The answers to these questions and more will be contained in the following paragraphs, which encompass our favorite restaurants from the year 2012. They are listed in random order, not in order of preference:
• Cin Cin: Let's face it; Cin Cin (which means "delightful spring"), at 7838 Germantown Ave., is one of the two best restaurants in Chestnut Hill (see the next paragraph) — and the busiest. There is a reason why it is almost always packed, even on off-nights when most other restaurants are virtually empty. Ever since Dec. 31, 1999, we have had dinner at Cin Cin every New Year's Eve, and it never ceases to thrill us. During the one two weeks ago, our party of four was in heaven from dishes such as the delicate steamed dumplings filled with pork, scallions and napa cabbage ($6.95), the divine wild mushroom and goat cheese strudel ($9.95) and the memorable "sizzling triple delight," a combination of sautéed shrimp, chicken, beef and vegetables with a sublime sauce for the ridiculously low price of $16.95. And I have to plug Jackie and Lee Ann, who are both extraordinary servers. The prices at Cin Cin, with almost all entrees under $20, are a bargain for this kind of sophisticated fusion cuisine that uses only the finest ingredients. There is never a joker in the deck at Cin Cin. Call 215-242-8800 or visit www.cincinrestaurant.com
• Heirloom: Al Paris is the peripatetic missile who opened Heirloom, a BYOB which has had very few empty seats since exploding on the scene in December, 2011, on top of the Hill (8705 Germantown Ave.), next to the Chestnut Hill State Store. Al is one innovative chef/owner who, unlike some, has never gotten onto the hamster wheel of jealousy and envy. As I mentioned last year, chef Paris may be walking out on the high wire with his innovative combinations of ingredients, but loyal customers are making sure he does not fall off. The flavors in his dishes invariably flow together into the taste equivalent of a Beethoven piano concerto. You just can't go wrong with anything on the seasonal menus at Heirloom. It shares an exalted place with Cin Cin as the finest restaurants in Northwest Philadelphia. Customers leaving Heirloom are usually smiling like a teenager on the day before summer vacation starts. More information at 215-242-2700 or www.heirloomdining.com
• The Walnut Street Supper Club: This restaurant at 1227 Walnut St. also opened in December of 2011, replacing Portofino, which had been there for 38 years. In addition to great Italian food and a stylish décor, this is the only restaurant in the city that also has servers, bartenders, hostesses and even busboys who, seven days a week, sing "The Great American Songbook," i.e., classic pop songs originated by Frank Sinatra, Tony Bennett, Dean Martin, Ella Fitzgerald, Bobby Darin, Judy Garland, Perry Como, etc. You simply cannot fail to have a good time here. Owner Ralph Berarducci (who also owned Portofino), in addition to his stellar reputation as a restaurateur, is one of the most generous and charitable businesspeople in the Delaware Valley. Every Thanksgiving and Christmas season, he feeds hundreds of homeless and impoverished people. For more information, call 215-923-8208 or visit www.walnutstreetsupperclub.com
• Surah: This classy Japanese/Korean BYOB (Surah is a Korean word meaning "Feast for a King"), which opened last June in a strip mall off Bethlehem Pike in Spring House, 10 minutes from Chestnut Hill, should have a long and successful life. The seafood-centric menu at Surah leaves competitors flopping for air like a fish on dry land. It is obviously watered with love. Yellow tail carpaccio, for example, beautifully presented, like all the dishes, has a hint of jalapeno on the back of the palate while thinly sliced yellow tail dances on the tongue with its dance partners, cilantro and yuzu-soy. Prices are very reasonable. More information at 267-470-4310 or www.surahpa.com
• DiMeo's: Thanks to Pino and Lucia DiMeo, treasured Neapolitan imports to the Philadelphia area in the 1980s, we can all savor the finest gastronomic delights from Naples just a few minutes from Chestnut Hill, and we don't even have to pay for parking. In April of last year, the DiMeo family, with their chiseled movie star looks and Old World charm, opened Pizzeria DiMeo's in the Andorra Shopping Center location in upper Roxborough where Argento's had previously been for many years. (This family should have their own TV reality show. They are a lot better looking than the Kardashians — and they have actual talent!) DiMeo's could be called a "New Age Pizzeria" or a hybrid between a Stephen Starr or Marc Vetri pizza palace (Osteria and Stella, for example) and a fine dining Italian BYOB. The Margherita pizza is to live for! More information 215-621-6134 or www.pizzeriadimeos.com
• Parc: Lots of restaurants these days have more speed bumps than a church parking lot, but Parc is like a well made choral composition, with voices entering and leaving, mixing and matching in contrapuntal harmony. Parc, the French bistro that opened with a tsunami of publicity on Bastille Day of 2008 at 227 S. 18th St., across the street from Rittenhouse Square, continues to hum like a new car engine despite its hefty prices. A cheese-welded crock of onion soup was a thoroughbred of a French classic ($11), as was the crusty macaroni and cheese, whose inhaled aroma and oozing warmth made this simple dish eloquent ($9). A tuna carpaccio appetizer, perfumed with the distilled essence of leek vinaigrette, was feather-light, exploding with magical flavor and as soft as a dove released from a box ($15.50). More information at 215-545-2262 or www.parc-restaurant.com
• Seasons 52: We have eaten at this upscale chain in the King of Prussia Mall three times and the one in Cherry Hill once, and it's obvious to me that someone forgot to tell their customers that there is a recession going on. We were told that the one in K of P can seat 400 people on two floors, and both times we were there, you could barely squeeze a toothpick into the beehive of customers at the bar and dining rooms, at least on the first floor, which seats 265. It seems to me that Seasons 52 has found that dining sweet spot where culinary creativity, a stunning physical location, unalloyed charm and unpretentious service coalesce. You can't go wrong with anything on the menu (no dish, including entrees, is over 500 calories), and Amine Belahbib has to be one of the best servers in the Delaware Valley. More information at 610-992-1152 or www.seasons52.com
• Rittenhouse Tavern: This impressive newcomer to the downtown dining scene opened last April in the spectacular Wetherill Mansion at 251 S. 18th St. on Rittenhouse Square. Executive chef Nicholas Elmi, who previously ran the kitchen at Le Bec Fin, refers to his menu creations as "approachable elegance," not stuffy or overstated. Despite his background of classic haute cuisine, Nick has taken familiar American dishes and put a little twist on each one, for example, deviled eggs with dollops of crunchy pork scrapple; Anson Mills polenta soup with fresh ricotta that is poured at the table; or an entree of sea scallops with a rhubarb reduction, white asparagus and English peas. Prices are on a par with many fine dining restaurants in center city. More information at 215-732-2412 or www.rittenhousetavern.com
• Old Guard House Inn: This 34-year-old classic at 953 Youngsford Rd., Gladwyne (about two minutes from the Gladwyne exit off the Schuylkill Expressway), has been a virtual second home for many Main Liners since the day it was opened by Albert Breuers, 70, a native of Dusseldorf, Germany, and one of the classiest owner/chefs on the east coast. Old Guard House Inn has won every award imaginable from area newspapers and magazines in recent years, and Chestnut Hill restaurateur Paul Roller, who is notoriously hard to please, has often told me how much he admires Albert Breuers because "he does everything the way it should be done. He represents 'Old School' in the best possible way." And the rustic 200-plus-year-old log cabin-like building with low ceilings and walls of wood bark on slab pine has an atmosphere as comfortable as an old pair of shoes. More information at 610-649-9708 or www.guardhouseinn.com
• Vietnam: In 1984, the Lai family, who had escaped Communism in Vietnam, opened the 28-seat Vietnam restaurant at 221 N.11th St. in Chinatown. Since that time, this beloved "hole in the wall" has tripled in size; it now seats more than 100 and includes an upstairs lounge, and it is consistently rated by reviewers, critics and restaurant bloggers as the best Vietnamese restaurant in the Delaware Valley. The prices have always been affordable, and the food and service have always been consistently customer- friendly. More information at 215-592-1163 or www.eatatvietnam.com


text:
Direct mechanical measurement of the tensile strength and elastic modulus of multiwalled carbon nanotubes
Published on
This work represents the first in-situ measurenment of the tensile strength of a carbon nanotuube.
Transmission electron microscopy was performed at the National Center for Electron Microscopy at the Lawrence
Berkeley National Laboratory.
Sponsored by
This research was supported in part by the Director of the Office of Science, Office of Science, Materials Sciences Division of the
United States Department of Energy, contract number DEAC03-76SF00098 (mechanical tests) and grants DMR 98-01738 and DMR 95-01156 from the National Science Foundation (materials synthesis).
Cite this work
Researchers should cite this work as follows:
The paper by Demczyk et al. (2002) is the basic reference for the experimental determination of the tensile strengths of individual multi-wall nanotube (MWNT) fibers. The experiments are performed with a microfabricated piezo-electric device. On this device CNTs in the length range of tens of microns are mounted. The tensile measurements are obseverd by transmission electron microscopy (TEM) and videotaped. Measurements of the tensile strength (tension vs. strain) were performed as well as Young modulus and bending stiffness. Breaking tension is reached for the SWNT at 150 GPa and between 3.5% and 5% of strain. During the measurements 'telescoping' extension of the MWNTs is observed, indicating that single-wall nanotubes (SWNT) could be even stronger. However, 150 GPa remains the value for the tensile strength that was experimentally observed for carbon
nanotubes on http://spaceelevatorwiki.com/wiki/index.php/SER_1_1


text:
Olympic Records Boosted by Materials Science
The London Olympics are about to begin, and spectators will again be riveted by feats that would have been impossible when the modern Olympics began in 1896.
Jaw-dropping records are attainable in part because of advances in materials science. New materials have led to equipment like super light and strong vaulting poles, and bathing suits that improve the flow of bodies in water.
Such developments are detailed in a series of articles in the journal Nature Materials. ["Materials for Sports," free until August 22]
The scientists say other advances are afoot that build sensors into athletes' clothing for, for instance, measuring performance in training. Or protective gear that repairs itself when damaged.
And advances in materials science can help Olympians internally as well. Elite athletes may tear cartilage or break bones. But cartilage doesn't have enough blood and cells to mend well, and sometimes bones just can't naturally bridge the break.
So scientists are homing in on the best combinations of bio-compatible materials, along with growth factors and other compounds, as well as implanted cells and proteins, to help mend what have been until now nearly intractable injuries. So that world-class athletes can push the limits of sports and science.
—Cynthia Graber
[The above text is a transcript of this podcast.]
[Scientific American is part of Nature Publishing Group.]


text:
While our Clean Monday shutdown is behind us, we may still have forum outages as we continue with the server migration. Please check out the appropriate thread in Board News for more info.
0 Members and 1 Guest are viewing this topic.
Am reading Franky Schaeffer's Dancing Alone, and I'm at the part where he is ripping the USA a new one...
Just curious, why do you call him "Franky" Schaeffer? Seems a little too familiar, unless you are friends with him.
A gov't thats in the middle......not a pure socialist govt but not a pure capitalistic gov't..........something like Canada
Is anyone else's jaw dropping to see a quote from Mar+¬chal Philippe P+¬tain in this thread? No offense, Mexican, but P+¬tain was, to all appearances, barely conscious/coherent during the 41-44 Vichy years. He was way old, way senile, and controlled by his 2nd in command... I studied in France, majored in French... this is evidenced by the French attitude towards him and the Vichy govt - they NEVER bring it up... That said, his quote seems to make sense. Boy, talk about incoherent - how about me?
Page created in 0.093 seconds with 26 queries.


text:
Oct 31, 2006
Bay Windows and EDGE Publications Announce Strategic Partnership
For Immediate Release Oct 31, 2006
Boston, MA - Bay Windows Inc. and EDGE Publications Inc. today announced a strategic partnership, cementing a relationship between New England's two largest publications for the Gay, Lesbian, Bisexual and Transgender (GLBT) community.
Bay Windows is one of the country's most recognized GLBT brands, delivering high-caliber news and entertainment coverage to New England for over 25 years; combined with EDGE, a network of GLBT local online magazines that deliver eight major channels of local and national coverage to over 550,000 readers per month in major cities across the Northeast US, the new chain of publications in print and on the web will offer readers a definitive resource for news and entertainment coverage.
"The Bay Windows/EDGE connection strengthens two well-established, respected brands," said Bay Windows co-publisher Sue O'Connell. "We have some truly exciting plans for the next evolution of gay media."
As part of the new partnership, Bay Windows has taken a substantial equity position in EDGE's corporation, and O'Connell as well as co-publisher Jeff Coakley will oversee a range of new marketing and advertising sales promotions.
"Our advertisers will enjoy a whole new menu of value-added, cross-media opportunities," stated Coakley. "There can be no doubt that leveraging integrated advertising across both EDGE and Bay Windows will deliver the most comprehensive gay and lesbian audience available in New England."
EDGE offers local online portals in Boston, Providence, Provincetown, New York and Philadelphia; as the company continues to expand into new metropolitan areas, both media organizations will expand their reader bases.
"We couldn't be more thrilled about the opportunities this presents," said David Foucher, EDGE's publisher. "Our teams have been collaborative in the past; this partnership expands our horizons together."
Ongoing news regarding integrated advertising opportunities and a forthcoming suite of co-branded products can be found at edgemedianetwork.com and BayWindows.com.
EDGE is an online community destination dedicated to the delivery of local, national and world content targeted to the gay, lesbian, bisexual and transgender (LGBT) community in a fair, entertaining and interactive format. The company publishes online in Boston MA, New York NY, Philadelphia PA, Providence RI and Provincetown MA. Learn more about EDGE at http://www.edgeonthenet.com.
Bay Windows is the largest and most respected newspaper serving New England's gay, lesbian, bisexual and transgender communities. For over 25 years the GLBT community has turned to Bay Windows for the best in news, arts and entertainment coverage. Bay Windows can be found in all 6 New England states through a distribution network of 575 locations.
# # #
For more information:
John Welton
Director Public Relations


text:
World wide in 2007 there was approximately one priest for every 2800 Catholics (1-2800). How does this vary around the globe? In the United States currently it stands around 1 – 1500. So if one thinks the priest shortage is serious in the U.S, with our aging priests and declining numbers, we are still better off than most other places including places that are sending priests to the U.S.
In Brazil, the largest Catholic country in the world, the ratio is 1- 8600. In the Philippines, with the largest Catholic population in Asia, that goes up to 1 – 9400. India, on the other hand, is the exception with a very favorable ratio of 1-860.
As many Catholics know from parishes in the U.S., many priests come to the United States from Africa. Yet the ratio in Africa is estimated to be 1 – 4200. In Nigeria, booming with priestly vocations, and with seminaries filled, the ratio is 1 – 3820. So one might ask if priests should be coming from Africa to the U.S. or should the U.S. be sending priests to Africa?
And what about Western Europe? Vocations to the priesthood have greatly diminished, but it still has a ratio about the same as the United States 1 - 1400. Italy is even stronger, with 1 - 1136 ratio.
Is there any ideal ratio of priest to laity? One major yardstick is the availability of the priest for Mass. A parish in the U.S. with a large church building can have 2000 parishioners at one Mass (and the priest may be assisted by a deacon and a chorus of lay ministers) . On the other hand, a priest in Africa may have one small church that can hold 200, but then have to travel to 20 different outstations for Masses, meaning that his parishioners can only have Mass once a month.
There have been several attempts by the Vatican, as in the encyclical of Pope Pius XII in 1957 Fidei Donum, to redistribute priests, but only with limited success. And that is another story.
(Historical Footnote: The Priest-laity ratio in the U.S. - A brief look back. -- in the United States in 1903 it was 1- 870. The best ratio was 1942 with one priest for every 617 Catholics. Since then the growth of the Catholic population has exceeded that of the priesthood. In 1962 it was 1 – 771. In 1985 it was 1 – 93. In 2000, it was 1 – 1257. Now it is about 1-1500 and getting worse.)
You want an old boys network? That's what we have: an OLD BOYS network.
Luckily it will die out soon and then maybe the Holy Spirit will be allowed to have Her say.


text:
I love the quality of the kits made by WRMK! The patterns are fantastic, the colours go with a huge variety of pictures and projects, and the variety included in the kit is superb! I really can't say enough good things about these kits from WRMK. Wester is the one I've used the most of (I'm almost out of all the cards already!!!) but I also love and recommend the chalkboard collection! I hope WRMK comes out with all sorts of new kits soon, I'd be lining up to buy them for sure! Thanks WRMK!
Used in this layout: Life is an Adventure!
If you like doing split photo layouts or are trying out "project life" type memory keeping, you'll love this set from WRMK. The cards are very good quality and the designs are excellent. Plenty of variety and the backside of the cards have nice graphics and journaling spaces. I hope WRMK comes out with more kits in this line. (I have all four design kits and Websters is actually my favorite!)
You must be logged in to comment. Please click here to log in.


text:
Your own trip!
Trips are a great way to keep track of your memories, share stories and show others where you are /were or will be.
Plan a trip and make arrangements with your hosts beforehand. Show trips to people outside of BeWelcome or set them to be hidden for the public. Go sign up, to create a new trip yourself.


text:
Hearing may be 'mini-trial' for suspect in Colorado movie theater shootings
CENTENNIAL, Colo. – The suspect in the Colorado movie theater killings is returning to court for a hearing that might be the closest thing to a trial the victims and their families get to see.
James Holmes is charged with killing 12 people and injuring 70 by opening fire in a theater in the Denver suburb of Aurora last July.
A weeklong preliminary hearing for Holmes starts Monday. Prosecutors will outline their case against Holmes, making it the first official public disclosure of their evidence.
The judge will then determine whether to send the case to trial.
Legal analysts say the evidence appears to be so strong that Holmes may well accept a plea agreement that would rule out the death penalty.
He faces multiple counts of murder and attempted murder.


text:
Free shipping on all
orders over $75
The Vapezilla is a high quality, long lasting vaporizer for a fairly reasonable price. While it lacks the digital temperature control that many new models are featuring, in many other respects it is truly top of the line.
Unlike some balloon vaporizer systems where the user can end up with a bag full of diluted vapor, the Vapezilla features direct inhalation of compressed vapors. This means that you will get the most flavor and the highest concentration of active ingredients, ensuring a perfect aromatic experience every time.
The Vapezilla Vaporizer is designed for the vaporization connoisseur on a budget. No expenses are sacrificed in this design besides the temperature controller, which is a manual variable vs digital. The Vapezilla Vaporizer, being budget-classed, still rivals all other vaporizers on the market in potency and flavor.
We Accept:
Shipping Providers:
Verified Merchant:
Copyright© 2009-2019. VapeNow. All Rights Reserved. email@example.com