About | First REXX Program | Favorites | Mainframes (z/OS) | Skydiving |
Apr 15 2014

“No sky for you Germany!”

I just made a quick video of my first skydives for the year up for my other blog 30journey.

YouTube indicates my video is block in some countries because I used NOFX as the soundtrack.

Which country you ask?  Germany(?!).

Does Germany have a beef with Fat Mike and company?

If any of my Germany brethren want a copy of this AMAZING typical shaky cam skydiver video…I will be MORE than happy to Dropbox; S3; whatever!

 

 

 


Feb 26 2014

Windows .BAT Scripts for Uploading files to z/OS Mainframe

.BAT Coding for z/OS Uploading

As mentioned on Millennial Mainframer.

Here’s some glorious nerdry I’ve been laboring at work to make my and others’ lives easier creating Windows .BAT scripts for uploading files to z/OS mainframe.  Before this all this all the declarations for z/OS allocations were manually done and very time consuming.

The code is pretty straight forward once you start playing with it.

Some irritations you’ll find with Windows batch files (we’re still using XP regretfully) is that while it’s not CASE sensitive…there’s some strict syntax and limitations.

For example I was struggling with IF ELSE statements which require a strict format; spacing when outputting to a textfile; and using global and local variables within the script which ended up with me creating multiple procedures as a workaround.

Since Batch files in Windows are pretty limited I would have LOVED to use PowerShell.
However I knew that a simple .BAT would at least guarantee to work on our secure workstations.

(Note: The following code below works as presented with spacing and format.)

 

VANGUARD Maintenance Upload Batch Script

@echo off
::: -- Set the window color --
COLOR 1F
::: -- Set the window title --
SET "title=VANGUARD MAINTENANCE UPLOAD BATCH SCRIPT - version 0.5"
TITLE %title%
::: -- Set the window size --
MODE CON: COLS=100 LINES=50
::: -- Script Header --
echo ****************************************
echo.
echo VANGUARD MAINTENANCE UPLOAD BATCH SCRIPT
echo.
echo ****************************************
echo * * 
echo * READ THE FOLLOWING BELOW * 
echo * * 
echo * This script will: *
echo * *
echo * 1). Calculate needed CYLINDER * 
echo * * 
echo * 2). FTP MAINT file to proper *
echo * location * 
echo * * 
echo * ------------------------------------ * 
echo * Please ensure the following: *
echo * *
echo * 1). MAINT file is in same *
echo * same directory as this .BAT *
echo * * 
echo * 2). Filename format is: *
echo * * 
echo * Qnyy.MAINT * 
echo * * 
echo * e.g. Q413.MAINT * 
echo * ------------------------------------ * 
echo * * 
echo ****************************************
echo.
::: -- SIMPLE ERROR CHECKING --
set /p UserFileName= What's the MAINT file name? (e.g. Q114.MAINT): 
IF EXIST "%UserFileName%" ( 
 set filename=%UserFileName%
) else ( 
 echo Invalid filename
 pause 
 goto :eof
)
::: -- Change BYTES TO KILOBYTES --
echo.
for %%A in (%filename%) do set /a x=%%~zA/1024
for %%A in (%filename%) do echo.Size of "%%A" is %x% kilobytes
::: -- IF filesize < 675 PRI Cylinder will be 1 -- 
IF %x% LEQ 675 ( 
 call :setprimary_tiny 1
) else ( 
 call :setprimary_big %x% 

)
::: -- Configure PRIMARY CYLINDER --
:setprimary_tiny
set iPRI=%1
echo PRIMARY CYLINDERS = %iPRI%
echo FILENAME = %filename%
call :ftp_upload
:setprimary_big
set /a y=%1 / 675 + 1
set iPRI=%y%
echo PRIMARY CYLINDERS = %iPRI%
echo FILENAME = %filename%
call :ftp_upload
::: -- FTP Upload MAINT file --
:ftp_upload
IF EXIST ftptemp.txt del ftptemp.txt
echo.
set /p FTPhost=FTP Host?:
set host=%FTPhost%
set /p FTPUserID=FTP User?:
REM ----------------------------------------------
REM Herbert Kleebauer ascii-binary password mask
REM ----------------------------------------------
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>%temp%\ftp.com
set /p FTPPwd=FTP Password?: <nul
for /f "tokens=*" %%i in ('%temp%\ftp.com') do set "FTPPwd=%%i"
del %temp%\ftp.com
REM ----------------------------------------------
echo user %FTPUserID%>> ftptemp.txt
echo %FTPPwd%>> ftptemp.txt
echo bin>> ftptemp.txt
echo prompt>> ftptemp.txt
echo cd ..>> ftptemp.txt
echo cd IPP.VIP.AVSS113>> ftptemp.txt
echo quote site volume=ppins1 recfm=fb lrecl=80 cyl>> ftptemp.txt
echo quote site pri=%iPRI%>> ftptemp.txt
echo put %filename% %filename% )R>> ftptemp.txt
echo quit >> ftptemp.txt
ftp -n -s:ftptemp.txt %host%
del ftptemp.txt
pause
exit

 

 

