<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/6.9.7-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>BigSoft Limited</title>
		<link>https://www.bigsoft.co.uk/</link>
		<atom:link rel="self" type="application/rss+xml" href="https://www.bigsoft.co.uk/?tempskin=_rss2" />
		<description>Professional developer available for hire</description>
		<language>en-GB</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=6.9.7-stable"/>
		<ttl>60</ttl>
				<item>
			<title>Google</title>
			<link>https://www.bigsoft.co.uk/work/google-cornerstone</link>
			<pubDate>Sat, 01 Jul 2023 09:11:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Work</category>			<guid isPermaLink="false">648@https://www.bigsoft.co.uk/</guid>
						<description>&lt;p&gt;Multinational teams from across Europe and India. Software Engineer at Google, moving mainframe financial applications to the cloud.&lt;/p&gt;
&lt;p&gt;The job involved building and testing the company product (&quot;Converter&quot;) which took PL/1 modules (for the mainframe) with embedded SQL and converted them into Java. The Java modules would then run inside a Java Virtual Machine supported by a set of in-house built Java support libraries (&quot;TechSupport&quot;) which handled the annotations, mappings, database access, etc in the generated code.  We were converting the last 3 major versions of Allianz Business System (&quot;ABS&quot;) and the subsidiaries&#039; specific overrides. I worked in the TechSupport team.&lt;/p&gt;
&lt;p&gt;Day to day this meant running the Converter on the ABS code, modified with subsidiary code and running it through the simulator. This ran the tests in a VirtualBox environment and compared the results to the same run using the original PL/1 compiled modules instead. The PL/1 code was 500K to 11M LOCs depending on subsiduary, 60 years old and had had thousands of developers working on it over the years using many different styles, syntaxes and dialects of PL/1. As the converter came across a new scenario it would produce: invalid code that did not compile, code which compiled but crashed at runtime, compiled but produced the wrong results or code that was not compatible with the current version of TechSupport. We had to find the problem code, read the corresponding PL/1 code and work out what the correct Java should be and feed that back to the developers of the converter or update TechSupport ourselves. If the problem could be fixed by applying a patch to the PL/1 source pre-converter or a patch to the Java source post-converter then an assessment to determine the priority of adding it to the converter took place. We all got a nice feeling when we upgraded the converter as it meant we could drop a set of patches as maintaining all the patches as code shifted around was a bit of a nightmare! The goal was a Converter requiring no patches which converted all the code and produced the same results as the PL/1 run.&lt;/p&gt;
&lt;p&gt;The process of checking the code was very time consuming. When I arrived it took about 12 hours to do 1 complete test run. By the time the project ended I had re-engineered the process down to taking only 1.5 hours by distributing the work across several VirtualBox nodes, using chained Jenkins tasks and inventing a branching strategy which allowed us to deal with differentials of changes when determining which task to run next.&lt;/p&gt;
&lt;p&gt;The nature of the project meant that there was a lot of manually inspecting PL/1 source of different versions to see why the converter was no longer able to convert that module. There was an equal number of inspections that would happen on the Java side too as the converted code moved around. I wrote a side project using ExpressJs and ReactJs in order to simplify this process. Users could run the application locally and point it at the directories containing the different versions. It was more than just a diff application as it had different ways of searching for files, allowed bookmarks and could compare different subsidiary subfolders in the 2 main directories.&lt;/p&gt;
&lt;p&gt;There were dependencies between the Converter version, TechSupport version and customer code versions so we needed to be very sure about our versioning, release procedures and documentation. I used Japicmp to ensure our semantic version numbers were being adhered to. The release notes had to contain the state-of-play i.e. which bugs had been fixed since the last version. I utilised GitLab APIs to query GitLab bug/milestone/etc information to do this and wrote a lot of smaller scripts to parse result files to build the final release documentation. &lt;/p&gt;
&lt;p&gt;During the project I became the go-to guy for questions about Git and so when we had to split a 10GB repository into smaller pieces, remove directories of binaries that should never have been checked in while retaining all the history then everyone volunteered me for that job ;)&lt;/p&gt;
&lt;p&gt;The project had expanded a lot since I started. We now had a Git repository for TechSupport, a different Git repository for each subsidiary, a host of versions which needed to be managed, our internal jFrog repository (that I managed), external jars released by the customer on an adhoc basis, peripheral software for generating release documentation and dealing with VirtualBox snapshots. We needed a new way of managing and releasing our code. I was in charge of defining and documenting a GitFlow which was specific for our set of projects. I produced detailed documentation of different use cases at pinnacle points in the project workflow. These described with diagrams how to interact with the source controller, when and where to create labels, branches and how they should be named. Workflow use cases went from what to do after you assign a bug to yourself, knowing where to branch from and what to call your branch in a simple situation. In a more complicated situation, creating a hotfix for TechSupport for just one subsidiary and ensuring that after each further release those hotfix patches could still be reapplied to make a tailored customer version to accompany each &#039;normal&#039; version, until just time that we could upgrade all the customers on to the new major version.&lt;/p&gt;
&lt;p&gt;I had demonstrated that my knowledge base was extensive and covered a lot of different and distinct technologies. As a result people started to invite me on to projects that weren&#039;t really anything to do with the TechSupport side of things. These included fixing an AngularJs program that someone had written ages ago for the customer but had left the company, re-writing the VirtualBox API layer to control taking snapshots, creating a JNDI module to interact with binary code, adding basic authentication to another webapp, noticing 3rd party jars had been updated, pulling them into our jFrog and updating settings files so that things were automatically upgraded, obfuscating the deliverables, etc.&lt;/p&gt;
&lt;p&gt;There was quite a high churn of people on the project and so I often found myself mentoring new people and bringing them up to speed. At this point the Converter was finished enough that no more work was going to be done on it and it moved from a development project to a maintenance project at which point everyone was let go except for me. I was kept on for a little bit longer to handover to the maintenance team as I was the only person left from the original project and the only person who knew and understood the decisions we made at the beginning and why we made them. I imparted this knowledge on to the maintainance team and answered their questions about the history of the project.&lt;/p&gt;
&lt;p&gt;I like computer art and so for fun I produced a set of graphviz diagrams to represent the nature of the data being used on the project - because that is fun for me :) In this case I graphed the interaction between all the modules i.e. which modules called which other modules. When I presented my findings at Friday Fun it showed that the customer was trying to get us to convert 2 source code bases for the price of one! It went quiet for a bit then suddenly there was a load more money from the customer!&lt;/p&gt;
&lt;p&gt;Friday Fun was something I invented as a bit of fun after the Friday meeting. I demonstrated my art and the support applications I&#039;d written and other people did things that they were passionate about, not necessarily about computing, just anything they thought would be fun. I&#039;ve heard from one of my ex-colleagues that he set up Friday Fun at the company he worked at after this project :)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Languages&lt;/strong&gt;: Spring Framework/Java, Maven/Gradle, Tomcat, Japicmp, Microfocus/PL1/JCL, scripting in bash, python, Node, NextJs, React&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Platforms&lt;/strong&gt;: Google Cloud Platform, JFrog admin, VirtualBox, Linux, RedHat, Windows 10, MSYS2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source controller&lt;/strong&gt;: Gitlab+notifications/triggers, Git.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation&lt;/strong&gt;: Jenkins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Press&lt;/strong&gt;: &lt;a href=&quot;https://cloud.google.com/blog/topics/inside-google-cloud/helping-customers-migrate-their-mainframe-workloads-to-google-cloud&quot; class=&quot;extlink&quot; target=&quot;_new&quot;&gt;Google Helping customers migrate their mainframe workloads to google cloud&lt;/a&gt; ; &lt;a href=&quot;https://www.cio.com/article/479654/examining-allianz-technologys-decision-to-replatform.html&quot; class=&quot;extlink&quot; target=&quot;_new&quot;&gt;Examining Allianz Technologys Decision to Replatform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/work/google-cornerstone&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Multinational teams from across Europe and India. Software Engineer at Google, moving mainframe financial applications to the cloud.</p>
<p>The job involved building and testing the company product ("Converter") which took PL/1 modules (for the mainframe) with embedded SQL and converted them into Java. The Java modules would then run inside a Java Virtual Machine supported by a set of in-house built Java support libraries ("TechSupport") which handled the annotations, mappings, database access, etc in the generated code.  We were converting the last 3 major versions of Allianz Business System ("ABS") and the subsidiaries' specific overrides. I worked in the TechSupport team.</p>
<p>Day to day this meant running the Converter on the ABS code, modified with subsidiary code and running it through the simulator. This ran the tests in a VirtualBox environment and compared the results to the same run using the original PL/1 compiled modules instead. The PL/1 code was 500K to 11M LOCs depending on subsiduary, 60 years old and had had thousands of developers working on it over the years using many different styles, syntaxes and dialects of PL/1. As the converter came across a new scenario it would produce: invalid code that did not compile, code which compiled but crashed at runtime, compiled but produced the wrong results or code that was not compatible with the current version of TechSupport. We had to find the problem code, read the corresponding PL/1 code and work out what the correct Java should be and feed that back to the developers of the converter or update TechSupport ourselves. If the problem could be fixed by applying a patch to the PL/1 source pre-converter or a patch to the Java source post-converter then an assessment to determine the priority of adding it to the converter took place. We all got a nice feeling when we upgraded the converter as it meant we could drop a set of patches as maintaining all the patches as code shifted around was a bit of a nightmare! The goal was a Converter requiring no patches which converted all the code and produced the same results as the PL/1 run.</p>
<p>The process of checking the code was very time consuming. When I arrived it took about 12 hours to do 1 complete test run. By the time the project ended I had re-engineered the process down to taking only 1.5 hours by distributing the work across several VirtualBox nodes, using chained Jenkins tasks and inventing a branching strategy which allowed us to deal with differentials of changes when determining which task to run next.</p>
<p>The nature of the project meant that there was a lot of manually inspecting PL/1 source of different versions to see why the converter was no longer able to convert that module. There was an equal number of inspections that would happen on the Java side too as the converted code moved around. I wrote a side project using ExpressJs and ReactJs in order to simplify this process. Users could run the application locally and point it at the directories containing the different versions. It was more than just a diff application as it had different ways of searching for files, allowed bookmarks and could compare different subsidiary subfolders in the 2 main directories.</p>
<p>There were dependencies between the Converter version, TechSupport version and customer code versions so we needed to be very sure about our versioning, release procedures and documentation. I used Japicmp to ensure our semantic version numbers were being adhered to. The release notes had to contain the state-of-play i.e. which bugs had been fixed since the last version. I utilised GitLab APIs to query GitLab bug/milestone/etc information to do this and wrote a lot of smaller scripts to parse result files to build the final release documentation. </p>
<p>During the project I became the go-to guy for questions about Git and so when we had to split a 10GB repository into smaller pieces, remove directories of binaries that should never have been checked in while retaining all the history then everyone volunteered me for that job ;)</p>
<p>The project had expanded a lot since I started. We now had a Git repository for TechSupport, a different Git repository for each subsidiary, a host of versions which needed to be managed, our internal jFrog repository (that I managed), external jars released by the customer on an adhoc basis, peripheral software for generating release documentation and dealing with VirtualBox snapshots. We needed a new way of managing and releasing our code. I was in charge of defining and documenting a GitFlow which was specific for our set of projects. I produced detailed documentation of different use cases at pinnacle points in the project workflow. These described with diagrams how to interact with the source controller, when and where to create labels, branches and how they should be named. Workflow use cases went from what to do after you assign a bug to yourself, knowing where to branch from and what to call your branch in a simple situation. In a more complicated situation, creating a hotfix for TechSupport for just one subsidiary and ensuring that after each further release those hotfix patches could still be reapplied to make a tailored customer version to accompany each 'normal' version, until just time that we could upgrade all the customers on to the new major version.</p>
<p>I had demonstrated that my knowledge base was extensive and covered a lot of different and distinct technologies. As a result people started to invite me on to projects that weren't really anything to do with the TechSupport side of things. These included fixing an AngularJs program that someone had written ages ago for the customer but had left the company, re-writing the VirtualBox API layer to control taking snapshots, creating a JNDI module to interact with binary code, adding basic authentication to another webapp, noticing 3rd party jars had been updated, pulling them into our jFrog and updating settings files so that things were automatically upgraded, obfuscating the deliverables, etc.</p>
<p>There was quite a high churn of people on the project and so I often found myself mentoring new people and bringing them up to speed. At this point the Converter was finished enough that no more work was going to be done on it and it moved from a development project to a maintenance project at which point everyone was let go except for me. I was kept on for a little bit longer to handover to the maintenance team as I was the only person left from the original project and the only person who knew and understood the decisions we made at the beginning and why we made them. I imparted this knowledge on to the maintainance team and answered their questions about the history of the project.</p>
<p>I like computer art and so for fun I produced a set of graphviz diagrams to represent the nature of the data being used on the project - because that is fun for me :) In this case I graphed the interaction between all the modules i.e. which modules called which other modules. When I presented my findings at Friday Fun it showed that the customer was trying to get us to convert 2 source code bases for the price of one! It went quiet for a bit then suddenly there was a load more money from the customer!</p>
<p>Friday Fun was something I invented as a bit of fun after the Friday meeting. I demonstrated my art and the support applications I'd written and other people did things that they were passionate about, not necessarily about computing, just anything they thought would be fun. I've heard from one of my ex-colleagues that he set up Friday Fun at the company he worked at after this project :)</p>
<ul>
<li><strong>Languages</strong>: Spring Framework/Java, Maven/Gradle, Tomcat, Japicmp, Microfocus/PL1/JCL, scripting in bash, python, Node, NextJs, React</li>
<li><strong>Platforms</strong>: Google Cloud Platform, JFrog admin, VirtualBox, Linux, RedHat, Windows 10, MSYS2</li>
<li><strong>Source controller</strong>: Gitlab+notifications/triggers, Git.</li>
<li><strong>Automation</strong>: Jenkins</li>
<li><strong>Press</strong>: <a href="https://cloud.google.com/blog/topics/inside-google-cloud/helping-customers-migrate-their-mainframe-workloads-to-google-cloud" class="extlink" target="_new">Google Helping customers migrate their mainframe workloads to google cloud</a> ; <a href="https://www.cio.com/article/479654/examining-allianz-technologys-decision-to-replatform.html" class="extlink" target="_new">Examining Allianz Technologys Decision to Replatform</a></li>
</ul><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/work/google-cornerstone">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/work/google-cornerstone#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=648</wfw:commentRss>
		</item>
				<item>
			<title>Adactus</title>
			<link>https://www.bigsoft.co.uk/work/adactus</link>
			<pubDate>Mon, 22 Aug 2022 17:09:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Work</category>			<guid isPermaLink="false">642@https://www.bigsoft.co.uk/</guid>
						<description>Adactus is a small software company at will carry out any software challenge. They specialise in a number of sectors but while I worked there it work on their (chain) restaurant client&#039;s booking system and web site,&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/work/adactus&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[Adactus is a small software company at will carry out any software challenge. They specialise in a number of sectors but while I worked there it work on their (chain) restaurant client's booking system and web site,<div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/work/adactus">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/work/adactus#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=642</wfw:commentRss>
		</item>
				<item>
			<title>jQuery Plugin - ImgBox</title>
			<link>https://www.bigsoft.co.uk/code/jquery/jquery-plugin-imgbox</link>
			<pubDate>Sun, 15 Jul 2018 17:39:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">jQuery</category>			<guid isPermaLink="false">619@https://www.bigsoft.co.uk/</guid>
						<description>&lt;h2&gt;What is jQuery ImgBox&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://jquery.com/&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;jQuery&lt;/a&gt; plugin that draws a box over an image.&lt;/p&gt;
