<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Kyle's Place</title>
 <link href="http://kyle.gorak.us//atom.xml" rel="self"/>
 <link href="http://kyle.gorak.us//"/>
 <updated>2025-09-25T12:29:24+00:00</updated>
 <id>http://kyle.gorak.us/</id>
 <author>
   <name>Kyle Gorak</name>
   <email></email>
 </author>

 
 <entry>
   <title>Credit Card Recommendations for Military Service Members</title>
   <link href="http://kyle.gorak.us//2025/02/05/Military-credit-cards/"/>
   <updated>2025-02-05T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2025/02/05/Military-credit-cards</id>
   <content type="html">&lt;h1 id=&quot;credit-card-recommendations-for-military-service-members&quot;&gt;Credit Card Recommendations for Military Service Members&lt;/h1&gt;

&lt;p&gt;The audience for this is active duty military service members. Although many recommendations have nothing to do with
military service, I would not recommend several of the below credit cards if the annual fee was not waived. I will
attempt to keep this strictly about credit cards, however, some credit cards do require establishing a banking
relationship as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you have poor financial responsibility and would ever charge an amount to a credit card without the ability
to pay off the credit card in full by its due date, do not apply for or use credit cards.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;before-applying-to-a-new-credit-card&quot;&gt;Before applying to a new credit card:&lt;/h2&gt;

&lt;p&gt;1) Ask your coworkers for a referral; typically you both will benefit from a referral. There are &lt;strong&gt;no&lt;/strong&gt; referral links
   in this post. I only highlight primary category benefits of each card. Benefits are all subject to change.&lt;/p&gt;

&lt;p&gt;2) Be cognisant of credit inquiries, credit card company
   &lt;a href=&quot;https://thepointsguy.com/credit-cards/credit-card-application-restrictions/&quot;&gt;application restrictions&lt;/a&gt;, and timeline
   to achieve minimum spend bonus offers. You will not be able to apply for a high number of credit cards in a short
   time.&lt;/p&gt;

&lt;p&gt;3) Understand the credit card’s benefits and have a plan for how you will use the credit card.&lt;/p&gt;

&lt;p&gt;4) Know which companies &lt;a href=&quot;https://militarymoneymanual.com/credit-cards-waive-annual-fees-military/&quot;&gt;waive annual fees&lt;/a&gt;
   for military.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;American Express&lt;/li&gt;
  &lt;li&gt;Chase&lt;/li&gt;
  &lt;li&gt;Citi&lt;/li&gt;
  &lt;li&gt;U.S. Bank&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;maximizing-cashback-and-points&quot;&gt;Maximizing Cashback and Points&lt;/h1&gt;

&lt;h2 id=&quot;getting-started-with-an-everything-card&quot;&gt;Getting Started with an “Everything” Card&lt;/h2&gt;

&lt;p&gt;At the very least, you should be getting a &lt;em&gt;minimum&lt;/em&gt; of 2% cashback on all purchases with your credit card. There are many
ways to earn higher than 2%, but many require additional steps. For example, with the
&lt;a href=&quot;https://www.bankofamerica.com/credit-cards/products/unlimited-cash-back-credit-card/&quot;&gt;Bank of America Unlimited Cash Rewards&lt;/a&gt;,
you earn 1.5% at baseline, however, if you have $100,000 in a Merrill Lynch brokerage account you can earn a 75%
bonus through &lt;a href=&quot;https://promotions.bankofamerica.com/preferredrewards/en&quot;&gt;Preferred Rewards&lt;/a&gt; resulting in 2.62% cashback
on all purchases. The &lt;a href=&quot;https://robinhood.com/creditcard/&quot;&gt;Robinhood Gold Card&lt;/a&gt; earns 3% cashback on all purchases,
but requires a RobinHood Gold subscription ($5/mo or $50/yr). Below are a couple recommended “no-hoops” 2% cashback credit cards.&lt;/p&gt;

&lt;p&gt;1) &lt;a href=&quot;https://wwww.citi.com/credit-cards/citi-double-cash-credit-card&quot;&gt;Citi Double Cash&lt;/a&gt;: 2% cashback&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://creditcards.wellsfargo.com/active-cash-credit-card&quot;&gt;Wells Fargo Active Cash Card&lt;/a&gt;: 2% cashback&lt;/p&gt;

&lt;h2 id=&quot;restaurants&quot;&gt;Restaurants&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve&quot;&gt;Chase Sapphire Reserve&lt;/a&gt;: 3x points (50% bonus
   on all Chase points when redeemed through the Chase Travel Portal so effectively 4.5x points).&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://www.americanexpress.com/en-us/credit-cards/credit-intel/gold-card-rewards-points/&quot;&gt;American Express Gold Card&lt;/a&gt;:
   4x points on up to $50,000/yr, 4x points on up to $25,000/yr on groceries, $120 dining credit, $10/mo Uber credit,
   $100 Resy Credit, $7/mo Dunkin’ Donuts Credit&lt;/p&gt;