SYNCSORT Maintenance Upload Batch Script

@echo off
::: -- LOGIC--
::: 
::: FTP UPLOAD TO HOST USING INPUT FROM USER AND CREATING TEMP TEXT FILE
:::
::: -- Set the window color --
COLOR 1F
::: -- Set the window title --
SET "title=SYNCSORT MAINTENANCE UPLOAD BATCH SCRIPT - version 0.5"
TITLE %title%
::: -- Set the window size --
MODE CON: COLS=100 LINES=50
::: -- Script Header --
echo ****************************************
echo.
echo SYNCSORT MAINTENANCE UPLOAD BATCH SCRIPT
echo.
echo ****************************************
echo * * 
echo * READ THE FOLLOWING BELOW * 
echo * * 
echo * This script will: *
echo * *
echo * 1). Set host parms for files * 
echo * * 
echo * 2). FTP MAINT files to proper *
echo * location * 
echo * * 
echo * ------------------------------------ * 
echo * Please ensure the following: *
echo * *
echo * 1). Installation files dowloaded *
echo * from ftp://www.syncsort.com *
echo * are in the same directory *
echo * as this .BAT *
echo * * 
echo * ------------------------------------ * 
echo * * 
echo ****************************************
echo.
call :ftp_upload
::: -- FTP Upload MAINT file --
:ftp_upload
IF EXIST ftptemp.txt del ftptemp.txt
echo.
set /p FTPhost=FTP Host?:
set host=%FTPhost%
set /p FTPUserID=FTP User?:
REM ----------------------------------------------
REM Herbert Kleebauer ascii-binary password mask
REM ----------------------------------------------
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>%temp%\ftp.com
set /p FTPPwd=FTP Password?: <nul
for /f "tokens=*" %%i in ('%temp%\ftp.com') do set "FTPPwd=%%i"
del %temp%\ftp.com
REM ----------------------------------------------
echo user %FTPUserID%>> ftptemp.txt
echo %FTPPwd%>> ftptemp.txt
echo bin>> ftptemp.txt
echo prompt>> ftptemp.txt
echo cd ..>> ftptemp.txt
echo cd IPP.SYNCSORT>> ftptemp.txt
echo quote site volume=ppins1 lrecl=1024 recfm=fb blksize=6144>> ftptemp.txt
echo quote site track pri=350 sec=100>> ftptemp.txt
echo mput *.F1 )R>> ftptemp.txt
echo mput *.F2 )R>> ftptemp.txt
echo mput *.SMPMCS )R>> ftptemp.txt
echo mput *.JCL )R>> ftptemp.txt
echo mput *.PAXLIB )R>> ftptemp.txt
echo mput *.ISP* )R>> ftptemp.txt
echo mput *.MODLIB )R>> ftptemp.txt
echo mput *.SAMPJCL )R>> ftptemp.txt
echo ascii>> ftptemp.txt
echo quote site volume=ppins1 lrecl=80 recfm=fb blksize=3120>> ftptemp.txt
echo quote site track pri=2 sec=22>> ftptemp.txt
echo mput *.TXT )R>> ftptemp.txt
echo quit>> ftptemp.txt
ftp -n -s:ftptemp.txt %host%
del ftptemp.txt
pause
exit

