b

New Release - Land for Sale in Burton-on-Trent, Staffordshire

Pasture and Potential Investment land for sale. This attractive parcel of land totals over 62 acres and has the unique benefit of river frontage.




b

New Release - Land for Sale in Ilkeston, Derbyshire

The land forms an excellent block of highly productive arable land totalling over 15 acres. It is perfectly placed between Derby and Nottingham, with excellent transport links and just 3 miles from Ilkeston town centre.




b

New Release - Land for Sale in Melton Mowbray, Leicestershire

A well managed block of agricultural land for sale available freehold as a whole or in lots suitable for paddock conversion. The land benefits from extensive road frontage and superb track access.




b

New Release - Land for Sale in Solihull, Birmingham

A rare and desirable opportunity to purchase a block of strategic land just 8 miles from Birmingham City Centre. Totalling over 14 acres the land is available freehold as a whole or lots, with strong investment potential.




b

New Release - Land for Sale in Buckinghamshire, Water End

Just one lot of lush grazing land for sale in Buckinghamshire, one of the most affluent counties in the UK. The land measures approx 2.5 acres and with superb access, would be ideal for paddock conversion.




b

In welke provincie wonen de beste fietsers?

De Nederlandse man rijdt gemiddeld 50,9 kilometer per keer als hij op zijn racefiets klimt. De Zeeuwen fietsen het snelst ...... Lees verder: In welke provincie wonen de beste fietsers?





b

De Airworx Plus 10.0: Robuust en luxueus

SKS Germany´s Airworx Plus 10.0 review Tot op de PSI luchtdruk reguleren Met de robuuste, extra hoge Airworx Plus 10.0 is elke ...... Lees verder: De Airworx Plus 10.0: Robuust en luxueus




b

Bitemojo self-guided foodtours: een review

BARCELONA – Het is goed uitkijken in het drukke Barcelona. Bitemojo heeft wielrennen.blog.nl een self-guided food tour aangeboden die wij ...... Lees verder: Bitemojo self-guided foodtours: een review











b

RFE - source code now available

On request, I've posted the source code to the RSS Feed Editor.




b

12C: IN DATABASE ARCHIVING

In this post, I will demonstrate a new feature introduced in 12c : In database archiving. It enables you to archive rows within a table by marking them as invisible. This is accomplshed  by means of a hidden column ORA_ARCHIVE_STATE. These invisible rows are not visible to the queries but if needed, can be viewed , by setting a session parameter ROW ARCHIVAL VISIBILITY.

Overview:

-- Create test user uilm, tablespace ilmtbs
-- Connect as user uilm
-- create and populate test table (5 rows) ilmtab with row archival clause
-- Note that the table has an additional column ORA_ARCHIVE_STATE automatically created   and has the default value of 0 (indicates that row is active)
-- Note that this column is not visible when we describe the table or simply issue select * from ...
-- We need to access data dictionary to view the column
-- Make two  rows in the table inactive by setting ORA_ARCHIVE_STATE column to a non zero value.
-- Check that inactive rows are not visible to query
-- Set the parameter ROW ARCHIVAL VISIBILITY  = all to see inactive rows also
-- Set the parameter ROW ARCHIVAL VISIBILITY  = active to hide inactive rows
-- Issue an insert into ... select * and check that only 3 visible rows are inserted
-- Set the parameter ROW ARCHIVAL VISIBILITY  = all to see inactive rows also
-- Issue an insert into ... select * and check that all the rows are inserted but ORA_ARCHIVE_STATE    is not propagated in inserted rows
-- Disable row archiving in the table and check that column ORA_ARCHIVE_STATE is automatically dropped
-- drop tablespace ilmtbs and user uilm

Implementation :

-- Create test user, tablespace and test table
SQL> conn sys/oracle@em12c:1523/pdb1 as sysdba
sho con_name

CON_NAME
------------------------------
PDB1

SQL> set sqlprompt PDB1>

PDB1>create tablespace ilmtbs datafile '/u02/app/oracle/oradata/cdb1/pdb1/ilmtbs01.dbf' size 1m;
grant connect, resource, dba  to uilm identified by oracle;
alter user uilm default tablespace ilmtbs;

conn uilm/oracle@em12c:1523/pdb1
sho con_name

CON_NAME
------------------------------
PDB1
-- create table with "row archival clause"
PDB1>drop table ilmtab purge;
create table ilmtab (id number, txt char(15)) row archival;
insert into ilmtab values (1, 'one');
insert into ilmtab values (2, 'two');
insert into ilmtab values (3, 'three');
insert into ilmtab values (4, 'four');
insert into ilmtab values (5, 'five');
commit;
-- Note that the table has an additional column ORA_ARCHIVE_STATE automatically created    and has the default value of 0 (indicates that row is active)
PDB1>col ora_archive_state for a20
select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             0
2 two             0
3 three           0
4 four            0
5 five            0
-- Note that this column is not visible when we describe the table or simply issue select * from ...
PDB1>desc ilmtab
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                                 NUMBER
TXT                                                CHAR(15)

PDB1>select * from ilmtab;