&lt;h2 id=&quot;online-purchases&quot;&gt;Online Purchases&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://www.bankofamerica.com/credit-cards/products/cash-back-credit-card/&quot;&gt;Bank of America Customized Cash Rewards&lt;/a&gt;
   3% on up to $2,500/quarter. Bank of
   America &lt;a href=&quot;https://promotions.bankofamerica.com/preferredrewards/en&quot;&gt;Preferred Rewards&lt;/a&gt; increases the cashback to 5.25%
   if you have $100,000 in an IRA or brokerage in a Merrill Lynch account.&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://www.amazon.com/Prime-Visa/dp/BT00LN946S&quot;&gt;Chase Prime Visa&lt;/a&gt;: 5% at Amazon&lt;/p&gt;

&lt;p&gt;3) &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/blue-cash-everyday/&quot;&gt;Amex Blue Cash Everyday&lt;/a&gt;: 3% on up to
   $6,000/yr&lt;/p&gt;

&lt;h2 id=&quot;travel&quot;&gt;Travel&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/platinum/&quot;&gt;American Express Platinum&lt;/a&gt;: 5x points with airlines,
   Priority Pass Lounge access, Centurion Lounge access, $200 airline credit&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve&quot;&gt;Chase Sapphire Reserve&lt;/a&gt;: 5x points on airline
   purchases through Chase Travel portal, 50% point bonus (for all Chase cards) when redeemed for travel in the Chase
   Travel portal, Priority Pass, Chase Sapphire Reserve lounge access (note: if you have multiple credit cards with a
   Global Entry credit, you can use the additional credits on other people).&lt;/p&gt;

&lt;p&gt;3) &lt;a href=&quot;https://www.citi.com/credit-cards/citi-strata-elite-credit-card&quot;&gt;Citi Strata Elite&lt;/a&gt;: 12x points on hotels and car
   rentals, 6x points on air travel purchased direclty with cititravel.com.&lt;/p&gt;

&lt;p&gt;4) Airline Specific (lounge access):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Delta:
   &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/delta-skymiles-reserve-american-express-card/&quot;&gt;Amex Delta SkyMiles Reserve&lt;/a&gt;
   and &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/delta-skymiles-platinum-american-express-card&quot;&gt;Amex Delta SkyMiles Platinum&lt;/a&gt;.
   With both credit cards, you will get automatic Silver Status with the MQD Headstart on both Credit cards and two
   Companion passes each year.&lt;/li&gt;
  &lt;li&gt;American:
   &lt;a href=&quot;https://creditcards.aa.com/credit-cards/citi-executive-card-american-airlines-direct/&quot;&gt;Citi AAdvantage Executive World Elite&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;United:
   &lt;a href=&quot;https://creditcards.chase.com/travel-credit-cards/united/club-infinite&quot;&gt;Chase United Club Infinite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4) Hotel Specific (free night(s)):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Marriott:
   &lt;a href=&quot;https://creditcards.chase.com/travel-credit-cards/marriott-bonvoy/bountiful&quot;&gt;Chase Marriott Bonvoy Bountiful&lt;/a&gt;,
   &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/marriott-bonvoy-brilliant/&quot;&gt;Amex Marriott Bonvoy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Hilton:
   &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/hilton-honors-aspire/&quot;&gt;Amex Hilton Aspire Card&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;IHG:
   &lt;a href=&quot;https://creditcards.chase.com/a1/ihg/Premier12325NAEP&quot;&gt;Chase IHG Premier&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Hyatt:
   &lt;a href=&quot;https://creditcards.chase.com/travel-credit-cards/world-of-hyatt-credit-card&quot;&gt;Chase World of Hyatt Credit Card&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;grocery-shopping&quot;&gt;Grocery Shopping&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/blue-cash-preferred/&quot;&gt;American Express Blue Cash Preferred Card&lt;/a&gt;:
   6% cashback on up to $6,000/yr.&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://www.americanexpress.com/en-us/credit-cards/credit-intel/gold-card-rewards-points/&quot;&gt;American Express Gold Card&lt;/a&gt;:
   4x points on up to $25,000/yr.&lt;/p&gt;

&lt;h2 id=&quot;gas&quot;&gt;Gas&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://www.penfed.org/credit-cards/platinum-rewards-visa&quot;&gt;PenFed Platinum Rewards&lt;/a&gt;: 5x points on gas and EV
   charging&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/blue-cash-preferred/&quot;&gt;American Express Blue Cash Preferred Card&lt;/a&gt;:
   3% cashback.&lt;/p&gt;

&lt;h2 id=&quot;rotating-categories&quot;&gt;Rotating Categories&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://www.discover.com/credit-cards/cash-back/it-card.html&quot;&gt;Discover It&lt;/a&gt;: 5% cashback on quarterly category. These
   categories include grocery, Amazon/Target/Walmart, PayPal, restaurants, etc.&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://creditcards.chase.com/cash-back-credit-cards/freedom/flex&quot;&gt;Chase Freedom Flex&lt;/a&gt;: 5x points (effective 7.5x with
   Chase Sapphire Reserve) on quarterly category&lt;/p&gt;