EDIT:

Found some amazing ASCII-binary code on the various Google Groups  on old UserNet post from a clever Assembler Programmer named Herbert Kleebauer.

This code snippet hides user input for the FTP password part.

I’ve test this on XP and Win7 and both appear to work.

@echo off
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>%temp%\ftp.com
set /p password=What is your password? <nul
for /f "tokens=*" %%i in ('%temp%\ftp.com') do set "password=%%i"
del %temp%\ftp.com
echo password is "%password%"
pause

EDIT2:

Email reply from the Man himself:
Herbert Kleebauer
12:53 PM (10 minutes ago) to me

On 28.02.2014 16:02, Paul Gamble wrote:

> You’ve impressed me with what’s possible with BATCH using ascii-binary, and want to thank you for that!

BATCH using ascii-binary was very helpful in the good
old days. But 64 bit Windows doesn’t allow the execution of
16 bit com programs. A way to include 32 bit code is, to use
certutil.exe, but this is not available before Vista.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
:: read char from keyboard (stdin) until is pressed
:: write characters to stdout
:: write * to stderr
certutil -f -decode %~f0 inpass.exe>nul
set /p =Enter password: echo.
echo %password%
del inpass.exe
goto :eof
-----BEGIN CERTIFICATE-----
TVpgAQEAAAAEAAAA//8AAGABAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAoAAAAA4fug4AtAnNIbgBTM0hTmljZSB0byBtZWV0IHNvbWVi
b2R5IHdobyBpcyBzdGlsbCB1c2luZyBET1MsDQpidXQgaGlzIHByb2dyYW0gcmVx
dWlyZXMgV2luMzIuDQokAFBFAABMAQEAUHmlNgAAAAAAAAAA4AAPAQsBBQwAAgAA
AAAAAAAAAADIEAAAABAAAAAgAAAAAEAAABAAAAACAAAEAAAAAAAAAAQAAAAAAAAA
ACAAAAACAAAAAAAAAwAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAA
HBAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAcAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALnRleHQAAADkBQAAABAAAAACAAAAAgAA
AAAAAAAAAAAAAAAAIAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuEAAAfBAAAIwQAACYEAAA
pBAAALYQAAAAAAAAUhAAAAAAAAAAAAAARBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAEtFUk5FTDMyLmRsbAAAbhAAAHwQAACMEAAAmBAAAKQQAAC2EAAAAAAAAAAA
RXhpdFByb2Nlc3MAAABHZXRTdGRIYW5kbGUAAAAAUmVhZEZpbGUAAAAAV3JpdGVG
aWxlAAAAR2V0Q29uc29sZU1vZGUAAAAAU2V0Q29uc29sZU1vZGUAAOiDAAAAPA10
DuguAAAAsCroCAAAAOvp/xUAEEAAUKLMFUAAMcADBdwVQAB1LGr0/xUEEEAAo9wV
QADrHVCizBVAADHAAwXYFUAAdQ1q9f8VBBBAAKPYFUAAagBo4BVAAGoBaMwVQABQ
/xUMEEAACcB1CGoA/xUAEEAAgT3gFUAAAQAAAHXsWMMxwAMF1BVAAHU3avb/FQQQ
QACj1BVAAGjQFUAAUP8VEBBAAIAl0BVAAOH/NdAVQAD/NdQVQAD/FRQQQACh1BVA
AGoAaOAVQABqAWjMFUAAUP8VCBBAAAnAdQhqAP8VABBAAA+2BcwVQACBPeAVQAAB
AAAAdAW4/////8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA==
-----END CERTIFICATE-----

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