ID TXT
---------- ---------------
1 one
2 two
3 three
4 four
5 five
-- Since the column is invisible, let me try and make it visible
-- Note that Since the column is maintained by oracle itself, user can't modify its attributes
PDB1>alter table ilmtab modify (ora_archive_state visible);
alter table ilmtab modify (ora_archive_state visible)
*
ERROR at line 1:
ORA-38398: DDL not allowed on the system ILM column
-- We need to access data dictionary to view the column
-- Note that this column is shown as hidden and has not been generated by user
PDB1>col hidden for a7
col USER_GENERATED for 20
col USER_GENERATED for a20

select TABLE_NAME, COLUMN_NAME, HIDDEN_COLUMN, USER_GENERATED
from user_tab_cols where table_name='ILMTAB';

TABLE_NAME  COLUMN_NAME          HID USER_GENERATED
----------- -------------------- --- --------------------
ILMTAB      ORA_ARCHIVE_STATE    YES NO
ILMTAB      ID                   NO  YES
ILMTAB      TXT                  NO  YES
-- We can make selected rows in the table inactive by setting ORA_ARCHIVE_STATE column to a non zero value.
This can be accomplished using update table... set ORA_ACRHIVE_STATE =
. <non-zero value>
. dbms_ilm.archivestatename(1)

-- Let's update row with id =1 with ORA_ARCHIVE_STATE=2
     and update row with id =2 with dbms_ilm.archivestatename(2)
PDB1>update ilmtab set ora_archive_state=2 where id=1;

update ilmtab set ora_archive_state= dbms_ilm.archivestatename(2) where id=2;
-- Let's check whether updates have been successful and hidden rows are not visible
PDB1>select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
-- The updated rows are not visible!!
-- Quite logical since we have made the rows active and by default only active rows are visible

-- To see inactive rows also, we need to set the parameter ROW ARCHIVAL VISIBILITY  = all at session level
-- Note that the column ORA_ARCHIVE_STATE has been set to 1 for id =2 although we had set it to 2 using
dbms_ilm.archivestatename(2)
PDB1>alter session set ROW ARCHIVAL VISIBILITY  = all;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             2
2 two             1
3 three           0
4 four            0
5 five            0
-- Note that the column ORA_ARCHIVE_STATE has been set to 1 for id =2 although we had set it to 2 using    dbms_ilm.archivestatename(2)

-- Let's find out why
-- Note that The function dbms_ilm.archivestatename(n) returns only two values    0 for n=0 and 1 for  n <> 0
PDB1>col state0 for a8
col state1 for a8
col state2 for a8
col state3 for a8

select dbms_ilm.archivestatename(0) state0 ,dbms_ilm.archivestatename(1) state1,
dbms_ilm.archivestatename(2) state2,dbms_ilm.archivestatename(3) state3  from dual;

STATE0   STATE1   STATE2   STATE3
-------- -------- -------- --------
0        1        1        1
-- In order to make the inactive rows (id=1,2) hidden again, we need to set the parameter ROW ARCHIVAL VISIBILITY  = Active
PDB1>alter session set row archival visibility = active;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
-- Let's issue an insert into ... select *
-- Note that only 3 new rows are visible
PDB1>insert into ilmtab select * from ilmtab;

select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
3 three           0
4 four            0
5 five            0

6 rows selected.
-- I want to check if hidden rows were also inserted
-- Let's check by making  hidden rows visible again
-- Note that only visible rows(id=3,4,5) were inserted
PDB1>alter session set row archival visibility=all;
select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             2
2 two             1
3 three           0
4 four            0
5 five            0
3 three           0
4 four            0
5 five            0

8 rows selected.
-- Let's set row archival visibility = all and then again insert rows from ilmtab
-- Note that all the 8 rows are inserted but ORA_ARCHIVE_STATE ha not been copied    ORA_ARCHIVE_STATE <> 0 in only 2 records (id = 1,2) even now.
PDB1>alter session set row archival visibility=all;
insert into ilmtab select * from ilmtab;
select id, txt, ora_archive_state from ilmtab order by id;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             0
1 one             2
2 two             0
2 two             1
3 three           0
3 three           0
3 three           0
3 three           0
4 four            0
4 four            0
4 four            0
4 four            0
5 five            0
5 five            0
5 five            0
5 five            0

16 rows selected.
-- Disable row level archiving for the table
-- Note that as soon as row archiving is disabled, pseudo column ora_archive_state is dropped automatically
PDB1>alter table ilmtab no row archival;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ERROR at line 1:
ORA-00904: "ORA_ARCHIVE_STATE": invalid identifier

PDB1>col hidden for a7
col USER_GENERATED for 20
col USER_GENERATED for a20

select TABLE_NAME, COLUMN_NAME, HIDDEN_COLUMN, USER_GENERATED
from user_tab_cols where table_name='ILMTAB';

TABLE_NAME  COLUMN_NAME          HID USER_GENERATED
----------- -------------------- --- --------------------
ILMTAB      ID                   NO  YES
ILMTAB      TXT                  NO  YES
Note : Had we created this table using sys, we could not have disabled row archiving .

-- cleanup --
PDB1>conn sys/oracle@em12c:1523/pdb1 as sysdba
drop tablespace ilmtbs including contents and datafiles;
drop user uilm cascade;
References:

http://docs.oracle.com/cd/E16655_01/server.121/e17613/part_lifecycle.htm#VLDBG14154

----------------------------------------------------------------------------------------------------