&lt;p&gt;3) &lt;a href=&quot;https://www.bankofamerica.com/credit-cards/products/cash-back-credit-card/&quot;&gt;Bank of America Customized Cash Rewards&lt;/a&gt;
   3% on up to $2500/quarter of your selected category (Gas/EV charging stations, dining, travel, drug stores and
   pharmacies, or home improvement). With preferred rewards, 5.25% cashback.&lt;/p&gt;

&lt;h1 id=&quot;advanced-credit-card-topics&quot;&gt;Advanced Credit Card Topics&lt;/h1&gt;

&lt;p&gt;1) &lt;a href=&quot;https://thepointsguy.com/credit-cards/credit-card-churning/&quot;&gt;Churning&lt;/a&gt;
   and &lt;a href=&quot;https://www.reddit.com/r/churning/wiki/manufactured_spending/&quot;&gt;manufactured spend&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;a href=&quot;https://thepointsguy.com/credit-cards/your-ultimate-guide-to-credit-card-upgrades/&quot;&gt;Upgrading credit cards&lt;/a&gt; to
   maximize sign-up bonuses on lower tier cards, but receiving multiple benefits of higher tier cards.&lt;/p&gt;

&lt;p&gt;3) Maximizing &lt;a href=&quot;https://thepointsguy.com/credit-cards/limited-time-card-offers/&quot;&gt;sign up bonuses&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) &lt;a href=&quot;https://thepointsguy.com/credit-cards/best/&quot;&gt;Point breakdowns&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;credit-card-rumors&quot;&gt;Credit Card Rumors:&lt;/h1&gt;

&lt;p&gt;1) You should &lt;strong&gt;never&lt;/strong&gt; carry a balance on your credit cards, it is not a way to improve your credit score.&lt;/p&gt;

&lt;p&gt;2) Having many credit cards does not mean you will have poor credit (the &lt;em&gt;number of open accounts&lt;/em&gt; is a small factor
   relative to others when your credit score is calculated. &lt;em&gt;Credit inquiries&lt;/em&gt; are a predominately temporary impact to
   your credit score. If you are anticipating taking out a loan, especially a mortgage, you should avoid necessary
   credit inquiries for several months prior to applying). I have nearly 30 active credit cards and over an 800
   credit score across each credit bureaus.&lt;/p&gt;

&lt;p&gt;3) Paying with a credit card is &lt;em&gt;always&lt;/em&gt; safer than paying with cash or a debit card due to the liability and
   fraud protection available.&lt;/p&gt;

&lt;p&gt;4) Even with some places charging more for credit compared to cash or debit, you can still “out-earn” the fee with some
   credit cards. For example, if a restaurant charges 2.5% for credit card users, but your credit card earns 4%
   cashback, you will still net 1.5% cashback by using your credit card.&lt;/p&gt;

&lt;p&gt;5) You can have multiple of the same credit card to maximize its perks. Sometimes this requires upgrading from a lower
   tier card, sometimes you can apply through a co-branded credit card.&lt;/p&gt;

&lt;h1 id=&quot;whats-in-my-wallet&quot;&gt;What’s in my wallet&lt;/h1&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Credit Card&lt;/th&gt;
      &lt;th&gt;Benefits Utilized&lt;/th&gt;
      &lt;th&gt;Carried or Drawer*&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.bankofamerica.com/credit-cards/products/unlimited-cash-back-credit-card/&quot;&gt;Bank of America Unlimited Cash Rewards&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;2.62% cashback on all purchases&lt;/td&gt;
      &lt;td&gt;carried&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.bankofamerica.com/credit-cards/products/cash-back-credit-card/&quot;&gt;Bank of America Customized Cash Rewards&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;5.25% cashback on online shopping&lt;/td&gt;
      &lt;td&gt;drawer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Citi Prestige&lt;/td&gt;
      &lt;td&gt;5x points at restaurants, 3x at hotels, 3x transit, $250 annual travel/restaurants, 4th night hotel free (2x/yr), $100 global entry credit, cell phone protection ($1,000/claim, $1,500/yr, $50 deductible), Priority Pass Select membership, 24 months extended warranty&lt;/td&gt;
      &lt;td&gt;carried&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.penfed.org/credit-cards/platinum-rewards-visa&quot;&gt;PenFed Platinum Rewards&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;5x points on gas&lt;/td&gt;
      &lt;td&gt;carried&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/platinum/&quot;&gt;American Express Platinum&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;5x points on air travel, $200 airline credit, $20/mo digital entertainment credit, $100 global entry credit, $200 hotel credit, $100 Saks credit, $15/mo Uber credit, Walmart+ credit&lt;/td&gt;
      &lt;td&gt;drawer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/blue-cash-preferred/&quot;&gt;American Express Blue Cash Preferred Card&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;6% cashback on groceries (on up to $6,000/yr), 6% cashback on select streaming subscriptions (including Apple subscriptions and gift card purchase through your Apple Account)&lt;/td&gt;
      &lt;td&gt;carried&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/delta-skymiles-reserve-american-express-card/&quot;&gt;American Express Delta Reserve&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;$2,500 MQD head start, $10/mo rideshare credit, $20/mo at Resy restaurants, $200 Delta Stays Credit, Hertz President’s Circle Status, Companion Certificate, TakeOff 15,&lt;/td&gt;
      &lt;td&gt;drawer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.americanexpress.com/us/credit-cards/card/delta-skymiles-platinum-american-express-card/&quot;&gt;American Express Delta Platinum&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;$2,500 MQD head start (automatic Silver status combined with the Delta Reserve), $10/mo rideshare credit, $10/mo at Resy restaurants, $150 Delta Stays Credit,&lt;/td&gt;
      &lt;td&gt;drawer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.discover.com/credit-cards/cash-back/it-card.html&quot;&gt;Discover It&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;5% cashback on rotational category&lt;/td&gt;
      &lt;td&gt;carried depending on quarter&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://creditcards.chase.com/cash-back-credit-cards/freedom/flex&quot;&gt;Chase Freedom Flex&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;5x points on rotational category&lt;/td&gt;
      &lt;td&gt;carried depending on quarter&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;*Drawer card means I only charge purchases to them for the benefit (and they typically stay in my drawer).&lt;/p&gt;