The source code:

winmain::

_20:    bsr.l   getc
        cmp.b   #13,r0
        beq.b   _10
        bsr.l   putc
        move.b  #'*',r0
        bsr.l   putc2
        br.b    _20
_10:    jsr.l   (ExitProcess)


putc2:  move.l  r0,-(sp)
        move.b  r0,buf
        eor.l   r0,r0
        add.l   handle2,r0
        bne.b   .p_10
        moveq.l #-12,-(sp)
        jsr.l   (GetStdHandle)
        move.l  r0,handle2
        br.b    .p_10

putc:   move.l  r0,-(sp)
        move.b  r0,buf
        eor.l   r0,r0
        add.l   handle1,r0
        bne.b   .p_10
        moveq.l #-11,-(sp)
        jsr.l   (GetStdHandle)
        move.l  r0,handle1
.p_10:  moveq.l #0,-(sp)
        move.l  #count,-(sp)
        moveq.l #1,-(sp)
        move.l  #buf,-(sp)
        move.l  r0,-(sp)
        jsr.l   (WriteFile)
        or.l    r0,r0
        bne.b   _20
_30:    moveq.l #0,-(sp)
        jsr.l   (ExitProcess)
_20:    cmp.l   #1,count
        bne.b   _30
        move.l  (sp)+,r0
        rts.l

getc:   eor.l   r0,r0
        add.l   handle0,r0
        bne.b   _10
        moveq.l #-10,-(sp)
        jsr.l   (GetStdHandle)
        move.l  r0,handle0
        move.l  #mode,-(sp)
        move.l  r0,-(sp)
        jsr.l   (GetConsoleMode)
        and.b   #%11100001,mode
        move.l  mode,-(sp)
        move.l  handle0,-(sp)
        jsr.l   (SetConsoleMode)
        move.l  handle0,r0

_10:    moveq.l #0,-(sp)
        move.l  #count,-(sp)
        moveq.l #1,-(sp)
        move.l  #buf,-(sp)
        move.l  r0,-(sp)
        jsr.l   (ReadFile)
        or.l    r0,r0
        bne.b   _20
        moveq.l #0,-(sp)
        jsr.l   (ExitProcess)
_20:    movu.bl buf,r0
        cmp.l   #1,count
        beq.b   _30
        move.l  #-1,r0
_30:    rts.l


        even4
        blk.l   256     ; because of trace cache
buf:    blk.l   1
mode:   blk.l   1
handle0:blk.l   1
handle1:blk.l   1
handle2:blk.l   1
count:  blk.l   1

Feb 25 2014

The School Board vs. Justin’s Cochlear Implants

Justin’s Cochlear Implants

My friend Heather posted this shocking post on her Facebook timeline of her son’s school board doing the biggest mistake they could make with Justin and his Cochlear Implants…

pissing off his MOM!

 Cochlear Implants


Jan 31 2014

REXX Message Shenanigans

Here’s the REXX EXEC that I made this light Friday as a cheeky message for people trying to run something at work.

As mentioned here on Millennial Mainframer.