&lt;p&gt;The best way to demonstrate this jQuery plugin in action is with a &lt;a href=&quot;https://cdn.rawgit.com/davidnewcomb/jquery-imgbox/master/example.html&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;demo&lt;/a&gt;.
If you&#039;d like to know more then checkout the &lt;a href=&quot;https://github.com/davidnewcomb/jquery-imgbox/blob/master/README.md&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;README&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Code&lt;/h2&gt;
&lt;p&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot; colspan=&quot;2&quot;&gt; GitHub
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Project page
&lt;/th&gt;
&lt;td&gt; &lt;a href=&quot;https://github.com/davidnewcomb/jquery-imgbox&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;https://github.com/davidnewcomb/jquery-imgbox&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Clone
&lt;/th&gt;
&lt;td&gt; &lt;code class=&quot;codespan&quot;&gt;https://github.com/davidnewcomb/jquery-imgbox.git&lt;/code&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Zip
&lt;/th&gt;
&lt;td&gt; &lt;a href=&quot;https://github.com/davidnewcomb/jquery-imgbox/archive/master.zip&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;https://github.com/davidnewcomb/jquery-imgbox/archive/master.zip&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/code/jquery/jquery-plugin-imgbox&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<h2>What is jQuery ImgBox</h2>
<p><a href="http://jquery.com/" class="extlink" target="_blank">jQuery</a> plugin that draws a box over an image.</p>
<p>The best way to demonstrate this jQuery plugin in action is with a <a href="https://cdn.rawgit.com/davidnewcomb/jquery-imgbox/master/example.html" class="extlink" target="_blank">demo</a>.
If you'd like to know more then checkout the <a href="https://github.com/davidnewcomb/jquery-imgbox/blob/master/README.md" class="extlink" target="_blank">README</a></p>
<h2>Code</h2>
<p><table>
<tr>
<th scope="row" colspan="2"> GitHub
</th></tr>
<tr>
<th> Project page
</th>
<td> <a href="https://github.com/davidnewcomb/jquery-imgbox" class="extlink" target="_blank">https://github.com/davidnewcomb/jquery-imgbox</a>
</td></tr>
<tr>
<th> Clone
</th>
<td> <code class="codespan">https://github.com/davidnewcomb/jquery-imgbox.git</code>
</td></tr>
<tr>
<th> Zip
</th>
<td> <a href="https://github.com/davidnewcomb/jquery-imgbox/archive/master.zip" class="extlink" target="_blank">https://github.com/davidnewcomb/jquery-imgbox/archive/master.zip</a>
</td></tr></table></p><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/code/jquery/jquery-plugin-imgbox">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/code/jquery/jquery-plugin-imgbox#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=619</wfw:commentRss>
		</item>
				<item>
			<title>Lost Love - Mikiko Nakanishi Where Are You?</title>
			<link>https://www.bigsoft.co.uk/home-main/lost-love-mikiko-nakanishi-where-are-you</link>
			<pubDate>Fri, 06 Apr 2018 20:05:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Uncategorized</category>			<guid isPermaLink="false">611@https://www.bigsoft.co.uk/</guid>
						<description>&lt;p&gt;I&#039;m going out of my mind! After 15 years I would have thought I could have moved on but I don&#039;t seem to be able to get passed you. Below are some photos you gave me of your graduation and hanging out with friends.