Oracle 12c Index

----------------------------------------------------------------------------------------------

 




b

Are older releases of the database really unsupported?

articles: 

I see posts on Oracle related forums about various releases (anything that isn't 11.x or 12.x) being "unsupported". This is wrong. Of course you should upgrade any 9i or 10g databases, but you don't have to.

Oracle Corporation's lifetime support policy is documented here,
Lifetime Support Policy
take a look, and you'll see that release 10.2 was in premier support until end July 2010 when it went into extended support. At end July 2013, it goes into sustaining support. Sustaining support will continue indefinitely. Even release 8.1.7 will have sustaining support indefinitely.
So what is sustaining support? That is documented here,
Lifetime support benefits
To summarize, extended support gives you everything you are likely to need. What you do not get is certification against new Oracle products or new third party products (principally, operating systems). But does that matter? I don't think so. For example, release 11.2.0.3 (still in premier support) is not certified against Windows 8, but it works fine.
Sustaining support has a more significant problem: no more patches. Not even patches for security holes, or changes in regulatory requirements. The security patch issue may of course be serious, but regulatory issues are unlikely to matter (this is a database, not a tax management system.) Think about it: 10g has been around for many years. It is pretty well de-bugged by now. If you hit a problem with no work around, you are pretty unlucky. Sustaining support gives you access to technical support, available patches, software, and documentation. That is all most sites will ever need.
Right now, I am working on a 9.2.0.8 database. It cannot be upgraded because the application software is written by a company that does not permit a database upgrade. Why not? Well, the reason may be commercial: they have a replacement product that is supported on newer databases. But that is nothing to do with me. The database works, the software works. Making it work better is a challenge - but that is what a DBA is paid to do. Don't just write it off as "unsupported".
Of course I am not suggesting that users should not upgrade to current releases - but upgrades are a huge project, and can have major implications. Running out dated software is silly, unless you have an irrefutable reason for so doing. The lack of security patches make you vulnerable to data loss. The lack of regulatory patches may make it illegal. The lack of newer facilities will be restricting the utility of the system. You may be losing money by not taking of advantage of changes of newer technology that can better exploit your hardware.
If anyone is looking for consulting support to upgrade their database - my boss will be happy to give you a quote. But I won't refuse to support you in the meantime.
--
John Watson
Oracle Certified Master DBA
http://skillbuilders.com




b

Three impossibilities with partitioned indexes

articles: 

There are three restrictions on indexing and partitioning: a unique index cannot be local non-prefixed; a global non-prefixed index is not possible; a bitmap index cannot be global. Why these limitations? I suspect that they are there to prevent us from doing something idiotic.

This is the table used for all examples that follow:

CREATE TABLE EMP
      (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
       ENAME VARCHAR2(10),
       JOB VARCHAR2(9),
       MGR NUMBER(4),
       HIREDATE DATE,
       SAL NUMBER(7,2),
       COMM NUMBER(7,2),
       DEPTNO NUMBER(2) )
PARTITION BY HASH (EMPNO) PARTITIONS 4;

the usual EMP table, with a partitioning clause appended. It is of course a contrived example. Perhaps I am recruiting so many employees concurrently that a non-partitioned table has problems with buffer contention that can be solved only with hash partitioning.

Why can't I have a local non-prefixed unique index?
A local non-unique index is no problem, but unique is not possible:

orclz> create index enamei on emp(ename) local;

Index created.

orclz> drop index enamei;

Index dropped.

orclz> create unique index enamei on emp(ename) local;
create unique index enamei on emp(ename) local
                              *
ERROR at line 1:
ORA-14039: partitioning columns must form a subset of key columns of a UNIQUE index

You cannot get a around the problem by separating the index from the constraint (which is always good practice):

orclz> create index enamei on emp(ename) local;

Index created.

orclz> alter table emp add constraint euk unique (ename);
alter table emp add constraint euk unique (ename)
*
ERROR at line 1:
ORA-01408: such column list already indexed


orclz>

So what is the issue? Clearly it is not a technical limitation. But if it were possible, consder the implications for performance. When inserting a row, a unique index (or a non-unique index enforcing a unique constraint) must be searched to see if the key value already exists. For my little four partition table, that would mean four index searches: one of each local index partition. Well, OK. But what if the table were range partitioned into a thousand partitions? Then every insert would have to make a thousand index lookups. This would be unbelievably slow. By restricting unique indexes to global or local prefixed, Uncle Oracle is ensuring that we cannot create such an awful situation.

Why can't I have a global non-prefixed index?
Well, why would you want one? In my example, perhaps you want a global index on deptno, partitioned by mgr. But you can't do it:

orclz> create index deptnoi on emp(deptno) global partition by hash(mgr) partitions 4;
create index deptnoi on emp(deptno) global partition by hash(mgr) partitions 4
                                                                *
ERROR at line 1:
ORA-14038: GLOBAL partitioned index must be prefixed


orclz>
This index, if it were possible, might assist a query with an equality predicate on mgr and a range predicate on deptno: prune off all the non-relevant mgr partitions, then a range scan. But exactly the same effect would be achieved by using global nonpartitioned concatenated index on mgr and deptno. If the query had only deptno in the predicate, it woud have to search each partition of the putative global partitioned index, a process which would be just about identical to a skip scan of the nonpartitioned index. And of course the concatenated index could be globally partitioned - on mgr. So there you have it: a global non-prefixed index would give you nothing that is not available in other ways.

Why can't I have a global partitioned bitmap index?
This came up on the Oracle forums recently, https://forums.oracle.com/thread/2575623
Global indexes must be prefixed. Bearing that in mind, the question needs to be re-phrased: why would anyone ever want a prefixed partitioned bitmap index? Something like this:

orclz>
orclz> create bitmap index bmi on emp(deptno) global partition by hash(deptno) partitions 4;
create bitmap index bmi on emp(deptno) global partition by hash(deptno) partitions 4
                                       *
ERROR at line 1:
ORA-25113: GLOBAL may not be used with a bitmap index

orclz>

If this were possible, what would it give you? Nothing. You would not get the usual benefit of reducing contention for concurrent inserts, because of the need to lock entire blocks of a bitmap index (and therefore ranges of rows) when doing DML. Range partitioning a bitmap index would be ludicrous, because of the need to use equality predicates to get real value from bitmaps. Even with hash partitions, you would not get any benefit from partition pruning, because using equality predicates on a bitmap index in effect prunes the index already: that is what a bitmap index is for. So it seems to me that a globally partitioned bitmap index would deliver no benefit, while adding complexity and problems of index maintenance. So I suspect that, once again, Uncle Oracle is protecting us from ourselves.

Is there a technology limitation?
I am of course open to correction, but I cannot see a technology limitation that enforces any of these three impossibilities. I'm sure they are all technically possible. But Oracle has decided that, for our own good, they will never be implemented.
--
John Watson
Oracle Certified Master DBA
http://skillbuilders.com




b

Inverted tables: an alternative to relational structures

articles: 

The inverted table format can deliver fast and flexible query capabilities, but is not widely used. ADABAS is probably the most successful implementation, but how often do you see that nowadays? Following is a description of how to implement inverted structures within a relational database. All code run on Oracle Database 12c, release 12.1.0.1.

Consider this table and a few rows, that describe the contents of my larder:

create table food(id number,capacity varchar2(10),container varchar2(10),item varchar2(10));
insert into food values(1,'large','bag','potatoes');
insert into food values(2,'small','box','carrots');
insert into food values(3,'medium','tin','peas');
insert into food values(4,'large','box','potatoes');
insert into food values(5,'small','tin','carrots');
insert into food values(6,'medium','bag','peas');
insert into food values(7,'large','tin','potatoes');
insert into food values(8,'small','bag','carrots');
insert into food values(9,'medium','box','peas');

The queries I run against the table might be "how many large boxes have I?" or "give me all the potatoes, I don't care about how they are packed". The idea is that I do not know in advance what columns I will be using in my predicate: it could be any combination. This is a common issue in a data warehouse.
So how do I index the table to satisfy any possible query? Two obvious possibilities:
First, build an index on each column, and the optimizer can perform an index_combine operation on whatever columns happen to be listed in the predicate. But that means indexing every column - and the table might have hundreds of columns. No way can I do that.
Second, build a concatenated index across all the columns: in effect, use an IOT. That will give me range scan access if any of the predicated columns are in the leading edge of the index key followed by filtering on the rest of the predicate. Or if the predicate does not include the leading column(s), I can get skip scan access and filter. But this is pretty useless, too: there will be wildly divergent performance depending on the predicate.
The answer is to invert the table:
create table inverted(colname varchar2(10),colvalue varchar2(10),id number);
insert into inverted select 'capacity',capacity,id from food;
insert into inverted select 'container',container,id from food;
insert into inverted select 'item',item,id from food;

Now just one index on each table can satisfy all queries:
create index food_i on food(id);
create index inverted_i on inverted(colname,colvalue);

To retrieve all the large boxes:
orclz> set autotrace on explain
orclz> select * from food where id in
  2  (select id from inverted where colname='capacity' and colvalue='large'
  3  intersect
  4  select id from inverted where colname='container' and colvalue='box');

        ID CAPACITY   CONTAINER  ITEM
---------- ---------- ---------- ----------
         4 large      box        potatoes


Execution Plan
----------------------------------------------------------
Plan hash value: 1945359172

---------------------------------------------------------------------------------
| Id  | Operation                                | Name       | Rows  | Bytes | C
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |            |     3 |   141 |
|   1 |  MERGE JOIN                              |            |     3 |   141 |
|   2 |   TABLE ACCESS BY INDEX ROWID            | FOOD       |     9 |   306 |
|   3 |    INDEX FULL SCAN                       | FOOD_I     |     9 |       |
|*  4 |   SORT JOIN                              |            |     3 |    39 |
|   5 |    VIEW                                  | VW_NSO_1   |     3 |    39 |
|   6 |     INTERSECTION                         |            |       |       |
|   7 |      SORT UNIQUE                         |            |     3 |    81 |
|   8 |       TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|*  9 |        INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
|  10 |      SORT UNIQUE                         |            |     3 |    81 |
|  11 |       TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|* 12 |        INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
---------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("ID"="ID")
       filter("ID"="ID")
   9 - access("COLNAME"='capacity' AND "COLVALUE"='large')
  12 - access("COLNAME"='container' AND "COLVALUE"='box')

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)