/* REXX EXEC */                                                                 
/*============================================================*/                
/* REXX FOR ALLOCATING REQUIRED ISPF DATA SETS AND LIBRARIES  */                
/* FOR TIVOLI DECISION SUPPORT FOR Z/OS (TDSZ)                */                
/*                                                            */                
/*============================================================*/                
/* PAUL GAMBLE - Mar 14 2013                                  */                
/*                                                            */                
/* Workaround for userid.DRLFPROF req.                        */                
/*                                                            */                
/*============================================================*/                
ADDRESS ISPEXEC "VGET (ZUSER)"                                                  
savemem = zuser||'.PROF'                                                    
"ALLOC DA('"savemem"')"                                                         
If rc > 0 Then do                                                               
say '*******************************************************'                 
say '                                                       '                 
say 'INITAL STARTUP OF THE DAY...REPEAT, THE ABOVE MESSAGE  '                 
say 'INDICATING "MISSING DATASET" IS NOW BEING COPIED INTO  '                 
say 'YOUR USERID HLQ.                                       '                 
say '                                                       '                 
say '                                                       '                 
say 'COPYING "SOME.DATASET.PROF" to 'zuser||'.PROF'                 
say '                                                       '                 
say '                                                       '                 
say '                         oooo$$$$$$$$$$$$oooo                             '
say '                      oo$$$$$$$$$$$$$$$$$$$$$$$$o                         '
say '                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$   '
say '   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$  '
say 'oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$   '
say '"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$    '
say '  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$    '
say '  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$      '
say '   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$     '
say '    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o   '
say '   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o  '
say '   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$  '
say '  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$  '
say '  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""     '
say ' """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$              '
say '            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$               '
say '              $$$o          "$$""$$$$$$""""           o$$$                '
say '               $$$$o                                o$$$"                 '
say '                "$$$$o      o$$$$$$o"$$$$o        o$$$$                   '
say '                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""                    '
say '                     ""$$$$$oooo  "$$$o$$$$$$$$$"""                       '
say '                        ""$$$$$$$oo $$$$$$$$$$                            '
say '                                """"$$$$$$$$$$$                           '
say '                                    $$$$$$$$$$$$                          '
say '                                     $$$$$$$$$$"                          '
say '                                      "$$$""                              '
say '                                                                          '
say '        EVERYTHING IS WORKING...                                          '
say '                                                                          ' 
say '        LIFE IS GOOD.                                                     ' 
say '                                                                          ' 
say '        PLEASE ENJOY.'                                                      
say ' '                                                                          
say '*******************************************************'                    
  profmem = "SOME.DATASET.PROF"                                            
  "ALLOCATE DA('"savemem"') NEW SPACE(10,5) DSORG(ps)                            
   RECFM(S) LRECL(80) BLKSIZE(32720)"                                            
  "ALLOC F(SYSUT1)   DA('"profmem"') SHR"                                        
  "ALLOC F(SYSUT2)   DA('"savemem"') SHR"                                        
  "ALLOC F(SYSPRINT) DUMMY"                                                      
  "ALLOC F(SYSIN)    DUMMY"                                                      
  "IEBGENER"                                                                     
  "FREE  F(SYSUT1 SYSUT2 SYSPRINT SYSIN)"                                        
end /* Then do */

Jan 10 2014

2014 SMARTer Goals

Another year is upon us and we have many opportunities and adventures ahead!

Have you made your SMART(ER) goals for 2014?

 

2013

SMART2013

2014

SMARTER_2014

 


Dec 2 2013

30Journey: Online Business

money_wall

I’ve decided to start yet another 30Journey Challenge…an online business!

For the next 30 Days I’ll be working and plugging away to launch my online business.

Ahhh…will it be a good idea?

Follow me and find out!

 

 


Nov 11 2013

Satisficers dot com

http://www.flickr.com/photos/lolololori/2838109022/sizes/l/in/photolist-5jN3Wb-5shkue-5shEKg-5tomXj-5uBNvs-5Cs4y2-5FN4ET-5Sz3qJ-5WYM4r-671JE6-6cLcB6-6emS8d-6zRvWS-6UsvV4-6UESay-717Wbe-72XRkY-756BjR-784scU-7954jb-7g5jZD-7k4JML-fN9Pzh-8S4XtH-dQTGbC-7znkBU-aqbc3e-8WcU6F-b33xk8-csaQAq-csaQny-csaQbL-csaPVf-csaQ55-csaQuu-7FU8gK-fKEupV-9sgehf-8iSCeD-8iSC9n-8iVQLo-eRdb1N-fF216G-8ehHAy-8t9Ws7-8t9WAC-8t6VT4-7NT5Yv-82B6a1-8t6VEe-8tmBoj/