I can only find 2 Mikiko Nakanishi&#039;s: one is a tennis player and the other is a chemist. So if either of you know the real Mikiko Nakanishi then please let me &lt;a href=&quot;/?disp=msgform&amp;amp;recipient_id=1&amp;amp;subject=Mikiko&quot;&gt;know&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Information to help locate you&lt;/h2&gt;
&lt;p&gt;I&#039;m listing all the information I have about you now in the hope that you (one day) Google yourself and find this page.&lt;/p&gt;
&lt;p&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; Educaton
&lt;/th&gt;
&lt;td&gt; Osaka University
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Course
&lt;/th&gt;
&lt;td&gt; Human folksonomy
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Date of birth
&lt;/th&gt;
&lt;td&gt; around 1973 similar age to me
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Your business card read
&lt;/th&gt;
&lt;td&gt; Osaka Gakuin University Master Course
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;h2&gt;Where we met&lt;/h2&gt;
&lt;p&gt;We met at Minneapolis International Hostel at 2400 Stevens Avenue South in the Summer 1996. I think we had both graduated that year and were seeing a bit of America, me for a holiday and you to potentially come to study there.&lt;/p&gt;
&lt;h2&gt;Photos&lt;/h2&gt;
&lt;p&gt;I took this photo. We went cycling around Minneapolis on some bikes we had borrowed from the youth hostel. We found a lake and went boating. We stopped for orange juice on the way home and I was sick!
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1996-09-10-boating_date_in_minneapolis.jpg?mtime=1523058872&quot; rel=&quot;lightbox[p611]&quot; id=&quot;link_19&quot;&gt;&lt;img alt=&quot;Lost Love - Mikiko Nakanishi Where Are You?&quot; src=&quot;https://www.bigsoft.co.uk/htsrv/getfile.php/1996-09-10-boating_date_in_minneapolis.jpg?root=collection_5&amp;amp;path=quick-uploads%2Fp611%2F1996-09-10-boating_date_in_minneapolis.jpg&amp;amp;mtime=1523058872&amp;amp;size=fit-400x320&quot; width=&quot;256&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This is you with Nobu (on the left) with a guy you met in Minneapolis taken in Nagoya.
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1996-10-22-noku_and_the_guy_we_met_in_mpls_in_nagoya.jpg?mtime=1523058835&quot; rel=&quot;lightbox[p611]&quot; id=&quot;link_14&quot;&gt;&lt;img alt=&quot;Lost Love - Mikiko Nakanishi Where Are You?&quot; src=&quot;https://www.bigsoft.co.uk/htsrv/getfile.php/1996-10-22-noku_and_the_guy_we_met_in_mpls_in_nagoya.jpg?root=collection_5&amp;amp;path=quick-uploads%2Fp611%2F1996-10-22-noku_and_the_guy_we_met_in_mpls_in_nagoya.jpg&amp;amp;mtime=1523058835&amp;amp;size=fit-400x320&quot; width=&quot;400&quot; height=&quot;288&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Your graduation.
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1997-03-25-graduation1.jpg?mtime=1523058835&quot; rel=&quot;lightbox[p611]&quot; id=&quot;link_13&quot;&gt;&lt;img alt=&quot;Lost Love - Mikiko Nakanishi Where Are You?&quot; src=&quot;https://www.bigsoft.co.uk/htsrv/getfile.php/1997-03-25-graduation1.jpg?root=collection_5&amp;amp;path=quick-uploads%2Fp611%2F1997-03-25-graduation1.jpg&amp;amp;mtime=1523058835&amp;amp;size=fit-400x320&quot; width=&quot;400&quot; height=&quot;288&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Your graduation with your friends and your professor.
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1997-03-25-her-friends_and_her_proffessor.jpg?mtime=1523058835&quot; rel=&quot;lightbox[p611]&quot; id=&quot;link_15&quot;&gt;&lt;img alt=&quot;Lost Love - Mikiko Nakanishi Where Are You?&quot; src=&quot;https://www.bigsoft.co.uk/htsrv/getfile.php/1997-03-25-her-friends_and_her_proffessor.jpg?root=collection_5&amp;amp;path=quick-uploads%2Fp611%2F1997-03-25-her-friends_and_her_proffessor.jpg&amp;amp;mtime=1523058835&amp;amp;size=fit-400x320&quot; width=&quot;400&quot; height=&quot;269&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I know I shouldn&#039;t really post these, if it helps find you then it&#039;s worth it.
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/model_shot1.jpg?mtime=1523058835&quot; rel=&quot;lightbox[p611]&quot; id=&quot;link_16&quot;&gt;&lt;img alt=&quot;Lost Love - Mikiko Nakanishi Where Are You?&quot; src=&quot;https://www.bigsoft.co.uk/htsrv/getfile.php/model_shot1.jpg?root=collection_5&amp;amp;path=quick-uploads%2Fp611%2Fmodel_shot1.jpg&amp;amp;mtime=1523058835&amp;amp;size=fit-400x320&quot; width=&quot;222&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I know I shouldn&#039;t really post these, if it helps find you then it&#039;s worth it.
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/model_shot2.jpg?mtime=1523058835&quot; rel=&quot;lightbox[p611]&quot; id=&quot;link_17&quot;&gt;&lt;img alt=&quot;Lost Love - Mikiko Nakanishi Where Are You?&quot; src=&quot;https://www.bigsoft.co.uk/htsrv/getfile.php/model_shot2.jpg?root=collection_5&amp;amp;path=quick-uploads%2Fp611%2Fmodel_shot2.jpg&amp;amp;mtime=1523058835&amp;amp;size=fit-400x320&quot; width=&quot;341&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;If any one knows anything about her then please &lt;a href=&quot;/?disp=msgform&amp;amp;recipient_id=1&amp;amp;subject=Mikiko&quot;&gt;contact me&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/home-main/lost-love-mikiko-nakanishi-where-are-you&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>I'm going out of my mind! After 15 years I would have thought I could have moved on but I don't seem to be able to get passed you. Below are some photos you gave me of your graduation and hanging out with friends.
I can only find 2 Mikiko Nakanishi's: one is a tennis player and the other is a chemist. So if either of you know the real Mikiko Nakanishi then please let me <a href="/?disp=msgform&amp;recipient_id=1&amp;subject=Mikiko">know</a>.</p>
<h2>Information to help locate you</h2>
<p>I'm listing all the information I have about you now in the hope that you (one day) Google yourself and find this page.</p>
<p><table>
<tr>
<th> Educaton
</th>
<td> Osaka University
</td></tr>
<tr>
<th> Course
</th>
<td> Human folksonomy
</td></tr>
<tr>
<th> Date of birth
</th>
<td> around 1973 similar age to me
</td></tr>
<tr>
<th> Your business card read
</th>
<td> Osaka Gakuin University Master Course
</td></tr></table></p>
<h2>Where we met</h2>
<p>We met at Minneapolis International Hostel at 2400 Stevens Avenue South in the Summer 1996. I think we had both graduated that year and were seeing a bit of America, me for a holiday and you to potentially come to study there.</p>
<h2>Photos</h2>
<p>I took this photo. We went cycling around Minneapolis on some bikes we had borrowed from the youth hostel. We found a lake and went boating. We stopped for orange juice on the way home and I was sick!
<div><a href="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1996-09-10-boating_date_in_minneapolis.jpg?mtime=1523058872" rel="lightbox[p611]" id="link_19"><img alt="Lost Love - Mikiko Nakanishi Where Are You?" src="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/.evocache/1996-09-10-boating_date_in_minneapolis.jpg/fit-320x320.jpg?mtime=1523058872" width="256" height="320" class="loadimg" /></a></div>
This is you with Nobu (on the left) with a guy you met in Minneapolis taken in Nagoya.
<div><a href="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1996-10-22-noku_and_the_guy_we_met_in_mpls_in_nagoya.jpg?mtime=1523058835" rel="lightbox[p611]" id="link_14"><img alt="Lost Love - Mikiko Nakanishi Where Are You?" src="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/.evocache/1996-10-22-noku_and_the_guy_we_met_in_mpls_in_nagoya.jpg/fit-320x320.jpg?mtime=1523058835" width="320" height="230" class="loadimg" /></a></div>
Your graduation.
<div><a href="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1997-03-25-graduation1.jpg?mtime=1523058835" rel="lightbox[p611]" id="link_13"><img alt="Lost Love - Mikiko Nakanishi Where Are You?" src="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/.evocache/1997-03-25-graduation1.jpg/fit-320x320.jpg?mtime=1523058835" width="320" height="230" class="loadimg" /></a></div>
Your graduation with your friends and your professor.
<div><a href="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/1997-03-25-her-friends_and_her_proffessor.jpg?mtime=1523058835" rel="lightbox[p611]" id="link_15"><img alt="Lost Love - Mikiko Nakanishi Where Are You?" src="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/.evocache/1997-03-25-her-friends_and_her_proffessor.jpg/fit-320x320.jpg?mtime=1523058835" width="320" height="215" class="loadimg" /></a></div>
I know I shouldn't really post these, if it helps find you then it's worth it.
<div><a href="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/model_shot1.jpg?mtime=1523058835" rel="lightbox[p611]" id="link_16"><img alt="Lost Love - Mikiko Nakanishi Where Are You?" src="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/.evocache/model_shot1.jpg/fit-320x320.jpg?mtime=1523058835" width="222" height="320" class="loadimg" /></a></div>
I know I shouldn't really post these, if it helps find you then it's worth it.
<div><a href="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/model_shot2.jpg?mtime=1523058835" rel="lightbox[p611]" id="link_17"><img alt="Lost Love - Mikiko Nakanishi Where Are You?" src="https://www.bigsoft.co.uk/media/blogs/home/quick-uploads/p611/.evocache/model_shot2.jpg/fit-320x320.jpg?mtime=1523058835" width="320" height="300" class="loadimg" /></a></div></p>
<p>If any one knows anything about her then please <a href="/?disp=msgform&amp;recipient_id=1&amp;subject=Mikiko">contact me</a>.</p><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/home-main/lost-love-mikiko-nakanishi-where-are-you">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/home-main/lost-love-mikiko-nakanishi-where-are-you#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=611</wfw:commentRss>
		</item>
				<item>
			<title>Virgin Media TV channel finder</title>
			<link>https://www.bigsoft.co.uk/tools/virgin-media-channel-finder</link>
			<pubDate>Mon, 26 Mar 2018 18:58:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Tools</category>			<guid isPermaLink="false">599@https://www.bigsoft.co.uk/</guid>
						<description>&lt;p&gt;I have written to &lt;a href=&quot;https://www.virginmedia.com/&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;Virgin Media&lt;/a&gt; at least three times to try and get a JSON list of channel numbers and names. The first person had no idea what I was talking about and said they&#039;d pass it along, which is tele-code for put the request in the bin. The second person insisted that the only thing they had was their PDF channel guide, which is compressed so you can&#039;t find what you are looking for in text searches. It was about 2 hours work to convert the PDF into something I could use.&lt;/p&gt;