&lt;p&gt;Personally, I value cash back over points because I can immediately treat them as monthly “rebates” on purchases. Even
though you can redeem points for more than 1¢/ea, I generally value all points at 1¢ each because they typically require
“saving” points over months or years to achieve higher redemption values (except PenFed which are valued at .75-85¢ each
because redemption options are so poor) through transfer or travel portals. &lt;strong&gt;I pay $0 in annual fees for all of my
credit cards.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;next-cards-ill-be-applying-for&quot;&gt;Next cards I’ll be applying for:&lt;/h2&gt;

&lt;p&gt;1) &lt;a href=&quot;https://robinhood.com/creditcard/&quot;&gt;Robinhood Gold Card&lt;/a&gt;, 3% cashback on everything&lt;/p&gt;

&lt;h2 id=&quot;update-25-sep&quot;&gt;Update 25 Sep:&lt;/h2&gt;

&lt;p&gt;Removed the recommendation for the &lt;a href=&quot;https://www.usbank.com/credit-cards/bank-smartly-visa-signature-credit-card.html&quot;&gt;U.S Bank Smartly Visa Signature&lt;/a&gt; as it requires $100k in a checking or savings account to achieve the 4% cashback value which is not a good value. Added the &lt;a href=&quot;https://www.citi.com/credit-cards/citi-strata-elite-credit-card&quot;&gt;Citi Strata Elite&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Access CAC enabled websites on iOS</title>
   <link href="http://kyle.gorak.us//2023/07/09/ios-cac-enabled/"/>
   <updated>2023-07-09T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2023/07/09/ios-cac-enabled</id>
   <content type="html">&lt;h3 id=&quot;update-22-sep-2023&quot;&gt;Update 22 Sep 2023:&lt;/h3&gt;
&lt;p&gt;Confirmed the iPhone 15 Pro with a
&lt;a href=&quot;https://www.amazon.com/Identiv-SCR3310v2-0-Smart-Card-Reader/dp/B07VVSY96H/&quot;&gt;USB-C Smart Card reader&lt;/a&gt;
connected directly works without any special connector (you can still use a
USB Type A to USB Type C adapter, if your smart card reader requires it).&lt;/p&gt;