Yet another blog/website I’ve kept on the back burner for quite some time is Satisficers.com

I stumbled on the concept of “satisficing” almost by mistake and have since LOVED applying the concept to my life.

Originally I heard about the idea from my mentor, author, and informational product guru Eben Pagan.  The concept is that rather than make yourself miserable in life by trying to “Optimize” every decision in life, including purchasing decision, you “Satisfice” .

Satisfy your needs, Sacrifice confusion (or maybe not getting every bell and whistle).

The great example that Eben Pagan gives, is that rather than spending months and years reaching which laptop to purchase, you go out buy the one that will meet your needs and be done with it.

Optimizers will do the opposite.  They’re research and research and then they’ll FINALLY make a decision and end having buyers remorse because they believed there’s something better out there (which there always will be if you search for it).  This leads to a feeling of never satisfied with ANYTHING in life.

In my own life I’m making more decisions quickly and satisficing for my needs rather than measure things to misery.

Make a decision and move on to the next one.

Therefore rather than posting an endless list of things that fall under this category I thought it would be neato to create a separate website for such a following of people that vibe with that same philosophy (or parking that URL sonofabitch ).

I will carry forward relevant content.  Please follow and check in periodically to Satisficers.com for biased advice and propaganda.


Oct 25 2013

Day 31: No complaints or swearing for 30 Days! – FAIL

http://www.flickr.com/photos/swanksalot/

Well it’s been 30 Days and I have to admit this experiment was literally a failure from Day 1.

Wishful thinking it’s difficult to break a bad habit, especially losing my shit and swearing.  Please take note of the irony of previous sentence.

Stress at work; fights with my fiancee; allowing stupid people  to push my buttons.  It was moment after another of me turning into the Incredible HULK.  I also realized that when I’m around the lads I drop F-bombs and curse as part of my testosterone expression.  I’d be cursing just to empathize when a colleague or buddy would be venting or bitching around something to me.

Fuuucckkk…yeah man, that sucks.  Fuck it, don’t worry about that kind of donkey shit.

Thinking about how to “succeed” at this challenge I’ve decided a perhaps more productive experiment would be 30 Days of gratitude.  Trying to STOP something is MORE difficult than DOING something else in place.

Therefore I’m going to do a VERY simple gratitude entry every day about something I’m grateful in my life.  I’ll do my best to make it interesting.  Check out 30journey.com  to see if I’ll follow through.

For my epic failure I’m donating $30 to PETA.  I know I originally said $5 for EVERY VIOLATION…but my Andrew Dice Clay days would make me declare bankruptcy.

Therefore I changed the rules for myself (imagine that) and made it $1 a day that I violated.   Yes, a total cop out…but it’s my game dammit!


Sep 25 2013

Day 1: No complaints or swearing for 30 Days!

http://www.flickr.com/photos/irene2005/251390699/

I’ve decided to start up my other blog, 30journey.com

Great minds think alike.

or more accurately…

Great minds steal alike.

I originally thought of 30journey.com after falling in love with watching Morgan Spurlock’s 30 Days TV series.  Essentially taking someone and putting them in a situation they normally wouldn’t be in for 30 days.  E.g. Morgan and his wife at the time trying to live on minimum wage for 30 days; or him going to prison for 30 days; an atheist living with a Christian family for 30 days.  I highly recommend it!

Recently I watched a TED talk by Matt Cutts who actually put into action the same idea I was “stewing” over.

Now inspired I’m taking this one on: No complaints or swearing for 30 Days!


Sep 19 2013

Wow – LingQ Stats

I love using LingQ to learn French.  Their growth seems to be testament of what an amazing concept and platform they’ve created.

20M-infographic