&lt;p&gt;After Virgin Anytime (or whatever they are calling it now) was released I checked to see if there were any publicly available API&#039;s I could use. It seemed a bit pointless to contact them directly. Their current API is tuned (I hope) for their TV guide and I couldn&#039;t find any API&#039;s which had channel number and channel name in the same file.&lt;/p&gt;
&lt;p&gt;I&#039;m here again and there is still no API, and they have changed the format of their PDF so I get to throw away all the converting tools I wrote last time. This time however I discovered that someone have put the list on &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_Virgin_Media_television_channels&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt;. It&#039;s all obviously in HTML so more tools needed, but at least the tools are simpler!&lt;/p&gt;
&lt;p&gt;I can&#039;t let Virgin Media stand in the way of progress so I&#039;m publishing the &lt;a href=&quot;/media/blogs/home/quick-uploads/p599/virgin_channel_guide.json&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;Virgin Media Channel Guide in JSON&lt;/a&gt; here. The format is pretty straight forward.
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;{&quot;date&quot;:&quot;2018-03&quot;,&quot;channels&quot;:[
{&quot;num&quot;:100, &quot;name&quot;:&quot;Virgin Media Previews&quot;},
...
]}
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;alert alert-warning&quot;&gt;I update this as and when I get around to it so it might be out of date.&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I&#039;d never used &lt;a href=&quot;https://angularjs.org/&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;AngularJS&lt;/a&gt; (version 1) before so I wrote the filter using it!&lt;/p&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/media/blogs/home/quick-uploads/p599/virgin.css&quot; /&gt;
&lt;script src=&quot;https://code.angularjs.org/1.5.6/angular.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;/media/blogs/home/quick-uploads/p599/channel.js&quot;&gt;&lt;/script&gt;
&lt;div ng-app=&quot;myApp&quot;&gt;
&lt;div ng-controller=&quot;channelCtrl&quot;&gt;
&lt;h3&gt;{{channels.length}} channels on {{thedate}}&lt;/h3&gt;&lt;p&gt;Channel name filter: &lt;input type=&quot;text&quot; ng-model=&quot;query.name&quot; /&gt;
&lt;br /&gt;
HD Only: &lt;input type=&quot;checkbox&quot; ng-model=&quot;query.hd&quot; ng-init=&quot;query.hd=true&quot; ng-checked=&quot;query.hd&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Search: {{query.name}} HD? {{query.hd}}&lt;/p&gt;&lt;p&gt;&lt;div ng-class=&quot;{true:&#039;status-ok&#039;, false:&#039;status-bad&#039;}[$status==&#039;&#039;]&quot;&gt;{{status}}&lt;/div&gt;&lt;/p&gt;
&lt;ul class=&quot;list-unstyled&quot;&gt;
&lt;li ng-repeat=&quot;channel in channels | filter:query as filtered&quot;&gt;
&lt;span class=&quot;hd-{{channel.hd}}&quot;&gt;{{channel.num}} - {{channel.name}}&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;{{filtered.length}} entries found&lt;/p&gt;&lt;p&gt;&lt;hr /&gt;
&lt;small&gt;Data format version: {{version}}&lt;/small&gt;
&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/tools/virgin-media-channel-finder&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>I have written to <a href="https://www.virginmedia.com/" class="extlink" target="_blank">Virgin Media</a> at least three times to try and get a JSON list of channel numbers and names. The first person had no idea what I was talking about and said they'd pass it along, which is tele-code for put the request in the bin. The second person insisted that the only thing they had was their PDF channel guide, which is compressed so you can't find what you are looking for in text searches. It was about 2 hours work to convert the PDF into something I could use.</p>
<p>After Virgin Anytime (or whatever they are calling it now) was released I checked to see if there were any publicly available API's I could use. It seemed a bit pointless to contact them directly. Their current API is tuned (I hope) for their TV guide and I couldn't find any API's which had channel number and channel name in the same file.</p>
<p>I'm here again and there is still no API, and they have changed the format of their PDF so I get to throw away all the converting tools I wrote last time. This time however I discovered that someone have put the list on <a href="https://en.wikipedia.org/wiki/List_of_Virgin_Media_television_channels" class="extlink" target="_blank">Wikipedia</a>. It's all obviously in HTML so more tools needed, but at least the tools are simpler!</p>
<p>I can't let Virgin Media stand in the way of progress so I'm publishing the <a href="/media/blogs/home/quick-uploads/p599/virgin_channel_guide.json" class="extlink" target="_blank">Virgin Media Channel Guide in JSON</a> here. The format is pretty straight forward.
<pre class="line-numbers"><code class="language-json">{"date":"2018-03","channels":[
{"num":100, "name":"Virgin Media Previews"},
...
]}
</code></pre></p>
<p><div class="alert alert-warning">I update this as and when I get around to it so it might be out of date.</div></p>
<p>I'd never used <a href="https://angularjs.org/" class="extlink" target="_blank">AngularJS</a> (version 1) before so I wrote the filter using it!</p>
<link rel="stylesheet" type="text/css" href="/media/blogs/home/quick-uploads/p599/virgin.css" />
<script src="https://code.angularjs.org/1.5.6/angular.js"></script>
<script src="/media/blogs/home/quick-uploads/p599/channel.js"></script>
<div ng-app="myApp">
<div ng-controller="channelCtrl">
<h3>{{channels.length}} channels on {{thedate}}</h3><p>Channel name filter: <input type="text" ng-model="query.name" />
<br />
HD Only: <input type="checkbox" ng-model="query.hd" ng-init="query.hd=true" ng-checked="query.hd" /></p>
<p>Search: {{query.name}} HD? {{query.hd}}</p><p><div ng-class="{true:'status-ok', false:'status-bad'}[$status=='']">{{status}}</div></p>
<ul class="list-unstyled">
<li ng-repeat="channel in channels | filter:query as filtered">
<span class="hd-{{channel.hd}}">{{channel.num}} - {{channel.name}}</span>
</li>
</ul><p>{{filtered.length}} entries found</p><p><hr />
<small>Data format version: {{version}}</small>
</p></div>
</div><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/tools/virgin-media-channel-finder">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/tools/virgin-media-channel-finder#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=599</wfw:commentRss>
		</item>
				<item>
			<title>Bandwidth Calculator</title>
			<link>https://www.bigsoft.co.uk/tools/bandwidth-calculator-1</link>
			<pubDate>Mon, 26 Mar 2018 17:32:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Tools</category>			<guid isPermaLink="false">598@https://www.bigsoft.co.uk/</guid>
						<description>&lt;p&gt;Bandwidth Calculator converts all computer units to all other computer units.&lt;/p&gt;
&lt;p&gt;&#039;B&#039; indicates bytes and &#039;b&#039; indicates bits so for example, if you want to find out how many megabytes of transfer you can get from a 100 megabit network card then:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enter 100 in the &lt;strong&gt;In unit&lt;/strong&gt; box.&lt;/li&gt;
&lt;li&gt;Select Mb (Megabits) from the &lt;strong&gt;In unit&lt;/strong&gt; drop down.&lt;/li&gt;
&lt;li&gt;Select MB (Megabytes) from the &lt;strong&gt;Out unit&lt;/strong&gt; drop down.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;script type=&quot;text/javascript&quot;&gt;
function recalc()
{
var frm = document.forms[&#039;converter&#039;];
var in_val = frm.in.value;
var in_unit= frm.inunit.options[frm.inunit.selectedIndex].value;
var out_unit = frm.outunit.options[frm.outunit.selectedIndex].value;
// convert in to bits
var bits;
switch (in_unit)
{
case &#039;b&#039; : bits = in_val                                ; break;
case &#039;B&#039; : bits = in_val * 8                            ; break;
case &#039;Kb&#039;: bits = in_val * 1024                         ; break;
case &#039;KB&#039;: bits = in_val * 1024 * 8                     ; break;
case &#039;Mb&#039;: bits = in_val * 1024 * 1024                  ; break;
case &#039;MB&#039;: bits = in_val * 1024 * 1024 * 8              ; break;
case &#039;Gb&#039;: bits = in_val * 1024 * 1024 * 1024           ; break;
case &#039;GB&#039;: bits = in_val * 1024 * 1024 * 1024 * 8       ; break;
case &#039;Tb&#039;: bits = in_val * 1024 * 1024 * 1024 * 1024    ; break;
case &#039;TB&#039;: bits = in_val * 1024 * 1024 * 1024 * 1024 * 8; break;
}
// convert bits to required unit
var answer;
switch (out_unit)
{
case &#039;b&#039; : answer = bits                                ; break;
case &#039;B&#039; : answer = bits / 8                            ; break;
case &#039;Kb&#039;: answer = bits / 1024                         ; break;
case &#039;KB&#039;: answer = bits / 1024 / 8                     ; break;
case &#039;Mb&#039;: answer = bits / 1024 / 1024                  ; break;
case &#039;MB&#039;: answer = bits / 1024 / 1024 / 8              ; break;
case &#039;Gb&#039;: answer = bits / 1024 / 1024 / 1024           ; break;
case &#039;GB&#039;: answer = bits / 1024 / 1024 / 1024 / 8       ; break;
case &#039;Tb&#039;: answer = bits / 1024 / 1024 / 1024 / 1024    ; break;
case &#039;TB&#039;: answer = bits / 1024 / 1024 / 1024 / 1024 / 8; break;
}
frm.out.value = answer;
}
&lt;/script&gt;&lt;/p&gt;
&lt;form name=converter&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;In unit:&lt;/td&gt;&lt;td&gt;&lt;input name=in value=0 onChange=&#039;recalc()&#039; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;select name=inunit onChange=&#039;recalc()&#039;&gt;
&lt;option value=b&gt;b&lt;/option&gt;
&lt;option value=b&gt;B&lt;/option&gt;
&lt;option value=Kb&gt;Kb&lt;/option&gt;
&lt;option value=Kb&gt;KB&lt;/option&gt;
&lt;option value=Mb&gt;Mb&lt;/option&gt;
&lt;option value=Mb&gt;MB&lt;/option&gt;
&lt;option value=Gb&gt;Gb&lt;/option&gt;
&lt;option value=Gb&gt;GB&lt;/option&gt;
&lt;option value=Tb&gt;Tb&lt;/option&gt;
&lt;option value=Tb&gt;TB&lt;/option&gt;
&lt;/select&gt;
&lt;/td&gt;
&lt;tr&gt;
&lt;td&gt;Out unit:&lt;/td&gt;&lt;td&gt;&lt;input name=out value=0  onFocus=&#039;blur()&#039; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;select name=outunit onChange=&#039;recalc()&#039;&gt;
&lt;option value=b&gt;b&lt;/option&gt;
&lt;option value=b&gt;B&lt;/option&gt;
&lt;option value=Kb&gt;Kb&lt;/option&gt;
&lt;option value=Kb&gt;KB&lt;/option&gt;
&lt;option value=Mb&gt;Mb&lt;/option&gt;
&lt;option value=Mb&gt;MB&lt;/option&gt;
&lt;option value=Gb&gt;Gb&lt;/option&gt;
&lt;option value=Gb&gt;GB&lt;/option&gt;
&lt;option value=Tb&gt;Tb&lt;/option&gt;
&lt;option value=Tb&gt;TB&lt;/option&gt;
&lt;/select&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/tools/bandwidth-calculator-1&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Bandwidth Calculator converts all computer units to all other computer units.</p>
<p>'B' indicates bytes and 'b' indicates bits so for example, if you want to find out how many megabytes of transfer you can get from a 100 megabit network card then:</p>
<ol>
<li>Enter 100 in the <strong>In unit</strong> box.</li>
<li>Select Mb (Megabits) from the <strong>In unit</strong> drop down.</li>
<li>Select MB (Megabytes) from the <strong>Out unit</strong> drop down.</li>
</ol>
<p><script type="text/javascript">
function recalc()
{
var frm = document.forms['converter'];
var in_val = frm.in.value;
var in_unit= frm.inunit.options[frm.inunit.selectedIndex].value;
var out_unit = frm.outunit.options[frm.outunit.selectedIndex].value;
// convert in to bits
var bits;
switch (in_unit)
{
case 'b' : bits = in_val                                ; break;
case 'B' : bits = in_val * 8                            ; break;
case 'Kb': bits = in_val * 1024                         ; break;
case 'KB': bits = in_val * 1024 * 8                     ; break;
case 'Mb': bits = in_val * 1024 * 1024                  ; break;
case 'MB': bits = in_val * 1024 * 1024 * 8              ; break;
case 'Gb': bits = in_val * 1024 * 1024 * 1024           ; break;
case 'GB': bits = in_val * 1024 * 1024 * 1024 * 8       ; break;
case 'Tb': bits = in_val * 1024 * 1024 * 1024 * 1024    ; break;
case 'TB': bits = in_val * 1024 * 1024 * 1024 * 1024 * 8; break;
}
// convert bits to required unit
var answer;
switch (out_unit)
{
case 'b' : answer = bits                                ; break;
case 'B' : answer = bits / 8                            ; break;
case 'Kb': answer = bits / 1024                         ; break;
case 'KB': answer = bits / 1024 / 8                     ; break;
case 'Mb': answer = bits / 1024 / 1024                  ; break;
case 'MB': answer = bits / 1024 / 1024 / 8              ; break;
case 'Gb': answer = bits / 1024 / 1024 / 1024           ; break;
case 'GB': answer = bits / 1024 / 1024 / 1024 / 8       ; break;
case 'Tb': answer = bits / 1024 / 1024 / 1024 / 1024    ; break;
case 'TB': answer = bits / 1024 / 1024 / 1024 / 1024 / 8; break;
}
frm.out.value = answer;
}
</script></p>
<form name=converter>
<table>
<tr>
<td>In unit:</td><td><input name=in value=0 onChange='recalc()' /></td>
<td><select name=inunit onChange='recalc()'>
<option value=b>b</option>
<option value=b>B</option>
<option value=Kb>Kb</option>
<option value=Kb>KB</option>
<option value=Mb>Mb</option>
<option value=Mb>MB</option>
<option value=Gb>Gb</option>
<option value=Gb>GB</option>
<option value=Tb>Tb</option>
<option value=Tb>TB</option>
</select>
</td>
<tr>
<td>Out unit:</td><td><input name=out value=0  onFocus='blur()' /></td>
<td><select name=outunit onChange='recalc()'>
<option value=b>b</option>
<option value=b>B</option>
<option value=Kb>Kb</option>
<option value=Kb>KB</option>
<option value=Mb>Mb</option>
<option value=Mb>MB</option>
<option value=Gb>Gb</option>
<option value=Gb>GB</option>
<option value=Tb>Tb</option>
<option value=Tb>TB</option>
</select>
</td>
</tr>
</tr></table>
</form><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/tools/bandwidth-calculator-1">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/tools/bandwidth-calculator-1#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=598</wfw:commentRss>
		</item>
				<item>
			<title>MantisBT - Database Tweaker</title>
			<link>https://www.bigsoft.co.uk/code/mantisbt-1/mantisbt-database-tweaker</link>
			<pubDate>Fri, 23 Mar 2018 21:39:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">MantisBT</category>			<guid isPermaLink="false">595@https://www.bigsoft.co.uk/</guid>
						<description>&lt;p&gt;This is a command line application that lets you tweak the MantisBT database.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bugs&lt;ul&gt;
&lt;li&gt;Change owner&lt;/li&gt;
&lt;li&gt;Change date submitted&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Monitor&lt;ul&gt;
&lt;li&gt;Add monitor to an issue&lt;/li&gt;
&lt;li&gt;Delete monitor from issue&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bugnotes&lt;ul&gt;
&lt;li&gt;Add bugnote&lt;/li&gt;
&lt;li&gt;Move bugnote&lt;/li&gt;
&lt;li&gt;Modify time tracking&lt;/li&gt;
&lt;li&gt;Modify time&lt;/li&gt;
&lt;li&gt;Modify owner&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Categories&lt;ul&gt;
&lt;li&gt;Modify category&lt;/li&gt;
&lt;li&gt;Delete category&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Confirmation is required before any changes will be made. The SQL which will
be executed is displayed and the SQL needed to rollback the change is also
given, just in case!&lt;/p&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Currently only tested using MantisBT 1.2.8 but may work with later versions.&lt;/li&gt;
&lt;li&gt;Requires _mysql Python module to be available.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Download the file and place it in a directory on your &lt;code class=&quot;codespan&quot;&gt;PATH&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Edit and change the MySQL access credientials in the CONFIG section.&lt;/li&gt;
&lt;li&gt;Save and run!&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Example usage&lt;/h2&gt;
&lt;!-- codeblock  line=1--&gt;&lt;pre class=&quot;codeblock&quot;&gt;&lt;code&gt;
MantisBT Database Tweaker v2.0
==============================

Bugs
----
1) Change owner

Monitor
-------
2) Add monitor to an issue
3) Delete monitor from issue