&lt;h2 id=&quot;native-smart-card-support-in-iosipados&quot;&gt;Native Smart Card Support in iOS/iPadOS&lt;/h2&gt;
&lt;p&gt;Starting with iOS 16 and iPadOS 16.1, Apple
&lt;a href=&quot;https://support.apple.com/guide/deployment/use-a-smart-card-on-iphone-and-ipad-dep8b8c8927a/web&quot;&gt;natively&lt;/a&gt;
supports smart card readers and authentication, signing, and encryption using your Common Access Card (CAC) through the
&lt;a href=&quot;https://developer.apple.com/documentation/cryptotokenkit&quot;&gt;CryptoTokenKit&lt;/a&gt; framework.
You no longer need to utilize expensive software or hardware devices previously required from third party
sites to use CAC-enabled websites on your Apple mobile devices. Now all you need is an On The Go (OTG) adapter
(&lt;a href=&quot;https://www.apple.com/shop/product/MD821AM/A/lightning-to-usb-camera-adapter&quot;&gt;1&lt;/a&gt;,
&lt;a href=&quot;https://www.apple.com/shop/product/MK0W2AM/A/lightning-to-usb-3-camera-adapter&quot;&gt;2&lt;/a&gt;,
&lt;a href=&quot;https://www.amazon.com/apple-lightning-usb-camera-adapter/s?k=apple+lightning+to+usb+otg+adapter&quot;&gt;3&lt;/a&gt;)
to access websites such as &lt;a href=&quot;https://webmail.apps.mil/mail/&quot;&gt;webmail&lt;/a&gt;, &lt;a href=&quot;https://www.hrc.army.mil/&quot;&gt;HRC&lt;/a&gt;,
&lt;a href=&quot;https://www.defensetravel.osd.mil/&quot;&gt;DTS&lt;/a&gt;, &lt;a href=&quot;https://my.ippsa.army.mil/psp/hcpdc/?cmd=login&quot;&gt;IPPS-A&lt;/a&gt;, etc.&lt;/p&gt;

&lt;h2 id=&quot;setup&quot;&gt;Setup&lt;/h2&gt;
&lt;p&gt;First, you will need to download the DoD’s PKI Certificate Authority
&lt;a href=&quot;https://public.cyber.mil/announcement/new-dod-pki-cas-released/&quot;&gt;certificates&lt;/a&gt; onto your Apple device.
(&lt;em&gt;note: some websites may require additional certificates, which can be downloaded from
&lt;a href=&quot;https://crl.gds.disa.mil&quot;&gt;DISA&lt;/a&gt;&lt;/em&gt;). Once downloaded, open the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dod_pke_chain.pem&lt;/code&gt; file within the zip file from your
downloads folder. You will install them on your iPhone by clicking it, then navigating to your
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Settings-&amp;gt;Profile Downloaded-&amp;gt;Install&lt;/code&gt;. Recommend you always verify the certificates are authentic by following the
instructions in the README included in the zip file.&lt;/p&gt;

&lt;p&gt;Once installed, plugin your adapter, smart card reader, and CAC and navigate to the webpage of your choice. You
will be prompted to select your certificate and enter your pin.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://kyle.gorak.us//assets/images/cac-enabled-sites.png&quot; alt=&quot;Cac Enabled Sites on an iPhone!&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;certificate-management&quot;&gt;Certificate Management&lt;/h2&gt;
&lt;p&gt;All certificates are accessible in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Settings-&amp;gt;General-&amp;gt;VPN &amp;amp; Device Management-&amp;gt;Configuration Profiles&lt;/code&gt;
while the root certificates are managed in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Settings-&amp;gt;General-&amp;gt;About-&amp;gt;Certificate Trust Settings&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://kyle.gorak.us//assets/images/cert_management.png&quot; alt=&quot;Certificates&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I tested this with an iPhone 12 with the
&lt;a href=&quot;https://www.apple.com/shop/product/MK0W2AM/A/lightning-to-usb-3-camera-adapter&quot;&gt;USB-3 camera adapter&lt;/a&gt;
and a generic OTG lightning to USB3.0 adapter from
&lt;a href=&quot;https://www.amazon.com/Certified-Lightning-Portable-iPhone13-Keyboard/dp/B09NND4R8N/&quot;&gt;Amazon&lt;/a&gt;.
However, this should work with any OTG adapter or
&lt;a href=&quot;https://www.amazon.com/Identiv-SCR3310v2-0-Smart-Card-Reader/dp/B07VVSY96H/&quot;&gt;USB-C smart card reader&lt;/a&gt;
directly to a USB-C iPad.&lt;/p&gt;

&lt;h2 id=&quot;troubleshooting&quot;&gt;Troubleshooting:&lt;/h2&gt;

&lt;h3 id=&quot;this-connection-is-not-private&quot;&gt;This Connection is Not Private&lt;/h3&gt;
&lt;p&gt;Click &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Show Details-&amp;gt;view the certificate&lt;/code&gt; and download the respective certificate from
&lt;a href=&quot;https://crl.gds.disa.mil&quot;&gt;DISA&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://kyle.gorak.us//assets/images/connection_not_private.png&quot; alt=&quot;Connection is Not Private&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;For example, IPPS-A uses the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DOD SW CA-60&lt;/code&gt; certificate. You can either download the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DOD SW CA-60&lt;/code&gt; in DISA’s
&lt;a href=&quot;https://crl.gds.disa.mil&quot;&gt;DoD PKI Management&lt;/a&gt; and install it or simply click &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visit this website&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You may also have to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reduce protections&lt;/code&gt; if you have any additional privacy &amp;amp; security settings enabled for
Safari such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Advanced Tracking and Fingerprinting Protection&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Show IP Address&lt;/code&gt; if you have iCloud
Private Relay turned on. If you are still having issues after installing the certificate, you can try restarting
your device, clearing the history and website data, or use private browsing.&lt;/p&gt;

&lt;h3 id=&quot;cannot-use-accessory&quot;&gt;Cannot Use Accessory&lt;/h3&gt;
&lt;p&gt;I did run into some issues with Apple’s Lightning to USB 3 Camera Adapter where the power provided by the adapter was
insufficient, but this was solved by plugging in a charger to the lightning port on the adapter.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://kyle.gorak.us//assets/images/usb-3-camera-cac.png&quot; alt=&quot;Smart Card Reader Power&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Army MWR Rosetta Stone for Free</title>
   <link href="http://kyle.gorak.us//2017/05/02/Rosetta-Stone-DoD/"/>
   <updated>2017-05-02T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2017/05/02/Rosetta-Stone-DoD</id>
   <content type="html">&lt;p&gt;Like many, I was disappointed to discover &lt;a href=&quot;http://support.rosettastone.com/articles/en_US/Text/Rosetta-Stone-for-United-States-Armed-Forces-members&quot;&gt;Rosetta Stone’s military contract expired in 2011&lt;/a&gt;. However, don’t fall for the 10% military discount they offer in consolation, you can still get Rosetta Stone for free by visiting your local MWR Library!&lt;/p&gt;

&lt;h3 id=&quot;army-mwr-library&quot;&gt;Army MWR Library&lt;/h3&gt;

&lt;p&gt;The Army-Rosetta Stone contract may have expired, but MWR picked up the contract! To get full access to Rosetta Stone go to your local MWR library and get an account. Once you have your web login and PIN login to your account at &lt;a href=&quot;https://mwrlibrary.armybiznet.com&quot;&gt;mwrlibrary.armybiznet.com&lt;/a&gt;. Go to &lt;a href=&quot;https://mwrlibrary.armybiznet.com/screens~S01/resources2.html&quot;&gt;Online Resources&lt;/a&gt; to view all the free resources MWR has available, such as &lt;a href=&quot;https://secure.rosettastone.com/lp/ebsco/index.html?custid=s3962601&quot;&gt;Rosetta Stone&lt;/a&gt;, &lt;a href=&quot;https://army.overdrive.com&quot;&gt;Overdrive&lt;/a&gt; (download ebooks, audiobooks, and stream movies), access to &lt;a href=&quot;http://0-www.consumerreports.org.mwrlibrary.armybiznet.com/cro/index.htm&quot;&gt;Consumer Reports&lt;/a&gt;, access to various periodicals, journals, and more. You will be able to use the Rosetta Stone &lt;a href=&quot;https://itunes.apple.com/us/app/learn-languages-with-rosetta-stone/id435588892?mt=8&quot;&gt;iOS&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=air.com.rosettastone.mobile.CoursePlayer&amp;amp;hl=en&quot;&gt;Google Play&lt;/a&gt; apps, but you must launch the application through the &lt;a href=&quot;https://mwrlibrary.armybiznet.com/screens/RosettaStoneBrochure.pdf&quot;&gt;MWR website address&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;learning-a-foreign-language-on-your-phone&quot;&gt;Learning a Foreign Language on your Phone&lt;/h3&gt;

&lt;p&gt;I am using &lt;a href=&quot;https://www.duolingo.com&quot;&gt;Duolingo&lt;/a&gt;, &lt;a href=&quot;https://www.babbel.com&quot;&gt;Babbel&lt;/a&gt;, and &lt;a href=&quot;https://secure.rosettastone.com/lp/ebsco/index.html?custid=s3962601&quot;&gt;Rosetta Stone&lt;/a&gt; to learn Italian on my iPhone.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Installing PyQt5 on Mac OS X</title>
   <link href="http://kyle.gorak.us//2016/03/26/PyQt5-install-mac/"/>
   <updated>2016-03-26T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2016/03/26/PyQt5-install-mac</id>
   <content type="html">&lt;p&gt;I am learning how to use &lt;a href=&quot;https://riverbankcomputing.com/software/pyqt/intro&quot;&gt;PyQt&lt;/a&gt; to create a Python GUI. These are the steps in installing PyQt5 on Mac OS X. I am running El Capitan 10.11.4 with &lt;a href=&quot;http://brew.sh&quot;&gt;Homebrew&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;downloading-pre-requisites&quot;&gt;Downloading pre-requisites&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Create a &lt;a href=&quot;/2016/01/08/using-virtualenvs/&quot;&gt;virtual environment&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mkvirtualenv my_app -ppython3.5&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ workon my_app&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ mkdir my_app&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Download &lt;a href=&quot;https://www.riverbankcomputing.com/software/sip/download&quot;&gt;SIP&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Download &lt;a href=&quot;https://www.riverbankcomputing.com/software/pyqt/download5&quot;&gt;PyQt&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Move unarchived SIP and PyQt folders to your project folder
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ tar -xzf [tar file]&lt;/code&gt; or use Archive Utility&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;installing-pyqt&quot;&gt;Installing PyQt&lt;/h4&gt;

&lt;p&gt;You must install SIP prior to installing PyQt.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Installing SIP
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ cd sip-4.17/&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ python configure.py&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ make&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ make install&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Test the installation
        &lt;ul&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ python&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&amp;gt;&amp;gt; import sip&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&amp;gt;&amp;gt; sip.SIP_VERSION_STR&lt;/code&gt; should equal ‘4.17’&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Delete the SIP directory&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Installing PyQt
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ brew install qt5&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ brew linkapps qt5&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ cd PyQt-gpl-5.5.1/&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ python configure.py --qmake /usr/local/opt/qt5/bin/qmake&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ make&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ make install&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Test the installation
        &lt;ul&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ python&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&amp;gt;&amp;gt; from PyQt5 import QtCore&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&amp;gt;&amp;gt; QtCore.QT_VERSION_STR&lt;/code&gt; should equal ‘5.6.0’&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&amp;gt;&amp;gt; from PyQt5 import Qt&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;&amp;gt;&amp;gt; Qt.PYQT_VERSION_STR&lt;/code&gt; should equal ‘5.5.1’&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Delete the PyQt directory&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;creating-your-first-project&quot;&gt;Creating your first project&lt;/h4&gt;

&lt;p&gt;PyQt5 &lt;a href=&quot;http://pyqt.sourceforge.net/Docs/PyQt5/class_reference.html&quot;&gt;Documentation&lt;/a&gt; and a simple hello world application to get you started:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/mizki9577/6856389.js?file=helloqt.py&quot;&gt; &lt;/script&gt;

&lt;p&gt;&lt;img src=&quot;http://kyle.gorak.us//assets/images/pyqt-hello.png&quot; alt=&quot;Hello World!&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Python Virtual Environments Cheat Sheet</title>
   <link href="http://kyle.gorak.us//2016/01/08/using-virtualenvs/"/>
   <updated>2016-01-08T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2016/01/08/using-virtualenvs</id>
   <content type="html">&lt;p&gt;Virtual environments make using Python a bit more manageable, especially when it comes to deploying Python programs and creating the requirements (able to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt; and only use packages necessary to that individual project). However, I commonly find myself forgetting some of the more basic commands. For Python 2 use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip&lt;/code&gt;, for Python 3 use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip3&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;downloading-virtualenv&quot;&gt;Downloading virtualenv&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Download virtualenv using &lt;a href=&quot;https://virtualenv.readthedocs.org/en/latest/installation.html&quot;&gt;pip&lt;/a&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip install virtualenv&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Download virtualenvwrapper using &lt;a href=&quot;https://virtualenvwrapper.readthedocs.org/en/latest/install.html&quot;&gt;pip&lt;/a&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip install virtualenvwrapper&lt;/code&gt;. Virtual environment wrapper will make using virtual environments a little easier.&lt;/li&gt;
  &lt;li&gt;On a Mac:
    &lt;ul&gt;
      &lt;li&gt;Create a directory to store your virtual environments, i.e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mkdir ~/Documents/Development/virtualenvs&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vi ~/.bash_profile&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Add to file:
 &lt;script src=&quot;https://gist.github.com/gorhack/28f5e556a9eaf495f25f.js?file=.bash_profile&quot;&gt; &lt;/script&gt;&lt;/li&gt;
      &lt;li&gt;Save and quit (esc + :wq)&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;source ~/.bash_profile&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Quit and reopen terminal to reload bash profile&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;basic-commands-to-use-virtual-environments&quot;&gt;Basic commands to use virtual environments&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lsvirtualenv&lt;/code&gt;: List your virtual environments&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mkvirtualenv [name]&lt;/code&gt;: Create a new virtual environment. Use the flag &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-ppython3.5&lt;/code&gt; after name to create a Python 3.5 virtual environment.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rmvirtualenv [name]&lt;/code&gt;: Remove a virtual environment&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;workon [name]&lt;/code&gt;: Enter a virtual environment&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deactivate&lt;/code&gt;: Stop working on a virtual environment&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;: View modules installed in current environment&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip install -r requirements.txt&lt;/code&gt;: Install all modules in requirements.txt&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;setting-up-virtual-environments&quot;&gt;Setting up virtual environments&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;To make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;workon [name]&lt;/code&gt; go directly to the directory of the project directory, edit the /virtualenvs/postactivate and add: &lt;script src=&quot;https://gist.github.com/gorhack/d554e7065e061f5b7284.js?file=postactivate.bash&quot;&gt; &lt;/script&gt;&lt;/li&gt;
  &lt;li&gt;To make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;deactivate&lt;/code&gt; exit the project directory, edit the /virtualenvs/postdeactivate and add: &lt;script src=&quot;https://gist.github.com/gorhack/d554e7065e061f5b7284.js?file=postdeactivate.bash&quot;&gt; &lt;/script&gt;
    &lt;ul&gt;
      &lt;li&gt;by &lt;a href=&quot;http://hmarr.com/2010/jan/19/making-virtualenv-play-nice-with-git/&quot;&gt;Harry Marr&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>BytesIO to POST file with requests</title>
   <link href="http://kyle.gorak.us//2015/12/28/bytes-image-upload/"/>
   <updated>2015-12-28T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2015/12/28/bytes-image-upload</id>
   <content type="html">&lt;p&gt;I have been working on a project that prohibits me from saving files to disk. In my case, I needed to download an image from a website and upload that image elsewhere.&lt;/p&gt;

&lt;h4 id=&quot;get-the-file-as-a-byte-stream&quot;&gt;GET the file as a Byte Stream&lt;/h4&gt;

&lt;p&gt;This can be done using only &lt;a href=&quot;http://docs.python-requests.org/en/latest/&quot;&gt;requests&lt;/a&gt; and &lt;a href=&quot;https://docs.python.org/3.5/library/io.html#io.BytesIO&quot;&gt;BytesIO&lt;/a&gt;; no need for &lt;a href=&quot;https://pillow.readthedocs.org/en/3.0.x/&quot;&gt;Pillow&lt;/a&gt; or any other file manipulation modules! After getting the file through a GET request (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r = requests.get(url)&lt;/code&gt;), read the response &lt;a href=&quot;http://docs.python-requests.org/en/latest/user/quickstart/#binary-response-content&quot;&gt;as bytes&lt;/a&gt; using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r.content&lt;/code&gt;. These bytes can be used to create a BytesIO object &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file = BytesIO(r.content)&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;post-the-file-for-upload&quot;&gt;POST the file for upload&lt;/h4&gt;

&lt;p&gt;Now that you have a BytesIO object, requests can send that object as a &lt;a href=&quot;http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file&quot;&gt;file parameter&lt;/a&gt;. Use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;getvalue()&lt;/code&gt; method to read the entire buffer of the BytesIO object. Create the files parameter for the requests encoded-file upload: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;files = { &apos;file&apos;:file.getvalue() }&lt;/code&gt;. Now that the parameters are ready, the file is ready for upload &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r = requests.post(url, files=files)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Putting it all together:
&lt;script src=&quot;https://gist.github.com/gorhack/2b09b603a8b2d6e8cbb9.js&quot;&gt; &lt;/script&gt;&lt;/p&gt;

&lt;p&gt;There you have it, upload a file without ever saving it to disk.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Getting Started: Swift 2 and Facebook SDK 4.8.0</title>
   <link href="http://kyle.gorak.us//2015/12/26/swift-facebook/"/>
   <updated>2015-12-26T00:00:00+00:00</updated>
   <id>http://kyle.gorak.us//2015/12/26/swift-facebook</id>
   <content type="html">&lt;p&gt;I was starting a new Swift 2 project and saw the Facebook developer portal did not cover Swift. I figured I would take it upon myself to fill in some of the missing pieces of the tutorial found on &lt;a href=&quot;https://developers.facebook.com/quickstarts/?platform=ios&quot;&gt;developer.facebook.com&lt;/a&gt;. Full sample project on &lt;a href=&quot;https://github.com/gorhack/fblogin_swift2&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;importing-the-facebook-sdk-frameworks-into-the-project&quot;&gt;Importing the Facebook SDK frameworks into the project:&lt;/h4&gt;

&lt;p&gt;Download the &lt;a href=&quot;https://origincache.facebook.com/developers/resources/?id=facebook-ios-sdk-current.zip&quot;&gt;Facebook SDK&lt;/a&gt; add the necessary framework files to your project. You will need to  select “Copy items if needed” when adding the files to your project (click Options if now showing).
&lt;img src=&quot;http://kyle.gorak.us//assets/images/add_files.png&quot; alt=&quot;Add files to project&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;configure-your-plist&quot;&gt;Configure your .plist&lt;/h4&gt;

&lt;p&gt;Add the following to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;info.plist&lt;/code&gt; (right click, Open As &amp;gt; Source Code) inside the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;dict&amp;gt;...&amp;lt;/dict&amp;gt;&lt;/code&gt; tag:
&lt;script src=&quot;https://gist.github.com/gorhack/7d8ff0c39903dd6f750e.js?file=info.plist&quot;&gt; &lt;/script&gt;&lt;/p&gt;

&lt;h4 id=&quot;add-the-facebook-framework-to-your-app-delegate&quot;&gt;Add the Facebook framework to your App Delegate&lt;/h4&gt;

&lt;p&gt;In your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AppDelegate.swift&lt;/code&gt; import &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FBSDKShareKit&lt;/code&gt; and add a new application function.
&lt;script src=&quot;https://gist.github.com/gorhack/7d8ff0c39903dd6f750e.js?file=AppDelegate.swift&quot;&gt; &lt;/script&gt;&lt;/p&gt;

&lt;h4 id=&quot;add-login-button-to-your-view-controller&quot;&gt;Add login button to your View Controller&lt;/h4&gt;

&lt;p&gt;In one of your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ViewController.swift&lt;/code&gt; files import &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FBSDKLoginKit&lt;/code&gt; and add the login button to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;viewDidLoad()&lt;/code&gt; function.
&lt;script src=&quot;https://gist.github.com/gorhack/7d8ff0c39903dd6f750e.js?file=ViewController.swift&quot;&gt; &lt;/script&gt;&lt;/p&gt;

&lt;h4 id=&quot;test-your-program&quot;&gt;Test your program&lt;/h4&gt;

&lt;p&gt;Run your application on the emulator or on a device and you should see a Facebook login button that will direct you to login. Logging in will store your application in your Facebook account’s Apps section as an authorized application. Inside the Swift application you now have a logout button instead of a login button.
&lt;img src=&quot;http://kyle.gorak.us//assets/images/facebook-test.png&quot; alt=&quot;Add files to project&quot; class=&quot;center-image&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 

</feed>