orclz>

Or all the potatoes:
orclz> select * from food where id in
  2  (select id from inverted where colname='item' and colvalue='potatoes');

        ID CAPACITY   CONTAINER  ITEM
---------- ---------- ---------- ----------
         1 large      bag        potatoes
         4 large      box        potatoes
         7 large      tin        potatoes


Execution Plan
----------------------------------------------------------
Plan hash value: 762525239

---------------------------------------------------------------------------------
| Id  | Operation                              | Name       | Rows  | Bytes | Cos
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |            |     3 |   183 |
|   1 |  NESTED LOOPS                          |            |       |       |
|   2 |   NESTED LOOPS                         |            |     3 |   183 |
|   3 |    SORT UNIQUE                         |            |     3 |    81 |
|   4 |     TABLE ACCESS BY INDEX ROWID BATCHED| INVERTED   |     3 |    81 |
|*  5 |      INDEX RANGE SCAN                  | INVERTED_I |     3 |       |
|*  6 |    INDEX RANGE SCAN                    | FOOD_I     |     1 |       |
|   7 |   TABLE ACCESS BY INDEX ROWID          | FOOD       |     1 |    34 |
---------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("COLNAME"='item' AND "COLVALUE"='potatoes')
   6 - access("ID"="ID")

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
   - this is an adaptive plan