Bugnotes
--------
4) Add bugnote
5) Move bugnote
6) Modify time tracking
7) Modify time
8) Modify owner

Categories
----------
9) Modify category
10) Delete category

Enter selection (return to exit): 8

=====================
Change bugnote owner
---------------------

  4 Marcel       Wave                 user1
 32 Sid          Snot                 user2
 31 Cupid        Stunt                user3

Select user id:  32
Enter bugnote number:  123
Change owner of &#039;My email is broken&#039; to &#039;Sid Snot (32)&#039;
[y/n]: y

Rollback: UPDATE mantis_bugnote_table SET reporter_id = 4 WHERE id = 123
UPDATE mantis_bugnote_table SET reporter_id = 32 WHERE id = 123
&lt;/code&gt;&lt;/pre&gt;&lt;!-- /codeblock --&gt;
&lt;h2&gt;Source&lt;/h2&gt;
&lt;p&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot; colspan=&quot;2&quot;&gt; GitHub
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Repo
&lt;/th&gt;
&lt;td&gt; &lt;a href=&quot;https://github.com/davidnewcomb/mantisbt_database_tweaker&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;https://github.com/davidnewcomb/mantisbt&lt;em&gt;database&lt;/em&gt;tweaker&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Clone
&lt;/th&gt;
&lt;td&gt; &lt;code class=&quot;codespan&quot;&gt;https://github.com/davidnewcomb/mantisbt_database_tweaker.git&lt;/code&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Zip
&lt;/th&gt;
&lt;td&gt; &lt;a href=&quot;https://github.com/davidnewcomb/mantisbt_database_tweaker/archive/master.zip&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;https://github.com/davidnewcomb/mantisbt&lt;em&gt;database&lt;/em&gt;tweaker/archive/master.zip&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;More information can be found in my blog: &lt;a href=&quot;http://www.bigsoft.co.uk/blog/2012/03/27/mantis-database-tweaker&quot;&gt;MantisBT Database Tweaker&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/code/mantisbt-1/mantisbt-database-tweaker&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>This is a command line application that lets you tweak the MantisBT database.</p>
<ul>
<li>Bugs<ul>
<li>Change owner</li>
<li>Change date submitted</li>
</ul>
</li>
<li>Monitor<ul>
<li>Add monitor to an issue</li>
<li>Delete monitor from issue</li>
</ul>
</li>
<li>Bugnotes<ul>
<li>Add bugnote</li>
<li>Move bugnote</li>
<li>Modify time tracking</li>
<li>Modify time</li>
<li>Modify owner</li>
</ul>
</li>
<li>Categories<ul>
<li>Modify category</li>
<li>Delete category</li>
</ul>
</li>
</ul>
<p>Confirmation is required before any changes will be made. The SQL which will
be executed is displayed and the SQL needed to rollback the change is also
given, just in case!</p>
<h2>Requirements</h2>
<ol>
<li>Currently only tested using MantisBT 1.2.8 but may work with later versions.</li>
<li>Requires _mysql Python module to be available.</li>
</ol>
<h2>Installation</h2>
<ol>
<li>Download the file and place it in a directory on your <code class="codespan">PATH</code>.</li>
<li>Edit and change the MySQL access credientials in the CONFIG section.</li>
<li>Save and run!</li>
</ol>
<h2>Example usage</h2>
<!-- codeblock  line=1--><pre class="codeblock"><code>
MantisBT Database Tweaker v2.0
==============================

