<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog | Surgeworks</title>
	<atom:link href="https://surgeworks.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>https://surgeworks.com</link>
	<description>Web, iOS and Android App Design and Development</description>
	<lastBuildDate>Sun, 20 Jan 2019 08:20:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>
<site xmlns="com-wordpress:feed-additions:1">50641034</site>	<item>
		<title>Swift iOS Mobile App Caching Controller Update Logic, Cache in Swift</title>
		<link>https://surgeworks.com/blog/swift-ios-mobile-app-caching-controller-update-logic-cache-swift</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Sun, 20 Jan 2019 08:16:59 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[swift]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Xcode]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4019</guid>

					<description><![CDATA[<p>Based on my last post&#8217;s Caching System Architecture for Mobile Apps with a WordPress REST back-end, let&#8217;s review in more details what is required to build a cache controller in Swift. The flow: At first run, the app calls all API endpoints requred to download data from the website: Use &#8220;Get All&#8221; endpoints for each... <a href="https://surgeworks.com/blog/swift-ios-mobile-app-caching-controller-update-logic-cache-swift" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/swift-ios-mobile-app-caching-controller-update-logic-cache-swift">Swift iOS Mobile App Caching Controller Update Logic, Cache in Swift</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Based on my last post&#8217;s <a href="https://surgeworks.com/blog/wordpress-as-mobile-app-back-end-caching-system-architecture">Caching System Architecture</a> for Mobile Apps with a WordPress REST back-end, let&#8217;s review in more details what is required to build a <strong>cache controller in Swift</strong>.</p>
<p>The flow:</p>
<ul>
<li>At first run, the app calls all API endpoints requred to download data from the website:
<ul>
<li>Use &#8220;Get All&#8221; endpoints for each entity, or use paged calls for large datasets</li>
<li>Get and parse JSON, save into local DB</li>
<li>Use 1 DB table per entity with all its field</li>
</ul>
</li>
<li>Store [last update date &amp; time] to local app settings</li>
<li>On App launch and on app resume, check if last update time is older than X days.</li>
<li>If it is, call API endpoints &#8220;Get All&#8221; with ?after=[last update date &amp; time]</li>
<li>Get and parse JSON, update local DB with new/changed records</li>
</ul>
<p>We need to store a &#8220;last update date&#8221; for each entity in UserDefailts. So, for example to save and get the last update date for the Post entity I can do:</p>
<blockquote><p>UserDefaults.standard.set(Date(), forKey: &#8220;PostsLastUpdate&#8221;)<br />
UserDefaults.standard.object(forKey: &#8220;PostsLastUpdate&#8221;) as? Date</p></blockquote>
<p>In an initial version, I checked all records for updates ater a given interval using the get all entities and going through the full DB each time. This works but is not the best solution. With a complete implementation on server side, you only request updates to the database with a parameter that will get you all posts modified &#8220;after&#8221; a certain date. Out of the box, this won&#8217;t return posts that reside in the trash, so I build a secondary endpoint to return deleted posts. Therefore you need to invoke 2 endpoints:<br />
&lt;ul&gt;&lt;li&gt;one for modified and new records,&lt;/li&gt;<br />
&lt;li&gt;and one for deleted records.&lt;/li&gt;</p>
<p>The implementation can probably be optimized to return both in one call. In order to check for updates, the workflow looks like this.</p>
<p>First, you set a negative number: we subtract this number of days to check if the cache is current or should be updated. This can also be a constant in your global constants file or part of a more generic cache controller class.</p>
<blockquote><p>let intervalInDays: Int = -1</p></blockquote>
<p>Then we check if last update was within the days interval. If so, we can kill the process and return void.</p>
<blockquote><p>if let lastUpdate = UserDefaults.standard.object(forKey: &#8220;ItinerariesLastUpdate&#8221;) as? Date {<br />
// Updated within the last X days? Skip this update<br />
if(lastUpdate.isGreaterThanDate(Date().addDays(intervalInDays))) {<br />
// Cache is up-to-date, nothing to do.<br />
return<br />
}<br />
}</p></blockquote>
<p>If the process continues, we call &#8220;Get All&#8221; the endpoint with an &#8220;after&#8221; parameter to only get updated items, and parse JSON to store in the local database. Then we explicitely save the DB (context).</p>
<p>Then, we call the endpoint to &#8220;get Deleted&#8221; posts (using the same &#8220;after&#8221; parameter) to only get deleted items. This will return an array of post IDs, so you need to make a query to remove those records from your local DB. Save the DB again.</p>
<p>Indeed, it looks like we need to explicitly save the database in swift when we do this kind of stuff, and it&#8217;s also good to add a call to write the DB to disk in &#8220;will app terminate&#8221; within app delegate.</p>
<p>At the end of the process, if no errors were returned and the DB saved correctly to disk, you have to update the Last Update Date like this:</p>
<blockquote><p>UserDefaults.standard.set(Date(), forKey: &#8220;PostsLastUpdate&#8221;)</p></blockquote><p>The post <a href="https://surgeworks.com/blog/swift-ios-mobile-app-caching-controller-update-logic-cache-swift">Swift iOS Mobile App Caching Controller Update Logic, Cache in Swift</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4019</post-id>	</item>
		<item>
		<title>WordPress as Mobile App Back-end: Caching System Architecture</title>
		<link>https://surgeworks.com/blog/wordpress-as-mobile-app-back-end-caching-system-architecture</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Sun, 20 Jan 2019 08:14:36 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4018</guid>

					<description><![CDATA[<p>In a recent project we had to implement caching to allow an iOS mobile app to work offline, while keeping all contents up-to-date with the WordPress back-end through its REST JSON API. Since the dataset was limited and updated once or twice a week, we decided to create a caching workflow that would allow the... <a href="https://surgeworks.com/blog/wordpress-as-mobile-app-back-end-caching-system-architecture" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/wordpress-as-mobile-app-back-end-caching-system-architecture">WordPress as Mobile App Back-end: Caching System Architecture</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>In a recent project we had to implement caching to allow an iOS mobile app to work offline, while keeping all contents up-to-date with the WordPress back-end through its REST JSON API.</p>
<p>Since the dataset was limited and updated once or twice a week, we decided to create a caching workflow that would allow the app to query the local database for searches and only tap into the server to update the local contents.</p>
<p>This requires some of the business logic (i.e. to search) to be built on the client app rather then the server, which in turn means that if you are building a native app you will need a custom cahce controller and a data manager that knows your business logic to be implemented twice (Anroid and iOS). In our experience though, most of that code is easily portable between Swift and Java, as long as it&#8217;s kept in its own class and well commented.</p>
<p>Let&#8217;s take a look at the Cache Controller Workflow:</p>
<ul>
<li>At first run, the app calls all API endpoints requred to download data from the website:
<ul>
<li>Use &#8220;Get All&#8221; endpoints for each entity, or use paged calls for large datasets</li>
<li>Get and parse JSON, save into local DB</li>
<li>Use 1 DB table per entity with all its field</li>
</ul>
</li>
<li>Store [last update date &amp; time] to local app settings</li>
<li>On App launch and on app resume, check if last update time is older than X days.</li>
<li>If it is, call API endpoints &#8220;Get All&#8221; with ?after=[last update date &amp; time]</li>
<li>Get and parse JSON, update local DB with new/changed records</li>
</ul>
<p>Note: the <i>taxonomies</i> (secondary entities such as post tags) only provide a unique string as ID in the standard responses. They lack the nice name and the unique integer ID. So you&#8217;ll need an endpoint to retrieve the taxonomies table too.</p>
<p>At this point you can use the local database to get data and search for data, by using a database manager controller that will take care of building your queries and get all necessary related data for you. You can build dictionaries or arrays for your lists to be fed to the view controllers.</p><p>The post <a href="https://surgeworks.com/blog/wordpress-as-mobile-app-back-end-caching-system-architecture">WordPress as Mobile App Back-end: Caching System Architecture</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4018</post-id>	</item>
		<item>
		<title>Transition Databases from MAMP to MAMP PRO 4 (Mac)</title>
		<link>https://surgeworks.com/blog/transition-databases-from-mamp-to-mamp-pro-4-mac</link>
					<comments>https://surgeworks.com/blog/transition-databases-from-mamp-to-mamp-pro-4-mac#comments</comments>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Thu, 30 Nov 2017 09:13:34 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4015</guid>

					<description><![CDATA[<p>If you&#8217;ve recently taken advantage of the Black Friday 50% offer for MAMP PRO, and contextually upgraded to the latest version, chances are that the automatic move of the databases didn&#8217;t really happen. So you are probably scratching your head to move your hosts from MAMP to the MAMP PRO app. MAMP PRO documentation offers... <a href="https://surgeworks.com/blog/transition-databases-from-mamp-to-mamp-pro-4-mac" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/transition-databases-from-mamp-to-mamp-pro-4-mac">Transition Databases from MAMP to MAMP PRO 4 (Mac)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>If you&#8217;ve recently taken advantage of the <a href="https://www.mamp.info/en/mamp-pro/store/" target="_blank" rel="noopener">Black Friday 50% offer for MAMP PRO</a>, and contextually upgraded to the latest version, chances are that the automatic move of the databases didn&#8217;t really happen.</p>
<p>So you are probably scratching your head to move your hosts from MAMP to the MAMP PRO app. MAMP PRO documentation offers a hint on <a href="http://documentation.mamp.info/en/MAMP-PRO-Mac/Installation/MAMP-MAMP-PRO-Upgrade/" target="_blank" rel="noopener">this page</a>. However, there is one tiny detail missing that makes the difference.</p>
<p>Once you copied your database (copied, not moved) from <code>/Applications/MAMP/db/mysql56</code> to <code>/Library/Application Support/appsolute/MAMP PRO/db/mysql56</code> you need to open MAMP PRO, start your servers and select <code>Tools &gt; Upgrade Databases</code>.</p>
<p>Also please note, that the path to the new database files is <b>not</b> referring to the Library <em>in your home directory</em>. It&#8217;s the main Library that you can find <em>at the root level of your hard disk</em>.</p><p>The post <a href="https://surgeworks.com/blog/transition-databases-from-mamp-to-mamp-pro-4-mac">Transition Databases from MAMP to MAMP PRO 4 (Mac)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://surgeworks.com/blog/transition-databases-from-mamp-to-mamp-pro-4-mac/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4015</post-id>	</item>
		<item>
		<title>Supported Time Zones PHP, Swift, Java (Android)</title>
		<link>https://surgeworks.com/blog/supported-time-zones-php-swift-java-android</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Mon, 23 Oct 2017 13:30:50 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Android Development]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[swift]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Xcode]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4013</guid>

					<description><![CDATA[<p>We recently came across the challenge of specifying daylight saving affected time zones on a PHP based web back-end to be consumed by a mobile app on iOS and Android. We initially thought of dealing with this using the time difference in hour from either UTC or GMT, however that would not keep in account... <a href="https://surgeworks.com/blog/supported-time-zones-php-swift-java-android" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/supported-time-zones-php-swift-java-android">Supported Time Zones PHP, Swift, Java (Android)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>We recently came across the challenge of specifying daylight saving affected time zones on a PHP based web back-end to be consumed by a mobile app on iOS and Android. We initially thought of dealing with this using the time difference in hour from either UTC or GMT, however that would not keep in account the daylight saving times changes in the affected zone. In some seasons of the year, for example, CET is GMT+1, in others it&#8217;s GMT+2. <span id="more-4013"></span></p>
<p>One way around this is to use a 3 letters code for time zones, however those are hard to remember and deal with when entering the data, so we decided to use the Time Zone description instead (i.e. Europe/Rome or America/Los_Angeles).</p>
<p>In order to be sure we could get a common set of timezones across PHP, iOS and Android, we dumped all supported time zones on each framework and intersected the resulting arrays. Here is the result of safe time zone descriptions you can use in iOS 11, Android 5 and above and PHP 5.4 and later.</p>
<p>Africa/Abidjan<br />
Africa/Accra<br />
Africa/Addis_Ababa<br />
Africa/Algiers<br />
Africa/Asmara<br />
Africa/Bamako<br />
Africa/Bangui<br />
Africa/Banjul<br />
Africa/Bissau<br />
Africa/Blantyre<br />
Africa/Brazzaville<br />
Africa/Bujumbura<br />
Africa/Cairo<br />
Africa/Casablanca<br />
Africa/Ceuta<br />
Africa/Conakry<br />
Africa/Dakar<br />
Africa/Dar_es_Salaam<br />
Africa/Djibouti<br />
Africa/Douala<br />
Africa/El_Aaiun<br />
Africa/Freetown<br />
Africa/Gaborone<br />
Africa/Harare<br />
Africa/Johannesburg<br />
Africa/Juba<br />
Africa/Kampala<br />
Africa/Khartoum<br />
Africa/Kigali<br />
Africa/Kinshasa<br />
Africa/Lagos<br />
Africa/Libreville<br />
Africa/Lome<br />
Africa/Luanda<br />
Africa/Lubumbashi<br />
Africa/Lusaka<br />
Africa/Malabo<br />
Africa/Maputo<br />
Africa/Maseru<br />
Africa/Mbabane<br />
Africa/Mogadishu<br />
Africa/Monrovia<br />
Africa/Nairobi<br />
Africa/Ndjamena<br />
Africa/Niamey<br />
Africa/Nouakchott<br />
Africa/Ouagadougou<br />
Africa/Porto-Novo<br />
Africa/Sao_Tome<br />
Africa/Tripoli<br />
Africa/Tunis<br />
Africa/Windhoek<br />
America/Adak<br />
America/Anchorage<br />
America/Anguilla<br />
America/Antigua<br />
America/Araguaina<br />
America/Argentina/Buenos_Aires<br />
America/Argentina/Catamarca<br />
America/Argentina/Cordoba<br />
America/Argentina/Jujuy<br />
America/Argentina/La_Rioja<br />
America/Argentina/Mendoza<br />
America/Argentina/Rio_Gallegos<br />
America/Argentina/Salta<br />
America/Argentina/San_Juan<br />
America/Argentina/San_Luis<br />
America/Argentina/Tucuman<br />
America/Argentina/Ushuaia<br />
America/Aruba<br />
America/Asuncion<br />
America/Atikokan<br />
America/Bahia<br />
America/Bahia_Banderas<br />
America/Barbados<br />
America/Belem<br />
America/Belize<br />
America/Blanc-Sablon<br />
America/Boa_Vista<br />
America/Bogota<br />
America/Boise<br />
America/Cambridge_Bay<br />
America/Campo_Grande<br />
America/Cancun<br />
America/Caracas<br />
America/Cayenne<br />
America/Cayman<br />
America/Chicago<br />
America/Chihuahua<br />
America/Costa_Rica<br />
America/Creston<br />
America/Cuiaba<br />
America/Curacao<br />
America/Danmarkshavn<br />
America/Dawson<br />
America/Dawson_Creek<br />
America/Denver<br />
America/Detroit<br />
America/Dominica<br />
America/Edmonton<br />
America/Eirunepe<br />
America/El_Salvador<br />
America/Fortaleza<br />
America/Glace_Bay<br />
America/Godthab<br />
America/Goose_Bay<br />
America/Grand_Turk<br />
America/Grenada<br />
America/Guadeloupe<br />
America/Guatemala<br />
America/Guayaquil<br />
America/Guyana<br />
America/Halifax<br />
America/Havana<br />
America/Hermosillo<br />
America/Indiana/Indianapolis<br />
America/Indiana/Knox<br />
America/Indiana/Marengo<br />
America/Indiana/Petersburg<br />
America/Indiana/Tell_City<br />
America/Indiana/Vevay<br />
America/Indiana/Vincennes<br />
America/Indiana/Winamac<br />
America/Inuvik<br />
America/Iqaluit<br />
America/Jamaica<br />
America/Juneau<br />
America/Kentucky/Louisville<br />
America/Kentucky/Monticello<br />
America/Kralendijk<br />
America/La_Paz<br />
America/Lima<br />
America/Los_Angeles<br />
America/Lower_Princes<br />
America/Maceio<br />
America/Managua<br />
America/Manaus<br />
America/Marigot<br />
America/Martinique<br />
America/Matamoros<br />
America/Mazatlan<br />
America/Menominee<br />
America/Merida<br />
America/Metlakatla<br />
America/Mexico_City<br />
America/Miquelon<br />
America/Moncton<br />
America/Monterrey<br />
America/Montevideo<br />
America/Montserrat<br />
America/Nassau<br />
America/New_York<br />
America/Nipigon<br />
America/Nome<br />
America/Noronha<br />
America/North_Dakota/Beulah<br />
America/North_Dakota/Center<br />
America/North_Dakota/New_Salem<br />
America/Ojinaga<br />
America/Panama<br />
America/Pangnirtung<br />
America/Paramaribo<br />
America/Phoenix<br />
America/Port-au-Prince<br />
America/Port_of_Spain<br />
America/Porto_Velho<br />
America/Puerto_Rico<br />
America/Rainy_River<br />
America/Rankin_Inlet<br />
America/Recife<br />
America/Regina<br />
America/Resolute<br />
America/Rio_Branco<br />
America/Santarem<br />
America/Santiago<br />
America/Santo_Domingo<br />
America/Sao_Paulo<br />
America/Scoresbysund<br />
America/Sitka<br />
America/St_Barthelemy<br />
America/St_Johns<br />
America/St_Kitts<br />
America/St_Lucia<br />
America/St_Thomas<br />
America/St_Vincent<br />
America/Swift_Current<br />
America/Tegucigalpa<br />
America/Thule<br />
America/Thunder_Bay<br />
America/Tijuana<br />
America/Toronto<br />
America/Tortola<br />
America/Vancouver<br />
America/Whitehorse<br />
America/Winnipeg<br />
America/Yakutat<br />
America/Yellowknife<br />
Antarctica/Casey<br />
Antarctica/Davis<br />
Antarctica/DumontDUrville<br />
Antarctica/Macquarie<br />
Antarctica/Mawson<br />
Antarctica/McMurdo<br />
Antarctica/Palmer<br />
Antarctica/Rothera<br />
Antarctica/Syowa<br />
Antarctica/Troll<br />
Antarctica/Vostok<br />
Arctic/Longyearbyen<br />
Asia/Aden<br />
Asia/Almaty<br />
Asia/Amman<br />
Asia/Anadyr<br />
Asia/Aqtau<br />
Asia/Aqtobe<br />
Asia/Ashgabat<br />
Asia/Baghdad<br />
Asia/Bahrain<br />
Asia/Baku<br />
Asia/Bangkok<br />
Asia/Beirut<br />
Asia/Bishkek<br />
Asia/Brunei<br />
Asia/Chita<br />
Asia/Choibalsan<br />
Asia/Colombo<br />
Asia/Damascus<br />
Asia/Dhaka<br />
Asia/Dili<br />
Asia/Dubai<br />
Asia/Dushanbe<br />
Asia/Gaza<br />
Asia/Hebron<br />
Asia/Ho_Chi_Minh<br />
Asia/Hong_Kong<br />
Asia/Hovd<br />
Asia/Irkutsk<br />
Asia/Jakarta<br />
Asia/Jayapura<br />
Asia/Jerusalem<br />
Asia/Kabul<br />
Asia/Kamchatka<br />
Asia/Karachi<br />
Asia/Kathmandu<br />
Asia/Khandyga<br />
Asia/Krasnoyarsk<br />
Asia/Kuala_Lumpur<br />
Asia/Kuching<br />
Asia/Kuwait<br />
Asia/Macau<br />
Asia/Magadan<br />
Asia/Makassar<br />
Asia/Manila<br />
Asia/Muscat<br />
Asia/Nicosia<br />
Asia/Novokuznetsk<br />
Asia/Novosibirsk<br />
Asia/Omsk<br />
Asia/Oral<br />
Asia/Phnom_Penh<br />
Asia/Pontianak<br />
Asia/Pyongyang<br />
Asia/Qatar<br />
Asia/Qyzylorda<br />
Asia/Riyadh<br />
Asia/Sakhalin<br />
Asia/Samarkand<br />
Asia/Seoul<br />
Asia/Shanghai<br />
Asia/Singapore<br />
Asia/Srednekolymsk<br />
Asia/Taipei<br />
Asia/Tashkent<br />
Asia/Tbilisi<br />
Asia/Tehran<br />
Asia/Thimphu<br />
Asia/Tokyo<br />
Asia/Ulaanbaatar<br />
Asia/Urumqi<br />
Asia/Ust-Nera<br />
Asia/Vientiane<br />
Asia/Vladivostok<br />
Asia/Yakutsk<br />
Asia/Yekaterinburg<br />
Asia/Yerevan<br />
Atlantic/Azores<br />
Atlantic/Bermuda<br />
Atlantic/Canary<br />
Atlantic/Cape_Verde<br />
Atlantic/Faroe<br />
Atlantic/Madeira<br />
Atlantic/Reykjavik<br />
Atlantic/South_Georgia<br />
Atlantic/St_Helena<br />
Atlantic/Stanley<br />
Australia/Adelaide<br />
Australia/Brisbane<br />
Australia/Broken_Hill<br />
Australia/Currie<br />
Australia/Darwin<br />
Australia/Eucla<br />
Australia/Hobart<br />
Australia/Lindeman<br />
Australia/Lord_Howe<br />
Australia/Melbourne<br />
Australia/Perth<br />
Australia/Sydney<br />
Europe/Amsterdam<br />
Europe/Andorra<br />
Europe/Athens<br />
Europe/Belgrade<br />
Europe/Berlin<br />
Europe/Bratislava<br />
Europe/Brussels<br />
Europe/Bucharest<br />
Europe/Budapest<br />
Europe/Busingen<br />
Europe/Chisinau<br />
Europe/Copenhagen<br />
Europe/Dublin<br />
Europe/Gibraltar<br />
Europe/Guernsey<br />
Europe/Helsinki<br />
Europe/Isle_of_Man<br />
Europe/Istanbul<br />
Europe/Jersey<br />
Europe/Kaliningrad<br />
Europe/Kiev<br />
Europe/Lisbon<br />
Europe/Ljubljana<br />
Europe/London<br />
Europe/Luxembourg<br />
Europe/Madrid<br />
Europe/Malta<br />
Europe/Mariehamn<br />
Europe/Minsk<br />
Europe/Monaco<br />
Europe/Moscow<br />
Europe/Oslo<br />
Europe/Paris<br />
Europe/Podgorica<br />
Europe/Prague<br />
Europe/Riga<br />
Europe/Rome<br />
Europe/Samara<br />
Europe/San_Marino<br />
Europe/Sarajevo<br />
Europe/Simferopol<br />
Europe/Skopje<br />
Europe/Sofia<br />
Europe/Stockholm<br />
Europe/Tallinn<br />
Europe/Tirane<br />
Europe/Uzhgorod<br />
Europe/Vaduz<br />
Europe/Vatican<br />
Europe/Vienna<br />
Europe/Vilnius<br />
Europe/Volgograd<br />
Europe/Warsaw<br />
Europe/Zagreb<br />
Europe/Zaporozhye<br />
Europe/Zurich<br />
Indian/Antananarivo<br />
Indian/Chagos<br />
Indian/Christmas<br />
Indian/Cocos<br />
Indian/Comoro<br />
Indian/Kerguelen<br />
Indian/Mahe<br />
Indian/Maldives<br />
Indian/Mauritius<br />
Indian/Mayotte<br />
Indian/Reunion<br />
Pacific/Apia<br />
Pacific/Auckland<br />
Pacific/Bougainville<br />
Pacific/Chatham<br />
Pacific/Chuuk<br />
Pacific/Easter<br />
Pacific/Efate<br />
Pacific/Enderbury<br />
Pacific/Fakaofo<br />
Pacific/Fiji<br />
Pacific/Funafuti<br />
Pacific/Galapagos<br />
Pacific/Gambier<br />
Pacific/Guadalcanal<br />
Pacific/Guam<br />
Pacific/Honolulu<br />
Pacific/Johnston<br />
Pacific/Kiritimati<br />
Pacific/Kosrae<br />
Pacific/Kwajalein<br />
Pacific/Majuro<br />
Pacific/Marquesas<br />
Pacific/Midway<br />
Pacific/Nauru<br />
Pacific/Niue<br />
Pacific/Norfolk<br />
Pacific/Noumea<br />
Pacific/Pago_Pago<br />
Pacific/Palau<br />
Pacific/Pitcairn<br />
Pacific/Pohnpei<br />
Pacific/Port_Moresby<br />
Pacific/Rarotonga<br />
Pacific/Saipan<br />
Pacific/Tahiti<br />
Pacific/Tarawa<br />
Pacific/Tongatapu<br />
Pacific/Wake<br />
Pacific/Wallis</p>
<p>The following lists compare the missing records in each framework.</p>
<h1>PHP</h1>
<p>America/Fort_Nelson <b>missing in Android</b><br />
Asia/Atyrau <b>missing in Android</b><br />
Asia/Barnaul <b>missing in Android</b><br />
Asia/Famagusta <b>missing in Android</b><br />
Asia/Kolkata <b>missing in Swift</b><br />
Asia/Tomsk <b>missing in Android</b><br />
Asia/Yangon <b>missing in Android</b><br />
Europe/Astrakhan <b>missing in Android</b><br />
Europe/Kirov <b>missing in Android</b><br />
Europe/Saratov <b>missing in Android</b><br />
Europe/Ulyanovsk <b>missing in Android</b><br />
UTC <b>missing in Swift</b></p>
<h1>Swift</h1>
<p>America/Fort_Nelson <b>missing in Android</b><br />
America/Montreal <b>missing in PHP</b><br />
America/Punta_Arenas <b>missing in PHP</b><br />
America/Punta_Arenas <b>missing in Android</b><br />
America/Santa_Isabel <b>missing in PHP</b><br />
America/Shiprock <b>missing in PHP</b><br />
Antarctica/South_Pole <b>missing in PHP</b><br />
Asia/Atyrau <b>missing in Android</b><br />
Asia/Barnaul <b>missing in Android</b><br />
Asia/Calcutta <b>missing in PHP</b><br />
Asia/Chongqing <b>missing in PHP</b><br />
Asia/Famagusta <b>missing in Android</b><br />
Asia/Harbin <b>missing in PHP</b><br />
Asia/Kashgar <b>missing in PHP</b><br />
Asia/Katmandu <b>missing in PHP</b><br />
Asia/Rangoon <b>missing in PHP</b><br />
Asia/Tomsk <b>missing in Android</b><br />
Asia/Yangon <b>missing in Android</b><br />
Europe/Astrakhan <b>missing in Android</b><br />
Europe/Kirov <b>missing in Android</b><br />
Europe/Saratov <b>missing in Android</b><br />
Europe/Ulyanovsk <b>missing in Android</b><br />
GMT <b>missing in PHP</b><br />
Pacific/Ponape <b>missing in PHP</b><br />
Pacific/Truk <b>missing in PHP</b></p>
<h1>Android</h1>
<p>Africa/Asmera <b>missing in PHP</b><br />
Africa/Asmera <b>missing in Swift</b><br />
Africa/Timbuktu <b>missing in PHP</b><br />
Africa/Timbuktu <b>missing in Swift</b><br />
America/Argentina/ComodRivadavia <b>missing in PHP</b><br />
America/Argentina/ComodRivadavia <b>missing in Swift</b><br />
America/Atka <b>missing in PHP</b><br />
America/Atka <b>missing in Swift</b><br />
America/Buenos_Aires <b>missing in PHP</b><br />
America/Buenos_Aires <b>missing in Swift</b><br />
America/Catamarca <b>missing in PHP</b><br />
America/Catamarca <b>missing in Swift</b><br />
America/Coral_Harbour <b>missing in PHP</b><br />
America/Coral_Harbour <b>missing in Swift</b><br />
America/Cordoba <b>missing in PHP</b><br />
America/Cordoba <b>missing in Swift</b><br />
America/Ensenada <b>missing in PHP</b><br />
America/Ensenada <b>missing in Swift</b><br />
America/Fort_Wayne <b>missing in PHP</b><br />
America/Fort_Wayne <b>missing in Swift</b><br />
America/Indianapolis <b>missing in PHP</b><br />
America/Indianapolis <b>missing in Swift</b><br />
America/Jujuy <b>missing in PHP</b><br />
America/Jujuy <b>missing in Swift</b><br />
America/Knox_IN <b>missing in PHP</b><br />
America/Knox_IN <b>missing in Swift</b><br />
America/Louisville <b>missing in PHP</b><br />
America/Louisville <b>missing in Swift</b><br />
America/Mendoza <b>missing in PHP</b><br />
America/Mendoza <b>missing in Swift</b><br />
America/Montreal <b>missing in PHP</b><br />
America/Porto_Acre <b>missing in PHP</b><br />
America/Porto_Acre <b>missing in Swift</b><br />
America/Rosario <b>missing in PHP</b><br />
America/Rosario <b>missing in Swift</b><br />
America/Santa_Isabel <b>missing in PHP</b><br />
America/Shiprock <b>missing in PHP</b><br />
America/Virgin <b>missing in PHP</b><br />
America/Virgin <b>missing in Swift</b><br />
Antarctica/South_Pole <b>missing in PHP</b><br />
Asia/Ashkhabad <b>missing in PHP</b><br />
Asia/Ashkhabad <b>missing in Swift</b><br />
Asia/Calcutta <b>missing in PHP</b><br />
Asia/Chongqing <b>missing in PHP</b><br />
Asia/Chungking <b>missing in PHP</b><br />
Asia/Chungking <b>missing in Swift</b><br />
Asia/Dacca <b>missing in PHP</b><br />
Asia/Dacca <b>missing in Swift</b><br />
Asia/Hanoi <b>missing in PHP</b><br />
Asia/Hanoi <b>missing in Swift</b><br />
Asia/Harbin <b>missing in PHP</b><br />
Asia/Istanbul <b>missing in PHP</b><br />
Asia/Istanbul <b>missing in Swift</b><br />
Asia/Kashgar <b>missing in PHP</b><br />
Asia/Katmandu <b>missing in PHP</b><br />
Asia/Kolkata <b>missing in Swift</b><br />
Asia/Macao <b>missing in PHP</b><br />
Asia/Macao <b>missing in Swift</b><br />
Asia/Rangoon <b>missing in PHP</b><br />
Asia/Saigon <b>missing in PHP</b><br />
Asia/Saigon <b>missing in Swift</b><br />
Asia/Tel_Aviv <b>missing in PHP</b><br />
Asia/Tel_Aviv <b>missing in Swift</b><br />
Asia/Thimbu <b>missing in PHP</b><br />
Asia/Thimbu <b>missing in Swift</b><br />
Asia/Ujung_Pandang <b>missing in PHP</b><br />
Asia/Ujung_Pandang <b>missing in Swift</b><br />
Asia/Ulan_Bator <b>missing in PHP</b><br />
Asia/Ulan_Bator <b>missing in Swift</b><br />
Atlantic/Faeroe <b>missing in PHP</b><br />
Atlantic/Faeroe <b>missing in Swift</b><br />
Atlantic/Jan_Mayen <b>missing in PHP</b><br />
Atlantic/Jan_Mayen <b>missing in Swift</b><br />
Australia/ACT <b>missing in PHP</b><br />
Australia/ACT <b>missing in Swift</b><br />
Australia/Canberra <b>missing in PHP</b><br />
Australia/Canberra <b>missing in Swift</b><br />
Australia/LHI <b>missing in PHP</b><br />
Australia/LHI <b>missing in Swift</b><br />
Australia/NSW <b>missing in PHP</b><br />
Australia/NSW <b>missing in Swift</b><br />
Australia/North <b>missing in PHP</b><br />
Australia/North <b>missing in Swift</b><br />
Australia/Queensland <b>missing in PHP</b><br />
Australia/Queensland <b>missing in Swift</b><br />
Australia/South <b>missing in PHP</b><br />
Australia/South <b>missing in Swift</b><br />
Australia/Tasmania <b>missing in PHP</b><br />
Australia/Tasmania <b>missing in Swift</b><br />
Australia/Victoria <b>missing in PHP</b><br />
Australia/Victoria <b>missing in Swift</b><br />
Australia/West <b>missing in PHP</b><br />
Australia/West <b>missing in Swift</b><br />
Australia/Yancowinna <b>missing in PHP</b><br />
Australia/Yancowinna <b>missing in Swift</b><br />
Brazil/Acre <b>missing in PHP</b><br />
Brazil/Acre <b>missing in Swift</b><br />
Brazil/DeNoronha <b>missing in PHP</b><br />
Brazil/DeNoronha <b>missing in Swift</b><br />
Brazil/East <b>missing in PHP</b><br />
Brazil/East <b>missing in Swift</b><br />
Brazil/West <b>missing in PHP</b><br />
Brazil/West <b>missing in Swift</b><br />
CET <b>missing in PHP</b><br />
CET <b>missing in Swift</b><br />
CST6CDT <b>missing in PHP</b><br />
CST6CDT <b>missing in Swift</b><br />
Canada/Atlantic <b>missing in PHP</b><br />
Canada/Atlantic <b>missing in Swift</b><br />
Canada/Central <b>missing in PHP</b><br />
Canada/Central <b>missing in Swift</b><br />
Canada/East-Saskatchewan <b>missing in PHP</b><br />
Canada/East-Saskatchewan <b>missing in Swift</b><br />
Canada/Eastern <b>missing in PHP</b><br />
Canada/Eastern <b>missing in Swift</b><br />
Canada/Mountain <b>missing in PHP</b><br />
Canada/Mountain <b>missing in Swift</b><br />
Canada/Newfoundland <b>missing in PHP</b><br />
Canada/Newfoundland <b>missing in Swift</b><br />
Canada/Pacific <b>missing in PHP</b><br />
Canada/Pacific <b>missing in Swift</b><br />
Canada/Saskatchewan <b>missing in PHP</b><br />
Canada/Saskatchewan <b>missing in Swift</b><br />
Canada/Yukon <b>missing in PHP</b><br />
Canada/Yukon <b>missing in Swift</b><br />
Chile/Continental <b>missing in PHP</b><br />
Chile/Continental <b>missing in Swift</b><br />
Chile/EasterIsland <b>missing in PHP</b><br />
Chile/EasterIsland <b>missing in Swift</b><br />
Cuba <b>missing in PHP</b><br />
Cuba <b>missing in Swift</b><br />
EET <b>missing in PHP</b><br />
EET <b>missing in Swift</b><br />
EST <b>missing in PHP</b><br />
EST <b>missing in Swift</b><br />
EST5EDT <b>missing in PHP</b><br />
EST5EDT <b>missing in Swift</b><br />
Egypt <b>missing in PHP</b><br />
Egypt <b>missing in Swift</b><br />
Eire <b>missing in PHP</b><br />
Eire <b>missing in Swift</b><br />
Etc/GMT <b>missing in PHP</b><br />
Etc/GMT <b>missing in Swift</b><br />
Etc/GMT+0 <b>missing in PHP</b><br />
Etc/GMT+0 <b>missing in Swift</b><br />
Etc/GMT+1 <b>missing in PHP</b><br />
Etc/GMT+1 <b>missing in Swift</b><br />
Etc/GMT+10 <b>missing in PHP</b><br />
Etc/GMT+10 <b>missing in Swift</b><br />
Etc/GMT+11 <b>missing in PHP</b><br />
Etc/GMT+11 <b>missing in Swift</b><br />
Etc/GMT+12 <b>missing in PHP</b><br />
Etc/GMT+12 <b>missing in Swift</b><br />
Etc/GMT+2 <b>missing in PHP</b><br />
Etc/GMT+2 <b>missing in Swift</b><br />
Etc/GMT+3 <b>missing in PHP</b><br />
Etc/GMT+3 <b>missing in Swift</b><br />
Etc/GMT+4 <b>missing in PHP</b><br />
Etc/GMT+4 <b>missing in Swift</b><br />
Etc/GMT+5 <b>missing in PHP</b><br />
Etc/GMT+5 <b>missing in Swift</b><br />
Etc/GMT+6 <b>missing in PHP</b><br />
Etc/GMT+6 <b>missing in Swift</b><br />
Etc/GMT+7 <b>missing in PHP</b><br />
Etc/GMT+7 <b>missing in Swift</b><br />
Etc/GMT+8 <b>missing in PHP</b><br />
Etc/GMT+8 <b>missing in Swift</b><br />
Etc/GMT+9 <b>missing in PHP</b><br />
Etc/GMT+9 <b>missing in Swift</b><br />
Etc/GMT-0 <b>missing in PHP</b><br />
Etc/GMT-0 <b>missing in Swift</b><br />
Etc/GMT-1 <b>missing in PHP</b><br />
Etc/GMT-1 <b>missing in Swift</b><br />
Etc/GMT-10 <b>missing in PHP</b><br />
Etc/GMT-10 <b>missing in Swift</b><br />
Etc/GMT-11 <b>missing in PHP</b><br />
Etc/GMT-11 <b>missing in Swift</b><br />
Etc/GMT-12 <b>missing in PHP</b><br />
Etc/GMT-12 <b>missing in Swift</b><br />
Etc/GMT-13 <b>missing in PHP</b><br />
Etc/GMT-13 <b>missing in Swift</b><br />
Etc/GMT-14 <b>missing in PHP</b><br />
Etc/GMT-14 <b>missing in Swift</b><br />
Etc/GMT-2 <b>missing in PHP</b><br />
Etc/GMT-2 <b>missing in Swift</b><br />
Etc/GMT-3 <b>missing in PHP</b><br />
Etc/GMT-3 <b>missing in Swift</b><br />
Etc/GMT-4 <b>missing in PHP</b><br />
Etc/GMT-4 <b>missing in Swift</b><br />
Etc/GMT-5 <b>missing in PHP</b><br />
Etc/GMT-5 <b>missing in Swift</b><br />
Etc/GMT-6 <b>missing in PHP</b><br />
Etc/GMT-6 <b>missing in Swift</b><br />
Etc/GMT-7 <b>missing in PHP</b><br />
Etc/GMT-7 <b>missing in Swift</b><br />
Etc/GMT-8 <b>missing in PHP</b><br />
Etc/GMT-8 <b>missing in Swift</b><br />
Etc/GMT-9 <b>missing in PHP</b><br />
Etc/GMT-9 <b>missing in Swift</b><br />
Etc/GMT0 <b>missing in PHP</b><br />
Etc/GMT0 <b>missing in Swift</b><br />
Etc/Greenwich <b>missing in PHP</b><br />
Etc/Greenwich <b>missing in Swift</b><br />
Etc/UCT <b>missing in PHP</b><br />
Etc/UCT <b>missing in Swift</b><br />
Etc/UTC <b>missing in PHP</b><br />
Etc/UTC <b>missing in Swift</b><br />
Etc/Universal <b>missing in PHP</b><br />
Etc/Universal <b>missing in Swift</b><br />
Etc/Zulu <b>missing in PHP</b><br />
Etc/Zulu <b>missing in Swift</b><br />
Europe/Belfast <b>missing in PHP</b><br />
Europe/Belfast <b>missing in Swift</b><br />
Europe/Nicosia <b>missing in PHP</b><br />
Europe/Nicosia <b>missing in Swift</b><br />
Europe/Tiraspol <b>missing in PHP</b><br />
Europe/Tiraspol <b>missing in Swift</b><br />
GB <b>missing in PHP</b><br />
GB <b>missing in Swift</b><br />
GB-Eire <b>missing in PHP</b><br />
GB-Eire <b>missing in Swift</b><br />
GMT <b>missing in PHP</b><br />
GMT+0 <b>missing in PHP</b><br />
GMT+0 <b>missing in Swift</b><br />
GMT-0 <b>missing in PHP</b><br />
GMT-0 <b>missing in Swift</b><br />
GMT0 <b>missing in PHP</b><br />
GMT0 <b>missing in Swift</b><br />
Greenwich <b>missing in PHP</b><br />
Greenwich <b>missing in Swift</b><br />
HST <b>missing in PHP</b><br />
HST <b>missing in Swift</b><br />
Hongkong <b>missing in PHP</b><br />
Hongkong <b>missing in Swift</b><br />
Iceland <b>missing in PHP</b><br />
Iceland <b>missing in Swift</b><br />
Iran <b>missing in PHP</b><br />
Iran <b>missing in Swift</b><br />
Israel <b>missing in PHP</b><br />
Israel <b>missing in Swift</b><br />
Jamaica <b>missing in PHP</b><br />
Jamaica <b>missing in Swift</b><br />
Japan <b>missing in PHP</b><br />
Japan <b>missing in Swift</b><br />
Kwajalein <b>missing in PHP</b><br />
Kwajalein <b>missing in Swift</b><br />
Libya <b>missing in PHP</b><br />
Libya <b>missing in Swift</b><br />
MET <b>missing in PHP</b><br />
MET <b>missing in Swift</b><br />
MST <b>missing in PHP</b><br />
MST <b>missing in Swift</b><br />
MST7MDT <b>missing in PHP</b><br />
MST7MDT <b>missing in Swift</b><br />
Mexico/BajaNorte <b>missing in PHP</b><br />
Mexico/BajaNorte <b>missing in Swift</b><br />
Mexico/BajaSur <b>missing in PHP</b><br />
Mexico/BajaSur <b>missing in Swift</b><br />
Mexico/General <b>missing in PHP</b><br />
Mexico/General <b>missing in Swift</b><br />
NZ <b>missing in PHP</b><br />
NZ <b>missing in Swift</b><br />
NZ-CHAT <b>missing in PHP</b><br />
NZ-CHAT <b>missing in Swift</b><br />
Navajo <b>missing in PHP</b><br />
Navajo <b>missing in Swift</b><br />
PRC <b>missing in PHP</b><br />
PRC <b>missing in Swift</b><br />
PST8PDT <b>missing in PHP</b><br />
PST8PDT <b>missing in Swift</b><br />
Pacific/Ponape <b>missing in PHP</b><br />
Pacific/Samoa <b>missing in PHP</b><br />
Pacific/Samoa <b>missing in Swift</b><br />
Pacific/Truk <b>missing in PHP</b><br />
Pacific/Yap <b>missing in PHP</b><br />
Pacific/Yap <b>missing in Swift</b><br />
Poland <b>missing in PHP</b><br />
Poland <b>missing in Swift</b><br />
Portugal <b>missing in PHP</b><br />
Portugal <b>missing in Swift</b><br />
ROC <b>missing in PHP</b><br />
ROC <b>missing in Swift</b><br />
ROK <b>missing in PHP</b><br />
ROK <b>missing in Swift</b><br />
Singapore <b>missing in PHP</b><br />
Singapore <b>missing in Swift</b><br />
Turkey <b>missing in PHP</b><br />
Turkey <b>missing in Swift</b><br />
UCT <b>missing in PHP</b><br />
UCT <b>missing in Swift</b><br />
US/Alaska <b>missing in PHP</b><br />
US/Alaska <b>missing in Swift</b><br />
US/Aleutian <b>missing in PHP</b><br />
US/Aleutian <b>missing in Swift</b><br />
US/Arizona <b>missing in PHP</b><br />
US/Arizona <b>missing in Swift</b><br />
US/Central <b>missing in PHP</b><br />
US/Central <b>missing in Swift</b><br />
US/East-Indiana <b>missing in PHP</b><br />
US/East-Indiana <b>missing in Swift</b><br />
US/Eastern <b>missing in PHP</b><br />
US/Eastern <b>missing in Swift</b><br />
US/Hawaii <b>missing in PHP</b><br />
US/Hawaii <b>missing in Swift</b><br />
US/Indiana-Starke <b>missing in PHP</b><br />
US/Indiana-Starke <b>missing in Swift</b><br />
US/Michigan <b>missing in PHP</b><br />
US/Michigan <b>missing in Swift</b><br />
US/Mountain <b>missing in PHP</b><br />
US/Mountain <b>missing in Swift</b><br />
US/Pacific <b>missing in PHP</b><br />
US/Pacific <b>missing in Swift</b><br />
US/Samoa <b>missing in PHP</b><br />
US/Samoa <b>missing in Swift</b><br />
UTC <b>missing in Swift</b><br />
Universal <b>missing in PHP</b><br />
Universal <b>missing in Swift</b><br />
W-SU <b>missing in PHP</b><br />
W-SU <b>missing in Swift</b><br />
WET <b>missing in PHP</b><br />
WET <b>missing in Swift</b><br />
Zulu <b>missing in PHP</b><br />
Zulu <b>missing in Swift</b></p><p>The post <a href="https://surgeworks.com/blog/supported-time-zones-php-swift-java-android">Supported Time Zones PHP, Swift, Java (Android)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4013</post-id>	</item>
		<item>
		<title>A Git Setup for WordPress</title>
		<link>https://surgeworks.com/blog/a-git-setup-for-wordpress</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Mon, 16 Oct 2017 07:59:59 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4012</guid>

					<description><![CDATA[<p>As I mentioned in my previous posts about how to setup git deployment on a staging and a live server for a WordPress site, setting up a repository for your WordPress site is not a complex task. Let&#8217;s review the steps to do it. First of all, you need to realize that you don’t want... <a href="https://surgeworks.com/blog/a-git-setup-for-wordpress" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/a-git-setup-for-wordpress">A Git Setup for WordPress</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>As I mentioned in my previous posts about <a href="https://surgeworks.com/blog/how-to-setup-wordpress-deployment-from-github-repository-to-a-web-server">how to setup git deployment on a staging and a live server</a> for a WordPress site, setting up a repository for your WordPress site is not a complex task.</p>
<p>Let&#8217;s review the steps to do it.</p>
<p>First of all, you need to realize that you don’t want to version anything but your custom code. WordPress and the plug-ins you are using are already being versioned by their respective authors. To do this, your workflow needs to start from your local machine.</p>
<p>You need to have a local development environemnt setup to test your features and work swiftly on breaking changes.</p>
<h3>Step 1. Setup your git repository on github</h3>
<p>You need to create a new repository, and clone the repository on your local machine. I like to do this using GitHub’s desktop app.</p>
<h3>Step 2. Setup your repository locally</h3>
<p>Now create a directory structure for your repository. Remember we want to leave out all the WordPress core and 3rd parties plug-ins: these are already versioned eslewhere.</p>
<p>My typical WordPress repository consists of the following directories:</p>
<ul>
<li>root level → support scripts that reside at the root level of the site (i.e. .htaccess)</li>
<li>wp-content/plugins/ → site-specific custom developed plugins</li>
<li>wp-content/themes/ → site-specific custom developed themes</li>
</ul>
<p>Optional directories include:</p>
<ul>
<li>misc/ → other stuff that doesn&#8217;t bleong to the above groups</li>
<li>assets/ → images, css, javascript, etc that do not belong to wordpress but you still need to store on your webserver</li>
</ul>
<h3>Step 3. Setup your local web server</h3>
<p>In my local environment, I currently use MAMP as web and PHP server. I create an arbitrary root directory for the server where I unzip a fresh copy of WordPress.</p>
<p>Then, I download a database dump from the live server and import it locally. <a href="https://surgeworks.com/blog/how-to-import-a-large-mysql-database-dump-into-mamp-mac-os-x">If the database is very large, there are better ways then doing this with phpMyAdmin</a>. Be sure to <a href="https://surgeworks.com/blog/search-and-replace-localhost-domain-in-wordpress-database-after-migration">Search and Replace your live Domain with Localhost</a> in the WordPress Database.</p>
<p>Setup your wp-config.php to use the database you just populated.</p>
<p>I usually also download a full copy of the wp-content directory from the server, so that I will have locally all the plug-ins, themes and images exactly as they are served from the server.</p>
<p>Once you move these in place, be sure to keep in the wp-content direcrory of your local web root all 3rd party plug-ins and themes.</p>
<h3>Setp 4. Move custom code in the repository</h3>
<p>The custom plug-ins and themes instead belong to the appropriate directories in your repository. Move them out of the wp-content directory of your local web root and into the wp-content directory you created in the repository.</p>
<h3>Step 5. Make the local site use the custom plug-ins and themes from the repository</h3>
<p>Now, how do you connect all the stuff in the repository to your local web server root?</p>
<p>You could keep everything mixed together and build a huge ignore file, but I personally prefer to create &#8220;links&#8221; of the custom plug-ins and themes, so that I keep everything clean and separated.</p>
<p>The fastest way to do this is with the Terminal app. It&#8217;s one command for plug-ins, one for themes, and works as follows:</p>
<blockquote><p>ln -s ~/path/to/your/repository/wp-content/plugins/* ~/path/to/your/local/web-root/wp-content/plugins/</p>
<p>ln -s ~/path/to/your/repository/wp-content/themes/* ~/path/to/your/local/web-root/wp-content/themes/</p></blockquote>
<p>If, in the future, you will add a custom plug-in or a child theme to your repository, you need to remember to create a new link for it, i.e.:</p>
<blockquote><p>ln -s ~/path/to/your/repository/wp-content/plugins/new-plug-in-name ~/path/to/your/local/web-root/wp-content/plugins/</p></blockquote><p>The post <a href="https://surgeworks.com/blog/a-git-setup-for-wordpress">A Git Setup for WordPress</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4012</post-id>	</item>
		<item>
		<title>Search and Replace Localhost Domain in WordPress Database after Migration</title>
		<link>https://surgeworks.com/blog/search-and-replace-localhost-domain-in-wordpress-database-after-migration</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Fri, 13 Oct 2017 07:29:28 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4009</guid>

					<description><![CDATA[<p>Are you setting up a local development environment for an existing WordPress website, and imported a large database dump locally? You&#8217;ll need to replace your domain name with localhost in all its occurrences. Are you working locally on the design and development of a WordPress site and are now ready to migrate it to a... <a href="https://surgeworks.com/blog/search-and-replace-localhost-domain-in-wordpress-database-after-migration" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/search-and-replace-localhost-domain-in-wordpress-database-after-migration">Search and Replace Localhost Domain in WordPress Database after Migration</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Are you setting up a local development environment for an existing WordPress website, and imported a <a href="https://surgeworks.com/blog/how-to-import-a-large-mysql-database-dump-into-mamp-mac-os-x">large database dump</a> locally? You&#8217;ll need to replace your domain name with localhost in all its occurrences.</p>
<p>Are you working locally on the design and development of a WordPress site and are now ready to migrate it to a <a href="https://surgeworks.com/blog/why-you-should-have-a-staging-server-for-your-wordpress-site">staging or live server</a>? You&#8217;ll need to replace localhost with your domain name in the database.<span id="more-4009"></span></p>
<p>The bare minimum you need to do to make the site operational on the new host, is to update your wp_options table with the new server value. You can easily do this with phpMyAdmin running a query like this:</p>
<blockquote><p>UPDATE wp_options SET option_value = replace(option_value, &#8216;https://domain-to-be-replaced&#8217;, &#8216;http://current-installation-domain&#8217;);</p></blockquote>
<p>Be sure to include the http and https as required in case you are migrating between an SSL enabled server and a non-secure one.</p>
<h3>But, what if you need to update all your posts with new references? Good news: there are 3 ways to handle this.</h3>
<p><strong>1. The Old Fashioned Way:</strong> open your SQL dump with your code editor (i.e. Sublime Text), find and replace all occurrences, save, then import the database. This is the easiest way around. Just be sure to include the full domain names you need to replace, and then also check for http:// and https:// too if you&#8217;re migrating between a non-secure and an SSL enabled host.</p>
<p><strong>2. The Nerd Way:</strong> open the terminal and use the <a href="https://developer.wordpress.org/cli/commands/search-replace/">WordPress Command Line to run a search and replace in the database</a>.</p>
<p>i.e. To turn your production multisite database into a local dev database</p>
<blockquote><p>$ wp search-replace &#8211;url=example.com example.com example.dev &#8216;wp_*options&#8217; wp_blogs</p></blockquote>
<p>For non multisite installation, remove wp_blogs. If you do not have the WP CLI installed, you probably don&#8217;t want to go all the way to make it work for this operation, so read on because the next solution might be the best route for you.</p>
<p><strong>3. The GUI way:</strong> download <a href="https://github.com/interconnectit/Search-Replace-DB/">this script from GitHub</a>, it was built by Interconnect/it to search and replace on the WordPress MySQL database.</p>
<p>The script author recommends to rename the directory to some arbitrary hard-to-guess name for security reasons. Upload the folder in the root of your WordPress install, then open it in your browser (i.e. http://yourdomain.com/12340-your-secret-name/)</p>
<p>In the form that will appear, you will be able to enter the string you&#8217;re searching for, and then the replace string. Your MySQL details/login should already be populated. After entering your search and replace terms, scroll down and click &#8220;Update Details&#8221;, then do the &#8220;Dry Run&#8221; option first to preview the changes that will be applied to the database. If you are satisfied with the changes, click &#8220;Live Run&#8221;.</p>
<p><a href="http://interconnectit.com/products/search-and-replace-for-wordpress-databases/">Comprehensive step-by-step instructions are available at the author&#8217;s website</a>.</p>
<p>Important: for security reasons be sure to delete this directory from your server after you have finished using it</p>
<p><a href="https://stackoverflow.com/questions/44373580/search-and-replace-in-phpmyadmin-database-for-wordpress-absolute-beginner">Source</a></p><p>The post <a href="https://surgeworks.com/blog/search-and-replace-localhost-domain-in-wordpress-database-after-migration">Search and Replace Localhost Domain in WordPress Database after Migration</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4009</post-id>	</item>
		<item>
		<title>How to setup WordPress deployment from GitHub Repository to a Web Server</title>
		<link>https://surgeworks.com/blog/how-to-setup-wordpress-deployment-from-github-repository-to-a-web-server</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Sat, 30 Sep 2017 10:26:54 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4005</guid>

					<description><![CDATA[<p>Setting up a repository for your WordPress site is easy. First of all, you need to realize that you don&#8217;t want to version anything but your custom code. WordPress and the plug-ins you are using are already being versioned by their respective authors, and with automatic updates, you don&#8217;t want to end up with your... <a href="https://surgeworks.com/blog/how-to-setup-wordpress-deployment-from-github-repository-to-a-web-server" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/how-to-setup-wordpress-deployment-from-github-repository-to-a-web-server">How to setup WordPress deployment from GitHub Repository to a Web Server</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Setting up a repository for your WordPress site is easy. First of all, you need to realize that you don&#8217;t want to version anything but your custom code. WordPress and the plug-ins you are using are already being versioned by their respective authors, and with automatic updates, you don&#8217;t want to end up with your own code being out of sync with your production server every time you do an update.</p>
<p>Also, you want to be able to keep your changes versioned and push them over to a staging and a production environment without having to ever pull changes from the server side.</p>
<p>To do this, your workflow needs to start from your local machine.<br />
You need to <a href="https://surgeworks.com/blog/why-you-should-have-a-staging-server-for-your-wordpress-site">have a local development environemnt setup</a> to test your features and work on breaking changes. When you are satisfied with the functionality of your new code, you push the changes to a staging server, which is just a slave copy of your production server.</p>
<p>Here is an overview of what you need to do to setup this workflow. <span id="more-4005"></span></p>
<p><em><strong>Requirements: you will need SSH access to the server and Git installed on it. Most providers offer these services nowadays as part of their hosting plans.</strong></em></p>
<h3>Step 1. Setup your git repository on github</h3>
<p>You need to create a new repository, and only store into it your custom plugins and your custom child theme.</p>
<p>Leave out all the WordPress core and 3rd parties plug-ins: these are already versione eslewhere.</p>
<p>Clone the repository on your local machine.<br />
I like to do this using GitHub&#8217;s desktop app.</p>
<h3>Step 2. Setup a bare repository on your server.</h3>
<p>SSH to your server, then create a directory to hold your repository and run:</p>
<blockquote><p>git init &#8211;bare</p></blockquote>
<p>I like to create one directory to hold the repositories in /home/username/repositories and I create one repo for the production environment and one for the staging environment.</p>
<h3>Step 3. Setup your post-receive script.</h3>
<p>On the server-side, go to the bare repository you have created in ./hooks/ and create a new post-receive script.</p>
<p>Be sure the script has execution privileges by doing:</p>
<blockquote><p>chmod +x ./post-receive</p></blockquote>
<p>My script does this every time it runs:</p>
<ul>
<li>a. Destroys any existing checkout copy of the repository</li>
<li>b. Creates a new directory and does a fresh checkout of the repository</li>
<li>c. Goes into ./wp-content/themes, list all directories directly within it (not sub-sub-directories) and for each directory it will</li>
<li>remove the corresponding directory on the web root and copy it over from the freshly checked out copy.</li>
<li>d. Does the same process for ./wp-content/plugins.</li>
</ul>
<p>This way, the script will remove any file that was removed from the git repository, while leaving intact all third parties themes and plug-ins installed in your main WordPress directory.</p>
<p>The script only does its magic if you are pushing to master. All other branches are ignored.</p>
<p>You can grab a copy of the script at the end of this post.</p>
<p>I like to do this process using an FTP client like CyberDuck and editing my post-receive script locally with Sublime Text, rather then using one of the Linux shell-based text editors.</p>
<h3>Step 4. On your local machine, add a remote for your repository.</h3>
<p>I recomment to keep a staging and a production repository that will deploy respecively to the staging environment and the live site.</p>
<p>To add the remote, you need to do:</p>
<blockquote><p>git remote add {name} {protocol://username@server.address:PORT/path/to/repository}</p>
<p>i.e. git remote add staging ssh://user@server.com:1234/path/to/repository</p></blockquote>
<p>Now you can deploy your code to the server by doing:</p>
<blockquote><p>git push {name} master</p>
<p>i.e. git push staging master</p></blockquote>
<h3>Post-Receive Git Hook Script Sample</h3>
<pre>
#!/bin/bash
while read oldrev newrev ref
do
    if [[ $ref =~ .*/master$ ]];
    then
        # Setup your script variables

        # 0 - Staging or 1 - Production (this is for messages only)
        IS_PRODUCTION="0" 

        # Your site domain (this is for messages only)
        DOMAIN="yourdomain.com"

        # Repository Directory (no trailing slash)
        REPOSITORY_DIR="/home/path/repositories/your_git_repository_name"
        
        # Web Root Directory (no trailing slash)
        WEB_ROOT_DIR="/home/path/public_html"

        # No more editing needed below this line

        # A temporary work directory, it gets created and removed
        TEMPORARY_DIR="${REPOSITORY_DIR}_checkout"

        if [ $IS_PRODUCTION == "1" ]; then
            echo "WARNING: DEPLOYING CHANGES TO PRODUCTION SERVER!"
        fi
        echo "${ENVIRONMENT} Environment: deploying master branch to ${DOMAIN}..."

        # Clean up checkout dir
        if [ -d "$TEMPORARY_DIR" ]; then
            # Control will enter here if $TEMPORARY_DIR exists.
            echo "Cleaning up temporary directory..."
            rm -rf "${TEMPORARY_DIR}"
        fi
        
        echo "Creating temporary git checkout..."
        
        # Create temporary directory 
        mkdir ${TEMPORARY_DIR}

        # Checkout a fresh copy of the repo
        git --work-tree="${TEMPORARY_DIR}" --git-dir="${REPOSITORY_DIR}" checkout -f
        
        # Get all sub-directories that exist in repository from themes
        cd "${TEMPORARY_DIR}"/wp-content/themes/
        pwd
        
        for D in `find . -mindepth 1 -maxdepth 1 -type d`
        do
            if [ -d "$D" ]; then
              # Control will enter here if $D exists.
              echo "Removing directory from ${WEB_ROOT_DIR}/wp-content/themes/${D}"
              rm -Rf "${WEB_ROOT_DIR}"/wp-content/themes/"${D}"

              echo "Copying checkout version of ${D} to ${WEB_ROOT_DIR}/wp-content/themes/"
              cp -aRf "${D}" "${WEB_ROOT_DIR}"/wp-content/themes/
            fi
        done

        # Get all sub-directories that exist in repository from plugins
        cd "${TEMPORARY_DIR}"/wp-content/plugins/
        pwd

        for D in `find . -mindepth 1 -maxdepth 1 -type d`
        do
            if [ -d "$D" ]; then
              # Control will enter here if $D exists.
              echo "Removing directory from ${WEB_ROOT_DIR}/wp-content/plugins/${D}"
              rm -Rf "${WEB_ROOT_DIR}"/wp-content/plugins/"${D}"

              echo "Copying checkout version of ${D} to ${WEB_ROOT_DIR}/wp-content/themes/"
              cp -aRf "${D}" "${WEB_ROOT_DIR}"/wp-content/plugins/
            fi
        done

        # Clean up checkout dir
        if [ -d "$TEMPORARY_DIR" ]; then
            # Control will enter here if $TEMPORARY_DIR exists.
            echo "Cleaning up temporary directory..."
            rm -rf "${TEMPORARY_DIR}"
        fi
    else
        echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server."
    fi
    echo "Done!"
done
</pre><p>The post <a href="https://surgeworks.com/blog/how-to-setup-wordpress-deployment-from-github-repository-to-a-web-server">How to setup WordPress deployment from GitHub Repository to a Web Server</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4005</post-id>	</item>
		<item>
		<title>Why you Should Have a Staging Server for your WordPress Site</title>
		<link>https://surgeworks.com/blog/why-you-should-have-a-staging-server-for-your-wordpress-site</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Wed, 27 Sep 2017 12:38:32 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4002</guid>

					<description><![CDATA[<p>If you work with WordPress on a small site, you probably started with a fully FTP (or SFTP) based workflow, editing your site directly on the server with a combination of an FTP client such as CyberDuck or Transmit and a cool code editor like Sublime Text, or perhaps you&#8217;re already using an integrated development... <a href="https://surgeworks.com/blog/why-you-should-have-a-staging-server-for-your-wordpress-site" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/why-you-should-have-a-staging-server-for-your-wordpress-site">Why you Should Have a Staging Server for your WordPress Site</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>If you work with WordPress on a small site, you probably started with a fully FTP (or SFTP) based workflow, editing your site directly on the server with a combination of an FTP client such as CyberDuck or Transmit and a cool code editor like Sublime Text, or perhaps you&#8217;re already using an integrated development environment that includes all of that, like Coda or Espresso.</p>
<p>I&#8217;ve been there and done that, and it has served me nicely for small websites in the early days, but it gets to hit hard limits when you are using WordPress as a CMS or as a framework for a larger web app, especially if it syncs with mobile apps.</p>
<p>The main issue in this FTP-based workflow is that you risk to introduce bugs on a live server, that is being visited by actual people and on which your users, potentialy paying customers, are actively using and relying on to carry out the activities you offer through your app.</p>
<h4>So what happens in this scenario when you need to fix a bug, and what are the risks?</h4>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-large" src="https://media.giphy.com/media/XjlNyeZp5lDri/giphy.gif" alt="Fixing a Bug in Production" width="400" height="307" /></p>
<p>Yeah, you get it, an image is better then 1,000 words. This does not look good, right?</p>
<p>A better development workflow will work like this:</p>
<p>Your workflow needs to start from your local machine.<br />
You need to have a local development environemnt setup to test your features and work on breaking changes.<br />
Nowadays this is a very easy task to acocmplish on both Mac and Windows, thanks to <a href="https://www.mamp.info/en/">MAMP</a>.</p>
<blockquote><p><em>MAMP installs a local server environment in a matter of seconds on your computer. It comes free of charge, and is easily installed. MAMP will not compromise any existing Apache installation already running on your system. You can install Apache, PHP and MySQL without starting a script or having to change any configuration files! Furthermore, if MAMP is no longer needed, just delete the MAMP folder and everything returns to its original state (i.e. MAMP does not modify any of the &#8220;normal&#8221; system).</em></p></blockquote>
<p>So you can work and make breaking changes locally, on a machine that is optimized for development (i.e. <a href="https://surgeworks.com/blog/how-to-show-php-error-and-review-error-logs-from-mamp-on-your-mac-or-pc">showing PHP errors and warnings either on the page or easily in your Console app</a>) &#8212; once a beta version is completed, you will just deploy the code changes to the server.</p>
<p>You can either sync changes via FTP or use another deployment tool. I personally like to use GitHub with the sites hosted on WPEngine.</p>
<p>But wait, if your development server is on your local machine, how will the site owner test and approve the new features?</p>
<p>You need an online server for that, but you don&#8217;t want to deploy the changes to the live server until these are approved, so you need a &#8220;staging environemnt&#8221;, which is just a slave copy of your production server.</p>
<p>A staging server is the place where the stakeholders (the customer) will verify the new features and changes and approve them for production.</p>
<p>While my local development server database is usually a bit stale compared to the live site, I personally like to wipe and recreate the staging environment from a live copy of the production server every time I need to test some major new feature, so that the testers work with fresh, recent data, and don&#8217;t get confused reporting issues just because they don&#8217;t see this or that database record they are used to see every time they log-in.</p>
<p>Once the changes are tested and approved, I deploy the changes on the production server.</p>
<p>Many providers have a staging feature built in their systems. WPEngine makes the process a snap, and the latest CPanel has a &#8220;Staging&#8221; feature.</p><p>The post <a href="https://surgeworks.com/blog/why-you-should-have-a-staging-server-for-your-wordpress-site">Why you Should Have a Staging Server for your WordPress Site</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4002</post-id>	</item>
		<item>
		<title>How to show PHP Error and review Error Logs from MAMP on your Mac (or PC)</title>
		<link>https://surgeworks.com/blog/how-to-show-php-error-and-review-error-logs-from-mamp-on-your-mac-or-pc</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Mon, 25 Sep 2017 12:42:04 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=4003</guid>

					<description><![CDATA[<p>If you are using MAMP for local development, you may be a bit frustrated as it won&#8217;t report errors on the webpage by default. In order to review errors, you need to open a file named php_error.log The file, on Mac, is located in Applications &#62; MAMP &#62; logs &#62; php_error.log When you double click on... <a href="https://surgeworks.com/blog/how-to-show-php-error-and-review-error-logs-from-mamp-on-your-mac-or-pc" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/how-to-show-php-error-and-review-error-logs-from-mamp-on-your-mac-or-pc">How to show PHP Error and review Error Logs from MAMP on your Mac (or PC)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignright wp-image-4004 size-medium" src="https://surgeworks.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-22-at-14.46.15-300x201.png" alt="" width="300" height="201" srcset="https://surgeworks.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-22-at-14.46.15-300x201.png 300w, https://surgeworks.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-22-at-14.46.15-768x516.png 768w, https://surgeworks.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-22-at-14.46.15-1024x688.png 1024w, https://surgeworks.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-22-at-14.46.15-640x430.png 640w, https://surgeworks.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-22-at-14.46.15.png 1206w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>If you are using MAMP for local development, you may be a bit frustrated as it won&#8217;t report errors on the webpage by default. In order to review errors, you need to open a file named <em><strong>php_error.log</strong></em></p>
<p>The file, on Mac, is located in <em><strong>Applications &gt; MAMP &gt; logs &gt; php_error.log</strong></em></p>
<p>When you double click on it, the file will open automatically in the Console app. You can click on &#8220;Now&#8221; on the toolbar of the app to keep the log scrolling as new messages appear. I also like to click on &#8220;Clear&#8221; so that I can easily spot new errors and warnings that get generated from the moment I start testing the new features.</p>
<p>If you want errors to also show up on the webpage, you will need to edit <em><strong>php.ini</strong></em>, which is located in <em><strong>Applications &gt; MAMP &gt; bin &gt; php &gt; php[VERSION] &gt; conf &gt; php.ini</strong></em></p>
<p>To see what version of PHP you currently are using in MAMP, go to MAMP &gt; Preferences and click on PHP. The Standard version is currently 7.0.15. You can also get a full path to your currently active php.ini file by opening your MAMP start page and clicking on phpInfo on the top navigation bar. It will be listed as the &#8220;Loaded Configuration File&#8221;.</p>
<p>Once you locate php.ini, you can open it with your favorite text editor. I personally like Sublime Text for these quick tasks.</p>
<p>Search for &#8220;<em>Error handling and logging</em>&#8221; and take a look at the text there. It lists all possible options for the parameter <em><strong>error_reporting</strong></em>.</p>
<p>If you are here to make errors show up on the page in your browser, be sure to change the next parameter: <em><strong>display_errors = On</strong></em></p>
<p>Here are the three php values involved into this task and how to set them up to report all errors in your browser as you load a PHP page:</p>
<p><em><strong>error_reporting = E_ALL</strong></em><br />
<em><strong>display_errors = On</strong></em><br />
<em><strong>display_startup_errors = On</strong></em></p><p>The post <a href="https://surgeworks.com/blog/how-to-show-php-error-and-review-error-logs-from-mamp-on-your-mac-or-pc">How to show PHP Error and review Error Logs from MAMP on your Mac (or PC)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4003</post-id>	</item>
		<item>
		<title>How to import a large MySQL database dump into MAMP, Mac OS X</title>
		<link>https://surgeworks.com/blog/how-to-import-a-large-mysql-database-dump-into-mamp-mac-os-x</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Fri, 22 Sep 2017 11:12:12 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mac]]></category>
		<guid isPermaLink="false">https://surgeworks.com/?p=3998</guid>

					<description><![CDATA[<p>If you are using MAMP for your local WordPress or PHP development on a Mac, you likely need to import huge MySQL database dump files (more then 32Mb) in your local environment. You could increase the size of maximum uploads in your php.ini file, however if the dump is really big (over 100Mb), the operation... <a href="https://surgeworks.com/blog/how-to-import-a-large-mysql-database-dump-into-mamp-mac-os-x" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/how-to-import-a-large-mysql-database-dump-into-mamp-mac-os-x">How to import a large MySQL database dump into MAMP, Mac OS X</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>If you are using MAMP for your local WordPress or PHP development on a Mac, you likely need to import huge MySQL database dump files (more then 32Mb) in your local environment.</p>
<p>You could increase the size of maximum uploads in your php.ini file, however if the dump is really big (over 100Mb), the operation can take ages to complete.</p>
<p>It is more covenient to do this using the command line, expecially since it&#8217;s just a one liner.<br />
<code>mysql -u {DB_USER_NAME} -p {DB_NAME} &lt; {PATH/TO/MYSQL/DUMP/FILE.SQL}</code><br />
Keep in mind that the default user for MySQL as set by MAMP is root with a password of root, and that you need the full path to MAMP binaries to run the mysql command on a default installation. The command becomes:<br />
<code>/Applications/MAMP/Library/bin/mysql -u root -p {DB_NAME} &lt; {PATH/TO/MYSQL/DUMP/FILE.SQL}</code><br />
On Mac OS X you can simply drag and drop your file to the console to get the full path written for you. So you just have to:</p>
<ul>
<li>Open the Terminal app;</li>
<li>Copy and paste this string to it:<br />
<code>/Applications/MAMP/Library/bin/mysql -u root -p</code></li>
<li>Now, before you hit enter, type your MySQL database name followed by &#8220;&lt;&#8221; and drag your SQL dump file to the Terminal so that the full path to it gets appended to the command.</li>
<li>Your command is complete! Hit enter and have faith. It will take a while for the dump to get imported.</li>
</ul>
<p>Once the import is completed, the prompt will return. Please note that no success message is given, so go back to phpMyAdmin to verify if your data is there.</p><p>The post <a href="https://surgeworks.com/blog/how-to-import-a-large-mysql-database-dump-into-mamp-mac-os-x">How to import a large MySQL database dump into MAMP, Mac OS X</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3998</post-id>	</item>
		<item>
		<title>Windows Phone, RIM, Windows 8 are still not worth to support</title>
		<link>https://surgeworks.com/blog/windows-phone-rim-windows-8-are-still-not-worth-to-support</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Fri, 05 Apr 2013 11:51:44 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Mobile]]></category>
		<guid isPermaLink="false">http://surgeworks.wpengine.com/?p=3896</guid>

					<description><![CDATA[<p>According to a report out yesterday from Kantar Worldpanel ComTech, with 0.7% and 4.1% of total sales in the US, RIM and Windows platforms may still not be worth the effort to support for your next project. Same goes for the Windows 8 app store. The latest OS from Microsoft still has less then 4% of... <a href="https://surgeworks.com/blog/windows-phone-rim-windows-8-are-still-not-worth-to-support" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/windows-phone-rim-windows-8-are-still-not-worth-to-support">Windows Phone, RIM, Windows 8 are still not worth to support</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>According to a <a href="http://news.cnet.com/8301-1035_3-57577431-94/android-outscores-ios-in-u.s-smartphone-sales-says-report/" target="_blank">report</a> out yesterday from Kantar Worldpanel ComTech, with 0.7% and 4.1% of total sales in the US, RIM and Windows platforms may still not be worth the effort to support for your next project.</p>
<p><a href="http://news.cnet.com/8301-1035_3-57577431-94/android-outscores-ios-in-u.s-smartphone-sales-says-report/" target="_blank"><img decoding="async" src="http://surgeworks.wpengine.com/wp-content/uploads/2013/04/kantar-smartphone-sales.png" alt="" title="kantar-smartphone-sales" width="620" height="263" class="aligncenter size-full wp-image-3897" srcset="https://surgeworks.com/wp-content/uploads/2013/04/kantar-smartphone-sales.png 620w, https://surgeworks.com/wp-content/uploads/2013/04/kantar-smartphone-sales-300x127.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></a></p>
<p>Same goes for the Windows 8 app store. The latest OS from Microsoft still has less then 4% of the overall market share on PCs, according to <a href="http://www.extremetech.com/computing/152547-five-months-in-windows-8s-market-share-finally-surpasses-desktop-linux" target="_blank">ExtremeTech</a></p>
<p><a href="http://www.extremetech.com/computing/152547-five-months-in-windows-8s-market-share-finally-surpasses-desktop-linux" target="_blank"><img loading="lazy" decoding="async" src="http://surgeworks.wpengine.com/wp-content/uploads/2013/04/windows-8-market-share-desktop.png" alt="Image credit: NetMarketShare" title="Image credit: NetMarketShare" width="640" height="237" class="aligncenter size-full wp-image-3898" srcset="https://surgeworks.com/wp-content/uploads/2013/04/windows-8-market-share-desktop.png 640w, https://surgeworks.com/wp-content/uploads/2013/04/windows-8-market-share-desktop-300x111.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p><p>The post <a href="https://surgeworks.com/blog/windows-phone-rim-windows-8-are-still-not-worth-to-support">Windows Phone, RIM, Windows 8 are still not worth to support</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3896</post-id>	</item>
		<item>
		<title>Mac OS X 10.7.3 with Xcode 4.3: This bundle is invalid. Apple is not currently accepting applications built with this version of the OS.</title>
		<link>https://surgeworks.com/blog/mac-os-x-10-7-3-with-xcode-4-3-this-bundle-is-invalid-apple-is-not-currently-accepting-applications-built-with-this-version-of-the-os</link>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Tue, 21 Feb 2012 15:18:58 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[Xcode]]></category>
		<guid isPermaLink="false">http://surgeworks.wpengine.com/?p=3853</guid>

					<description><![CDATA[<p>We have a few Mac applications on which we need to enable the Lion sandbox and resubmit to the Mac App Store (Mac, not iOS). I already applied the combo update 10.7.3 and after that I started getting this error: &#8220;This bundle is invalid. Apple is not currently accepting applications built with this version of... <a href="https://surgeworks.com/blog/mac-os-x-10-7-3-with-xcode-4-3-this-bundle-is-invalid-apple-is-not-currently-accepting-applications-built-with-this-version-of-the-os" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/mac-os-x-10-7-3-with-xcode-4-3-this-bundle-is-invalid-apple-is-not-currently-accepting-applications-built-with-this-version-of-the-os">Mac OS X 10.7.3 with Xcode 4.3: This bundle is invalid. Apple is not currently accepting applications built with this version of the OS.</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>We have a few Mac applications on which we need to enable the Lion sandbox and resubmit to the Mac App Store (Mac, not iOS). I already applied the combo update 10.7.3 and after that I started getting this error:</p>
<p>&#8220;This bundle is invalid. Apple is not currently accepting applications built with this version of the OS.&#8221;</p>
<p>In the SystemVersion.plist, it turns out our build for 10.7.3 is 11D50b (b being beta). Xcode does not allow beta OS to be used to compile and submit to the Mac App Store. This is clearly a bug and will be fixed. However there is a workaround:</p>
<p>Change the SystemVersion.plist in /System/Library/CoreServices with TextMate (it will ask you for a password to save) or with TextEdit (you will need to change the file permissions first).</p>
<p>Locate the line Build Number: 11D50b and remove the last &#8220;b&#8221;.</p>
<p>Save, restart Xcode (make sure you do this), clean, archive and you are finally able to submit successfully.</p>
<p>Once you&#8217;re done, I recommend you quit Xcode and made sure to change everything back to how it was before. If you keep the file open in TextMate you can &#8220;undo&#8221; your way back to the original file, which states:</p>
<p>Build Number: 11D50b<br />
ProductUserVisibleVersion: 10.7.3<br />
ProductVersion: 10.7.3</p>
<p>I will not trust restarting my mac with a messed up plist like that.<br />
So use at your own risk and happy coding!</p>
<p><a href="http://stackoverflow.com/questions/9243707/lion-10-7-3-apple-is-not-currently-accepting-applications-built-with-this-versi" target="_blank">Source: Stack Overflow</a></p><p>The post <a href="https://surgeworks.com/blog/mac-os-x-10-7-3-with-xcode-4-3-this-bundle-is-invalid-apple-is-not-currently-accepting-applications-built-with-this-version-of-the-os">Mac OS X 10.7.3 with Xcode 4.3: This bundle is invalid. Apple is not currently accepting applications built with this version of the OS.</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3853</post-id>	</item>
		<item>
		<title>Kindle Fire first impressions</title>
		<link>https://surgeworks.com/blog/kindle-fire-first-impressions</link>
					<comments>https://surgeworks.com/blog/kindle-fire-first-impressions#comments</comments>
		
		<dc:creator><![CDATA[Ney Ricardo]]></dc:creator>
		<pubDate>Tue, 10 Jan 2012 22:06:44 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://surgeworks.wpengine.com/?p=3837</guid>

					<description><![CDATA[<p>Santa brought us a cool gift this year: a Kindle Fire tablet. At a first glance we were astonished: &#8220;Why?! We&#8217;ve been good boys through the whole year. Why are being punished?&#8221;. It&#8217;s not and iPad, but ok. Heh, just kidding… I couldn&#8217;t lose the opportunity. What can you expect from Apple fanboys? Ok, seriously.... <a href="https://surgeworks.com/blog/kindle-fire-first-impressions" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/kindle-fire-first-impressions">Kindle Fire first impressions</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="http://surgeworks.wpengine.com/wp-content/uploads/2012/01/main-image.png" alt="" title="main-image" width="550" height="300" class="aligncenter size-full wp-image-3841" srcset="https://surgeworks.com/wp-content/uploads/2012/01/main-image.png 550w, https://surgeworks.com/wp-content/uploads/2012/01/main-image-300x163.png 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></p>
<p>Santa brought us a cool gift this year: a <strong>Kindle Fire</strong> tablet.</p>
<p>At a first glance we were astonished: &#8220;Why?! We&#8217;ve been good boys through the whole year. Why are being punished?&#8221;. It&#8217;s not and iPad, but ok.</p>
<p>Heh, just kidding… I couldn&#8217;t lose the opportunity. What can you expect from Apple fanboys?</p>
<p>Ok, seriously. We&#8217;ve been using it for a week now and decided write a small review of our first impressions while handling the gadget.</p>
<p>Looking at the tech specs available on CNET website, we noticed that this is a very simple yet good tablet for the everyday use and a good gadget to keep on your bedside table:</p>
<ul>
<li>7 inches screen;</li>
<li>1024x600px (169ppi) screen resolution;</li>
<li>8GB integrated memory and dual-core processor;</li>
<li>Wi-fi, but no bluetooth nor 3G;</li>
<li>Supported audio formats: AAC, WAV, OGG, MP3, MIDI;</li>
<li>Supported text formats: AZW, PRC (Mobipocket), PDF, DOC, TXT, DOCX;</li>
<li>Supported video format: MPEG-4;</li>
<li>Supported image formats: PNG, JPEG, BMP, GIF;</li>
<li>Recharge time: 4 hours with the included charging cable. However, it charges when you plug in your PC, but the gadget stays in &#8220;stand-by&#8221; mode and you can&#8217;t use it while charnging;</li>
<li>Battery life (wireless off): 8 hours of continuous reading (this could easily spoil a good night of sleep).</li>
</ul>
<p>A deeper analysis of the tablet brought us into some good and some not so good conclusions.</p>
<p>So let&#8217;s start with the not so good aspects:</p>
<ul>
<li>No <strong>USB to Micro USB cable</strong> included, needed to access the gadget content from your computer. Also, after testing with the cable we found out that the transfer rate is quite slow;</li>
<li>A bit thick;</li>
<li>Scrolling smoothness is bad;</li>
<li>It gets slow when changing screen orientation;</li>
<li>Amazon store accepts only US credit card for pay. Here, at the Brazilian office we couldn&#8217;t buy anything (apps, books, TV shows) because it does not even accept international credit cards;</li>
<li>Does not recognize the main electronic book formats: <strong>.epub</strong> and <strong>.mobi</strong>;</li>
<li>Internet browsing is a poor experience. Since it&#8217;s resolution is 1024x600px and most of the websites are built for 1024x768px resolutions, you either lose a lot of vertical space when in landscape position or it cuts part of the content horizontally when in portrait.</li>
</ul>
<p>Now the good points:</p>
<ul>
<li>Feels very good in hand for its size. One can hold it with only one hand;</li>
<li>The task of typing something is very pleasant because your thumbs can reach all the virtual keyboard keys without having to take your hands off the tablet body. In addition to it, a large variety of special symbols are available on the special keys keyboard;</li>
<li>You can copy your MP3 files from your computer, there&#8217;s no need to re-buy them from Amazon. If your MP3 carries album data like Album cover, Album Name, etc., it will help to organize your songs in albums. Also, it&#8217;s possible to listen to music while you read a book or browse the internet.</li>
<li>Reading books is quite pleasuring just like on iPad. You can highlight texts and make notes over it. However, since the screen emits light, your eyes may get tired after some hours of reading. I know, this is a problem that comes with iPad too.</li>
</ul>
<p><strong>Overview:</strong></p>
<p>Kindle Fire is a very good tablet, easy to use and to carry, good to have on your bedside table or your backpack.</p>
<p>Also its price is quite reasonable for what is being offered.</p>
<p>The only thing that made me a bit sad was the difficulty of purchasing apps, books, movies and music.</p>
<p>However I&#8217;d recommend it for regular users that don&#8217;t need awesome performance and graphic resources and think that having iTunes to manage all their tablet content is too much effort for a small piece of shining plastic.</p>
<p>My only concern is: <strong>Amazon, Y U NO PUT USB TO MINI USB CABLE INSIDE THE BOX?!</strong></p><p>The post <a href="https://surgeworks.com/blog/kindle-fire-first-impressions">Kindle Fire first impressions</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://surgeworks.com/blog/kindle-fire-first-impressions/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3837</post-id>	</item>
		<item>
		<title>Interaction South America 2011, we were there!</title>
		<link>https://surgeworks.com/blog/interaction-south-america</link>
					<comments>https://surgeworks.com/blog/interaction-south-america#comments</comments>
		
		<dc:creator><![CDATA[Ney Ricardo]]></dc:creator>
		<pubDate>Fri, 09 Dec 2011 20:05:01 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://surgeworks.wpengine.com/?p=3776</guid>

					<description><![CDATA[<p>We&#8217;ve just arrived from an awesome conference that opened our minds to new ideas and point of views. Yes, last week we were at Interaction South America (#ixdsa11), a conference with emphasis on Interaction Design, that happened in Belo Horizonte, MG, Brazil. The event had the presence of some of the most talented designers, engineers and architects of... <a href="https://surgeworks.com/blog/interaction-south-america" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/interaction-south-america">Interaction South America 2011, we were there!</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" title="post-image" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/post-image.jpg" alt="" width="550" height="300" /></p>
<p>We&#8217;ve just arrived from an awesome conference that opened our minds to new ideas and point of views.</p>
<p>Yes, last week we were at <a href="http://www.interaction-southamerica.org/">Interaction South America</a> (<a href="https://twitter.com/#!/search?q=%23ixdsa11">#ixdsa11</a>), a conference with emphasis on Interaction Design, that happened in <a href="http://maps.google.com.br/maps?q=Belo+Horizonte,+MG,+Brasil&amp;hnear=Belo+Horizonte+-+Minas+Gerais&amp;gl=br&amp;t=m&amp;z=11&amp;vpsrc=0">Belo Horizonte, MG, Brazil</a>.</p>
<p><a href="http://www.flickr.com/photos/surgeworks/sets/72157628296563539/with/6462368877/"><img decoding="async" class="aligncenter" title="" src="http://farm8.staticflickr.com/7026/6462368877_f472444bb8.jpg" alt="" width="550" /></a></p>
<p>The event had the presence of some of the most talented designers, engineers and architects of the Americas talking about Design Thinking, Service Design and Interaction Design. Although our company focus on mobile design/development and the event wasn&#8217;t specifically about the mobile world, we absorbed a lot of good concepts that we plan to include in our work methodology.</p>
<p>The first day began with a brief introduction about the event and we quickly went to the workshops, where we could have a detailed vision about how Design Thinking and User Experience work and why they are so important on project planning.</p>
<p>The Design Thinking workshop was led by Isabel Fróes, Psychologist and Interactive Telecommunications Program master. After she made a brief presentation of what it means, she gave the class an imaginary project and guided the participants through the phases of the process in order to reach three different results and make an analysis of them.</p>
<p>The User Experience workshop, led by Walter Cybis, PhD in Production Engineering applied to Software Ergonomy, was focused on User Experience Monitoring. He went through the most common processes and techniques of user experience analysis and then taught how to use the most popular online tools to measure the user adaptivity to the interface suggested based on the statistics generated in the tests.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3811" title="Brian Rink" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/brian_rink.jpg" alt="" width="121" height="121" />Still on the first day, to finish our quest for relevant knowledge, we attended to Brian Rink&#8217;s talk about How to Build Creative Communities. Rink is a designer specialist in organizational transformation in <a href="http://www.ideo.com/">IDEO</a> and made a brilliant talk about how to make good use of interaction design and the importance of the designer on several activities identifying problems and developing creative and efficient solutions for those problems in order to achieve better results.</p>
<p>On the second day of the conference we can highlight two lecturers: Denise Eler and Chloe Gottlieb.</p>
<p><a href="http://www.eler.com.br/"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3812" title="Denise Eler" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/deniseeler.jpg" alt="" width="121" height="121" />Denise Eler</a>, Innovation and Design Thinking consultant, talked about the importance of investing more money in service improvement and less in merchandising and advertisement when what usually happens is the opposite. She showed several cases in which she worked as a consultant and also talked about the several job opportunities that are available to the designers. It was a very interesting talk focused on Service Design and innovation.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3813" title="Chloe Gottlieb" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/chloe1.jpg" alt="" width="121" height="121" />Chloe Gottlieb, Creation Executive Director at <a href="http://www.rga.com/">RG/A</a>, made a brilliant talk about Data Driven Design and how information is used to motivate people change their lifestyle. She cited examples like Nike+ that tracks people workout activities and how the data generated from these exercises is transformed into useful information for the consumers and how they can share it with their online communities.</p>
<p>&nbsp;</p>
<p>Finally, the third day of conference was enlightened with the talks of Bill Scott and Mike Kuniavsky.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3814" title="Bill Scott" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/Bill-Scott-e1308070378481.jpg" alt="" width="121" height="121" />Bill Scott, Senior Director of Web Development at PayPal, featured the importance of the responsive design for services that need to be present on many different devices and how the design is influenced by different ways of interaction that are clearly visible between web, mobile and TV.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3815" title="Mike Kuniavsky" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/Mike-Kuniavsky.jpg" alt="" width="121" height="121" />Mike Kuniavsky, designer and entrepreneur, opened our eyes to an interesting aspect of how we see products and services nowadays. He said we were habituated to buy products that matters to us as products, and now what really matters is the service. For example: people wouldn&#8217;t buy a smartphone only by its beauty or quality but mainly for the services that come with it such as internet, twitter, facebook ando so on. Things that go beyond the calling function.</p>
<p>The conference itself was very interesting and we came back home with a lot of new ideas and concepts that we want to put into practice and incorporate in our services.</p>
<p>Oh! Needless to say, our new tee made some buzz within the people who went to the conference. Some asked if we were selling it but we were giving it away to some lucky ones that came to ask.</p>
<p><a href="http://www.flickr.com/photos/surgeworks/6462780121/in/set-72157628296563539"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3807" title="tee" src="http://surgeworks.wpengine.com/wp-content/uploads/2011/12/tee.jpg" alt="" width="550" height="450" srcset="https://surgeworks.com/wp-content/uploads/2011/12/tee.jpg 550w, https://surgeworks.com/wp-content/uploads/2011/12/tee-300x245.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></a></p>
<p>Cool, huh?</p>
<p>And here are some photos we took while we were there: <a href="http://www.flickr.com/photos/surgeworks/sets/72157628296563539/">Interaction South America</a></p>
<p>Next stop: Campus Party BR @ Sao Paulo =]</p><p>The post <a href="https://surgeworks.com/blog/interaction-south-america">Interaction South America 2011, we were there!</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://surgeworks.com/blog/interaction-south-america/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3776</post-id>	</item>
		<item>
		<title>Surgeworks launches Catholicpedia, the Original Catholic Encyclopedia for iPhone, iPad and iPod Touch (press release)</title>
		<link>https://surgeworks.com/blog/surgeworks-launches-catholicpedia-the-original-catholic-encyclopedia-for-iphone-ipad-and-ipod-touch-press-release</link>
					<comments>https://surgeworks.com/blog/surgeworks-launches-catholicpedia-the-original-catholic-encyclopedia-for-iphone-ipad-and-ipod-touch-press-release#comments</comments>
		
		<dc:creator><![CDATA[Mauro Dalu]]></dc:creator>
		<pubDate>Fri, 09 Dec 2011 18:47:42 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[divine office]]></category>
		<category><![CDATA[iPhone]]></category>
		<guid isPermaLink="false">http://surgeworks.wpengine.com/?p=3786</guid>

					<description><![CDATA[<p>SALT LAKE CITY, Utah, (December 8, 2011)—The Divine Office Catholic Ministry in partnership with Surgeworks, a Salt Lake City-based application developer and graphical interaction design firm, has announced a new app for the Apple iPhone, iPad and iPod Touch based on The Original Catholic Encyclopedia. Introducing Catholicpedia The Catholicpedia App makes The Catholic Encyclopedia available on iPhone,... <a href="https://surgeworks.com/blog/surgeworks-launches-catholicpedia-the-original-catholic-encyclopedia-for-iphone-ipad-and-ipod-touch-press-release" rel="nofollow" class="more-link">&#8594;</a></p>
<p>The post <a href="https://surgeworks.com/blog/surgeworks-launches-catholicpedia-the-original-catholic-encyclopedia-for-iphone-ipad-and-ipod-touch-press-release">Surgeworks launches Catholicpedia, the Original Catholic Encyclopedia for iPhone, iPad and iPod Touch (press release)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" alt="" src="http://divine-office.com/mailing/2011-12-Catholicpedia/iphone/1.jpg" class="alignleft" width="320" height="480" />SALT LAKE CITY, Utah, (December 8, 2011)—The Divine Office Catholic Ministry in partnership with Surgeworks, a Salt Lake City-based application developer and graphical interaction design firm, has announced a new app for the Apple iPhone, iPad and iPod Touch based on The Original Catholic Encyclopedia.</p>
<h3>Introducing Catholicpedia</h3>
<p>The Catholicpedia App makes <strong>The Catholic Encyclopedia</strong> available on iPhone, iPad and iPod Touch through an easy-to-use interface.</p>
<p>From the Divine Office Catholic Ministry, developers of the About.com “2011 Best iPhone, iPod and iPad Catholic Apps,” this beautifully crafted, simple to use Catholicpedia App is designed to present its users with the full body of Catholic teaching: the Catholic Encyclopedia contains not only precise statements of what the Church has defined, but also an impartial record of different views of acknowledged authority on all disputed questions.</p>
<p><a href="http://divine-office.com/get/catholicpedia"><img decoding="async" src="http://divine-office.com/mailing/2011-12-Kindle-Fire/1-appstore.png" alt="available on the app store" /></a></p>
<h3>Features highlights</h3>
<p><strong>Over 11,000 articles have been categorized by letter and related by tags.</strong> The App includes:</p>
<ul>
<li>a powerful multi-keyword search engine,</li>
<li>a tags browser to drill down to specific topics and articles,</li>
<li>sortable favorites,</li>
<li>sharing via eMail, Facebook,</li>
<li>AirPrint support,</li>
<li>read in portrait or landscape,</li>
<li>change font size and color scheme</li>
</ul>
<p>The easy of use and these great features make Catholicpedia the most convenient way to access and carry in your pocket the full 15 Volumes of the Original Catholic Encyclopedia (1917).</p>
<h3>The Catholic Encyclopedia</h3>
<p>The Catholic Encyclopedia, proposes to give its readers full and authoritative information on the entire cycle of Catholic interests, action and doctrine. What the Church teaches and has taught; what she has done and is still doing for the highest welfare of mankind; her methods, past and present; her struggles, her triumphs, and the achievements of her members, not only for her own immediate benefit, but for the broadening and deepening of all true science, literature and art — all come within the scope of the Catholic Encyclopedia.</p>
<p>The Encyclopedia bears the imprimatur of the Most Reverend Archbishop under whose jurisdiction it is published. In constituting the Editors the ecclesiastical censors, he has given them a singular proof of his confidence and of his desire to facilitate the publication of the work which he has promoted most effectively by his influence and kindly co-operation.</p>
<p>The Encyclopedia was designed to serve the Roman Catholic Church, concentrating on information related to the Church and explaining matters from the Catholic point of view. It records the accomplishments of Catholics and others in nearly all intellectual and professional pursuits, including artists, educators, poets and scientists. While more limited in focus than other general encyclopedias, it was far broader in scope than previous efforts at comprehensive Catholic encyclopedias. It offers in-depth portrayals of historical and philosophical ideas, persons and events, from a Catholic perspective, including issues that divide Catholicism from Protestantism and other faith communities.</p>
<p><strong style="font-size: 11px;">Citations: The Catholic Encyclopedia Original Preface (1917) and Wikipedia.</strong></p>
<h3>About Divine Office</h3>
<p>The <strong>Divine Office Catholic Ministry</strong>, in partnership with <strong>Surgeworks, Inc.</strong>, is the developer of several apps including Divine Office &#8211; Liturgy of the Hours, an iPhone, iPod and iPad app for the universal prayer of the Roman Catholic Church. Divine Office was selected as the recipient of The NY Times Company’s About.com Readers’ Choice Award 2011 for “The Best Catholic Website,” “The Best Catholic iPhone App,” “The Best Catholic iPad App” and “The Best Catholic Podcast.” Visit the Divine Office Website at <a href="http://divineoffice.org/">http://divineoffice.org</a> or view our award-winning apps on your favorite App Store:</p>
<div align="center"><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=301349400"><img decoding="async" src="http://divine-office.com/mailing/2011-12-Kindle-Fire/1-appstore.png" alt="" /></a> <a href="http://divine-office.com/get/divine-office-android"><img decoding="async" src="http://divine-office.com/mailing/2011-12-Kindle-Fire/2-android-market.png" alt="" /></a> <a href="http://itunes.apple.com/us/artist/surgeworks-inc./id301349400?mt=12"><img decoding="async" src="http://divine-office.com/mailing/2011-12-Kindle-Fire/3-mac-appstore.png" alt="" /></a> <a href="http://divine-office.com/get/divine-office-nokia"><img decoding="async" src="http://divine-office.com/mailing/2011-12-Kindle-Fire/4-nokia-ovi.png" alt="" /></a></div><p>The post <a href="https://surgeworks.com/blog/surgeworks-launches-catholicpedia-the-original-catholic-encyclopedia-for-iphone-ipad-and-ipod-touch-press-release">Surgeworks launches Catholicpedia, the Original Catholic Encyclopedia for iPhone, iPad and iPod Touch (press release)</a> first appeared on <a href="https://surgeworks.com">Surgeworks</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://surgeworks.com/blog/surgeworks-launches-catholicpedia-the-original-catholic-encyclopedia-for-iphone-ipad-and-ipod-touch-press-release/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3786</post-id>	</item>
	</channel>
</rss>

<!-- plugin=object-cache-pro client=phpredis metric#hits=3475 metric#misses=6 metric#hit-ratio=99.8 metric#bytes=603658 metric#prefetches=147 metric#store-reads=21 metric#store-writes=3 metric#store-hits=154 metric#store-misses=2 metric#sql-queries=8 metric#ms-total=277.84 metric#ms-cache=9.48 metric#ms-cache-avg=0.4120 metric#ms-cache-ratio=3.4 sample#redis-hits=128449619 sample#redis-misses=156460300 sample#redis-hit-ratio=45.1 sample#redis-ops-per-sec=13 sample#redis-evicted-keys=1530610 sample#redis-used-memory=409867064 sample#redis-used-memory-rss=121626624 sample#redis-memory-fragmentation-ratio=0.3 sample#redis-connected-clients=1 sample#redis-tracking-clients=0 sample#redis-rejected-connections=0 sample#redis-keys=24378 -->