orclz>

Of course, consideration needs to be given to handling more complex boolean expressions; maintaining the inversion is going to take resources; and a query generator has to construct the inversion code and re-write the queries. But In principle, this structure can deliver indexed access for unpredictable predicates of any number of any columns, with no separate filtering operation. Can you do that with a normalized star schema? I don't think so.
I hope this little thought experiment has stimulated the little grey cells, and made the point that relational structures are not always optimal for all problems.
--
John Watson
Oracle Certified Master DBA
http://skillbuilders.com




b

Right Here Baby... HNT

This weeks HNT offering might not have the exact meaning that first comes to your mind.
You may interpret it as saying... "aim that thing right here baby" or " yes that's right, I swallow... interested?" But trust me, you would be dead wrong, ( at least at the moment that is.)
No, what it does say is " I bit my fucking tongue this afternoon and the damned thing is still swollen and it hurts."
My dear hubby finds the photo's erotic... which is all fine and good as long as he realizes that blow jobs are out of the question for a couple of days...
Click the button to learn about HNT






b

A Scrub Oak ... HNT

The weather has been fantastic around here lately. Tuesday, we decided to take a loan out for gas and take a ride up to the foothills. Rick took this picture of me and the twins on this great little trail that we found. When we got home he pointed out that I was standing in either a bunch of scrub oak or poison oak..... It sure would have been nice of him to point that out to me at the time... Happy HNT!

Click the button to learn more
about Half-Nekkid Thursday






b

Boobs & Brains ...

Believe it or not, according to the International High IQ Society, not only do I have boobs but brains too!
Last night, I took a couple of their IQ tests and I was pleasantly surprised by the results. Apparently, my tits aren't the only well developed lobes on me.
I was already aware that I wasn't a moron, the scores I received on my SATs and my GRE proved that. But if this test is anywhere near accurate, then a score of 151 puts me in the 99+ percentile.
I tried both of their tests and got a 151 on each of them. And I did this at the end of a very long day and under the influence of the better part of a bottle of wine...
I had both my sister and a friend give it a try this morning and neither one of them were able to score that high.
My sister didn't do to bad at all. She got a 126. As for my friends score... uhm... well, the less said about that the better.
If you want to give the test a try, then Click Here.
If you do take it, let me know how you did. I'd be interested in your results.
Who knows... Maybe all these years of getting my brains fucked out hasn't left any permanent damage after all...






b

We're Back !!!


After a myriad of both minor and major problems that have kept me from my blog, I'm back. To be more accurate, we're back. After all, what would Tits n Toast be with out the twins? So with out any further ado, excuses or complicated explanations, let the ramblings and photos, which reflect my daily life, continue...







b

Happy Fucking Birthday Time ...

There was a time that I really looked forward to my birthday. When I turned 16, I was ecstatic because I was able to get my drivers license. When I became 18, I was finally considered an adult... for the most part. And on my 21st birthday, I was able to " legally " get into clubs and bars. Alas, those glorious days of positive milestones are gone... long gone!
Now birthdays bring with them more negative than positive connotation's.
This years birthday is a good example. I'm about to become a member of the "Forty Something Crowd"... You know, that group of people who aren't really that old but their not really that young either.
Last year I turned forty. It really wasn't that big of deal. After all, just a year before I had been in my thirties.
Forty Something, on the other hand, has a totally different feel. I'm entering into that obscure age zone where the really crazy shit starts to happen. MILFs start transforming into GILFs. The word cougar takes on a whole new meaning. Hair color goes from fashion choice to necessity. Visions of boob jobs dance in your head. And the term " Her Age" starts being inserted into the most positive statements about you, i.e. "She's fucking hot... for her age".
No, I'm not overly thrilled about my 41st birthday, but I suppose that I'll get used to it. ARGGGGGGGGG ...





b

Bosbaan Hengelsteun van € 4,95 nu voor maar € 3,75