Bugs
----
1) Change owner

Monitor
-------
2) Add monitor to an issue
3) Delete monitor from issue

Bugnotes
--------
4) Add bugnote
5) Move bugnote
6) Modify time tracking
7) Modify time
8) Modify owner

Categories
----------
9) Modify category
10) Delete category

Enter selection (return to exit): 8

=====================
Change bugnote owner
---------------------

  4 Marcel       Wave                 user1
 32 Sid          Snot                 user2
 31 Cupid        Stunt                user3

Select user id:  32
Enter bugnote number:  123
Change owner of 'My email is broken' to 'Sid Snot (32)'
[y/n]: y

Rollback: UPDATE mantis_bugnote_table SET reporter_id = 4 WHERE id = 123
UPDATE mantis_bugnote_table SET reporter_id = 32 WHERE id = 123
</code></pre><!-- /codeblock -->
<h2>Source</h2>
<p><table>
<tr>
<th scope="row" colspan="2"> GitHub
</th></tr>
<tr>
<th> Repo
</th>
<td> <a href="https://github.com/davidnewcomb/mantisbt_database_tweaker" class="extlink" target="_blank">https://github.com/davidnewcomb/mantisbt<em>database</em>tweaker</a>
</td></tr>
<tr>
<th> Clone
</th>
<td> <code class="codespan">https://github.com/davidnewcomb/mantisbt_database_tweaker.git</code>
</td></tr>
<tr>
<th> Zip
</th>
<td> <a href="https://github.com/davidnewcomb/mantisbt_database_tweaker/archive/master.zip" class="extlink" target="_blank">https://github.com/davidnewcomb/mantisbt<em>database</em>tweaker/archive/master.zip</a>
</td></tr></table></p>
<p>More information can be found in my blog: <a href="https://www.bigsoft.co.uk/blog/2012/03/27/mantis-database-tweaker">MantisBT Database Tweaker</a></p><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/code/mantisbt-1/mantisbt-database-tweaker">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/code/mantisbt-1/mantisbt-database-tweaker#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=595</wfw:commentRss>
		</item>
				<item>
			<title>B2evolution - Free PHP Widget Plugin</title>
			<link>https://www.bigsoft.co.uk/code/b2evolution-1/b2evolution-free-php-widget-plugin</link>
			<pubDate>Thu, 22 Mar 2018 20:48:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">B2evolution</category>			<guid isPermaLink="false">594@https://www.bigsoft.co.uk/</guid>
						<description>&lt;p&gt;A Plugin for B2evolution which provides the ability to add user defined PHP code inside a widget. It&#039;s similar to the existing FreeHTML plugin but it executes the code as PHP using &lt;code class=&quot;codespan&quot;&gt;eval()&lt;/code&gt;.
&lt;div class=&quot;alert alert-warning&quot;&gt;
The security ramifications to installing this plugin are huge. They are largely (but not exclusively) dependent on the security settings you have on your web server i.e. safe mode, etc.
If you are in any doubt then do not install this plugin.
No one from this site or organisation will be responsible in any way, to any damage to anything, caused directly or in-directly by using this software. You are using it entirely at your own risk.
&lt;/div&gt;
If, however, you are a responsible single user or you would like an example of how to write a b2evolution plugin, then you will probably find a number of uses for this.&lt;/p&gt;
&lt;p&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot; colspan=&quot;2&quot;&gt; GitHub
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Repo
&lt;/th&gt;
&lt;td&gt; &lt;a href=&quot;https://github.com/davidnewcomb/freephp_plugin&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;https://github.com/davidnewcomb/freephp_plugin&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Clone
&lt;/th&gt;
&lt;td&gt; &lt;code class=&quot;codespan&quot;&gt;https://github.com/davidnewcomb/freephp_plugin.git&lt;/code&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt; Zip
&lt;/th&gt;
&lt;td&gt; &lt;a href=&quot;https://github.com/davidnewcomb/freephp_plugin/archive/master.zip&quot; class=&quot;extlink&quot; target=&quot;_blank&quot;&gt;https://github.com/davidnewcomb/freephp_plugin/archive/master.zip&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;Take a look at my blog page &lt;a href=&quot;http://www.bigsoft.co.uk/blog/2008/08/29/b2evolution-freephp-widget-plugin&quot;&gt;B2evolution - FreePHP Widget Plugin&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;Do you need anyone to write a plugin for you? Then &lt;a href=&quot;/?disp=msgform&amp;amp;recipient_id=1&amp;amp;subject=I+would+like+you+to+write+a+B2evolution+plugin+for+me&quot; class=&quot;intlink&quot; target=&quot;_blank&quot;&gt;contact me&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.bigsoft.co.uk/code/b2evolution-1/b2evolution-free-php-widget-plugin&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>A Plugin for B2evolution which provides the ability to add user defined PHP code inside a widget. It's similar to the existing FreeHTML plugin but it executes the code as PHP using <code class="codespan">eval()</code>.
<div class="alert alert-warning">
The security ramifications to installing this plugin are huge. They are largely (but not exclusively) dependent on the security settings you have on your web server i.e. safe mode, etc.
If you are in any doubt then do not install this plugin.
No one from this site or organisation will be responsible in any way, to any damage to anything, caused directly or in-directly by using this software. You are using it entirely at your own risk.
</div>
If, however, you are a responsible single user or you would like an example of how to write a b2evolution plugin, then you will probably find a number of uses for this.</p>
<p><table>
<tr>
<th scope="row" colspan="2"> GitHub
</th></tr>
<tr>
<th> Repo
</th>
<td> <a href="https://github.com/davidnewcomb/freephp_plugin" class="extlink" target="_blank">https://github.com/davidnewcomb/freephp_plugin</a>
</td></tr>
<tr>
<th> Clone
</th>
<td> <code class="codespan">https://github.com/davidnewcomb/freephp_plugin.git</code>
</td></tr>
<tr>
<th> Zip
</th>
<td> <a href="https://github.com/davidnewcomb/freephp_plugin/archive/master.zip" class="extlink" target="_blank">https://github.com/davidnewcomb/freephp_plugin/archive/master.zip</a>
</td></tr></table></p>
<p>Take a look at my blog page <a href="https://www.bigsoft.co.uk/blog/2008/08/29/b2evolution-freephp-widget-plugin">B2evolution - FreePHP Widget Plugin</a> for more information.</p>
<p>Do you need anyone to write a plugin for you? Then <a href="/?disp=msgform&amp;recipient_id=1&amp;subject=I+would+like+you+to+write+a+B2evolution+plugin+for+me" class="intlink" target="_blank">contact me</a>.</p><div class="item_footer"><p><small><a href="https://www.bigsoft.co.uk/code/b2evolution-1/b2evolution-free-php-widget-plugin">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.bigsoft.co.uk/code/b2evolution-1/b2evolution-free-php-widget-plugin#comments</comments>
			<wfw:commentRss>https://www.bigsoft.co.uk/?tempskin=_rss2&#38;disp=comments&#38;p=594</wfw:commentRss>
		</item>
			</channel>
</rss>