Bosbaan Hengelsteun Merk: Livebait Inhoud: 2 stuks Deze bosbaan hengelsteunen van Livebait zijn alom bekend. Ze zijn erg gemakkelijk in gebruik. De bosbaan hengelsteunen zijn voorzien van scherpe punten aan de onderkant, hierdoor kunt u ze gemakkelijk in de grond plaatsen. De bosbaan hengelsteunen hebben een lengte van 50 centimeter.




b

7 Volt elektrische handschoenen van Gerbing

7V VERWARMDE HANDSCHOENEN Of je nu gaat skiën, paardrijden, hond uitlaten, fietsen of wat dan ook, het is nooit leuk als je het koud hebt. De handen zullen het eerste koud worden. Hiervoor hebben wij verschillende 7 volt verwarmde handschoenen ontwikkeld waardoor je met plezier de dingen doet die je leuk vindt. Ook mensen met een minder goede doorbloeding zullen merken dat onze verwarmde handschoenen een uitkomst zijn. Alle Gerbing 7 volt verwarmde handschoenen en andere kledingstukken uit het 7 volt assortiment worden standaard geleverd met 2 oplaadbare batterijen. Dat wil zeggen dat in tegenstelling tot onze 12 volt elektrisch verwarmde handschoenen, die standaard aangesloten worden op een motorvoertuigaccu, de 7 volt handschoenen alleen maar autonoom gedragen kunnen worden. Net als onze 12 volt verwarmde handschoenen zijn de 7 volt verwarmde handschoenen voorzien van het gepatenteerde micro wire (staaldraad). Dit draad is heel sterk en erg flexibel. Voor alle doeleinden heeft Gerbing handschoenen: S-7 verwarmde textiel handschoenen zijn te gebruiken voor o.a.skiën en fietsen vanwege de extra verstevigingen aan de binnenkant van de hand. De lederen O-7 verwarmde handschoenen en de H-7 verwarmde handschoenen zijn weer te gebruiken voor diverse outdoor activiteiten. Zo is de H-7 handschoenen speciaal gemaakt voor paardrijden en jagen. Maar vanwege zijn sjieke uiterlijk kan men ook leeker verwarmt rijden in een cabrio. De M-7 verwarmde wanten maken de collectie compleet. Deze textiele wanten zijn verkrijgbaar in drie maten en zijn voor heel veel activiteiten geschikt. Al deze 7 volt verwarmde handschoenen worden geleverd met een 7 volt batterij kitje (B7V-2500 KIT). Deze batterijen worden ook voor de 7 volt verwarmde jassen, 7 volt verwarmde sokken en alle overige 7 volt producten. De batterijen zijn eenvoudig te bedienen en zorgen voor uren plezier met warme handen.




b

12 Volt verwarmde Handschoenen van Gerbing

Gerbing biedt een breed scala aan 12 volt verwarmde handschoenen aan. Deze zijn eenvoudig aan te sluiten op een 12 volt accu van een voertuig door middel van de accu-aansluitkabel. Ook zijn ze aan te sluiten op onze 12 volt draagbare batterijen waardoor onze verwarmde handschoenen ook gebruikt kunnen worden voor willekeurige outdoor activiteiten. Wij gebruiken de beste verwarmingstechnologie die er is en daardoor kunnen wij ook een levenslange garantie geven op de verwarming. Door middel van het hoogwaardige Microwire ® verwarmingssysteem, waarop patent is aangevraagd, zijn het de warmste handschoenen die ooit ontwikkeld zijn. Alle 12 volt verwarmde handschoenen worden geleverd met een accu-aansluitkabel en een in-line junior controller om de warmte van de handschoenen te regelen. Gerbing heeft de volgende typen 12 volt handschoenen in het assortiment: T-12 verwarmde handschoen: Een leren, waterdichte motorhandschoen met bescherming en een mogelijkheid om kleine batterijen te plaatsen (B12V-1400). G-12 verwarmde handschoen: Een basic leren, waterdichte motorhandschoen met een kortere schacht die. De G-12 heeft niet de mogelijkheid om gebruikt te worden in combinatie met kleine batterijen die in de schacht geplaatst kunnen worden. XR-12 verwarmde handschoen: Een leren waterdichte handschoen met extra knokkelbescherming. Net als de T-12 is deze handschoen ook te gebruiken met kleine batterijen. L-12 verwarmde handschoen. Een dunne lycra handschoen die veel gebruikt wordt bij het ultra light vliegen. Deze kan aangesloten worden op de accu van een voertuig maar kan ook aangesloten worden op een draagbare 12 volt batterij zoals de B12V-5200 of de B12V-8000. TEX-12 vewarmde handschoen: Een iets dikkere textiele handschoenen met wat extra gripprotectie aan de binnenkant van de handschoen. Deze kan net als de L-12 aangesloten worden op de accu van een voertuig of op de B12V-5200 of de B12V-8000. De TEX-12 is niet geschikt voor op de motor maar is geweldig voor de brommer, scooter of op de fiets. Al onze 12 volt verwarmde handschoenen zijn te combineren met met al onze andere 12 volt producten zoals de 12 volt verwarmde jas, 12 volt verwarmde broek en 12 volt verwarmde sokken




b

Elektrsich verwarmd binnenvest 12 Volt Gerbing

7 VOLT VERWARMDE JAS De meeste mensen zullen in eerste instantie denken dat de verwarmde handschoenen en verwarmde sokken de beste producten zijn! Het is echter zo dat op het moment dat handen en voeten koud worden dat veroorzaakt wordt door een koude romp. Op het moment dat de vitale organen te koud worden zal er extra warmte uit de handen en de voeten gehaald worden met als consequentie dat de handen en voeten als eerste koud worden. Daarom worden er ook veel meer 12 volt verwarmde handschoenen en 7 volt verwarmde handschoenen verkocht. Maar eigenlijk zijn onze verwarmde jassen functioneler. Nadat Gerbing een 12 volt verwarmde jas op de markt heeft gebracht voor de motorrijder zijn wij uiteraard ook begonnen met een verwarmde jas te ontwikkelen voor mensen die last hebben van kou bij willekeurige outdoor activiteiten. Dit heeft geresulteerd in een 7 volt verwarmde jas met afritsbare mouwen. Deze kan dus ook als bodywarmer gedragen worden. Deze jas heeft vier elementen. Twee elementen op de borst, één op rug en één in de kraag. Deze jassen worden geleverd met een 7 volt batterij kitje (B7V-2500 KIT) bestaande uit twee 7 volt batterijen met een ingebouwde temperatuurregelaar en één dubbele lader. Dit zijn dezelfde batterijen die gebruikt worden voor al onze 7 volt verwarmde handschoenen, 7 volt verwarmde sokken en alle overige 7 volt producten. De batterijen zijn eenvoudig te bedienen. Ze zijn voorzien van een powerknop en daarmee worden de batterijen aangezet en men kan tevens met deze knop de temperatuur instellen en de batterijen uitzetten. De verwarmde jas is verkrijgbaar in de maten XXS tot en met XXXL en zijn voor zowel mannen als vrouwen. De kleur is zwart. Deze 7 volt verwarmde jas draag je over één laag kleding en onder de gewone jas.




b

Gerbing elektrsich verwamde 7 Volt sokken.

7V SOKKEN Gerbing staat bekend om zijn verwarmde handschoenen. Zowel de 12 volt verwarmde handschoenen als de 7 volt verwarmde handschoenen zijn algemeen bekend. Sinds kort hebben we echter ook 7 volt verwarmde sokken. Nadat we eerder al de 12 volt verwarmde sokken hebben geïntroduceerd is het nu de beurt aan de 7 volt sokken. De 12 volt sokken moeten aangesloten worden op een accu van een voertuig met behulp van een accukabel. Hierdoor konden mensen die ook bij andere activiteiten last hadden van koude voeten geen gebruik maken van deze geweldige uitvinding. Dankzij de kleine en krachtige 7 volt batterijen met ingebouwde temperatuurregelaar (B7V-2500) is het nu ook mogelijk om bij alle activiteiten er warmpjes bij te lopen. Men kan zelf de gewenste temperatuur instellen door middel van het indrukken van één knop. Dit is de power knop warmee de batterijen ook aangezet kunnen worden. De batterijen gaan op de hoogste temperatuur ongeveer twee tot drie uur mee en op de laagste stand ongeveer zes tot acht uur. Het gepatenteerde micro wire (staaldraad) dat verwerkt is in de sokken is niet voelbaar en verwarmt de hele onderkant van de voeten. De 7 volt verwarmde sokken worden geleverd met een 7 volt batterij KIT (B7V-2500 KIT), deze bestaat uit twee batterijen en één dubbele lader. De batterijen kunnen honderden keren opgeladen worden. De batterijen worden aangesloten op de sokken en door middel van een speciaal ontworpen kuitbandje kun je de batterijen mooi wegwerken. Dankzij deze sokken zullen veel mensen weer kunnen genieten van diverse activiteiten in de buitenlucht. De tijd van koude voeten en bevroren tenen zijn voorbij dankzij de 7 volt verwarmde sokken van Gerbing.




b

Strike Wire Fluorocarbon

Strike Wire Fluorocarbon is echte Japanse fluorocarbon voor het maken van onderlijnen. Zeer soepel, super sterk bestand tegen schuren.




b

Reins 1,2" Rockvibe Shad

De Rockvibe Shad is hét succesnummer van Reins. Gevist met dropshot, een loodkopje (Aji-Meba Jig Head of Platon !!), texas rig, carolina rig of op een jigkop vangt men op zowel zoet als zoutwater.




b

Strike Pro Buster II Deep Crankbait

De Buster II Deep Crankbait is 12 cm lang en heeft uiteraard weer de bekende ratels. Het is het perfecte kunstaas met een multifunctionele actie. Door de 3 bevestigingsogen kunt u variëren met dieptes van 2, 4 en 6 meter. U hebt dus controle om met 1 type plug op verschillende dieptes te vissen en de vissen te vangen ongeacht de waterlaag waar ze zich bevinden. De Buster II Deep Crankbait is suspending, wat betekent dat hij langer in de “strike zone” blijft hangen!




b

viskoffer engelse continental box

engelse continental box. oersterk en degelijk.is gebruikt maar nog wel goed.compleet met aasbak hengelsteun (links en rechts te plaatsen) en draagriem en paraplu steun aan achterzijde bovenkant bestaat uit 3 laden twee aan de voorkant en een aan de zijkant en onder het kussen is ruimte voor bv tuigen.onderbak kan worden gebruikt als koelboxalu poten zijn in hoogte verstelbaarbox blijft zelfs drijvenbovenkant is afneembaar en te gebruiken op een techniworks feederplateaui.v.m. de omvang alleen ophalen




b

engelse zitkoffer in combinatie met een techniworks alu feed

te koop compleete engelse zitkoffer in combinatie met een techniworks alu feederplateau.koffer is zoals u kunt zien op de fotos nog in goede staatvoorzien van twee schuiven aan de voorkanten een aan de zijkantonder het deksel is plaats voor vistuigen en in het zwarte gedeelte.de koffer is verder voorzien van verstelbare potenhengelsteun links of rechts aastafel/voerbak paraplusteun aan de achterzijdeen onderbak is dubbelwandig te gebruiken als koelbox.en in combinatie met het bovenste gedeelte van de koffer en het plateau heeft u een heerlijk zit station om te feederen maar ook om met de stok te vissen dus van alles mogelijk.twee verstelbare hengelsteunenverstelbere feeder steun en een grootte afsluitbare aasbak.interesse? doe een rieel bod en hij is voor jou.wegens omvang ophalen.




b

silstar 3084-950cm lengte 8 delig carbon insteekhengel compe

competition carbon insteekhengel silstar 950 cm lengte 8 delig nieuwstaatin bijbehorende originele hengelhoes 100% geen haarscheurtjes e.dverkeerd werkelijk nog in nieuwstaat helemaal compleet met doppen en ogendit is een zeer dure carbon hengelvissport hengelsport zeevissen karpervissen wit vis vereniging




b

vaste hengel colmic 6002 11.5m brasem/kanaal

hengel colmic 6002 1150minclusief:mini deel dat past om 11.5m en 10m en 8m te vissenmini deel om 6.5m en 5m te vissen2 topsetten 4 delen em-95 van 4.6m1 topset 2 delen super match van 3m1holdall race foudraal om hengels in te bewarentubes voor stok en topsettennieuwprijs rond de 1400 euro!!zeer lichte hengel ideaal voor kanaal en brasemvisserij. is nog in nieuwstaat. inclusief foedraal en beschermtubes.




b

Ancora su bozzetti di carta e prototipi

Dopo “Progettare con la carta” in cui presento il metodo che uso per creare i prototipi con l’aiuto di bozzetti di carta, sono stati pubblicati in rete alcuni articoli che approfondiscono l’argomento. The Messy Art Of UX Sketching di Smashing Magazine … Continua a leggere

L'articolo Ancora su bozzetti di carta e prototipi proviene da Fucinaweb.




b

Progettare applicazioni mobile

Non si ferma la pubblicazione nel blog Internet della BBC, già tema di un mio precedente intervento, di articoli che spiegano nel dettaglio il processo di progettazione di siti e servizi. Questa volta tocca all’applicazione iPhone del player che permette … Continua a leggere

L'articolo Progettare applicazioni mobile proviene da Fucinaweb.




b

All’estero sono più bravi

All’estero sono più bravi. O almeno così la pensano molti clienti italiani alla prese con un progetto web. Clienti che preferiscono rivolgersi fuori dai confini e molto spesso fuori Europa in cerca di una qualità che le nostre agenzie non … Continua a leggere

L'articolo All’estero sono più bravi proviene da Fucinaweb.




b

I bozzetti in aiuto alla comunicazione di progetto

Anche quest’anno (dopo il 2009, 2010 e 2011) ho partecipato come speaker a Better Software. Questa volta ho presentato “Carta, penna e calamaio. I bozzetti in aiuto alla comunicazione di progetto”. Molte incomprensioni in fase progettuale derivano dalla mancanza di un … Continua a leggere

L'articolo I bozzetti in aiuto alla comunicazione di progetto proviene da Fucinaweb.




b

NBA DFS: 3/21 Injury Update

The Fantasy Executive provides you with an NBA DFS injury update to help you cash in on DraftKings and FanDuel!




b

Scouting The NBA DFS - Tuesday, March 22 (Premium)

A good-looking 4-game slate of NBA action tonight, and the Daily DFS Breakdown will help you cash on DraftKings and FanDuel




b

Scouting The NBA DFS - Tuesday, March 22 (Free Preview)

Fantasy Basketball Expert Nate Weitzer will help you cash with your DFS NBA lineups. This is a free preview of his PREMIUM NBA DFS Rundown!




b

NBA DFS Projections - March 22 (Free Preview)

Check out a preview of our daily NBA DFS projections in the forums, part of a new DFS package exclusively created for #FullTimeArmy!




b

Chicago Bears sign restricted free agent tight end Josh Hill to an offer sheet

The Bears have signed restricted free agent tight end Josh Hill. The New Orleans Saints have five days to match the offer.




b

Minor League Baseball gets the fantasy treatment with launch of Futures Fantasy Baseball

Futures Fantasy Baseball ? a new fantasy baseball site for the minor leagues ? aims to grow the business of Minor League Baseball while capitalizing on the interest of fans in baseball?s next generation of superstars.




b

Need to Know Players: Tampa Bay Rays

Dr. Roto reveals two Tampa Bay Rays to look closely at in your 2016 Fantasy Baseball draft!